From 0cf83808225ca5668bac627c8156743192f6b0a4 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Thu, 4 Feb 2021 23:21:44 +0100 Subject: [PATCH] chore(apps): Sync plugins to apps dir emqx_telemetry from tag v4.2.7 all other apps are from e4.2.4 see sync-apps.sh --- .gitignore | 21 +- apps/emqx_auth_http/.gitignore | 25 + apps/emqx_auth_http/README.md | 100 + apps/emqx_auth_http/etc/emqx_auth_http.conf | 162 ++ .../emqx_auth_http/include/emqx_auth_http.hrl | 25 + .../emqx_auth_http/priv/emqx_auth_http.schema | 169 ++ apps/emqx_auth_http/rebar.config | 29 + apps/emqx_auth_http/src/emqx_acl_http.erl | 89 + .../emqx_auth_http/src/emqx_auth_http.app.src | 14 + apps/emqx_auth_http/src/emqx_auth_http.erl | 112 + .../emqx_auth_http/src/emqx_auth_http_app.erl | 176 ++ .../emqx_auth_http/src/emqx_auth_http_cli.erl | 103 + apps/emqx_auth_http/src/emqx_http_client.erl | 256 ++ .../src/emqx_http_client_sup.erl | 48 + .../test/emqx_auth_http_SUITE.erl | 168 ++ apps/emqx_auth_http/test/http_auth_server.erl | 152 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_auth_jwt/.gitignore | 28 + apps/emqx_auth_jwt/LICENSE | 201 ++ apps/emqx_auth_jwt/Makefile | 37 + apps/emqx_auth_jwt/README.md | 90 + apps/emqx_auth_jwt/TODO.md | 2 + .../doc/hmac-vs-ecdsa-for-jwt.txt | 3 + apps/emqx_auth_jwt/etc/emqx_auth_jwt.conf | 45 + apps/emqx_auth_jwt/priv/emqx_auth_jwt.schema | 49 + apps/emqx_auth_jwt/rebar.config | 25 + apps/emqx_auth_jwt/rebar.config.script | 54 + apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src | 14 + .../src/emqx_auth_jwt.app.src.script | 24 + .../emqx_auth_jwt/src/emqx_auth_jwt.appup.src | 16 + apps/emqx_auth_jwt/src/emqx_auth_jwt.erl | 99 + apps/emqx_auth_jwt/src/emqx_auth_jwt_app.erl | 82 + apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl | 222 ++ .../test/emqx_auth_jwt_SUITE.erl | 142 + apps/emqx_auth_ldap/.ci/docker-compose.yml | 26 + apps/emqx_auth_ldap/.ci/emqx-ldap/Dockerfile | 26 + apps/emqx_auth_ldap/.ci/emqx-ldap/slapd.conf | 16 + .../.github/workflows/run_test_cases.yaml | 49 + apps/emqx_auth_ldap/.gitignore | 25 + apps/emqx_auth_ldap/LICENSE | 201 ++ apps/emqx_auth_ldap/Makefile | 35 + apps/emqx_auth_ldap/README.md | 96 + apps/emqx_auth_ldap/emqx.io.ldif | 135 + apps/emqx_auth_ldap/emqx.schema | 46 + apps/emqx_auth_ldap/etc/emqx_auth_ldap.conf | 78 + .../emqx_auth_ldap/include/emqx_auth_ldap.hrl | 23 + .../emqx_auth_ldap/priv/emqx_auth_ldap.schema | 176 ++ apps/emqx_auth_ldap/rebar.config | 27 + apps/emqx_auth_ldap/rebar.config.script | 54 + apps/emqx_auth_ldap/src/emqx_acl_ldap.erl | 98 + .../emqx_auth_ldap/src/emqx_auth_ldap.app.src | 14 + .../src/emqx_auth_ldap.app.src.script | 24 + apps/emqx_auth_ldap/src/emqx_auth_ldap.erl | 210 ++ .../emqx_auth_ldap/src/emqx_auth_ldap_app.erl | 78 + .../emqx_auth_ldap/src/emqx_auth_ldap_cli.erl | 150 + .../emqx_auth_ldap/src/emqx_auth_ldap_sup.erl | 35 + apps/emqx_auth_ldap/test/certs/cacert.pem | 20 + apps/emqx_auth_ldap/test/certs/cert.pem | 19 + .../emqx_auth_ldap/test/certs/client-cert.pem | 19 + apps/emqx_auth_ldap/test/certs/client-key.pem | 27 + apps/emqx_auth_ldap/test/certs/key.pem | 27 + .../test/emqx_auth_ldap_SUITE.erl | 152 + .../emqx_auth_ldap_bind_as_user_SUITE.erl | 114 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_auth_mnesia/.gitignore | 26 + apps/emqx_auth_mnesia/LICENSE | 201 ++ apps/emqx_auth_mnesia/Makefile | 28 + apps/emqx_auth_mnesia/README.md | 2 + .../etc/emqx_auth_mnesia.conf | 30 + .../include/emqx_auth_mnesia.hrl | 38 + .../priv/emqx_auth_mnesia.schema | 43 + apps/emqx_auth_mnesia/rebar.config | 29 + apps/emqx_auth_mnesia/rebar.config.script | 54 + apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl | 103 + .../src/emqx_acl_mnesia_api.erl | 237 ++ .../src/emqx_acl_mnesia_cli.erl | 198 ++ .../src/emqx_auth_mnesia.app.src | 14 + .../src/emqx_auth_mnesia.app.src.script | 24 + .../src/emqx_auth_mnesia.appup.src | 39 + .../emqx_auth_mnesia/src/emqx_auth_mnesia.erl | 109 + .../src/emqx_auth_mnesia_api.erl | 319 ++ .../src/emqx_auth_mnesia_app.erl | 68 + .../src/emqx_auth_mnesia_cli.erl | 181 ++ .../src/emqx_auth_mnesia_sup.erl | 36 + .../test/emqx_acl_mnesia_SUITE.erl | 215 ++ .../test/emqx_auth_mnesia_SUITE.erl | 284 ++ .../.github/workflows/run_test_cases.yaml | 59 + apps/emqx_auth_mongo/.gitignore | 24 + apps/emqx_auth_mongo/CHANGES | 31 + apps/emqx_auth_mongo/LICENSE | 201 ++ apps/emqx_auth_mongo/Makefile | 37 + apps/emqx_auth_mongo/README.md | 192 ++ apps/emqx_auth_mongo/docker-compose-ssl.yml | 31 + apps/emqx_auth_mongo/docker-compose.yml | 27 + apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf | 172 ++ .../include/emqx_auth_mongo.hrl | 37 + .../priv/emqx_auth_mongo.schema | 292 ++ apps/emqx_auth_mongo/rebar.config | 35 + apps/emqx_auth_mongo/rebar.config.script | 54 + apps/emqx_auth_mongo/src/emqx_acl_mongo.erl | 90 + .../src/emqx_auth_mongo.app.src | 14 + .../src/emqx_auth_mongo.app.src.script | 24 + apps/emqx_auth_mongo/src/emqx_auth_mongo.erl | 133 + .../src/emqx_auth_mongo_app.erl | 87 + .../src/emqx_auth_mongo_sup.erl | 34 + .../test/emqx_auth_mongo_SUITE.erl | 173 ++ .../emqx_auth_mongo_SUITE_data/ca-key.pem | 27 + .../test/emqx_auth_mongo_SUITE_data/ca.pem | 19 + .../client-cert.pem | 19 + .../emqx_auth_mongo_SUITE_data/client-key.pem | 27 + .../emqx_auth_mongo_SUITE_data/mongodb.pem | 46 + .../private_key.pem | 27 + .../emqx_auth_mongo_SUITE_data/public_key.pem | 9 + .../server-cert.pem | 19 + .../emqx_auth_mongo_SUITE_data/server-key.pem | 27 + .../.github/workflows/run_test_cases.yaml | 59 + apps/emqx_auth_mysql/.gitignore | 31 + apps/emqx_auth_mysql/LICENSE | 201 ++ apps/emqx_auth_mysql/Makefile | 43 + apps/emqx_auth_mysql/README.md | 167 ++ apps/emqx_auth_mysql/docker-compose-ssl.yml | 41 + apps/emqx_auth_mysql/docker-compose.yml | 34 + apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf | 116 + .../include/emqx_auth_mysql.hrl | 23 + apps/emqx_auth_mysql/mqtt.sql | 41 + .../priv/emqx_auth_mysql.schema | 129 + apps/emqx_auth_mysql/rebar.config | 35 + apps/emqx_auth_mysql/rebar.config.script | 54 + apps/emqx_auth_mysql/src/emqx_acl_mysql.erl | 119 + .../src/emqx_auth_mysql.app.src | 14 + .../src/emqx_auth_mysql.app.src.script | 24 + .../src/emqx_auth_mysql.appup.src | 16 + apps/emqx_auth_mysql/src/emqx_auth_mysql.erl | 91 + .../src/emqx_auth_mysql_app.erl | 74 + .../src/emqx_auth_mysql_cli.erl | 91 + .../src/emqx_auth_mysql_sup.erl | 40 + .../test/emqx_auth_mysql_SUITE.erl | 234 ++ .../emqx_auth_mysql_SUITE_data/ca-key.pem | 27 + .../test/emqx_auth_mysql_SUITE_data/ca.pem | 19 + .../client-cert.pem | 19 + .../emqx_auth_mysql_SUITE_data/client-key.pem | 27 + .../private_key.pem | 27 + .../emqx_auth_mysql_SUITE_data/public_key.pem | 9 + .../server-cert.pem | 19 + .../emqx_auth_mysql_SUITE_data/server-key.pem | 27 + apps/emqx_auth_pgsql/.ci/docker-compose.yml | 30 + apps/emqx_auth_pgsql/.ci/pgsql/Dockerfile | 8 + .../.github/workflows/run_test_cases.yaml | 51 + apps/emqx_auth_pgsql/.gitignore | 20 + apps/emqx_auth_pgsql/LICENSE | 201 ++ apps/emqx_auth_pgsql/Makefile | 37 + apps/emqx_auth_pgsql/README.md | 183 ++ apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf | 110 + .../include/emqx_auth_pgsql.hrl | 23 + apps/emqx_auth_pgsql/mqtt.sql | 28 + .../priv/emqx_auth_pgsql.schema | 127 + apps/emqx_auth_pgsql/rebar.config | 34 + apps/emqx_auth_pgsql/rebar.config.script | 54 + apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl | 117 + .../src/emqx_auth_pgsql.app.src | 14 + .../src/emqx_auth_pgsql.app.src.script | 24 + .../src/emqx_auth_pgsql.appup.src | 16 + apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl | 91 + .../src/emqx_auth_pgsql_app.erl | 63 + .../src/emqx_auth_pgsql_cli.erl | 138 + .../src/emqx_auth_pgsql_sup.erl | 37 + apps/emqx_auth_pgsql/test/.placeholder | 0 .../test/emqx_auth_pgsql_SUITE.erl | 247 ++ .../test/emqx_auth_pgsql_SUITE_data/ca.pem | 19 + .../client-cert.pem | 19 + .../emqx_auth_pgsql_SUITE_data/client-key.pem | 27 + .../test/emqx_auth_pgsql_SUITE_data/pg.conf | 21 + .../server-cert.pem | 19 + .../emqx_auth_pgsql_SUITE_data/server-key.pem | 27 + .../.ci/docker-compose-tls.yml | 31 + apps/emqx_auth_redis/.ci/docker-compose.yml | 25 + .../.github/workflows/run_test_cases.yaml | 80 + apps/emqx_auth_redis/.gitignore | 24 + apps/emqx_auth_redis/LICENSE | 201 ++ apps/emqx_auth_redis/Makefile | 37 + apps/emqx_auth_redis/README.md | 171 ++ apps/emqx_auth_redis/etc/emqx_auth_redis.conf | 116 + .../include/emqx_auth_redis.hrl | 23 + .../priv/emqx_auth_redis.schema | 139 + apps/emqx_auth_redis/rebar.config | 33 + apps/emqx_auth_redis/rebar.config.script | 54 + apps/emqx_auth_redis/src/emqx_acl_redis.erl | 86 + .../src/emqx_auth_redis.app.src | 14 + .../src/emqx_auth_redis.app.src.script | 24 + .../src/emqx_auth_redis.appup.src | 14 + apps/emqx_auth_redis/src/emqx_auth_redis.erl | 85 + .../src/emqx_auth_redis_app.erl | 70 + .../src/emqx_auth_redis_cli.erl | 89 + .../src/emqx_auth_redis_sup.erl | 43 + .../test/emqx_auth_redis_SUITE.erl | 173 ++ .../emqx_auth_redis_SUITE_data/certs/ca.crt | 29 + .../emqx_auth_redis_SUITE_data/certs/ca.key | 51 + .../emqx_auth_redis_SUITE_data/certs/ca.txt | 1 + .../certs/redis.crt | 23 + .../emqx_auth_redis_SUITE_data/certs/redis.dh | 8 + .../certs/redis.key | 27 + .../.github/workflows/run_test_cases.yaml | 28 + apps/emqx_bridge_mqtt/.gitignore | 21 + apps/emqx_bridge_mqtt/LICENSE | 191 ++ apps/emqx_bridge_mqtt/Makefile | 43 + apps/emqx_bridge_mqtt/README.md | 265 ++ apps/emqx_bridge_mqtt/docs/guide.rst | 286 ++ apps/emqx_bridge_mqtt/docs/images/bridge.png | Bin 0 -> 147486 bytes .../etc/emqx_bridge_mqtt.conf | 172 ++ .../include/emqx_bridge_mqtt.hrl | 18 + .../priv/emqx_bridge_mqtt.schema | 244 ++ apps/emqx_bridge_mqtt/rebar.config | 32 + apps/emqx_bridge_mqtt/rebar.config.script | 54 + .../src/emqx_bridge_connect.erl | 74 + .../src/emqx_bridge_mqtt.app.src | 14 + .../src/emqx_bridge_mqtt.app.src.script | 24 + .../src/emqx_bridge_mqtt.appup.src | 26 + .../emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl | 196 ++ .../src/emqx_bridge_mqtt_actions.erl | 594 ++++ .../src/emqx_bridge_mqtt_app.erl | 33 + .../src/emqx_bridge_mqtt_cli.erl | 98 + .../src/emqx_bridge_mqtt_sup.erl | 84 + apps/emqx_bridge_mqtt/src/emqx_bridge_msg.erl | 98 + apps/emqx_bridge_mqtt/src/emqx_bridge_rpc.erl | 99 + .../src/emqx_bridge_worker.erl | 602 ++++ .../test/emqx_bridge_mqtt_tests.erl | 47 + .../test/emqx_bridge_rpc_tests.erl | 42 + .../test/emqx_bridge_worker_SUITE.erl | 176 ++ .../test/emqx_bridge_worker_tests.erl | 172 ++ .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_coap/.gitignore | 25 + apps/emqx_coap/LICENSE | 201 ++ apps/emqx_coap/Makefile | 37 + apps/emqx_coap/README.md | 254 ++ apps/emqx_coap/TODO | 13 + apps/emqx_coap/docs/rfc7049.pdf | Bin 0 -> 157813 bytes apps/emqx_coap/docs/rfc7228.pdf | Bin 0 -> 53076 bytes apps/emqx_coap/docs/rfc7252.pdf | Bin 0 -> 493316 bytes apps/emqx_coap/etc/emqx_coap.conf | 82 + apps/emqx_coap/include/emqx_coap.hrl | 20 + apps/emqx_coap/intergration_test/Makefile | 129 + apps/emqx_coap/intergration_test/README.md | 8 + .../intergration_test/check_result.py | 52 + apps/emqx_coap/priv/emqx_coap.schema | 93 + apps/emqx_coap/rebar.config | 28 + apps/emqx_coap/rebar.config.script | 54 + apps/emqx_coap/src/emqx_coap.app.src | 14 + apps/emqx_coap/src/emqx_coap.app.src.script | 24 + apps/emqx_coap/src/emqx_coap_app.erl | 40 + apps/emqx_coap/src/emqx_coap_mqtt_adapter.erl | 357 +++ apps/emqx_coap/src/emqx_coap_ps_resource.erl | 318 ++ apps/emqx_coap/src/emqx_coap_ps_topics.erl | 185 ++ apps/emqx_coap/src/emqx_coap_registry.erl | 154 + apps/emqx_coap/src/emqx_coap_resource.erl | 136 + apps/emqx_coap/src/emqx_coap_server.erl | 106 + apps/emqx_coap/src/emqx_coap_sup.erl | 42 + apps/emqx_coap/src/emqx_coap_timer.erl | 59 + apps/emqx_coap/test/emqx_coap_SUITE.erl | 240 ++ apps/emqx_coap/test/emqx_coap_ps_SUITE.erl | 677 +++++ .../.github/workflows/run_test_cases.yaml | 28 + apps/emqx_enterprise_dashboard/.gitignore | 26 + apps/emqx_enterprise_dashboard/.travis.yml | 15 + apps/emqx_enterprise_dashboard/LICENSE | 1 + apps/emqx_enterprise_dashboard/Makefile | 29 + apps/emqx_enterprise_dashboard/README.md | 89 + .../etc/emqx_dashboard.conf | 117 + .../include/emqx_dashboard.hrl | 23 + .../priv/emqx_dashboard.schema | 134 + .../priv/www/index.html | 1 + .../priv/www/static/css/app.0607679a.css | 1 + .../static/css/chunk-18aaaf52.a09c5d07.css | 1 + .../static/css/chunk-19e46f15.16b26fc6.css | 1 + .../static/css/chunk-1aa6ec30.655540b6.css | 1 + .../static/css/chunk-2095c2f3.62b43ba0.css | 1 + .../static/css/chunk-214e9a45.14ee6fe0.css | 1 + .../static/css/chunk-2be77691.75bab761.css | 1 + .../static/css/chunk-3208fb9c.ba1dcff8.css | 1 + .../static/css/chunk-32291c05.be47c5e9.css | 1 + .../static/css/chunk-3adcb268.c694417f.css | 1 + .../static/css/chunk-47a06954.702f1fa1.css | 1 + .../static/css/chunk-4a5c704e.75ab2c7d.css | 1 + .../static/css/chunk-4aeced56.6623c461.css | 1 + .../static/css/chunk-53e9a7a2.b3cd5b9f.css | 1 + .../static/css/chunk-59e5d464.dbc1edc5.css | 1 + .../static/css/chunk-5f0ec173.5b55e2a1.css | 1 + .../static/css/chunk-69b6fda6.59698d74.css | 1 + .../static/css/chunk-6c281630.05abdf4e.css | 1 + .../static/css/chunk-73c7a756.0d6e7a8d.css | 1 + .../static/css/chunk-7a115fb5.ca6ff1a6.css | 1 + .../static/css/chunk-7a82b09c.24696130.css | 1 + .../static/css/chunk-7b01e2fb.d6669dc8.css | 1 + .../static/css/chunk-8ed2d5e8.b90bf6aa.css | 1 + .../static/css/chunk-94b856f2.08867920.css | 1 + .../static/css/chunk-a14add7e.58a5af04.css | 1 + .../static/css/chunk-a8ae90d8.35afa7a6.css | 1 + .../static/css/chunk-cfe3eeda.d6a2593d.css | 1 + .../static/css/chunk-d3537170.0fcbc2f3.css | 1 + .../static/css/chunk-e7f1aeea.a0f2acee.css | 1 + .../www/static/css/chunk-vendors.57ed2864.css | 7 + .../priv/www/static/editor.worker.js | 6 + .../priv/www/static/emq.ico | Bin 0 -> 67646 bytes .../static/fonts/Roboto-Light.634f53eb.ttf | Bin 0 -> 32664 bytes .../static/fonts/Roboto-Light.ecce92d0.woff | Bin 0 -> 18520 bytes .../static/fonts/element-icons.535877f5.woff | Bin 0 -> 28200 bytes .../static/fonts/element-icons.732389de.ttf | Bin 0 -> 55956 bytes .../priv/www/static/iconfont/iconfont.css | 1237 ++++++++ .../priv/www/static/iconfont/iconfont.eot | Bin 0 -> 73944 bytes .../priv/www/static/iconfont/iconfont.js | 1 + .../priv/www/static/iconfont/iconfont.svg | 941 ++++++ .../priv/www/static/iconfont/iconfont.ttf | Bin 0 -> 73776 bytes .../priv/www/static/iconfont/iconfont.woff | Bin 0 -> 40720 bytes .../priv/www/static/iconfont/iconfont.woff2 | Bin 0 -> 32800 bytes .../www/static/img/auth_sasl.9724eec3.png | Bin 0 -> 13129 bytes .../static/img/delayed_publish.b0b58640.png | Bin 0 -> 10050 bytes .../priv/www/static/img/emq_logo.94c8ee06.svg | 1 + .../www/static/img/emqx_auth_jwt.402c6a38.png | Bin 0 -> 6461 bytes .../static/img/emqx_auth_mnesia.cee137cc.png | Bin 0 -> 9926 bytes .../static/img/emqx_auth_mysql.a3615766.png | Bin 0 -> 5557 bytes .../static/img/emqx_auth_pgsql.079ce8f3.png | Bin 0 -> 9594 bytes .../static/img/emqx_auth_redis.e0ec3147.png | Bin 0 -> 4685 bytes .../img/emqx_backend_cassa.82e8858e.png | Bin 0 -> 11637 bytes .../img/emqx_backend_influxdb.0cb90da7.png | Bin 0 -> 6221 bytes .../img/emqx_backend_mysql.a3615766.png | Bin 0 -> 5557 bytes .../img/emqx_backend_pgsql.079ce8f3.png | Bin 0 -> 9594 bytes .../img/emqx_backend_redis.e0ec3147.png | Bin 0 -> 4685 bytes .../img/emqx_backend_timescale.5f750079.png | Bin 0 -> 48755 bytes .../www/static/img/emqx_banner.20c13f08.png | Bin 0 -> 145216 bytes .../static/img/emqx_bridge_kafka.dcabb7d7.png | Bin 0 -> 4887 bytes .../static/img/emqx_bridge_mqtt.a3066767.png | Bin 0 -> 5097 bytes .../img/emqx_bridge_pulsar.be9aa2e9.png | Bin 0 -> 4914 bytes .../img/emqx_bridge_rocket.d53d64f9.png | Bin 0 -> 5182 bytes .../www/static/img/emqx_conf.33ff924d.png | Bin 0 -> 5607 bytes .../static/img/emqx_dashboard.6937edc4.png | Bin 0 -> 4272 bytes .../www/static/img/emqx_gbt32960.9ea5fd31.png | Bin 0 -> 6665 bytes .../www/static/img/emqx_jt808.28a1a87c.png | Bin 0 -> 5484 bytes .../www/static/img/emqx_lua_hook.70ea0a97.png | Bin 0 -> 5450 bytes .../www/static/img/emqx_lwm2m.0fe3f19e.png | Bin 0 -> 7179 bytes .../www/static/img/emqx_modules.e34e019e.png | Bin 0 -> 11095 bytes .../static/img/emqx_prometheus.59114669.png | Bin 0 -> 9804 bytes .../static/img/emqx_rule_engine.31e92ad1.png | Bin 0 -> 5474 bytes .../www/static/img/emqx_sasl.11e2cd6a.png | Bin 0 -> 5894 bytes .../priv/www/static/img/emqx_sn.2d9d907b.png | Bin 0 -> 5118 bytes .../www/static/img/emqx_stomp.14cf6644.png | Bin 0 -> 4360 bytes .../priv/www/static/img/emqx_tcp.e16bdfbd.png | Bin 0 -> 7362 bytes .../www/static/img/emqx_web_hook.a0bd461e.png | Bin 0 -> 6127 bytes .../static/img/gbt32960_protocol.9ea5fd31.png | Bin 0 -> 6665 bytes .../www/static/img/hot_confs.957f5817.png | Bin 0 -> 11527 bytes .../www/static/img/internal_acl.aca28594.png | Bin 0 -> 5432 bytes .../static/img/jt808_protocol.28a1a87c.png | Bin 0 -> 5484 bytes .../img/jwt_authentication.402c6a38.png | Bin 0 -> 6461 bytes .../static/img/kafka_consumer.e4c070e2.png | Bin 0 -> 10202 bytes .../static/img/lwm2m_protocol.0fe3f19e.png | Bin 0 -> 7179 bytes .../img/mnesia_authentication.cee137cc.png | Bin 0 -> 9926 bytes .../static/img/mqtt_sn_protocol.4186d81f.png | Bin 0 -> 5537 bytes .../static/img/mqtt_subscriber.6a7d014d.png | Bin 0 -> 5342 bytes .../img/mysql_authentication.a3615766.png | Bin 0 -> 5557 bytes .../www/static/img/not_settings.01e8bfc4.png | Bin 0 -> 122350 bytes .../img/pgsql_authentication.079ce8f3.png | Bin 0 -> 9594 bytes .../www/static/img/prometheus.59114669.png | Bin 0 -> 9804 bytes .../static/img/pulsar_consumer.be9aa2e9.png | Bin 0 -> 4914 bytes .../img/redis_authentication.e0ec3147.png | Bin 0 -> 4685 bytes .../priv/www/static/img/retainer.a07ffddf.png | Bin 0 -> 4265 bytes .../img/sasl_authentication.11e2cd6a.png | Bin 0 -> 5894 bytes .../static/img/stomp_protocol.14cf6644.png | Bin 0 -> 4360 bytes .../www/static/img/subscription.839c01f1.png | Bin 0 -> 5084 bytes .../www/static/img/tcp_protocol.e16bdfbd.png | Bin 0 -> 7362 bytes .../www/static/img/topic_metrics.ee87579d.png | Bin 0 -> 10218 bytes .../www/static/img/topic_rewrite.676de860.png | Bin 0 -> 7171 bytes .../priv/www/static/js/app.235bfefd.js | 1 + .../www/static/js/chunk-174a5ac2.b9cebe6b.js | 1 + .../www/static/js/chunk-18aaaf52.04b806a1.js | 1 + .../www/static/js/chunk-19e46f15.d147220b.js | 1 + .../www/static/js/chunk-1aa6ec30.e7c745ea.js | 1 + .../www/static/js/chunk-1de6578b.f726be8a.js | 1 + .../www/static/js/chunk-2095c2f3.87ded140.js | 1 + .../www/static/js/chunk-214e9a45.4c4953f7.js | 1 + .../www/static/js/chunk-2be77691.a1865558.js | 1 + .../www/static/js/chunk-2d0ae937.443808f2.js | 1 + .../www/static/js/chunk-2d0be333.63623404.js | 9 + .../www/static/js/chunk-2d0c1ed0.e71f291f.js | 1 + .../www/static/js/chunk-2d0d7a87.5fd3c468.js | 1 + .../www/static/js/chunk-2d2134e7.15b56ca9.js | 1 + .../www/static/js/chunk-3208fb9c.7c668dc0.js | 1 + .../www/static/js/chunk-32291c05.fa1e09f6.js | 1 + .../www/static/js/chunk-39509ba9.bfd064ab.js | 1 + .../www/static/js/chunk-3adcb268.16eb5205.js | 6 + .../www/static/js/chunk-47a06954.4663b2c4.js | 1 + .../www/static/js/chunk-4a5c704e.53a95f82.js | 1 + .../www/static/js/chunk-4aeced56.f76dfa1e.js | 1 + .../www/static/js/chunk-53e9a7a2.98b8cd9d.js | 1 + .../www/static/js/chunk-59e5d464.d7db690a.js | 1 + .../www/static/js/chunk-5f0ec173.65eca404.js | 1 + .../www/static/js/chunk-69b6fda6.4f049c18.js | 1 + .../www/static/js/chunk-6c281630.390d79a0.js | 1 + .../www/static/js/chunk-73c7a756.fcf16690.js | 1 + .../www/static/js/chunk-7a115fb5.a45fa85b.js | 1 + .../www/static/js/chunk-7a82b09c.43ec0d25.js | 1 + .../www/static/js/chunk-7b01e2fb.f369a777.js | 1 + .../www/static/js/chunk-8ed2d5e8.20b6effa.js | 1 + .../www/static/js/chunk-94b856f2.8df186b1.js | 1 + .../www/static/js/chunk-a14add7e.e87d1b79.js | 1 + .../www/static/js/chunk-a8ae90d8.42887868.js | 1 + .../www/static/js/chunk-a950fa80.ed5136ae.js | 1 + .../www/static/js/chunk-c5bf9d5c.e162d642.js | 8 + .../www/static/js/chunk-cfe3eeda.9f42fde3.js | 1 + .../www/static/js/chunk-d3537170.7f7eb6fb.js | 1 + .../www/static/js/chunk-e7f1aeea.93c28ea9.js | 1 + .../www/static/js/chunk-ead04a98.b90d2cde.js | 1 + .../www/static/js/chunk-vendors.175fe33f.js | 78 + .../priv/www/static/json.worker.js | 6 + apps/emqx_enterprise_dashboard/rebar.config | 24 + .../rebar.config.script | 54 + .../src/emqx_dashboard.app.src | 7 + .../src/emqx_dashboard.app.src.script | 24 + .../src/emqx_dashboard.appup.src | 28 + .../src/emqx_dashboard.erl | 102 + .../src/emqx_dashboard_admin.erl | 216 ++ .../src/emqx_dashboard_api.erl | 97 + .../src/emqx_dashboard_app.erl | 23 + .../src/emqx_dashboard_cli.erl | 48 + .../src/emqx_dashboard_cluster_api.erl | 77 + .../src/emqx_dashboard_collection.erl | 164 ++ .../src/emqx_dashboard_license_api.erl | 32 + .../src/emqx_dashboard_monitor_api.erl | 142 + .../src/emqx_dashboard_sup.erl | 21 + .../test/emqx_dashboard_SUITE.erl | 146 + .../.github/workflows/run_test_cases.yaml | 28 + apps/emqx_exhook/.gitignore | 29 + apps/emqx_exhook/LICENSE | 191 ++ apps/emqx_exhook/Makefile | 44 + apps/emqx_exhook/README.md | 39 + apps/emqx_exhook/docs/design.md | 116 + apps/emqx_exhook/etc/emqx_exhook.conf | 15 + apps/emqx_exhook/include/emqx_exhook.hrl | 22 + apps/emqx_exhook/priv/emqx_exhook.schema | 38 + apps/emqx_exhook/priv/protos/exhook.proto | 395 +++ apps/emqx_exhook/rebar.config | 47 + apps/emqx_exhook/rebar.config.script | 53 + apps/emqx_exhook/src/emqx_exhook.app.src | 12 + .../src/emqx_exhook.app.src.script | 24 + apps/emqx_exhook/src/emqx_exhook.appup.src | 21 + apps/emqx_exhook/src/emqx_exhook.erl | 134 + apps/emqx_exhook/src/emqx_exhook_app.erl | 117 + apps/emqx_exhook/src/emqx_exhook_cli.erl | 80 + apps/emqx_exhook/src/emqx_exhook_handler.erl | 288 ++ apps/emqx_exhook/src/emqx_exhook_server.erl | 286 ++ apps/emqx_exhook/src/emqx_exhook_sup.erl | 59 + apps/emqx_exhook/test/emqx_exhook_SUITE.erl | 53 + .../emqx_exhook/test/emqx_exhook_demo_svr.erl | 297 ++ .../test/props/prop_exhook_hooks.erl | 537 ++++ .../.github/workflows/run_test_case.yaml | 38 + apps/emqx_exproto/.gitignore | 48 + apps/emqx_exproto/LICENSE | 191 ++ apps/emqx_exproto/Makefile | 41 + apps/emqx_exproto/README.md | 28 + apps/emqx_exproto/docs/design.md | 127 + .../emqx_exproto/docs/images/exproto-arch.jpg | Bin 0 -> 72633 bytes .../docs/images/exproto-grpc-arch.jpg | Bin 0 -> 97464 bytes apps/emqx_exproto/etc/emqx_exproto.conf | 252 ++ apps/emqx_exproto/include/emqx_exproto.hrl | 37 + apps/emqx_exproto/priv/emqx_exproto.schema | 364 +++ apps/emqx_exproto/priv/protos/exproto.proto | 259 ++ apps/emqx_exproto/rebar.config | 50 + apps/emqx_exproto/rebar.config.script | 53 + apps/emqx_exproto/src/emqx_exproto.app.src | 12 + .../src/emqx_exproto.app.src.script | 24 + apps/emqx_exproto/src/emqx_exproto.appup.src | 15 + apps/emqx_exproto/src/emqx_exproto.erl | 187 ++ apps/emqx_exproto/src/emqx_exproto_app.erl | 37 + .../emqx_exproto/src/emqx_exproto_channel.erl | 599 ++++ apps/emqx_exproto/src/emqx_exproto_conn.erl | 682 +++++ apps/emqx_exproto/src/emqx_exproto_gcli.erl | 110 + apps/emqx_exproto/src/emqx_exproto_gsvr.erl | 154 + apps/emqx_exproto/src/emqx_exproto_sup.erl | 83 + apps/emqx_exproto/test/emqx_exproto_SUITE.erl | 454 +++ .../test/emqx_exproto_echo_svr.erl | 249 ++ .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_lua_hook/.gitignore | 19 + apps/emqx_lua_hook/LICENSE | 201 ++ apps/emqx_lua_hook/Makefile | 28 + apps/emqx_lua_hook/README.md | 338 +++ apps/emqx_lua_hook/etc/emqx_lua_hook.conf | 4 + apps/emqx_lua_hook/examples.lua | 71 + apps/emqx_lua_hook/include/emqx_lua_hook.hrl | 18 + apps/emqx_lua_hook/priv/emqx_lua_hook.schema | 1 + apps/emqx_lua_hook/rebar.config | 29 + apps/emqx_lua_hook/rebar.config.script | 54 + apps/emqx_lua_hook/src/emqx_lua_hook.app.src | 14 + .../src/emqx_lua_hook.app.src.script | 24 + apps/emqx_lua_hook/src/emqx_lua_hook.erl | 199 ++ apps/emqx_lua_hook/src/emqx_lua_hook_app.erl | 40 + apps/emqx_lua_hook/src/emqx_lua_hook_cli.erl | 88 + apps/emqx_lua_hook/src/emqx_lua_hook_sup.erl | 35 + apps/emqx_lua_hook/src/emqx_lua_script.erl | 342 +++ .../test/emqx_lua_hook_SUITE.erl | 697 +++++ .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_lwm2m/.gitignore | 26 + apps/emqx_lwm2m/LICENSE | 201 ++ apps/emqx_lwm2m/Makefile | 37 + apps/emqx_lwm2m/README.md | 374 +++ apps/emqx_lwm2m/etc/emqx_lwm2m.conf | 136 + apps/emqx_lwm2m/include/emqx_lwm2m.hrl | 51 + apps/emqx_lwm2m/integration_test/Makefile | 128 + apps/emqx_lwm2m/integration_test/case1.py | 65 + apps/emqx_lwm2m/integration_test/case2.py | 60 + apps/emqx_lwm2m/integration_test/case3.py | 60 + .../integration_test/insert_lwm2m_plugin.py | 52 + .../integration_test/object_security.c | 253 ++ .../lwm2m_xml/LWM2M_Access_Control-v1_0_1.xml | 128 + .../LWM2M_Connectivity_Statistics-v1_0_1.xml | 164 ++ .../lwm2m_xml/LWM2M_Device-v1_0_1.xml | 330 +++ .../LWM2M_Firmware_Update-v1_0_1.xml | 202 ++ .../lwm2m_xml/LWM2M_Location-v1_0.xml | 143 + .../lwm2m_xml/LWM2M_Security-v1_0.xml | 225 ++ .../lwm2m_xml/LWM2M_Server-v1_0.xml | 171 ++ apps/emqx_lwm2m/priv/emqx_lwm2m.schema | 207 ++ apps/emqx_lwm2m/rebar.config | 27 + apps/emqx_lwm2m/rebar.config.script | 54 + apps/emqx_lwm2m/src/binary_util.erl | 230 ++ apps/emqx_lwm2m/src/emqx_lwm2m.app.src | 7 + apps/emqx_lwm2m/src/emqx_lwm2m.app.src.script | 24 + apps/emqx_lwm2m/src/emqx_lwm2m.appup.src | 31 + apps/emqx_lwm2m/src/emqx_lwm2m_api.erl | 162 ++ apps/emqx_lwm2m/src/emqx_lwm2m_app.erl | 44 + apps/emqx_lwm2m/src/emqx_lwm2m_cm.erl | 153 + apps/emqx_lwm2m/src/emqx_lwm2m_cm_sup.erl | 41 + .../emqx_lwm2m/src/emqx_lwm2m_cmd_handler.erl | 321 ++ .../src/emqx_lwm2m_coap_resource.erl | 380 +++ .../emqx_lwm2m/src/emqx_lwm2m_coap_server.erl | 118 + apps/emqx_lwm2m/src/emqx_lwm2m_json.erl | 351 +++ apps/emqx_lwm2m/src/emqx_lwm2m_message.erl | 387 +++ apps/emqx_lwm2m/src/emqx_lwm2m_protocol.erl | 522 ++++ apps/emqx_lwm2m/src/emqx_lwm2m_sup.erl | 39 + apps/emqx_lwm2m/src/emqx_lwm2m_timer.erl | 47 + apps/emqx_lwm2m/src/emqx_lwm2m_tlv.erl | 160 + apps/emqx_lwm2m/src/emqx_lwm2m_xml_object.erl | 73 + .../src/emqx_lwm2m_xml_object_db.erl | 147 + apps/emqx_lwm2m/test/emqx_lwm2m_SUITE.erl | 1945 +++++++++++++ apps/emqx_lwm2m/test/emqx_tlv_SUITE.erl | 240 ++ apps/emqx_lwm2m/test/test_mqtt_broker.erl | 172 ++ .../.github/workflows/run_test_cases.yaml | 30 + apps/emqx_management/.gitignore | 29 + apps/emqx_management/LICENSE | 201 ++ apps/emqx_management/Makefile | 37 + apps/emqx_management/README.md | 9 + apps/emqx_management/etc/emqx_management.conf | 52 + apps/emqx_management/include/emqx_mgmt.hrl | 35 + .../priv/emqx_management.schema | 239 ++ apps/emqx_management/rebar.config | 30 + apps/emqx_management/rebar.config.script | 68 + .../src/emqx_management.app.src | 14 + .../src/emqx_management.app.src.script | 24 + .../src/emqx_management.appup.src | 14 + apps/emqx_management/src/emqx_mgmt.erl | 924 ++++++ apps/emqx_management/src/emqx_mgmt_api.erl | 326 +++ .../src/emqx_mgmt_api_alarms.erl | 137 + .../src/emqx_mgmt_api_apps.erl | 109 + .../src/emqx_mgmt_api_banned.erl | 174 ++ .../src/emqx_mgmt_api_brokers.erl | 49 + .../src/emqx_mgmt_api_clients.erl | 419 +++ .../src/emqx_mgmt_api_data.erl | 246 ++ .../src/emqx_mgmt_api_listeners.erl | 49 + .../src/emqx_mgmt_api_metrics.erl | 44 + .../src/emqx_mgmt_api_nodes.erl | 48 + .../src/emqx_mgmt_api_plugins.erl | 117 + .../src/emqx_mgmt_api_pubsub.erl | 253 ++ .../src/emqx_mgmt_api_routes.erl | 49 + .../src/emqx_mgmt_api_stats.erl | 47 + .../src/emqx_mgmt_api_subscriptions.erl | 154 + apps/emqx_management/src/emqx_mgmt_app.erl | 35 + apps/emqx_management/src/emqx_mgmt_auth.erl | 210 ++ apps/emqx_management/src/emqx_mgmt_cli.erl | 680 +++++ apps/emqx_management/src/emqx_mgmt_http.erl | 126 + apps/emqx_management/src/emqx_mgmt_sup.erl | 30 + apps/emqx_management/src/emqx_mgmt_util.erl | 84 + apps/emqx_management/test/emqx_mgmt_SUITE.erl | 277 ++ .../test/emqx_mgmt_api_SUITE.erl | 642 ++++ .../test/etc/emqx_management.conf | 35 + .../test/etc/emqx_reloader.conf | 24 + apps/emqx_management/test/rfc6455_client.erl | 252 ++ .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_prometheus/.gitignore | 24 + apps/emqx_prometheus/LICENSE | 201 ++ apps/emqx_prometheus/Makefile | 38 + apps/emqx_prometheus/README.md | 60 + apps/emqx_prometheus/TODO | 2 + apps/emqx_prometheus/etc/emqx_prometheus.conf | 13 + .../emqx_prometheus/grafana_template/EMQ.json | 1160 ++++++++ .../grafana_template/EMQ_Dashboard.json | 586 ++++ .../grafana_template/ErlangVM.json | 739 +++++ .../include/emqx_prometheus.hrl | 0 .../priv/emqx_prometheus.schema | 20 + apps/emqx_prometheus/rebar.config | 28 + apps/emqx_prometheus/rebar.config.script | 54 + .../src/emqx_prometheus.app.src | 14 + .../src/emqx_prometheus.app.src.script | 24 + apps/emqx_prometheus/src/emqx_prometheus.erl | 594 ++++ .../src/emqx_prometheus_app.erl | 37 + .../src/emqx_prometheus_sup.erl | 36 + .../test/emqx_prometheus_SUITE.erl | 22 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_psk_file/.gitignore | 16 + apps/emqx_psk_file/LICENSE | 201 ++ apps/emqx_psk_file/Makefile | 28 + apps/emqx_psk_file/README.md | 2 + apps/emqx_psk_file/etc/emqx_psk_file.conf | 2 + apps/emqx_psk_file/etc/psk.txt | 2 + apps/emqx_psk_file/priv/emqx_psk_file.schema | 10 + apps/emqx_psk_file/rebar.config | 16 + apps/emqx_psk_file/rebar.config.script | 54 + apps/emqx_psk_file/src/emqx_psk_file.app.src | 14 + .../src/emqx_psk_file.app.src.script | 24 + apps/emqx_psk_file/src/emqx_psk_file.erl | 82 + apps/emqx_psk_file/src/emqx_psk_file_app.erl | 33 + apps/emqx_psk_file/src/emqx_psk_file_sup.erl | 32 + .../test/emqx_psk_file_SUITE.erl | 23 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_recon/.gitignore | 31 + apps/emqx_recon/LICENSE | 201 ++ apps/emqx_recon/Makefile | 29 + apps/emqx_recon/README.md | 61 + apps/emqx_recon/etc/emqx_recon.conf | 4 + apps/emqx_recon/priv/emqx_recon.schema | 9 + apps/emqx_recon/rebar.config | 27 + apps/emqx_recon/rebar.config.script | 54 + apps/emqx_recon/src/emqx_recon.app.src | 14 + apps/emqx_recon/src/emqx_recon.app.src.script | 24 + apps/emqx_recon/src/emqx_recon.erl | 41 + apps/emqx_recon/src/emqx_recon_cli.erl | 63 + apps/emqx_recon/test/emqx_recon_SUITE.erl | 116 + .../test/emqx_recon_SUITE_data/emqx.conf | 466 +++ .../test/emqx_recon_SUITE_data/emqx.schema | 1060 +++++++ .../emqx_recon_SUITE_data/emqx_recon.conf | 10 + .../emqx_recon_SUITE_data/emqx_recon.schema | 8 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_retainer/.gitignore | 26 + apps/emqx_retainer/LICENSE | 201 ++ apps/emqx_retainer/Makefile | 37 + apps/emqx_retainer/README.md | 59 + apps/emqx_retainer/TODO | 1 + apps/emqx_retainer/etc/emqx_retainer.conf | 41 + apps/emqx_retainer/include/emqx_retainer.hrl | 20 + apps/emqx_retainer/priv/emqx_retainer.schema | 30 + apps/emqx_retainer/rebar.config | 24 + apps/emqx_retainer/rebar.config.script | 54 + apps/emqx_retainer/src/emqx_retainer.app.src | 14 + .../src/emqx_retainer.app.src.script | 24 + .../emqx_retainer/src/emqx_retainer.appup.src | 16 + apps/emqx_retainer/src/emqx_retainer.erl | 296 ++ apps/emqx_retainer/src/emqx_retainer_app.erl | 37 + apps/emqx_retainer/src/emqx_retainer_cli.erl | 58 + apps/emqx_retainer/src/emqx_retainer_sup.erl | 36 + .../test/emqx_retainer_SUITE.erl | 195 ++ .../test/emqx_retainer_cli_SUITE.erl | 40 + .../test/mqtt_protocol_v5_SUITE.erl | 147 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_rule_engine/.gitignore | 25 + apps/emqx_rule_engine/LICENSE | 201 ++ apps/emqx_rule_engine/Makefile | 39 + apps/emqx_rule_engine/README.md | 50 + apps/emqx_rule_engine/docs/api_examples.md | 197 ++ apps/emqx_rule_engine/docs/cli_examples.md | 164 ++ apps/emqx_rule_engine/docs/design.md | 188 ++ .../etc/emqx_rule_engine.conf | 42 + .../emqx_rule_engine/include/rule_actions.hrl | 11 + apps/emqx_rule_engine/include/rule_engine.hrl | 157 + apps/emqx_rule_engine/include/rule_events.hrl | 285 ++ .../priv/emqx_rule_engine.schema | 61 + apps/emqx_rule_engine/rebar.config | 42 + apps/emqx_rule_engine/rebar.config.script | 54 + .../src/emqx_rule_actions.erl | 212 ++ .../src/emqx_rule_actions_trans.erl | 70 + .../src/emqx_rule_engine.app.src | 14 + .../src/emqx_rule_engine.app.src.script | 24 + .../src/emqx_rule_engine.appup.src | 105 + .../emqx_rule_engine/src/emqx_rule_engine.erl | 628 ++++ .../src/emqx_rule_engine_api.erl | 590 ++++ .../src/emqx_rule_engine_app.erl | 45 + .../src/emqx_rule_engine_cli.erl | 398 +++ .../src/emqx_rule_engine_sup.erl | 57 + .../emqx_rule_engine/src/emqx_rule_events.erl | 365 +++ apps/emqx_rule_engine/src/emqx_rule_funcs.erl | 831 ++++++ apps/emqx_rule_engine/src/emqx_rule_id.erl | 57 + .../emqx_rule_engine/src/emqx_rule_locker.erl | 34 + apps/emqx_rule_engine/src/emqx_rule_maps.erl | 209 ++ .../src/emqx_rule_metrics.erl | 439 +++ .../src/emqx_rule_registry.erl | 426 +++ .../src/emqx_rule_runtime.erl | 441 +++ .../src/emqx_rule_sqlparser.erl | 114 + .../src/emqx_rule_sqltester.erl | 93 + apps/emqx_rule_engine/src/emqx_rule_utils.erl | 363 +++ .../src/emqx_rule_validator.erl | 175 ++ .../test/emqx_rule_engine_SUITE.erl | 2575 +++++++++++++++++ .../test/emqx_rule_events_SUITE.erl | 31 + .../test/emqx_rule_funcs_SUITE.erl | 773 +++++ .../test/emqx_rule_id_SUITE.erl | 28 + .../test/emqx_rule_maps_SUITE.erl | 175 ++ .../test/emqx_rule_metrics_SUITE.erl | 169 ++ .../test/emqx_rule_registry_SUITE.erl | 148 + .../test/emqx_rule_utils_SUITE.erl | 112 + .../test/emqx_rule_validator_SUITE.erl | 31 + apps/emqx_rule_engine/test/prop_rule_maps.erl | 10 + .../.github/workflows/run_test_case.yaml | 31 + apps/emqx_sasl/.gitignore | 26 + apps/emqx_sasl/LICENSE | 201 ++ apps/emqx_sasl/Makefile | 28 + apps/emqx_sasl/README.md | 2 + apps/emqx_sasl/etc/emqx_sasl.conf | 0 apps/emqx_sasl/include/emqx_sasl.hrl | 19 + apps/emqx_sasl/priv/emqx_sasl.schema | 0 apps/emqx_sasl/rebar.config | 30 + apps/emqx_sasl/rebar.config.script | 54 + apps/emqx_sasl/src/emqx_sasl.app.src | 14 + apps/emqx_sasl/src/emqx_sasl.app.src.script | 33 + apps/emqx_sasl/src/emqx_sasl.erl | 56 + apps/emqx_sasl/src/emqx_sasl_api.erl | 233 ++ apps/emqx_sasl/src/emqx_sasl_app.erl | 46 + apps/emqx_sasl/src/emqx_sasl_cli.erl | 82 + apps/emqx_sasl/src/emqx_sasl_scram.erl | 314 ++ apps/emqx_sasl/test/emqx_sasl_scram_SUITE.erl | 140 + .../.github/workflows/run_test_cases.yaml | 31 + apps/emqx_sn/.gitignore | 40 + apps/emqx_sn/LICENSE | 201 ++ apps/emqx_sn/Makefile | 44 + apps/emqx_sn/README.md | 117 + apps/emqx_sn/etc/emqx_sn.conf | 53 + apps/emqx_sn/examples/simple_example.erl | 126 + apps/emqx_sn/examples/simple_example2.erl | 120 + apps/emqx_sn/examples/simple_example3.erl | 120 + apps/emqx_sn/examples/simple_example4.erl | 151 + apps/emqx_sn/include/emqx_sn.hrl | 185 ++ apps/emqx_sn/intergration_test/Makefile | 151 + apps/emqx_sn/intergration_test/README.md | 12 + .../add_emqx_sn_to_project.py | 22 + .../intergration_test/client/case1_qos0pub.c | 129 + .../intergration_test/client/case1_qos0sub.c | 187 ++ .../intergration_test/client/case2_qos0pub.c | 131 + .../intergration_test/client/case2_qos0sub.c | 222 ++ .../intergration_test/client/case3_qos0pub.c | 131 + .../intergration_test/client/case3_qos0sub.c | 222 ++ .../intergration_test/client/case4_qos3pub.c | 131 + .../intergration_test/client/case4_qos3sub.c | 222 ++ .../intergration_test/client/case5_qos3pub.c | 129 + .../intergration_test/client/case5_qos3sub.c | 195 ++ .../intergration_test/client/case6_sleep.c | 149 + .../client/case7_double_connect.c | 143 + .../client/int_test_result.c | 55 + .../client/int_test_result.h | 13 + .../emqx_sn/intergration_test/disable_qos3.py | 17 + apps/emqx_sn/intergration_test/enable_qos3.py | 17 + apps/emqx_sn/priv/emqx_sn.schema | 74 + apps/emqx_sn/rebar.config | 35 + apps/emqx_sn/rebar.config.script | 54 + apps/emqx_sn/src/emqx_sn.app.src | 14 + apps/emqx_sn/src/emqx_sn.app.src.script | 24 + apps/emqx_sn/src/emqx_sn.appup.src | 16 + apps/emqx_sn/src/emqx_sn_app.erl | 157 + apps/emqx_sn/src/emqx_sn_asleep_timer.erl | 60 + apps/emqx_sn/src/emqx_sn_broadcast.erl | 101 + apps/emqx_sn/src/emqx_sn_frame.erl | 307 ++ apps/emqx_sn/src/emqx_sn_gateway.erl | 1092 +++++++ apps/emqx_sn/src/emqx_sn_registry.erl | 166 ++ apps/emqx_sn/src/emqx_sn_sup.erl | 49 + apps/emqx_sn/test/broadcast_test.py | 21 + apps/emqx_sn/test/emqx_sn_frame_SUITE.erl | 181 ++ apps/emqx_sn/test/emqx_sn_protocol_SUITE.erl | 1862 ++++++++++++ apps/emqx_sn/test/emqx_sn_registry_SUITE.erl | 127 + .../test/props/emqx_sn_proper_types.erl | 245 ++ .../emqx_sn/test/props/prop_emqx_sn_frame.erl | 77 + apps/emqx_sn/vars | 8 + .../.github/workflows/run_test_cases.yaml | 29 + apps/emqx_stomp/.gitignore | 25 + apps/emqx_stomp/LICENSE | 201 ++ apps/emqx_stomp/Makefile | 33 + apps/emqx_stomp/README.md | 77 + apps/emqx_stomp/etc/emqx_stomp.conf | 123 + apps/emqx_stomp/include/emqx_stomp.hrl | 48 + apps/emqx_stomp/priv/emqx_stomp.schema | 149 + apps/emqx_stomp/rebar.config | 27 + apps/emqx_stomp/rebar.config.script | 54 + apps/emqx_stomp/src/emqx_stomp.app.src | 14 + apps/emqx_stomp/src/emqx_stomp.app.src.script | 24 + apps/emqx_stomp/src/emqx_stomp.erl | 142 + apps/emqx_stomp/src/emqx_stomp_connection.erl | 257 ++ apps/emqx_stomp/src/emqx_stomp_frame.erl | 237 ++ apps/emqx_stomp/src/emqx_stomp_heartbeat.erl | 106 + apps/emqx_stomp/src/emqx_stomp_protocol.erl | 365 +++ .../emqx_stomp/src/emqx_stomp_transaction.erl | 77 + apps/emqx_stomp/test/client.py | 19 + apps/emqx_stomp/test/emqx_stomp_SUITE.erl | 349 +++ apps/emqx_telemetry/.gitignore | 26 + apps/emqx_telemetry/LICENSE | 201 ++ apps/emqx_telemetry/Makefile | 37 + apps/emqx_telemetry/README.md | 1 + apps/emqx_telemetry/etc/emqx_telemetry.conf | 28 + .../emqx_telemetry/priv/emqx_telemetry.schema | 17 + apps/emqx_telemetry/rebar.config | 24 + apps/emqx_telemetry/rebar.config.script | 53 + .../emqx_telemetry/src/emqx_telemetry.app.src | 14 + .../src/emqx_telemetry.appup.src | 15 + apps/emqx_telemetry/src/emqx_telemetry.erl | 412 +++ .../emqx_telemetry/src/emqx_telemetry_api.erl | 131 + .../emqx_telemetry/src/emqx_telemetry_app.erl | 35 + .../emqx_telemetry/src/emqx_telemetry_sup.erl | 35 + .../test/emqx_telemetry_SUITE.erl | 66 + .../.github/workflows/run_test_cases.yaml | 37 + apps/emqx_web_hook/.gitignore | 31 + apps/emqx_web_hook/LICENSE | 201 ++ apps/emqx_web_hook/Makefile | 41 + apps/emqx_web_hook/README.md | 194 ++ apps/emqx_web_hook/TODO | 3 + apps/emqx_web_hook/etc/emqx_web_hook.conf | 68 + apps/emqx_web_hook/include/emqx_web_hook.hrl | 1 + apps/emqx_web_hook/priv/emqx_web_hook.schema | 102 + apps/emqx_web_hook/rebar.config | 32 + apps/emqx_web_hook/rebar.config.script | 54 + apps/emqx_web_hook/src/emqx_web_hook.app.src | 14 + .../src/emqx_web_hook.app.src.script | 24 + .../emqx_web_hook/src/emqx_web_hook.appup.src | 25 + apps/emqx_web_hook/src/emqx_web_hook.erl | 387 +++ .../src/emqx_web_hook_actions.erl | 378 +++ apps/emqx_web_hook/src/emqx_web_hook_app.erl | 119 + apps/emqx_web_hook/src/emqx_web_hook_sup.erl | 29 + .../test/emqx_web_hook_SUITE.erl | 217 ++ .../test/emqx_web_hook_SUITE_data/ca.pem | 19 + .../emqx_web_hook_SUITE_data/client-cert.pem | 19 + .../emqx_web_hook_SUITE_data/client-key.pem | 27 + .../emqx_web_hook_SUITE_data/server-cert.pem | 19 + .../emqx_web_hook_SUITE_data/server-key.pem | 27 + apps/emqx_web_hook/test/http_server.erl | 105 + .../test/props/prop_webhook_confs.erl | 142 + .../test/props/prop_webhook_hooks.erl | 409 +++ sync-apps.sh | 109 + 833 files changed, 84712 insertions(+), 10 deletions(-) create mode 100644 apps/emqx_auth_http/.gitignore create mode 100644 apps/emqx_auth_http/README.md create mode 100644 apps/emqx_auth_http/etc/emqx_auth_http.conf create mode 100644 apps/emqx_auth_http/include/emqx_auth_http.hrl create mode 100644 apps/emqx_auth_http/priv/emqx_auth_http.schema create mode 100644 apps/emqx_auth_http/rebar.config create mode 100644 apps/emqx_auth_http/src/emqx_acl_http.erl create mode 100644 apps/emqx_auth_http/src/emqx_auth_http.app.src create mode 100644 apps/emqx_auth_http/src/emqx_auth_http.erl create mode 100644 apps/emqx_auth_http/src/emqx_auth_http_app.erl create mode 100644 apps/emqx_auth_http/src/emqx_auth_http_cli.erl create mode 100644 apps/emqx_auth_http/src/emqx_http_client.erl create mode 100644 apps/emqx_auth_http/src/emqx_http_client_sup.erl create mode 100644 apps/emqx_auth_http/test/emqx_auth_http_SUITE.erl create mode 100644 apps/emqx_auth_http/test/http_auth_server.erl create mode 100644 apps/emqx_auth_jwt/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_jwt/.gitignore create mode 100644 apps/emqx_auth_jwt/LICENSE create mode 100644 apps/emqx_auth_jwt/Makefile create mode 100644 apps/emqx_auth_jwt/README.md create mode 100644 apps/emqx_auth_jwt/TODO.md create mode 100644 apps/emqx_auth_jwt/doc/hmac-vs-ecdsa-for-jwt.txt create mode 100644 apps/emqx_auth_jwt/etc/emqx_auth_jwt.conf create mode 100644 apps/emqx_auth_jwt/priv/emqx_auth_jwt.schema create mode 100644 apps/emqx_auth_jwt/rebar.config create mode 100644 apps/emqx_auth_jwt/rebar.config.script create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src.script create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt.erl create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt_app.erl create mode 100644 apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl create mode 100644 apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl create mode 100644 apps/emqx_auth_ldap/.ci/docker-compose.yml create mode 100644 apps/emqx_auth_ldap/.ci/emqx-ldap/Dockerfile create mode 100644 apps/emqx_auth_ldap/.ci/emqx-ldap/slapd.conf create mode 100644 apps/emqx_auth_ldap/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_ldap/.gitignore create mode 100644 apps/emqx_auth_ldap/LICENSE create mode 100644 apps/emqx_auth_ldap/Makefile create mode 100644 apps/emqx_auth_ldap/README.md create mode 100644 apps/emqx_auth_ldap/emqx.io.ldif create mode 100644 apps/emqx_auth_ldap/emqx.schema create mode 100644 apps/emqx_auth_ldap/etc/emqx_auth_ldap.conf create mode 100644 apps/emqx_auth_ldap/include/emqx_auth_ldap.hrl create mode 100644 apps/emqx_auth_ldap/priv/emqx_auth_ldap.schema create mode 100644 apps/emqx_auth_ldap/rebar.config create mode 100644 apps/emqx_auth_ldap/rebar.config.script create mode 100644 apps/emqx_auth_ldap/src/emqx_acl_ldap.erl create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src.script create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap.erl create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap_app.erl create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap_cli.erl create mode 100644 apps/emqx_auth_ldap/src/emqx_auth_ldap_sup.erl create mode 100644 apps/emqx_auth_ldap/test/certs/cacert.pem create mode 100644 apps/emqx_auth_ldap/test/certs/cert.pem create mode 100644 apps/emqx_auth_ldap/test/certs/client-cert.pem create mode 100644 apps/emqx_auth_ldap/test/certs/client-key.pem create mode 100644 apps/emqx_auth_ldap/test/certs/key.pem create mode 100644 apps/emqx_auth_ldap/test/emqx_auth_ldap_SUITE.erl create mode 100644 apps/emqx_auth_ldap/test/emqx_auth_ldap_bind_as_user_SUITE.erl create mode 100644 apps/emqx_auth_mnesia/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_mnesia/.gitignore create mode 100644 apps/emqx_auth_mnesia/LICENSE create mode 100644 apps/emqx_auth_mnesia/Makefile create mode 100644 apps/emqx_auth_mnesia/README.md create mode 100644 apps/emqx_auth_mnesia/etc/emqx_auth_mnesia.conf create mode 100644 apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl create mode 100644 apps/emqx_auth_mnesia/priv/emqx_auth_mnesia.schema create mode 100644 apps/emqx_auth_mnesia/rebar.config create mode 100644 apps/emqx_auth_mnesia/rebar.config.script create mode 100644 apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_acl_mnesia_api.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src.script create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia_api.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia_app.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl create mode 100644 apps/emqx_auth_mnesia/src/emqx_auth_mnesia_sup.erl create mode 100644 apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl create mode 100644 apps/emqx_auth_mnesia/test/emqx_auth_mnesia_SUITE.erl create mode 100644 apps/emqx_auth_mongo/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_mongo/.gitignore create mode 100644 apps/emqx_auth_mongo/CHANGES create mode 100644 apps/emqx_auth_mongo/LICENSE create mode 100644 apps/emqx_auth_mongo/Makefile create mode 100644 apps/emqx_auth_mongo/README.md create mode 100644 apps/emqx_auth_mongo/docker-compose-ssl.yml create mode 100644 apps/emqx_auth_mongo/docker-compose.yml create mode 100644 apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf create mode 100644 apps/emqx_auth_mongo/include/emqx_auth_mongo.hrl create mode 100644 apps/emqx_auth_mongo/priv/emqx_auth_mongo.schema create mode 100644 apps/emqx_auth_mongo/rebar.config create mode 100644 apps/emqx_auth_mongo/rebar.config.script create mode 100644 apps/emqx_auth_mongo/src/emqx_acl_mongo.erl create mode 100644 apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src create mode 100644 apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src.script create mode 100644 apps/emqx_auth_mongo/src/emqx_auth_mongo.erl create mode 100644 apps/emqx_auth_mongo/src/emqx_auth_mongo_app.erl create mode 100644 apps/emqx_auth_mongo/src/emqx_auth_mongo_sup.erl create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE.erl create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca-key.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/mongodb.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/private_key.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/public_key.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-cert.pem create mode 100644 apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-key.pem create mode 100644 apps/emqx_auth_mysql/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_mysql/.gitignore create mode 100644 apps/emqx_auth_mysql/LICENSE create mode 100644 apps/emqx_auth_mysql/Makefile create mode 100644 apps/emqx_auth_mysql/README.md create mode 100644 apps/emqx_auth_mysql/docker-compose-ssl.yml create mode 100644 apps/emqx_auth_mysql/docker-compose.yml create mode 100644 apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf create mode 100644 apps/emqx_auth_mysql/include/emqx_auth_mysql.hrl create mode 100644 apps/emqx_auth_mysql/mqtt.sql create mode 100644 apps/emqx_auth_mysql/priv/emqx_auth_mysql.schema create mode 100644 apps/emqx_auth_mysql/rebar.config create mode 100644 apps/emqx_auth_mysql/rebar.config.script create mode 100644 apps/emqx_auth_mysql/src/emqx_acl_mysql.erl create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src.script create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql.erl create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql_app.erl create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql_cli.erl create mode 100644 apps/emqx_auth_mysql/src/emqx_auth_mysql_sup.erl create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE.erl create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca-key.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/private_key.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/public_key.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-cert.pem create mode 100644 apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-key.pem create mode 100644 apps/emqx_auth_pgsql/.ci/docker-compose.yml create mode 100644 apps/emqx_auth_pgsql/.ci/pgsql/Dockerfile create mode 100644 apps/emqx_auth_pgsql/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_pgsql/.gitignore create mode 100644 apps/emqx_auth_pgsql/LICENSE create mode 100644 apps/emqx_auth_pgsql/Makefile create mode 100644 apps/emqx_auth_pgsql/README.md create mode 100644 apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf create mode 100644 apps/emqx_auth_pgsql/include/emqx_auth_pgsql.hrl create mode 100644 apps/emqx_auth_pgsql/mqtt.sql create mode 100644 apps/emqx_auth_pgsql/priv/emqx_auth_pgsql.schema create mode 100644 apps/emqx_auth_pgsql/rebar.config create mode 100644 apps/emqx_auth_pgsql/rebar.config.script create mode 100644 apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src.script create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql_app.erl create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql_cli.erl create mode 100644 apps/emqx_auth_pgsql/src/emqx_auth_pgsql_sup.erl create mode 100644 apps/emqx_auth_pgsql/test/.placeholder create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE.erl create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/ca.pem create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-cert.pem create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-key.pem create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/pg.conf create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-cert.pem create mode 100644 apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-key.pem create mode 100644 apps/emqx_auth_redis/.ci/docker-compose-tls.yml create mode 100644 apps/emqx_auth_redis/.ci/docker-compose.yml create mode 100644 apps/emqx_auth_redis/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_auth_redis/.gitignore create mode 100644 apps/emqx_auth_redis/LICENSE create mode 100644 apps/emqx_auth_redis/Makefile create mode 100644 apps/emqx_auth_redis/README.md create mode 100644 apps/emqx_auth_redis/etc/emqx_auth_redis.conf create mode 100644 apps/emqx_auth_redis/include/emqx_auth_redis.hrl create mode 100644 apps/emqx_auth_redis/priv/emqx_auth_redis.schema create mode 100644 apps/emqx_auth_redis/rebar.config create mode 100644 apps/emqx_auth_redis/rebar.config.script create mode 100644 apps/emqx_auth_redis/src/emqx_acl_redis.erl create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis.app.src create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis.app.src.script create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis.appup.src create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis.erl create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis_app.erl create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis_cli.erl create mode 100644 apps/emqx_auth_redis/src/emqx_auth_redis_sup.erl create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE.erl create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.key create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.txt create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.dh create mode 100644 apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key create mode 100644 apps/emqx_bridge_mqtt/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_bridge_mqtt/.gitignore create mode 100644 apps/emqx_bridge_mqtt/LICENSE create mode 100644 apps/emqx_bridge_mqtt/Makefile create mode 100644 apps/emqx_bridge_mqtt/README.md create mode 100644 apps/emqx_bridge_mqtt/docs/guide.rst create mode 100644 apps/emqx_bridge_mqtt/docs/images/bridge.png create mode 100644 apps/emqx_bridge_mqtt/etc/emqx_bridge_mqtt.conf create mode 100644 apps/emqx_bridge_mqtt/include/emqx_bridge_mqtt.hrl create mode 100644 apps/emqx_bridge_mqtt/priv/emqx_bridge_mqtt.schema create mode 100644 apps/emqx_bridge_mqtt/rebar.config create mode 100644 apps/emqx_bridge_mqtt/rebar.config.script create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_connect.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src.script create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_app.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_cli.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_sup.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_msg.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_rpc.erl create mode 100644 apps/emqx_bridge_mqtt/src/emqx_bridge_worker.erl create mode 100644 apps/emqx_bridge_mqtt/test/emqx_bridge_mqtt_tests.erl create mode 100644 apps/emqx_bridge_mqtt/test/emqx_bridge_rpc_tests.erl create mode 100644 apps/emqx_bridge_mqtt/test/emqx_bridge_worker_SUITE.erl create mode 100644 apps/emqx_bridge_mqtt/test/emqx_bridge_worker_tests.erl create mode 100644 apps/emqx_coap/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_coap/.gitignore create mode 100644 apps/emqx_coap/LICENSE create mode 100644 apps/emqx_coap/Makefile create mode 100644 apps/emqx_coap/README.md create mode 100644 apps/emqx_coap/TODO create mode 100644 apps/emqx_coap/docs/rfc7049.pdf create mode 100644 apps/emqx_coap/docs/rfc7228.pdf create mode 100644 apps/emqx_coap/docs/rfc7252.pdf create mode 100644 apps/emqx_coap/etc/emqx_coap.conf create mode 100644 apps/emqx_coap/include/emqx_coap.hrl create mode 100644 apps/emqx_coap/intergration_test/Makefile create mode 100644 apps/emqx_coap/intergration_test/README.md create mode 100644 apps/emqx_coap/intergration_test/check_result.py create mode 100644 apps/emqx_coap/priv/emqx_coap.schema create mode 100644 apps/emqx_coap/rebar.config create mode 100644 apps/emqx_coap/rebar.config.script create mode 100644 apps/emqx_coap/src/emqx_coap.app.src create mode 100644 apps/emqx_coap/src/emqx_coap.app.src.script create mode 100644 apps/emqx_coap/src/emqx_coap_app.erl create mode 100644 apps/emqx_coap/src/emqx_coap_mqtt_adapter.erl create mode 100644 apps/emqx_coap/src/emqx_coap_ps_resource.erl create mode 100644 apps/emqx_coap/src/emqx_coap_ps_topics.erl create mode 100644 apps/emqx_coap/src/emqx_coap_registry.erl create mode 100644 apps/emqx_coap/src/emqx_coap_resource.erl create mode 100644 apps/emqx_coap/src/emqx_coap_server.erl create mode 100644 apps/emqx_coap/src/emqx_coap_sup.erl create mode 100644 apps/emqx_coap/src/emqx_coap_timer.erl create mode 100644 apps/emqx_coap/test/emqx_coap_SUITE.erl create mode 100644 apps/emqx_coap/test/emqx_coap_ps_SUITE.erl create mode 100644 apps/emqx_enterprise_dashboard/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_enterprise_dashboard/.gitignore create mode 100644 apps/emqx_enterprise_dashboard/.travis.yml create mode 100644 apps/emqx_enterprise_dashboard/LICENSE create mode 100644 apps/emqx_enterprise_dashboard/Makefile create mode 100644 apps/emqx_enterprise_dashboard/README.md create mode 100644 apps/emqx_enterprise_dashboard/etc/emqx_dashboard.conf create mode 100644 apps/emqx_enterprise_dashboard/include/emqx_dashboard.hrl create mode 100644 apps/emqx_enterprise_dashboard/priv/emqx_dashboard.schema create mode 100644 apps/emqx_enterprise_dashboard/priv/www/index.html create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/app.0607679a.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-18aaaf52.a09c5d07.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-19e46f15.16b26fc6.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-1aa6ec30.655540b6.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2095c2f3.62b43ba0.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-214e9a45.14ee6fe0.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2be77691.75bab761.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3208fb9c.ba1dcff8.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-32291c05.be47c5e9.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3adcb268.c694417f.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-47a06954.702f1fa1.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4a5c704e.75ab2c7d.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4aeced56.6623c461.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-53e9a7a2.b3cd5b9f.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-59e5d464.dbc1edc5.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-5f0ec173.5b55e2a1.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-69b6fda6.59698d74.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-6c281630.05abdf4e.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-73c7a756.0d6e7a8d.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a115fb5.ca6ff1a6.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a82b09c.24696130.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7b01e2fb.d6669dc8.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-8ed2d5e8.b90bf6aa.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-94b856f2.08867920.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a14add7e.58a5af04.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a8ae90d8.35afa7a6.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-cfe3eeda.d6a2593d.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-d3537170.0fcbc2f3.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-e7f1aeea.a0f2acee.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-vendors.57ed2864.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/editor.worker.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/emq.ico create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/fonts/Roboto-Light.634f53eb.ttf create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/fonts/Roboto-Light.ecce92d0.woff create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/fonts/element-icons.535877f5.woff create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/fonts/element-icons.732389de.ttf create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.css create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.eot create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.svg create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.ttf create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.woff create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.woff2 create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/auth_sasl.9724eec3.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/delayed_publish.b0b58640.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emq_logo.94c8ee06.svg create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_jwt.402c6a38.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_mnesia.cee137cc.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_mysql.a3615766.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_pgsql.079ce8f3.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_redis.e0ec3147.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_cassa.82e8858e.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_influxdb.0cb90da7.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_mysql.a3615766.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_pgsql.079ce8f3.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_redis.e0ec3147.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_timescale.5f750079.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_banner.20c13f08.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_kafka.dcabb7d7.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_mqtt.a3066767.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_pulsar.be9aa2e9.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_rocket.d53d64f9.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_conf.33ff924d.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_dashboard.6937edc4.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_gbt32960.9ea5fd31.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_jt808.28a1a87c.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_lua_hook.70ea0a97.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_lwm2m.0fe3f19e.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_modules.e34e019e.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_prometheus.59114669.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_rule_engine.31e92ad1.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sasl.11e2cd6a.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sn.2d9d907b.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_stomp.14cf6644.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_tcp.e16bdfbd.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_web_hook.a0bd461e.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/gbt32960_protocol.9ea5fd31.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/hot_confs.957f5817.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/internal_acl.aca28594.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/jt808_protocol.28a1a87c.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/jwt_authentication.402c6a38.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/kafka_consumer.e4c070e2.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/lwm2m_protocol.0fe3f19e.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/mnesia_authentication.cee137cc.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/mqtt_sn_protocol.4186d81f.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/mqtt_subscriber.6a7d014d.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/mysql_authentication.a3615766.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/not_settings.01e8bfc4.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/pgsql_authentication.079ce8f3.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/prometheus.59114669.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/pulsar_consumer.be9aa2e9.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/redis_authentication.e0ec3147.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/retainer.a07ffddf.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/sasl_authentication.11e2cd6a.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/stomp_protocol.14cf6644.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/subscription.839c01f1.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/tcp_protocol.e16bdfbd.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/topic_metrics.ee87579d.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/img/topic_rewrite.676de860.png create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/app.235bfefd.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-174a5ac2.b9cebe6b.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-18aaaf52.04b806a1.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-19e46f15.d147220b.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1aa6ec30.e7c745ea.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1de6578b.f726be8a.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2095c2f3.87ded140.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-214e9a45.4c4953f7.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2be77691.a1865558.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0ae937.443808f2.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0be333.63623404.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0c1ed0.e71f291f.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0d7a87.5fd3c468.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d2134e7.15b56ca9.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3208fb9c.7c668dc0.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-32291c05.fa1e09f6.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-39509ba9.bfd064ab.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3adcb268.16eb5205.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-47a06954.4663b2c4.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-4a5c704e.53a95f82.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-4aeced56.f76dfa1e.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-53e9a7a2.98b8cd9d.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-59e5d464.d7db690a.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-5f0ec173.65eca404.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-69b6fda6.4f049c18.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-6c281630.390d79a0.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-73c7a756.fcf16690.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a115fb5.a45fa85b.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a82b09c.43ec0d25.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7b01e2fb.f369a777.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-8ed2d5e8.20b6effa.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-94b856f2.8df186b1.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a14add7e.e87d1b79.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a8ae90d8.42887868.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a950fa80.ed5136ae.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-c5bf9d5c.e162d642.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-cfe3eeda.9f42fde3.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-d3537170.7f7eb6fb.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-e7f1aeea.93c28ea9.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-ead04a98.b90d2cde.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-vendors.175fe33f.js create mode 100644 apps/emqx_enterprise_dashboard/priv/www/static/json.worker.js create mode 100644 apps/emqx_enterprise_dashboard/rebar.config create mode 100644 apps/emqx_enterprise_dashboard/rebar.config.script create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src.script create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard.appup.src create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_admin.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_api.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_app.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_cli.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_cluster_api.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_collection.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_license_api.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_monitor_api.erl create mode 100644 apps/emqx_enterprise_dashboard/src/emqx_dashboard_sup.erl create mode 100644 apps/emqx_enterprise_dashboard/test/emqx_dashboard_SUITE.erl create mode 100644 apps/emqx_exhook/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_exhook/.gitignore create mode 100644 apps/emqx_exhook/LICENSE create mode 100644 apps/emqx_exhook/Makefile create mode 100644 apps/emqx_exhook/README.md create mode 100644 apps/emqx_exhook/docs/design.md create mode 100644 apps/emqx_exhook/etc/emqx_exhook.conf create mode 100644 apps/emqx_exhook/include/emqx_exhook.hrl create mode 100644 apps/emqx_exhook/priv/emqx_exhook.schema create mode 100644 apps/emqx_exhook/priv/protos/exhook.proto create mode 100644 apps/emqx_exhook/rebar.config create mode 100644 apps/emqx_exhook/rebar.config.script create mode 100644 apps/emqx_exhook/src/emqx_exhook.app.src create mode 100644 apps/emqx_exhook/src/emqx_exhook.app.src.script create mode 100644 apps/emqx_exhook/src/emqx_exhook.appup.src create mode 100644 apps/emqx_exhook/src/emqx_exhook.erl create mode 100644 apps/emqx_exhook/src/emqx_exhook_app.erl create mode 100644 apps/emqx_exhook/src/emqx_exhook_cli.erl create mode 100644 apps/emqx_exhook/src/emqx_exhook_handler.erl create mode 100644 apps/emqx_exhook/src/emqx_exhook_server.erl create mode 100644 apps/emqx_exhook/src/emqx_exhook_sup.erl create mode 100644 apps/emqx_exhook/test/emqx_exhook_SUITE.erl create mode 100644 apps/emqx_exhook/test/emqx_exhook_demo_svr.erl create mode 100644 apps/emqx_exhook/test/props/prop_exhook_hooks.erl create mode 100644 apps/emqx_exproto/.github/workflows/run_test_case.yaml create mode 100644 apps/emqx_exproto/.gitignore create mode 100644 apps/emqx_exproto/LICENSE create mode 100644 apps/emqx_exproto/Makefile create mode 100644 apps/emqx_exproto/README.md create mode 100644 apps/emqx_exproto/docs/design.md create mode 100644 apps/emqx_exproto/docs/images/exproto-arch.jpg create mode 100644 apps/emqx_exproto/docs/images/exproto-grpc-arch.jpg create mode 100644 apps/emqx_exproto/etc/emqx_exproto.conf create mode 100644 apps/emqx_exproto/include/emqx_exproto.hrl create mode 100644 apps/emqx_exproto/priv/emqx_exproto.schema create mode 100644 apps/emqx_exproto/priv/protos/exproto.proto create mode 100644 apps/emqx_exproto/rebar.config create mode 100644 apps/emqx_exproto/rebar.config.script create mode 100644 apps/emqx_exproto/src/emqx_exproto.app.src create mode 100644 apps/emqx_exproto/src/emqx_exproto.app.src.script create mode 100644 apps/emqx_exproto/src/emqx_exproto.appup.src create mode 100644 apps/emqx_exproto/src/emqx_exproto.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_app.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_channel.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_conn.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_gcli.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_gsvr.erl create mode 100644 apps/emqx_exproto/src/emqx_exproto_sup.erl create mode 100644 apps/emqx_exproto/test/emqx_exproto_SUITE.erl create mode 100644 apps/emqx_exproto/test/emqx_exproto_echo_svr.erl create mode 100644 apps/emqx_lua_hook/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_lua_hook/.gitignore create mode 100644 apps/emqx_lua_hook/LICENSE create mode 100644 apps/emqx_lua_hook/Makefile create mode 100644 apps/emqx_lua_hook/README.md create mode 100644 apps/emqx_lua_hook/etc/emqx_lua_hook.conf create mode 100644 apps/emqx_lua_hook/examples.lua create mode 100644 apps/emqx_lua_hook/include/emqx_lua_hook.hrl create mode 100644 apps/emqx_lua_hook/priv/emqx_lua_hook.schema create mode 100644 apps/emqx_lua_hook/rebar.config create mode 100644 apps/emqx_lua_hook/rebar.config.script create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook.app.src create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook.app.src.script create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook.erl create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook_app.erl create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook_cli.erl create mode 100644 apps/emqx_lua_hook/src/emqx_lua_hook_sup.erl create mode 100644 apps/emqx_lua_hook/src/emqx_lua_script.erl create mode 100644 apps/emqx_lua_hook/test/emqx_lua_hook_SUITE.erl create mode 100644 apps/emqx_lwm2m/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_lwm2m/.gitignore create mode 100644 apps/emqx_lwm2m/LICENSE create mode 100644 apps/emqx_lwm2m/Makefile create mode 100644 apps/emqx_lwm2m/README.md create mode 100644 apps/emqx_lwm2m/etc/emqx_lwm2m.conf create mode 100644 apps/emqx_lwm2m/include/emqx_lwm2m.hrl create mode 100644 apps/emqx_lwm2m/integration_test/Makefile create mode 100644 apps/emqx_lwm2m/integration_test/case1.py create mode 100644 apps/emqx_lwm2m/integration_test/case2.py create mode 100644 apps/emqx_lwm2m/integration_test/case3.py create mode 100644 apps/emqx_lwm2m/integration_test/insert_lwm2m_plugin.py create mode 100644 apps/emqx_lwm2m/integration_test/object_security.c create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Access_Control-v1_0_1.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Connectivity_Statistics-v1_0_1.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Device-v1_0_1.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Firmware_Update-v1_0_1.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Location-v1_0.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Security-v1_0.xml create mode 100644 apps/emqx_lwm2m/lwm2m_xml/LWM2M_Server-v1_0.xml create mode 100644 apps/emqx_lwm2m/priv/emqx_lwm2m.schema create mode 100644 apps/emqx_lwm2m/rebar.config create mode 100644 apps/emqx_lwm2m/rebar.config.script create mode 100644 apps/emqx_lwm2m/src/binary_util.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m.app.src create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m.app.src.script create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m.appup.src create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_api.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_app.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_cm.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_cm_sup.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_cmd_handler.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_coap_resource.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_coap_server.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_json.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_message.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_protocol.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_sup.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_timer.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_tlv.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_xml_object.erl create mode 100644 apps/emqx_lwm2m/src/emqx_lwm2m_xml_object_db.erl create mode 100644 apps/emqx_lwm2m/test/emqx_lwm2m_SUITE.erl create mode 100644 apps/emqx_lwm2m/test/emqx_tlv_SUITE.erl create mode 100644 apps/emqx_lwm2m/test/test_mqtt_broker.erl create mode 100644 apps/emqx_management/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_management/.gitignore create mode 100644 apps/emqx_management/LICENSE create mode 100644 apps/emqx_management/Makefile create mode 100644 apps/emqx_management/README.md create mode 100644 apps/emqx_management/etc/emqx_management.conf create mode 100644 apps/emqx_management/include/emqx_mgmt.hrl create mode 100644 apps/emqx_management/priv/emqx_management.schema create mode 100644 apps/emqx_management/rebar.config create mode 100644 apps/emqx_management/rebar.config.script create mode 100644 apps/emqx_management/src/emqx_management.app.src create mode 100644 apps/emqx_management/src/emqx_management.app.src.script create mode 100644 apps/emqx_management/src/emqx_management.appup.src create mode 100644 apps/emqx_management/src/emqx_mgmt.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_alarms.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_apps.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_banned.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_brokers.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_clients.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_data.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_listeners.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_metrics.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_nodes.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_plugins.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_pubsub.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_routes.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_stats.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_api_subscriptions.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_app.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_auth.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_cli.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_http.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_sup.erl create mode 100644 apps/emqx_management/src/emqx_mgmt_util.erl create mode 100644 apps/emqx_management/test/emqx_mgmt_SUITE.erl create mode 100644 apps/emqx_management/test/emqx_mgmt_api_SUITE.erl create mode 100644 apps/emqx_management/test/etc/emqx_management.conf create mode 100644 apps/emqx_management/test/etc/emqx_reloader.conf create mode 100644 apps/emqx_management/test/rfc6455_client.erl create mode 100644 apps/emqx_prometheus/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_prometheus/.gitignore create mode 100644 apps/emqx_prometheus/LICENSE create mode 100644 apps/emqx_prometheus/Makefile create mode 100644 apps/emqx_prometheus/README.md create mode 100644 apps/emqx_prometheus/TODO create mode 100644 apps/emqx_prometheus/etc/emqx_prometheus.conf create mode 100644 apps/emqx_prometheus/grafana_template/EMQ.json create mode 100644 apps/emqx_prometheus/grafana_template/EMQ_Dashboard.json create mode 100644 apps/emqx_prometheus/grafana_template/ErlangVM.json create mode 100644 apps/emqx_prometheus/include/emqx_prometheus.hrl create mode 100644 apps/emqx_prometheus/priv/emqx_prometheus.schema create mode 100644 apps/emqx_prometheus/rebar.config create mode 100644 apps/emqx_prometheus/rebar.config.script create mode 100644 apps/emqx_prometheus/src/emqx_prometheus.app.src create mode 100644 apps/emqx_prometheus/src/emqx_prometheus.app.src.script create mode 100644 apps/emqx_prometheus/src/emqx_prometheus.erl create mode 100644 apps/emqx_prometheus/src/emqx_prometheus_app.erl create mode 100644 apps/emqx_prometheus/src/emqx_prometheus_sup.erl create mode 100644 apps/emqx_prometheus/test/emqx_prometheus_SUITE.erl create mode 100644 apps/emqx_psk_file/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_psk_file/.gitignore create mode 100644 apps/emqx_psk_file/LICENSE create mode 100644 apps/emqx_psk_file/Makefile create mode 100644 apps/emqx_psk_file/README.md create mode 100644 apps/emqx_psk_file/etc/emqx_psk_file.conf create mode 100644 apps/emqx_psk_file/etc/psk.txt create mode 100644 apps/emqx_psk_file/priv/emqx_psk_file.schema create mode 100644 apps/emqx_psk_file/rebar.config create mode 100644 apps/emqx_psk_file/rebar.config.script create mode 100644 apps/emqx_psk_file/src/emqx_psk_file.app.src create mode 100644 apps/emqx_psk_file/src/emqx_psk_file.app.src.script create mode 100644 apps/emqx_psk_file/src/emqx_psk_file.erl create mode 100644 apps/emqx_psk_file/src/emqx_psk_file_app.erl create mode 100644 apps/emqx_psk_file/src/emqx_psk_file_sup.erl create mode 100644 apps/emqx_psk_file/test/emqx_psk_file_SUITE.erl create mode 100644 apps/emqx_recon/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_recon/.gitignore create mode 100644 apps/emqx_recon/LICENSE create mode 100644 apps/emqx_recon/Makefile create mode 100644 apps/emqx_recon/README.md create mode 100644 apps/emqx_recon/etc/emqx_recon.conf create mode 100644 apps/emqx_recon/priv/emqx_recon.schema create mode 100644 apps/emqx_recon/rebar.config create mode 100644 apps/emqx_recon/rebar.config.script create mode 100644 apps/emqx_recon/src/emqx_recon.app.src create mode 100644 apps/emqx_recon/src/emqx_recon.app.src.script create mode 100644 apps/emqx_recon/src/emqx_recon.erl create mode 100644 apps/emqx_recon/src/emqx_recon_cli.erl create mode 100644 apps/emqx_recon/test/emqx_recon_SUITE.erl create mode 100644 apps/emqx_recon/test/emqx_recon_SUITE_data/emqx.conf create mode 100644 apps/emqx_recon/test/emqx_recon_SUITE_data/emqx.schema create mode 100644 apps/emqx_recon/test/emqx_recon_SUITE_data/emqx_recon.conf create mode 100644 apps/emqx_recon/test/emqx_recon_SUITE_data/emqx_recon.schema create mode 100644 apps/emqx_retainer/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_retainer/.gitignore create mode 100644 apps/emqx_retainer/LICENSE create mode 100644 apps/emqx_retainer/Makefile create mode 100644 apps/emqx_retainer/README.md create mode 100644 apps/emqx_retainer/TODO create mode 100644 apps/emqx_retainer/etc/emqx_retainer.conf create mode 100644 apps/emqx_retainer/include/emqx_retainer.hrl create mode 100644 apps/emqx_retainer/priv/emqx_retainer.schema create mode 100644 apps/emqx_retainer/rebar.config create mode 100644 apps/emqx_retainer/rebar.config.script create mode 100644 apps/emqx_retainer/src/emqx_retainer.app.src create mode 100644 apps/emqx_retainer/src/emqx_retainer.app.src.script create mode 100644 apps/emqx_retainer/src/emqx_retainer.appup.src create mode 100644 apps/emqx_retainer/src/emqx_retainer.erl create mode 100644 apps/emqx_retainer/src/emqx_retainer_app.erl create mode 100644 apps/emqx_retainer/src/emqx_retainer_cli.erl create mode 100644 apps/emqx_retainer/src/emqx_retainer_sup.erl create mode 100644 apps/emqx_retainer/test/emqx_retainer_SUITE.erl create mode 100644 apps/emqx_retainer/test/emqx_retainer_cli_SUITE.erl create mode 100644 apps/emqx_retainer/test/mqtt_protocol_v5_SUITE.erl create mode 100644 apps/emqx_rule_engine/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_rule_engine/.gitignore create mode 100644 apps/emqx_rule_engine/LICENSE create mode 100644 apps/emqx_rule_engine/Makefile create mode 100644 apps/emqx_rule_engine/README.md create mode 100644 apps/emqx_rule_engine/docs/api_examples.md create mode 100644 apps/emqx_rule_engine/docs/cli_examples.md create mode 100644 apps/emqx_rule_engine/docs/design.md create mode 100644 apps/emqx_rule_engine/etc/emqx_rule_engine.conf create mode 100644 apps/emqx_rule_engine/include/rule_actions.hrl create mode 100644 apps/emqx_rule_engine/include/rule_engine.hrl create mode 100644 apps/emqx_rule_engine/include/rule_events.hrl create mode 100644 apps/emqx_rule_engine/priv/emqx_rule_engine.schema create mode 100644 apps/emqx_rule_engine/rebar.config create mode 100644 apps/emqx_rule_engine/rebar.config.script create mode 100644 apps/emqx_rule_engine/src/emqx_rule_actions.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_actions_trans.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine.app.src create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine.app.src.script create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine.appup.src create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine_api.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine_app.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine_cli.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_engine_sup.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_events.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_funcs.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_id.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_locker.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_maps.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_metrics.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_registry.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_runtime.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_sqlparser.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_sqltester.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_utils.erl create mode 100644 apps/emqx_rule_engine/src/emqx_rule_validator.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_engine_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_events_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_id_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_maps_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_metrics_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_registry_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_utils_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/emqx_rule_validator_SUITE.erl create mode 100644 apps/emqx_rule_engine/test/prop_rule_maps.erl create mode 100644 apps/emqx_sasl/.github/workflows/run_test_case.yaml create mode 100644 apps/emqx_sasl/.gitignore create mode 100644 apps/emqx_sasl/LICENSE create mode 100644 apps/emqx_sasl/Makefile create mode 100644 apps/emqx_sasl/README.md create mode 100644 apps/emqx_sasl/etc/emqx_sasl.conf create mode 100644 apps/emqx_sasl/include/emqx_sasl.hrl create mode 100644 apps/emqx_sasl/priv/emqx_sasl.schema create mode 100644 apps/emqx_sasl/rebar.config create mode 100644 apps/emqx_sasl/rebar.config.script create mode 100644 apps/emqx_sasl/src/emqx_sasl.app.src create mode 100644 apps/emqx_sasl/src/emqx_sasl.app.src.script create mode 100644 apps/emqx_sasl/src/emqx_sasl.erl create mode 100644 apps/emqx_sasl/src/emqx_sasl_api.erl create mode 100644 apps/emqx_sasl/src/emqx_sasl_app.erl create mode 100644 apps/emqx_sasl/src/emqx_sasl_cli.erl create mode 100644 apps/emqx_sasl/src/emqx_sasl_scram.erl create mode 100644 apps/emqx_sasl/test/emqx_sasl_scram_SUITE.erl create mode 100644 apps/emqx_sn/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_sn/.gitignore create mode 100644 apps/emqx_sn/LICENSE create mode 100644 apps/emqx_sn/Makefile create mode 100644 apps/emqx_sn/README.md create mode 100644 apps/emqx_sn/etc/emqx_sn.conf create mode 100644 apps/emqx_sn/examples/simple_example.erl create mode 100644 apps/emqx_sn/examples/simple_example2.erl create mode 100644 apps/emqx_sn/examples/simple_example3.erl create mode 100644 apps/emqx_sn/examples/simple_example4.erl create mode 100644 apps/emqx_sn/include/emqx_sn.hrl create mode 100644 apps/emqx_sn/intergration_test/Makefile create mode 100644 apps/emqx_sn/intergration_test/README.md create mode 100644 apps/emqx_sn/intergration_test/add_emqx_sn_to_project.py create mode 100644 apps/emqx_sn/intergration_test/client/case1_qos0pub.c create mode 100644 apps/emqx_sn/intergration_test/client/case1_qos0sub.c create mode 100644 apps/emqx_sn/intergration_test/client/case2_qos0pub.c create mode 100644 apps/emqx_sn/intergration_test/client/case2_qos0sub.c create mode 100644 apps/emqx_sn/intergration_test/client/case3_qos0pub.c create mode 100644 apps/emqx_sn/intergration_test/client/case3_qos0sub.c create mode 100644 apps/emqx_sn/intergration_test/client/case4_qos3pub.c create mode 100644 apps/emqx_sn/intergration_test/client/case4_qos3sub.c create mode 100644 apps/emqx_sn/intergration_test/client/case5_qos3pub.c create mode 100644 apps/emqx_sn/intergration_test/client/case5_qos3sub.c create mode 100644 apps/emqx_sn/intergration_test/client/case6_sleep.c create mode 100644 apps/emqx_sn/intergration_test/client/case7_double_connect.c create mode 100644 apps/emqx_sn/intergration_test/client/int_test_result.c create mode 100644 apps/emqx_sn/intergration_test/client/int_test_result.h create mode 100644 apps/emqx_sn/intergration_test/disable_qos3.py create mode 100644 apps/emqx_sn/intergration_test/enable_qos3.py create mode 100644 apps/emqx_sn/priv/emqx_sn.schema create mode 100644 apps/emqx_sn/rebar.config create mode 100644 apps/emqx_sn/rebar.config.script create mode 100644 apps/emqx_sn/src/emqx_sn.app.src create mode 100644 apps/emqx_sn/src/emqx_sn.app.src.script create mode 100644 apps/emqx_sn/src/emqx_sn.appup.src create mode 100644 apps/emqx_sn/src/emqx_sn_app.erl create mode 100644 apps/emqx_sn/src/emqx_sn_asleep_timer.erl create mode 100644 apps/emqx_sn/src/emqx_sn_broadcast.erl create mode 100644 apps/emqx_sn/src/emqx_sn_frame.erl create mode 100644 apps/emqx_sn/src/emqx_sn_gateway.erl create mode 100644 apps/emqx_sn/src/emqx_sn_registry.erl create mode 100644 apps/emqx_sn/src/emqx_sn_sup.erl create mode 100644 apps/emqx_sn/test/broadcast_test.py create mode 100644 apps/emqx_sn/test/emqx_sn_frame_SUITE.erl create mode 100644 apps/emqx_sn/test/emqx_sn_protocol_SUITE.erl create mode 100644 apps/emqx_sn/test/emqx_sn_registry_SUITE.erl create mode 100644 apps/emqx_sn/test/props/emqx_sn_proper_types.erl create mode 100644 apps/emqx_sn/test/props/prop_emqx_sn_frame.erl create mode 100644 apps/emqx_sn/vars create mode 100644 apps/emqx_stomp/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_stomp/.gitignore create mode 100644 apps/emqx_stomp/LICENSE create mode 100644 apps/emqx_stomp/Makefile create mode 100644 apps/emqx_stomp/README.md create mode 100644 apps/emqx_stomp/etc/emqx_stomp.conf create mode 100644 apps/emqx_stomp/include/emqx_stomp.hrl create mode 100644 apps/emqx_stomp/priv/emqx_stomp.schema create mode 100644 apps/emqx_stomp/rebar.config create mode 100644 apps/emqx_stomp/rebar.config.script create mode 100644 apps/emqx_stomp/src/emqx_stomp.app.src create mode 100644 apps/emqx_stomp/src/emqx_stomp.app.src.script create mode 100644 apps/emqx_stomp/src/emqx_stomp.erl create mode 100644 apps/emqx_stomp/src/emqx_stomp_connection.erl create mode 100644 apps/emqx_stomp/src/emqx_stomp_frame.erl create mode 100644 apps/emqx_stomp/src/emqx_stomp_heartbeat.erl create mode 100644 apps/emqx_stomp/src/emqx_stomp_protocol.erl create mode 100644 apps/emqx_stomp/src/emqx_stomp_transaction.erl create mode 100644 apps/emqx_stomp/test/client.py create mode 100644 apps/emqx_stomp/test/emqx_stomp_SUITE.erl create mode 100644 apps/emqx_telemetry/.gitignore create mode 100644 apps/emqx_telemetry/LICENSE create mode 100644 apps/emqx_telemetry/Makefile create mode 100644 apps/emqx_telemetry/README.md create mode 100644 apps/emqx_telemetry/etc/emqx_telemetry.conf create mode 100644 apps/emqx_telemetry/priv/emqx_telemetry.schema create mode 100644 apps/emqx_telemetry/rebar.config create mode 100644 apps/emqx_telemetry/rebar.config.script create mode 100644 apps/emqx_telemetry/src/emqx_telemetry.app.src create mode 100644 apps/emqx_telemetry/src/emqx_telemetry.appup.src create mode 100644 apps/emqx_telemetry/src/emqx_telemetry.erl create mode 100644 apps/emqx_telemetry/src/emqx_telemetry_api.erl create mode 100644 apps/emqx_telemetry/src/emqx_telemetry_app.erl create mode 100644 apps/emqx_telemetry/src/emqx_telemetry_sup.erl create mode 100644 apps/emqx_telemetry/test/emqx_telemetry_SUITE.erl create mode 100644 apps/emqx_web_hook/.github/workflows/run_test_cases.yaml create mode 100644 apps/emqx_web_hook/.gitignore create mode 100644 apps/emqx_web_hook/LICENSE create mode 100644 apps/emqx_web_hook/Makefile create mode 100644 apps/emqx_web_hook/README.md create mode 100644 apps/emqx_web_hook/TODO create mode 100644 apps/emqx_web_hook/etc/emqx_web_hook.conf create mode 100644 apps/emqx_web_hook/include/emqx_web_hook.hrl create mode 100644 apps/emqx_web_hook/priv/emqx_web_hook.schema create mode 100644 apps/emqx_web_hook/rebar.config create mode 100644 apps/emqx_web_hook/rebar.config.script create mode 100644 apps/emqx_web_hook/src/emqx_web_hook.app.src create mode 100644 apps/emqx_web_hook/src/emqx_web_hook.app.src.script create mode 100644 apps/emqx_web_hook/src/emqx_web_hook.appup.src create mode 100644 apps/emqx_web_hook/src/emqx_web_hook.erl create mode 100644 apps/emqx_web_hook/src/emqx_web_hook_actions.erl create mode 100644 apps/emqx_web_hook/src/emqx_web_hook_app.erl create mode 100644 apps/emqx_web_hook/src/emqx_web_hook_sup.erl create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE.erl create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE_data/ca.pem create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE_data/client-cert.pem create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE_data/client-key.pem create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE_data/server-cert.pem create mode 100644 apps/emqx_web_hook/test/emqx_web_hook_SUITE_data/server-key.pem create mode 100644 apps/emqx_web_hook/test/http_server.erl create mode 100644 apps/emqx_web_hook/test/props/prop_webhook_confs.erl create mode 100644 apps/emqx_web_hook/test/props/prop_webhook_hooks.erl create mode 100755 sync-apps.sh diff --git a/.gitignore b/.gitignore index 2e19823c3..d320582c5 100644 --- a/.gitignore +++ b/.gitignore @@ -12,33 +12,34 @@ ebin test/ebin/*.beam .exrc plugins/*/ebin -log/ *.swp *.so .erlang.mk/ cover/ -emqx.d eunit.coverdata test/ct.cover.spec -logs ct.coverdata .idea/ -emqx.iml -_rel/ -data/ _build .rebar3 rebar3.crashdump .DS_Store -emqx.iml -bbmustache/ etc/gen.emqx.conf compile_commands.json cuttlefish -rebar.lock xrefr -erlang.mk *.coverdata etc/emqx.conf.rendered Mnesia.*/ +*.DS_Store +_checkouts +rebar.config.rendered +/rebar3 +rebar.lock .stamp +tmp/ +_packages +elvis +emqx_dialyzer_*_plt +apps/emqx_dashboard/priv/www +dist.zip diff --git a/apps/emqx_auth_http/.gitignore b/apps/emqx_auth_http/.gitignore new file mode 100644 index 000000000..557a3a337 --- /dev/null +++ b/apps/emqx_auth_http/.gitignore @@ -0,0 +1,25 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +emqx_auth_http.d +data +ct.cover.spec +cover/ +ct.coverdata +eunit.coverdata +logs/ +erlang.mk +_build/ +rebar.lock +rebar3.crashdump +etc/emqx_auth_http.conf.rendered +.rebar3/ +*.swp diff --git a/apps/emqx_auth_http/README.md b/apps/emqx_auth_http/README.md new file mode 100644 index 000000000..ed743334a --- /dev/null +++ b/apps/emqx_auth_http/README.md @@ -0,0 +1,100 @@ +emqx_auth_http +============== + +EMQ X HTTP Auth/ACL Plugin + +Build +----- + +``` +make && make tests +``` + +Configure the Plugin +-------------------- + +File: etc/emqx_auth_http.conf + +``` +##-------------------------------------------------------------------- +## Authentication request. +## +## Variables: +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %P: password +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Value: URL +auth.http.auth_req = http://127.0.0.1:8080/mqtt/auth +## Value: post | get | put +auth.http.auth_req.method = post +## Value: Params +auth.http.auth_req.params = clientid=%c,username=%u,password=%P + +##-------------------------------------------------------------------- +## Superuser request. +## +## Variables: +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %P: password +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Value: URL +auth.http.super_req = http://127.0.0.1:8080/mqtt/superuser +## Value: post | get | put +auth.http.super_req.method = post +## Value: Params +auth.http.super_req.params = clientid=%c,username=%u + +##-------------------------------------------------------------------- +## ACL request. +## +## Variables: +## - %A: 1 | 2, 1 = sub, 2 = pub +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %m: mountpoint +## - %t: topic +## +## Value: URL +auth.http.acl_req = http://127.0.0.1:8080/mqtt/acl +## Value: post | get | put +auth.http.acl_req.method = get +## Value: Params +auth.http.acl_req.params = access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t +``` + +Load the Plugin +--------------- + +``` +./bin/emqx_ctl plugins load emqx_auth_http +``` + +HTTP API +-------- + +200 if ok + +4xx if unauthorized + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_auth_http/etc/emqx_auth_http.conf b/apps/emqx_auth_http/etc/emqx_auth_http.conf new file mode 100644 index 000000000..e6763d4c6 --- /dev/null +++ b/apps/emqx_auth_http/etc/emqx_auth_http.conf @@ -0,0 +1,162 @@ +##-------------------------------------------------------------------- +## HTTP Auth/ACL Plugin +##-------------------------------------------------------------------- + +##-------------------------------------------------------------------- +## Authentication request. + +## HTTP URL API path for authentication request +## +## Value: URL +## +## Examples: http://127.0.0.1:8991/mqtt/auth, https://[::1]:8991/mqtt/auth +auth.http.auth_req = http://127.0.0.1:8991/mqtt/auth + +## Value: post | get | put +auth.http.auth_req.method = post + +## It only works when method=post +## Value: json | x-www-form-urlencoded +auth.http.auth_req.content_type = x-www-form-urlencoded + +## Variables: +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %P: password +## - %p: sockport of server accepted +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Value: Params +auth.http.auth_req.params = clientid=%c,username=%u,password=%P + +##-------------------------------------------------------------------- +## Superuser request. + +## HTTP URL API path for Superuser request +## +## Value: URL +## +## Examples: http://127.0.0.1:8991/mqtt/superuser, https://[::1]:8991/mqtt/superuser +#auth.http.super_req = http://127.0.0.1:8991/mqtt/superuser + +## Value: post | get | put +#auth.http.super_req.method = post + +## It only works when method=pos +## Value: json | x-www-form-urlencoded +#auth.http.super_req.content_type = x-www-form-urlencoded + +## Variables: +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %P: password +## - %p: sockport of server accepted +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Value: Params +#auth.http.super_req.params = clientid=%c,username=%u + +##-------------------------------------------------------------------- +## ACL request. + +## HTTP URL API path for ACL request +## +## Value: URL +## +## Examples: http://127.0.0.1:8991/mqtt/acl, https://[::1]:8991/mqtt/acl +auth.http.acl_req = http://127.0.0.1:8991/mqtt/acl + +## Value: post | get | put +auth.http.acl_req.method = get + +## It only works when method=post +## Value: json | x-www-form-urlencoded +auth.http.acl_req.content_type = x-www-form-urlencoded + +## Variables: +## - %A: 1 | 2, 1 = sub, 2 = pub +## - %u: username +## - %c: clientid +## - %a: ipaddress +## - %r: protocol +## - %m: mountpoint +## - %t: topic +## +## Value: Params +auth.http.acl_req.params = access=%A,username=%u,clientid=%c,ipaddr=%a,topic=%t,mountpoint=%m + +##------------------------------------------------------------------------------ +## Http Reqeust options + +## Time-out time for the http request, 0 is never timeout. +## +## Value: Duration +## -h: hour, e.g. '2h' for 2 hours +## -m: minute, e.g. '5m' for 5 minutes +## -s: second, e.g. '30s' for 30 seconds +## +## Default: 5s +## auth.http.request.timeout = 5s + +## Connection time-out time, used during the initial request +## when the client is connecting to the server +## +## Value: Duration +## +## Default is same with the timeout option +## auth.http.request.connect_timeout = 0 + +## Re-send http reuqest times +## +## Value: integer +## +## Default: 3 +auth.http.request.retry_times = 5 + +## The interval for re-sending the http request +## +## Value: Duration +## +## Default: 1s +auth.http.request.retry_interval = 1s + +## The 'Exponential Backoff' mechanism for re-sending request. The actually +## re-send time interval is `interval * backoff ^ times` +## +## Value: float +## +## Default: 2.0 +auth.http.request.retry_backoff = 2.0 + +##------------------------------------------------------------------------------ +## SSL options + +## Path to the file containing PEM-encoded CA certificates. The CA certificates +## are used during server authentication and when building the client certificate chain. +## +## Value: File +## auth.http.ssl.cacertfile = {{ platform_etc_dir }}/certs/ca.pem + +## The path to a file containing the client's certificate. +## +## Value: File +## auth.http.ssl.certfile = {{ platform_etc_dir }}/certs/client-cert.pem + +## Path to a file containing the client's private PEM-encoded key. +## +## Value: File +## auth.http.ssl.keyfile = {{ platform_etc_dir }}/certs/client-key.pem + +##-------------------------------------------------------------------- +## HTTP Request Headers +## +## Example: auth.http.header.Accept-Encoding = * +## +## Value: String +## auth.http.header.Accept = */* diff --git a/apps/emqx_auth_http/include/emqx_auth_http.hrl b/apps/emqx_auth_http/include/emqx_auth_http.hrl new file mode 100644 index 000000000..2bbe12827 --- /dev/null +++ b/apps/emqx_auth_http/include/emqx_auth_http.hrl @@ -0,0 +1,25 @@ + +-define(APP, emqx_auth_http). + +-record(http_request, {method = post, path, headers, params, request_timeout}). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_http/priv/emqx_auth_http.schema b/apps/emqx_auth_http/priv/emqx_auth_http.schema new file mode 100644 index 000000000..4f4289db0 --- /dev/null +++ b/apps/emqx_auth_http/priv/emqx_auth_http.schema @@ -0,0 +1,169 @@ +%%-*- mode: erlang -*- +%% emqx_auth_http config mapping +{mapping, "auth.http.auth_req", "emqx_auth_http.auth_req", [ + {datatype, string} +]}. + +{mapping, "auth.http.auth_req.method", "emqx_auth_http.auth_req", [ + {default, post}, + {datatype, {enum, [post, get]}} +]}. + +{mapping, "auth.http.auth_req.content_type", "emqx_auth_http.auth_req", [ + {default, 'x-www-form-urlencoded'}, + {datatype, {enum, ['json', 'x-www-form-urlencoded']}} +]}. + +{mapping, "auth.http.auth_req.params", "emqx_auth_http.auth_req", [ + {datatype, string} +]}. + +{translation, "emqx_auth_http.auth_req", fun(Conf) -> + case cuttlefish:conf_get("auth.http.auth_req", Conf) of + undefined -> cuttlefish:unset(); + Url -> + Params = cuttlefish:conf_get("auth.http.auth_req.params", Conf), + [{url, Url}, + {method, cuttlefish:conf_get("auth.http.auth_req.method", Conf)}, + {content_type, list_to_binary("application/" ++ atom_to_list(cuttlefish:conf_get("auth.http.auth_req.content_type", Conf)))}, + {params, [list_to_tuple(string:tokens(S, "=")) || S <- string:tokens(Params, ",")]}] + end +end}. + +{mapping, "auth.http.super_req", "emqx_auth_http.super_req", [ + {datatype, string} +]}. + +{mapping, "auth.http.super_req.method", "emqx_auth_http.super_req", [ + {default, post}, + {datatype, {enum, [post, get]}} +]}. + +{mapping, "auth.http.super_req.content_type", "emqx_auth_http.super_req", [ + {default, 'x-www-form-urlencoded'}, + {datatype, {enum, ['json', 'x-www-form-urlencoded']}} +]}. + +{mapping, "auth.http.super_req.params", "emqx_auth_http.super_req", [ + {datatype, string} +]}. + +{translation, "emqx_auth_http.super_req", fun(Conf) -> + case cuttlefish:conf_get("auth.http.super_req", Conf, undefined) of + undefined -> cuttlefish:unset(); + Url -> Params = cuttlefish:conf_get("auth.http.super_req.params", Conf), + [{url, Url}, {method, cuttlefish:conf_get("auth.http.super_req.method", Conf)}, + {content_type, list_to_binary("application/" ++ atom_to_list(cuttlefish:conf_get("auth.http.super_req.content_type", Conf)))}, + {params, [list_to_tuple(string:tokens(S, "=")) || S <- string:tokens(Params, ",")]}] + end +end}. + +{mapping, "auth.http.acl_req", "emqx_auth_http.acl_req", [ + {default, undefined}, + {datatype, string} +]}. + +{mapping, "auth.http.acl_req.method", "emqx_auth_http.acl_req", [ + {default, post}, + {datatype, {enum, [post, get]}} +]}. + +{mapping, "auth.http.acl_req.content_type", "emqx_auth_http.acl_req", [ + {default, 'x-www-form-urlencoded'}, + {datatype, {enum, ['json', 'x-www-form-urlencoded']}} +]}. + +{mapping, "auth.http.acl_req.params", "emqx_auth_http.acl_req", [ + {datatype, string} +]}. + +{translation, "emqx_auth_http.acl_req", fun(Conf) -> + case cuttlefish:conf_get("auth.http.acl_req", Conf, undefined) of + undefined -> cuttlefish:unset(); + Url -> Params = cuttlefish:conf_get("auth.http.acl_req.params", Conf), + [{url, Url}, + {method, cuttlefish:conf_get("auth.http.acl_req.method", Conf)}, + {content_type, list_to_binary("application/" ++ atom_to_list(cuttlefish:conf_get("auth.http.acl_req.content_type", Conf)))}, + {params, [list_to_tuple(string:tokens(S, "=")) || S <- string:tokens(Params, ",")]}] + end +end}. + +{mapping, "auth.http.request.timeout", "emqx_auth_http.request_timeout", [ + {default, "5s"}, + {datatype, [integer, {duration, ms}]} +]}. + +{mapping, "auth.http.pool_size", "emqx_auth_http.pool_opts", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.http.request.connect_timeout", "emqx_auth_http.pool_opts", [ + {default, "5s"}, + {datatype, [integer, {duration, ms}]} +]}. + +{mapping, "auth.http.ssl.cacertfile", "emqx_auth_http.pool_opts", [ + {datatype, string} +]}. + +{mapping, "auth.http.ssl.certfile", "emqx_auth_http.pool_opts", [ + {datatype, string} +]}. + +{mapping, "auth.http.ssl.keyfile", "emqx_auth_http.pool_opts", [ + {datatype, string} +]}. + +{mapping, "auth.http.request.retry_times", "emqx_auth_http.pool_opts", [ + {default, 5}, + {datatype, integer} +]}. + +{mapping, "auth.http.request.retry_interval", "emqx_auth_http.pool_opts", [ + {default, "1s"}, + {datatype, {duration, ms}} +]}. + +{mapping, "auth.http.request.retry_backoff", "emqx_auth_http.pool_opts", [ + {default, 2.0}, + {datatype, float} +]}. + +{translation, "emqx_auth_http.pool_opts", fun(Conf) -> + Filter = fun(L) -> [{K, V} || {K, V} <- L, V =/= undefined] end, + InfinityFun = fun(0) -> infinity; + (Duration) -> Duration + end, + SslOpts = Filter([{cacertfile, cuttlefish:conf_get("auth.http.ssl.cacertfile", Conf, undefined)}, + {certfile, cuttlefish:conf_get("auth.http.ssl.certfile", Conf, undefined)}, + {keyfile, cuttlefish:conf_get("auth.http.ssl.keyfile", Conf, undefined)}]), + Opts = [{pool_size, cuttlefish:conf_get("auth.http.pool_size", Conf)}, + {connect_timeout, InfinityFun(cuttlefish:conf_get("auth.http.request.connect_timeout", Conf))}, + {retry, cuttlefish:conf_get("auth.http.request.retry_times", Conf)}, + {retry_timeout, cuttlefish:conf_get("auth.http.request.retry_interval", Conf)}], + case SslOpts of + [] -> Filter(Opts); + _ -> + TlsVers = ['tlsv1.2','tlsv1.1',tlsv1], + DefaultOpts = [{versions, TlsVers}, + {ciphers, lists:foldl( + fun(TlsVer, Ciphers) -> + Ciphers ++ ssl:cipher_suites(all, TlsVer) + end, [], TlsVers)}], + Filter([{ssl, DefaultOpts ++ SslOpts} | Opts]) + end +end}. + + +{mapping, "auth.http.header.$field", "emqx_auth_http.headers", [ + {datatype, string} +]}. + +{translation, "emqx_auth_http.headers", fun(Conf) -> + lists:map( + fun({["auth", "http", "header", Field], Value}) -> + {Field, Value} + end, + cuttlefish_variable:filter_by_prefix("auth.http.header", Conf)) +end}. \ No newline at end of file diff --git a/apps/emqx_auth_http/rebar.config b/apps/emqx_auth_http/rebar.config new file mode 100644 index 000000000..0f2e48298 --- /dev/null +++ b/apps/emqx_auth_http/rebar.config @@ -0,0 +1,29 @@ +{deps, + [{gun, {git, "https://github.com/emqx/gun", {tag, "1.3.4"}}}, + {gproc, {git, "https://github.com/uwiger/gproc", {tag, "0.8.0"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "v1.2.2"}}} + ]} + ]} + ]}. diff --git a/apps/emqx_auth_http/src/emqx_acl_http.erl b/apps/emqx_auth_http/src/emqx_acl_http.erl new file mode 100644 index 000000000..a6f60b465 --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_acl_http.erl @@ -0,0 +1,89 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_http). + +-include("emqx_auth_http.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[ACL http]"). + +-import(emqx_auth_http_cli, + [ request/6 + , feedvar/2 + ]). + +%% ACL callbacks +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +%%-------------------------------------------------------------------- +%% ACL callbacks +%%-------------------------------------------------------------------- + +check_acl(ClientInfo, PubSub, Topic, AclResult, State) -> + return_with(fun inc_metrics/1, + do_check_acl(ClientInfo, PubSub, Topic, AclResult, State)). + +do_check_acl(#{username := <<$$, _/binary>>}, _PubSub, _Topic, _AclResult, _Config) -> + ok; +do_check_acl(ClientInfo, PubSub, Topic, _AclResult, #{acl_req := AclReq, + pool_name := PoolName}) -> + ClientInfo1 = ClientInfo#{access => access(PubSub), topic => Topic}, + case check_acl_request(PoolName, AclReq, ClientInfo1) of + {ok, 200, <<"ignore">>} -> ok; + {ok, 200, _Body} -> {stop, allow}; + {ok, _Code, _Body} -> {stop, deny}; + {error, Error} -> + ?LOG(error, "Request ACL path ~s, error: ~p", + [AclReq#http_request.path, Error]), + ok + end. + +description() -> "ACL with HTTP API". + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +inc_metrics(ok) -> + emqx_metrics:inc(?ACL_METRICS(ignore)); +inc_metrics({stop, allow}) -> + emqx_metrics:inc(?ACL_METRICS(allow)); +inc_metrics({stop, deny}) -> + emqx_metrics:inc(?ACL_METRICS(deny)). + +return_with(Fun, Result) -> + Fun(Result), Result. + +check_acl_request(PoolName, #http_request{path = Path, + method = Method, + headers = Headers, + params = Params, + request_timeout = RequestTimeout}, ClientInfo) -> + request(PoolName, Method, Path, Headers, feedvar(Params, ClientInfo), RequestTimeout). + +access(subscribe) -> 1; +access(publish) -> 2. + diff --git a/apps/emqx_auth_http/src/emqx_auth_http.app.src b/apps/emqx_auth_http/src/emqx_auth_http.app.src new file mode 100644 index 000000000..ce73e10ea --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_auth_http.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_http, + [{description, "EMQ X Authentication/ACL with HTTP API"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_http_sup]}, + {applications, [kernel,stdlib,gproc,gun]}, + {mod, {emqx_auth_http_app, []}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-http"} + ]} + ]}. diff --git a/apps/emqx_auth_http/src/emqx_auth_http.erl b/apps/emqx_auth_http/src/emqx_auth_http.erl new file mode 100644 index 000000000..20026d6ee --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_auth_http.erl @@ -0,0 +1,112 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_http). + +-include("emqx_auth_http.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/types.hrl"). + +-logger_header("[Auth http]"). + +-import(emqx_auth_http_cli, + [ request/6 + , feedvar/2 + ]). + +%% Callbacks +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo, AuthResult, #{auth_req := AuthReq, + super_req := SuperReq, + pool_name := PoolName}) -> + case authenticate(PoolName, AuthReq, ClientInfo) of + {ok, 200, <<"ignore">>} -> + emqx_metrics:inc(?AUTH_METRICS(ignore)), ok; + {ok, 200, Body} -> + emqx_metrics:inc(?AUTH_METRICS(success)), + IsSuperuser = is_superuser(PoolName, SuperReq, ClientInfo), + {stop, AuthResult#{is_superuser => IsSuperuser, + auth_result => success, + anonymous => false, + mountpoint => mountpoint(Body, ClientInfo)}}; + {ok, Code, _Body} -> + ?LOG(error, "Deny connection from path: ~s, response http code: ~p", + [AuthReq#http_request.path, Code]), + emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => http_to_connack_error(Code), + anonymous => false}}; + {error, Error} -> + ?LOG(error, "Request auth path: ~s, error: ~p", + [AuthReq#http_request.path, Error]), + emqx_metrics:inc(?AUTH_METRICS(failure)), + %%FIXME later: server_unavailable is not right. + {stop, AuthResult#{auth_result => server_unavailable, + anonymous => false}} + end. + +description() -> "Authentication by HTTP API". + +%%-------------------------------------------------------------------- +%% Requests +%%-------------------------------------------------------------------- + +authenticate(PoolName, #http_request{path = Path, + method = Method, + headers = Headers, + params = Params, + request_timeout = RequestTimeout}, ClientInfo) -> + request(PoolName, Method, Path, Headers, feedvar(Params, ClientInfo), RequestTimeout). + +-spec(is_superuser(atom(), maybe(#http_request{}), emqx_types:client()) -> boolean()). +is_superuser(_PoolName, undefined, _ClientInfo) -> + false; +is_superuser(PoolName, #http_request{path = Path, + method = Method, + headers = Headers, + params = Params, + request_timeout = RequestTimeout}, ClientInfo) -> + case request(PoolName, Method, Path, Headers, feedvar(Params, ClientInfo), RequestTimeout) of + {ok, 200, _Body} -> true; + {ok, _Code, _Body} -> false; + {error, Error} -> ?LOG(error, "Request superuser path ~s, error: ~p", [Path, Error]), + false + end. + +mountpoint(Body, #{mountpoint := Mountpoint}) -> + case emqx_json:safe_decode(Body, [return_maps]) of + {error, _} -> Mountpoint; + {ok, Json} when is_map(Json) -> + maps:get(<<"mountpoint">>, Json, Mountpoint); + {ok, _NotMap} -> Mountpoint + end. + +http_to_connack_error(400) -> bad_username_or_password; +http_to_connack_error(401) -> bad_username_or_password; +http_to_connack_error(403) -> not_authorized; +http_to_connack_error(429) -> banned; +http_to_connack_error(503) -> server_unavailable; +http_to_connack_error(504) -> server_busy; +http_to_connack_error(_) -> server_unavailable. diff --git a/apps/emqx_auth_http/src/emqx_auth_http_app.erl b/apps/emqx_auth_http/src/emqx_auth_http_app.erl new file mode 100644 index 000000000..30dfc5dc5 --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_auth_http_app.erl @@ -0,0 +1,176 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_http_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_http.hrl"). + +-export([ start/2 + , stop/1 + ]). +-export([init/1]). + +%%-------------------------------------------------------------------- +%% Application Callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + case translate_env() of + ok -> + {ok, PoolOpts} = application:get_env(?APP, pool_opts), + {ok, Sup} = emqx_http_client_sup:start_link(?APP, ssl(inet(PoolOpts))), + with_env(auth_req, fun load_auth_hook/1), + with_env(acl_req, fun load_acl_hook/1), + {ok, Sup}; + {error, Reason} -> + {error, Reason} + end. + +load_auth_hook(AuthReq) -> + ok = emqx_auth_http:register_metrics(), + SuperReq = r(application:get_env(?APP, super_req, undefined)), + Params = #{auth_req => AuthReq, + super_req => SuperReq, + pool_name => ?APP}, + emqx:hook('client.authenticate', {emqx_auth_http, check, [Params]}). + +load_acl_hook(AclReq) -> + ok = emqx_acl_http:register_metrics(), + Params = #{acl_req => AclReq, + pool_name => ?APP}, + emqx:hook('client.check_acl', {emqx_acl_http, check_acl, [Params]}). + +stop(_State) -> + emqx:unhook('client.authenticate', {emqx_auth_http, check}), + emqx:unhook('client.check_acl', {emqx_acl_http, check_acl}), + emqx_http_client_sup:stop_pool(?APP). + +%%-------------------------------------------------------------------- +%% Dummy supervisor +%%-------------------------------------------------------------------- + +init([]) -> + {ok, { {one_for_all, 10, 100}, []} }. + +%%-------------------------------------------------------------------- +%% Internel functions +%%-------------------------------------------------------------------- + +with_env(Par, Fun) -> + case application:get_env(?APP, Par) of + undefined -> ok; + {ok, Req} -> Fun(r(Req)) + end. + +r(undefined) -> + undefined; +r(Config) -> + Headers = application:get_env(?APP, headers, []), + Method = proplists:get_value(method, Config, post), + Path = proplists:get_value(path, Config), + NewHeaders = case Method =:= post orelse Method =:= put of + true -> + ContentType = proplists:get_value(content_type, Config, <<"application/x-www-form-urlencoded">>), + [{<<"content-type">>, ContentType} | Headers]; + _ -> + Headers + end, + Params = proplists:get_value(params, Config), + {ok, RequestTimeout} = application:get_env(?APP, request_timeout), + #http_request{method = Method, path = Path, headers = NewHeaders, params = Params, request_timeout = RequestTimeout}. + +inet(PoolOpts) -> + Host = proplists:get_value(host, PoolOpts), + TransOpts = proplists:get_value(transport_opts, PoolOpts, []), + NewPoolOpts = proplists:delete(transport_opts, PoolOpts), + Inet = case Host of + {_,_,_,_} -> inet; + {_,_,_,_,_,_,_,_} -> inet6; + _ -> + case inet:getaddr(Host, inet6) of + {error, _} -> inet; + {ok, _} -> inet6 + end + end, + [{transport_opts, [Inet | TransOpts]} | NewPoolOpts]. + +ssl(PoolOpts) -> + case proplists:get_value(ssl, PoolOpts, []) of + [] -> + PoolOpts; + SSLOpts -> + TransOpts = proplists:get_value(transport_opts, PoolOpts, []), + NewPoolOpts = proplists:delete(transport_opts, PoolOpts), + [{transport_opts, SSLOpts ++ TransOpts}, {transport, ssl} | NewPoolOpts] + end. + +translate_env() -> + URLs = lists:foldl(fun(Name, Acc) -> + case application:get_env(?APP, Name, []) of + [] -> Acc; + Env -> + URL = proplists:get_value(url, Env), + #{host := Host, + path := Path, + scheme := Scheme} = URIMap = uri_string:parse(add_default_scheme(URL)), + Port = maps:get(port, URIMap, case Scheme of + "https" -> 443; + _ -> 80 + end), + [{Name, {Host, Port, path(Path)}} | Acc] + end + end, [], [acl_req, auth_req, super_req]), + case same_host_and_port(URLs) of + true -> + [begin + {ok, Req} = application:get_env(?APP, Name), + application:set_env(?APP, Name, [{path, Path} | Req]) + end || {Name, {_, _, Path}} <- URLs], + {_, {Host, Port, _}} = lists:last(URLs), + PoolOpts = application:get_env(?APP, pool_opts, []), + NHost = case inet:parse_address(Host) of + {ok, {_,_,_,_} = Addr} -> Addr; + {ok, {_,_,_,_,_,_,_,_} = Addr} -> Addr; + {error, einval} -> Host + end, + application:set_env(?APP, pool_opts, [{host, NHost}, {port, Port} | PoolOpts]), + ok; + false -> + {error, different_server} + end. + +same_host_and_port([_]) -> + true; +same_host_and_port([{_, {Host, Port, _}}, {_, {Host, Port, _}}]) -> + true; +same_host_and_port([{_, {Host, Port, _}}, URL = {_, {Host, Port, _}} | Rest]) -> + same_host_and_port([URL | Rest]); +same_host_and_port(_) -> + false. + +path("") -> "/"; +path(Path) -> Path. + +add_default_scheme("http://" ++ _ = URL) -> + URL; +add_default_scheme("https://" ++ _ = URL) -> + URL; +add_default_scheme(URL) -> + "http://" ++ URL. \ No newline at end of file diff --git a/apps/emqx_auth_http/src/emqx_auth_http_cli.erl b/apps/emqx_auth_http/src/emqx_auth_http_cli.erl new file mode 100644 index 000000000..9a52d833a --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_auth_http_cli.erl @@ -0,0 +1,103 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_http_cli). + +-include("emqx_auth_http.hrl"). + +-export([ request/6 + , feedvar/2 + , feedvar/3 + ]). + +%%-------------------------------------------------------------------- +%% HTTP Request +%%-------------------------------------------------------------------- + +request(PoolName, get, Path, Headers, Params, Timeout) -> + NewPath = Path ++ "?" ++ binary_to_list(cow_qs:qs(bin_kw(Params))), + do_request(get, PoolName, {NewPath, Headers}, Timeout); + +request(PoolName, post, Path, Headers, Params, Timeout) -> + Body = case proplists:get_value(<<"content-type">>, Headers) of + <<"application/x-www-form-urlencoded">> -> + cow_qs:qs(bin_kw(Params)); + <<"application/json">> -> + emqx_json:encode(bin_kw(Params)) + end, + do_request(post, PoolName, {Path, Headers, Body}, Timeout). + +do_request(Method, PoolName, Req, Timeout) -> + do_request(Method, PoolName, Req, Timeout, 3). + +%% Only retry when connection closed by keepalive +do_request(_Method, _PoolName, _Req, _Timeout, 0) -> + {error, normal}; +do_request(Method, PoolName, Req, Timeout, Retry) -> + case emqx_http_client:request(Method, PoolName, Req, Timeout) of + {error, normal} -> + do_request(Method, PoolName, Req, Timeout, Retry - 1); + {error, Reason} -> + {error, Reason}; + {ok, StatusCode, _Headers} -> + {ok, StatusCode, <<>>}; + {ok, StatusCode, _Headers, Body} -> + {ok, StatusCode, Body} + end. + +%% TODO: move this conversion to cuttlefish config and schema +bin_kw(KeywordList) when is_list(KeywordList) -> + [{bin(K), bin(V)} || {K, V} <- KeywordList]. + +bin(Atom) when is_atom(Atom) -> + list_to_binary(atom_to_list(Atom)); +bin(Int) when is_integer(Int) -> + integer_to_binary(Int); +bin(Float) when is_float(Float) -> + float_to_binary(Float, [{decimals, 12}, compact]); +bin(List) when is_list(List)-> + list_to_binary(List); +bin(Binary) when is_binary(Binary) -> + Binary. + +%%-------------------------------------------------------------------- +%% Feed Variables +%%-------------------------------------------------------------------- + +feedvar(Params, ClientInfo = #{clientid := ClientId, + protocol := Protocol, + peerhost := Peerhost}) -> + lists:map(fun({Param, "%u"}) -> {Param, maps:get(username, ClientInfo, null)}; + ({Param, "%c"}) -> {Param, ClientId}; + ({Param, "%r"}) -> {Param, Protocol}; + ({Param, "%a"}) -> {Param, inet:ntoa(Peerhost)}; + ({Param, "%P"}) -> {Param, maps:get(password, ClientInfo, null)}; + ({Param, "%p"}) -> {Param, maps:get(sockport, ClientInfo, null)}; + ({Param, "%C"}) -> {Param, maps:get(cn, ClientInfo, null)}; + ({Param, "%d"}) -> {Param, maps:get(dn, ClientInfo, null)}; + ({Param, "%A"}) -> {Param, maps:get(access, ClientInfo, null)}; + ({Param, "%t"}) -> {Param, maps:get(topic, ClientInfo, null)}; + ({Param, "%m"}) -> {Param, maps:get(mountpoint, ClientInfo, null)}; + ({Param, Var}) -> {Param, Var} + end, Params). + +feedvar(Params, Var, Val) -> + lists:map(fun({Param, Var0}) when Var0 == Var -> + {Param, Val}; + ({Param, Var0}) -> + {Param, Var0} + end, Params). + diff --git a/apps/emqx_auth_http/src/emqx_http_client.erl b/apps/emqx_auth_http/src/emqx_http_client.erl new file mode 100644 index 000000000..4ed2c33e5 --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_http_client.erl @@ -0,0 +1,256 @@ +-module(emqx_http_client). + +-behaviour(gen_server). + +-include_lib("emqx/include/logger.hrl"). + +%% APIs +-export([ start_link/3 + , request/3 + , request/4 + ]). + +%% gen_server callbacks +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-record(state, { + pool :: ecpool:poo_name(), + id :: pos_integer(), + client :: pid() | undefined, + mref :: reference() | undefined, + host :: inet:hostname() | inet:ip_address(), + port :: inet:port_number(), + gun_opts :: proplists:proplist(), + gun_state :: down | up, + requests :: map() + }). + +%%-------------------------------------------------------------------- +%% APIs +%%-------------------------------------------------------------------- + +start_link(Pool, Id, Opts) -> + gen_server:start_link(?MODULE, [Pool, Id, Opts], []). + +request(Method, Pool, Req) -> + request(Method, Pool, Req, 5000). + +request(get, Pool, {Path, Headers}, Timeout) -> + call(pick(Pool), {get, {Path, Headers}, Timeout}, Timeout + 1000); +request(Method, Pool, {Path, Headers, Body}, Timeout) -> + call(pick(Pool), {Method, {Path, Headers, Body}, Timeout}, Timeout + 1000). + +%%-------------------------------------------------------------------- +%% gen_server callbacks +%%-------------------------------------------------------------------- + +init([Pool, Id, Opts]) -> + State = #state{pool = Pool, + id = Id, + client = undefined, + mref = undefined, + host = proplists:get_value(host, Opts), + port = proplists:get_value(port, Opts), + gun_opts = gun_opts(Opts), + gun_state = down, + requests = #{}}, + true = gproc_pool:connect_worker(Pool, {Pool, Id}), + {ok, State}. + +handle_call(Req = {_, _, _}, From, State = #state{client = undefined, gun_state = down}) -> + case open(State) of + {ok, NewState} -> + handle_call(Req, From, NewState); + {error, Reason} -> + {reply, {error, Reason}, State} + end; + +handle_call(Req = {_, _, Timeout}, From, State = #state{client = Client, mref = MRef, gun_state = down}) when is_pid(Client) -> + case gun:await_up(Client, Timeout, MRef) of + {ok, _} -> + handle_call(Req, From, State#state{gun_state = up}); + {error, timeout} -> + {reply, {error, timeout}, State}; + {error, Reason} -> + true = erlang:demonitor(MRef, [flush]), + {reply, {error, Reason}, State#state{client = undefined, mref = undefined}} + end; + +handle_call({Method, Request, Timeout}, From, State = #state{client = Client, requests = Requests, gun_state = up}) when is_pid(Client) -> + StreamRef = do_request(Client, Method, Request), + ExpirationTime = erlang:system_time(millisecond) + Timeout, + {noreply, State#state{requests = maps:put(StreamRef, {From, ExpirationTime, undefined}, Requests)}}; + +handle_call(Req, _From, State) -> + ?LOG(error, "Unexpected call: ~p", [Req]), + {reply, ignored, State}. + +handle_cast(Msg, State) -> + ?LOG(error, "Unexpected cast: ~p", [Msg]), + {noreply, State}. + +handle_info({gun_response, Client, StreamRef, IsFin, StatusCode, Headers}, State = #state{client = Client, requests = Requests}) -> + Now = erlang:system_time(millisecond), + case maps:take(StreamRef, Requests) of + error -> + ?LOG(error, "Received 'gun_response' message from unknown stream ref: ~p", [StreamRef]), + {noreply, State}; + {{_, ExpirationTime, _}, NRequests} when Now > ExpirationTime -> + gun:cancel(Client, StreamRef), + flush_stream(Client, StreamRef), + {noreply, State#state{requests = NRequests}}; + {{From, ExpirationTime, undefined}, NRequests} -> + case IsFin of + fin -> + gen_server:reply(From, {ok, StatusCode, Headers}), + {noreply, State#state{requests = NRequests}}; + nofin -> + {noreply, State#state{requests = NRequests#{StreamRef => {From, ExpirationTime, {StatusCode, Headers, <<>>}}}}} + end; + _ -> + ?LOG(error, "Received 'gun_response' message does not match the state"), + {noreply, State} + end; + +handle_info({gun_data, Client, StreamRef, IsFin, Data}, State = #state{client = Client, requests = Requests}) -> + Now = erlang:system_time(millisecond), + case maps:take(StreamRef, Requests) of + error -> + ?LOG(error, "Received 'gun_data' message from unknown stream ref: ~p", [StreamRef]), + {noreply, State}; + {{_, ExpirationTime, _}, NRequests} when Now > ExpirationTime -> + gun:cancel(Client, StreamRef), + flush_stream(Client, StreamRef), + {noreply, State#state{requests = NRequests}}; + {{From, ExpirationTime, {StatusCode, Headers, Acc}}, NRequests} -> + case IsFin of + fin -> + gen_server:reply(From, {ok, StatusCode, Headers, <>}), + {noreply, State#state{requests = NRequests}}; + nofin -> + {noreply, State#state{requests = NRequests#{StreamRef => {From, ExpirationTime, {StatusCode, Headers, <>}}}}} + end; + _ -> + ?LOG(error, "Received 'gun_data' message does not match the state"), + {noreply, State} + end; + +handle_info({gun_error, Client, StreamRef, Reason}, State = #state{client = Client, requests = Requests}) -> + Now = erlang:system_time(millisecond), + case maps:take(StreamRef, Requests) of + error -> + ?LOG(error, "Received 'gun_error' message from unknown stream ref: ~p~n", [StreamRef]), + {noreply, State}; + {{_, ExpirationTime, _}, NRequests} when Now > ExpirationTime -> + {noreply, State#state{requests = NRequests}}; + {{From, _, _}, NRequests} -> + gen_server:reply(From, {error, Reason}), + {noreply, State#state{requests = NRequests}} + end; + +handle_info({gun_up, Client, _}, State = #state{client = Client}) -> + {noreply, State#state{gun_state = up}}; + +handle_info({gun_down, Client, _, Reason, KilledStreams, _}, State = #state{client = Client, requests = Requests}) -> + Now = erlang:system_time(millisecond), + NRequests = lists:foldl(fun(StreamRef, Acc) -> + case maps:take(StreamRef, Acc) of + error -> Acc; + {{_, ExpirationTime, _}, NAcc} when Now > ExpirationTime -> + NAcc; + {{From, _, _}, NAcc} -> + gen_server:reply(From, {error, Reason}), + NAcc + end + end, Requests, KilledStreams), + {noreply, State#state{gun_state = down, requests = NRequests}}; + +handle_info({'DOWN', MRef, process, Client, Reason}, State = #state{mref = MRef, client = Client, requests = Requests}) -> + true = erlang:demonitor(MRef, [flush]), + Now = erlang:system_time(millisecond), + lists:foreach(fun({_, {_, ExpirationTime, _}}) when Now > ExpirationTime -> + ok; + ({_, {From, _, _}}) -> + gen_server:reply(From, {error, Reason}) + end, maps:to_list(Requests)), + case open(State#state{requests = #{}}) of + {ok, NewState} -> + {noreply, NewState}; + {error, Reason} -> + {noreply, State#state{mref = undefined, client = undefined}} + end; + +handle_info(Info, State) -> + ?LOG(error, "Unexpected info: ~p", [Info]), + {noreply, State}. + +terminate(_Reason, #state{pool = Pool, id = Id}) -> + gproc_pool:disconnect_worker(Pool, {Pool, Id}), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +open(State = #state{host = Host, port = Port, gun_opts = GunOpts}) -> + case gun:open(Host, Port, GunOpts) of + {ok, ConnPid} when is_pid(ConnPid) -> + MRef = monitor(process, ConnPid), + {ok, State#state{mref = MRef, client = ConnPid}}; + {error, Reason} -> + {error, Reason} + end. + +gun_opts(Opts) -> + gun_opts(Opts, #{retry => 5, + retry_timeout => 1000, + connect_timeout => 5000, + protocols => [http], + http_opts => #{keepalive => infinity}}). + +gun_opts([], Acc) -> + Acc; +gun_opts([{retry, Retry} | Opts], Acc) -> + gun_opts(Opts, Acc#{retry => Retry}); +gun_opts([{retry_timeout, RetryTimeout} | Opts], Acc) -> + gun_opts(Opts, Acc#{retry_timeout => RetryTimeout}); +gun_opts([{connect_timeout, ConnectTimeout} | Opts], Acc) -> + gun_opts(Opts, Acc#{connect_timeout => ConnectTimeout}); +gun_opts([{transport, Transport} | Opts], Acc) -> + gun_opts(Opts, Acc#{transport => Transport}); +gun_opts([{transport_opts, TransportOpts} | Opts], Acc) -> + gun_opts(Opts, Acc#{transport_opts => TransportOpts}); +gun_opts([_ | Opts], Acc) -> + gun_opts(Opts, Acc). + +call(ChannPid, Msg, Timeout) -> + gen_server:call(ChannPid, Msg, Timeout). + +pick(Pool) -> + gproc_pool:pick_worker(Pool). + +do_request(Client, get, {Path, Headers}) -> + gun:get(Client, Path, Headers); +do_request(Client, post, {Path, Headers, Body}) -> + gun:post(Client, Path, Headers, Body). + +flush_stream(Client, StreamRef) -> + receive + {gun_response, Client, StreamRef, _, _, _} -> + flush_stream(Client, StreamRef); + {gun_data, Client, StreamRef, _, _} -> + flush_stream(Client, StreamRef); + {gun_error, Client, StreamRef, _} -> + flush_stream(Client, StreamRef) + after 0 -> + ok + end. \ No newline at end of file diff --git a/apps/emqx_auth_http/src/emqx_http_client_sup.erl b/apps/emqx_auth_http/src/emqx_http_client_sup.erl new file mode 100644 index 000000000..dcdd2e4c4 --- /dev/null +++ b/apps/emqx_auth_http/src/emqx_http_client_sup.erl @@ -0,0 +1,48 @@ +-module(emqx_http_client_sup). + +-behaviour(supervisor). + +-export([ start_link/2 + , init/1 + , stop_pool/1 + ]). + +start_link(Pool, Opts) -> + supervisor:start_link(?MODULE, [Pool, Opts]). + +init([Pool, Opts]) -> + PoolSize = pool_size(Opts), + ok = ensure_pool(Pool, random, [{size, PoolSize}]), + {ok, {{one_for_one, 10, 100}, [ + begin + ensure_pool_worker(Pool, {Pool, I}, I), + #{id => {Pool, I}, + start => {emqx_http_client, start_link, [Pool, I, Opts]}, + restart => transient, + shutdown => 5000, + type => worker, + modules => [emqx_http_client]} + end || I <- lists:seq(1, PoolSize)]}}. + + +ensure_pool(Pool, Type, Opts) -> + try gproc_pool:new(Pool, Type, Opts) + catch + error:exists -> ok + end. + +ensure_pool_worker(Pool, Name, Slot) -> + try gproc_pool:add_worker(Pool, Name, Slot) + catch + error:exists -> ok + end. + +pool_size(Opts) -> + Schedulers = erlang:system_info(schedulers), + proplists:get_value(pool_size, Opts, Schedulers). + +stop_pool(Name) -> + Workers = gproc_pool:defined_workers(Name), + [gproc_pool:remove_worker(Name, WokerName) || {WokerName, _, _} <- Workers], + gproc_pool:delete(Name), + ok. \ No newline at end of file diff --git a/apps/emqx_auth_http/test/emqx_auth_http_SUITE.erl b/apps/emqx_auth_http/test/emqx_auth_http_SUITE.erl new file mode 100644 index 000000000..ae6cab4c3 --- /dev/null +++ b/apps/emqx_auth_http/test/emqx_auth_http_SUITE.erl @@ -0,0 +1,168 @@ +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. + +-module(emqx_auth_http_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-define(APP, emqx_auth_http). + +-define(USER(ClientId, Username, Protocol, Peerhost, Zone), + #{clientid => ClientId, username => Username, protocol => Protocol, + peerhost => Peerhost, zone => Zone}). + +-define(USER(ClientId, Username, Protocol, Peerhost, Zone, Mountpoint), + #{clientid => ClientId, username => Username, protocol => Protocol, + peerhost => Peerhost, zone => Zone, mountpoint => Mountpoint}). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> + [{group, http_inet}, + {group, http_inet6}, + {group, https_inet}, + {group, https_inet6}]. + +groups() -> + Cases = emqx_ct:all(?MODULE), + [{Name, Cases} || Name <- [http_inet, http_inet6, https_inet, https_inet6]]. + +init_per_group(GrpName, Cfg) -> + [Schema, Inet] = [list_to_atom(X) || X <- string:tokens(atom_to_list(GrpName), "_")], + http_auth_server:start(Schema, Inet), + Fun = fun(App) -> set_special_configs(App, Schema, Inet) end, + emqx_ct_helpers:start_apps([emqx_auth_http], Fun), + Cfg. + +end_per_group(_GrpName, _Cfg) -> + http_auth_server:stop(), + emqx_ct_helpers:stop_apps([emqx_auth_http, emqx]). + +set_special_configs(emqx, _Schmea, _Inet) -> + application:set_env(emqx, allow_anonymous, true), + application:set_env(emqx, enable_acl_cache, false), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)); + +set_special_configs(emqx_auth_http, Schema, Inet) -> + ServerAddr = http_server(Schema, Inet), + + AuthReq = #{method => get, + url => ServerAddr ++ "/mqtt/auth", + content_type => <<"application/x-www-form-urlencoded">>, + params => [{"clientid", "%c"}, {"username", "%u"}, {"password", "%P"}]}, + AclReq = #{method => post, + url => ServerAddr ++ "/mqtt/acl", + content_type => <<"application/json">>, + params => [{"access", "%A"}, {"username", "%u"}, {"clientid", "%c"}, {"ipaddr", "%a"}, {"topic", "%t"}, {"mountpoint", "%m"}]}, + + Schema =:= https andalso set_https_client_opts(), + + application:set_env(emqx_auth_http, auth_req, maps:to_list(AuthReq)), + application:set_env(emqx_auth_http, acl_req, maps:to_list(AclReq)). + +%% @private +set_https_client_opts() -> + TransportOpts = emqx_ct_helpers:client_ssl_twoway(), + {ok, PoolOpts} = application:get_env(emqx_auth_http, pool_opts), + application:set_env(emqx_auth_http, pool_opts, [{transport_opts, TransportOpts}, {transport, ssl} | PoolOpts]). + +%% @private +http_server(http, inet) -> "http://127.0.0.1:8991"; +http_server(http, inet6) -> "http://[::1]:8991"; +http_server(https, inet) -> "https://127.0.0.1:8991"; +http_server(https, inet6) -> "https://[::1]:8991". + +%%------------------------------------------------------------------------------ +%% Testcases +%%------------------------------------------------------------------------------ + +t_check_acl(_) -> + SuperUser = ?USER(<<"superclient">>, <<"superuser">>, mqtt, {127,0,0,1}, external), + deny = emqx_access_control:check_acl(SuperUser, subscribe, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(SuperUser, publish, <<"anytopic">>), + + User1 = ?USER(<<"client1">>, <<"testuser">>, mqtt, {127,0,0,1}, external), + UnIpUser1 = ?USER(<<"client1">>, <<"testuser">>, mqtt, {192,168,0,4}, external), + UnClientIdUser1 = ?USER(<<"unkonwc">>, <<"testuser">>, mqtt, {127,0,0,1}, external), + UnnameUser1= ?USER(<<"client1">>, <<"unuser">>, mqtt, {127,0,0,1}, external), + allow = emqx_access_control:check_acl(User1, subscribe, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(User1, publish, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(UnIpUser1, subscribe, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(UnClientIdUser1, subscribe, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(UnnameUser1, subscribe, <<"$SYS/testuser/1">>), + + User2 = ?USER(<<"client2">>, <<"xyz">>, mqtt, {127,0,0,1}, external), + UserC = ?USER(<<"client2">>, <<"xyz">>, mqtt, {192,168,1,3}, external), + allow = emqx_access_control:check_acl(UserC, publish, <<"a/b/c">>), + deny = emqx_access_control:check_acl(User2, publish, <<"a/b/c">>), + deny = emqx_access_control:check_acl(User2, subscribe, <<"$SYS/testuser/1">>). + +t_check_auth(_) -> + User1 = ?USER(<<"client1">>, <<"testuser1">>, mqtt, {127,0,0,1}, external, undefined), + User2 = ?USER(<<"client2">>, <<"testuser2">>, mqtt, {127,0,0,1}, exteneral, undefined), + User3 = ?USER(<<"client3">>, undefined, mqtt, {127,0,0,1}, exteneral, undefined), + + {ok, #{auth_result := success, + anonymous := false, + is_superuser := false}} = emqx_access_control:authenticate(User1#{password => <<"pass1">>}), + {error, bad_username_or_password} = emqx_access_control:authenticate(User1#{password => <<"pass">>}), + {error, bad_username_or_password} = emqx_access_control:authenticate(User1#{password => <<>>}), + + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(User2#{password => <<"pass2">>}), + {error, bad_username_or_password} = emqx_access_control:authenticate(User2#{password => <<>>}), + {error, bad_username_or_password} = emqx_access_control:authenticate(User2#{password => <<"errorpwd">>}), + + {error, bad_username_or_password} = emqx_access_control:authenticate(User3#{password => <<"pwd">>}). + +t_sub_pub(_) -> + ct:pal("start client"), + {ok, T1} = emqtt:start_link([{host, "localhost"}, + {clientid, <<"client1">>}, + {username, <<"testuser1">>}, + {password, <<"pass1">>}]), + {ok, _} = emqtt:connect(T1), + emqtt:publish(T1, <<"topic">>, <<"body">>, [{qos, 0}, {retain, true}]), + timer:sleep(1000), + {ok, T2} = emqtt:start_link([{host, "localhost"}, + {clientid, <<"client2">>}, + {username, <<"testuser2">>}, + {password, <<"pass2">>}]), + {ok, _} = emqtt:connect(T2), + emqtt:subscribe(T2, <<"topic">>), + receive + {publish, _Topic, Payload} -> + ?assertEqual(<<"body">>, Payload) + after 1000 -> false end, + emqtt:disconnect(T1), + emqtt:disconnect(T2). + +t_comment_config(_) -> + AuthCount = length(emqx_hooks:lookup('client.authenticate')), + AclCount = length(emqx_hooks:lookup('client.check_acl')), + application:stop(?APP), + [application:unset_env(?APP, Par) || Par <- [acl_req, auth_req]], + application:start(?APP), + ?assertEqual([], emqx_hooks:lookup('client.authenticate')), + ?assertEqual(AuthCount - 1, length(emqx_hooks:lookup('client.authenticate'))), + ?assertEqual(AclCount - 1, length(emqx_hooks:lookup('client.check_acl'))). + diff --git a/apps/emqx_auth_http/test/http_auth_server.erl b/apps/emqx_auth_http/test/http_auth_server.erl new file mode 100644 index 000000000..54c4d38b3 --- /dev/null +++ b/apps/emqx_auth_http/test/http_auth_server.erl @@ -0,0 +1,152 @@ +-module(http_auth_server). + +-export([ start/2 + , stop/0 + ]). + +-define(SUPERUSER, [[{"username", "superuser"}, {"clientid", "superclient"}]]). + +-define(ACL, [[{<<"username">>, <<"testuser">>}, + {<<"clientid">>, <<"client1">>}, + {<<"access">>, <<"1">>}, + {<<"topic">>, <<"users/testuser/1">>}, + {<<"ipaddr">>, <<"127.0.0.1">>}, + {<<"mountpoint">>, <<"null">>}], + [{<<"username">>, <<"xyz">>}, + {<<"clientid">>, <<"client2">>}, + {<<"access">>, <<"2">>}, + {<<"topic">>, <<"a/b/c">>}, + {<<"ipaddr">>, <<"192.168.1.3">>}, + {<<"mountpoint">>, <<"null">>}], + [{<<"username">>, <<"testuser1">>}, + {<<"clientid">>, <<"client1">>}, + {<<"access">>, <<"2">>}, + {<<"topic">>, <<"topic">>}, + {<<"ipaddr">>, <<"127.0.0.1">>}, + {<<"mountpoint">>, <<"null">>}], + [{<<"username">>, <<"testuser2">>}, + {<<"clientid">>, <<"client2">>}, + {<<"access">>, <<"1">>}, + {<<"topic">>, <<"topic">>}, + {<<"ipaddr">>, <<"127.0.0.1">>}, + {<<"mountpoint">>, <<"null">>}]]). + +-define(AUTH, [[{<<"clientid">>, <<"client1">>}, + {<<"username">>, <<"testuser1">>}, + {<<"password">>, <<"pass1">>}], + [{<<"clientid">>, <<"client2">>}, + {<<"username">>, <<"testuser2">>}, + {<<"password">>, <<"pass2">>}]]). + +%%------------------------------------------------------------------------------ +%% REST Interface +%%------------------------------------------------------------------------------ + +-rest_api(#{ name => auth + , method => 'GET' + , path => "/mqtt/auth" + , func => authenticate + , descr => "Authenticate user access permission" + }). + +-rest_api(#{ name => is_superuser + , method => 'GET' + , path => "/mqtt/superuser" + , func => is_superuser + , descr => "Is super user" + }). + +-rest_api(#{ name => acl + , method => 'GET' + , path => "/mqtt/acl" + , func => check_acl + , descr => "Check acl" + }). + +-rest_api(#{ name => auth + , method => 'POST' + , path => "/mqtt/auth" + , func => authenticate + , descr => "Authenticate user access permission" + }). + +-rest_api(#{ name => is_superuser + , method => 'POST' + , path => "/mqtt/superuser" + , func => is_superuser + , descr => "Is super user" + }). + +-rest_api(#{ name => acl + , method => 'POST' + , path => "/mqtt/acl" + , func => check_acl + , descr => "Check acl" + }). + +-export([ authenticate/2 + , is_superuser/2 + , check_acl/2 + ]). + +authenticate(_Binding, Params) -> + return(check(Params, ?AUTH)). + +is_superuser(_Binding, Params) -> + return(check(Params, ?SUPERUSER)). + +check_acl(_Binding, Params) -> + return(check(Params, ?ACL)). + +return(allow) -> {200, <<"allow">>}; +return(deny) -> {400, <<"deny">>}. + +start(http, Inet) -> + application:ensure_all_started(minirest), + Handlers = [{"/", minirest:handler(#{modules => [?MODULE]})}], + Dispatch = [{"/[...]", minirest, Handlers}], + minirest:start_http(http_auth_server, #{socket_opts => [Inet, {port, 8991}]}, Dispatch); + +start(https, Inet) -> + application:ensure_all_started(minirest), + Handlers = [{"/", minirest:handler(#{modules => [?MODULE]})}], + Dispatch = [{"/[...]", minirest, Handlers}], + minirest:start_https(http_auth_server, #{socket_opts => [Inet, {port, 8991} | certopts()]}, Dispatch). + +%% @private +certopts() -> + Certfile = filename:join(["etc", "certs", "cert.pem"]), + Keyfile = filename:join(["etc", "certs", "key.pem"]), + CaCert = filename:join(["etc", "certs", "cacert.pem"]), + [{verify, verify_peer}, + {certfile, emqx_ct_helpers:deps_path(emqx, Certfile)}, + {keyfile, emqx_ct_helpers:deps_path(emqx, Keyfile)}, + {cacertfile, emqx_ct_helpers:deps_path(emqx, CaCert)}] ++ emqx_ct_helpers:client_ssl(). + +stop() -> + minirest:stop_http(http_auth_server). + +-spec check(HttpReqParams :: list(), DefinedConf :: list()) -> allow | deny. +check(_Params, []) -> + %ct:pal("check auth_result: deny~n"), + deny; +check(Params, [ConfRecord|T]) -> + % ct:pal("Params: ~p, ConfRecord:~p ~n", [Params, ConfRecord]), + case match_config(Params, ConfRecord) of + not_match -> + check(Params, T); + matched -> allow + end. + +match_config([], _ConfigColumn) -> + %ct:pal("match_config auth_result: matched~n"), + matched; + +match_config([Param|T], ConfigColumn) -> + %ct:pal("Param: ~p, ConfigColumn:~p ~n", [Param, ConfigColumn]), + case lists:member(Param, ConfigColumn) of + true -> + match_config(T, ConfigColumn); + false -> + not_match + end. diff --git a/apps/emqx_auth_jwt/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_jwt/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..b8e722570 --- /dev/null +++ b/apps/emqx_auth_jwt/.github/workflows/run_test_cases.yaml @@ -0,0 +1,29 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: run test cases + run: | + make xref + make eunit + make ct + make cover + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs + - uses: actions/upload-artifact@v1 + with: + name: cover + path: _build/test/cover + diff --git a/apps/emqx_auth_jwt/.gitignore b/apps/emqx_auth_jwt/.gitignore new file mode 100644 index 000000000..62e4fbb25 --- /dev/null +++ b/apps/emqx_auth_jwt/.gitignore @@ -0,0 +1,28 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +emqx_auth_jwt.d +data/ +.DS_Store +cover/ +ct.coverdata +eunit.coverdata +logs/ +test/ct.cover.spec +emq_auth_jwt.d +erlang.mk +_build/ +rebar.lock +rebar3.crashdump +etc/emqx_auth_jwt.conf.rendered +.rebar3/ +*.swp +Mnesia.nonode@nohost/ diff --git a/apps/emqx_auth_jwt/LICENSE b/apps/emqx_auth_jwt/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_jwt/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_jwt/Makefile b/apps/emqx_auth_jwt/Makefile new file mode 100644 index 000000000..b8d85351d --- /dev/null +++ b/apps/emqx_auth_jwt/Makefile @@ -0,0 +1,37 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: + $(REBAR) as test ct -v + +eunit: + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_jwt.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_jwt.conf -i priv/emqx_auth_jwt.schema -d data diff --git a/apps/emqx_auth_jwt/README.md b/apps/emqx_auth_jwt/README.md new file mode 100644 index 000000000..9675ae87c --- /dev/null +++ b/apps/emqx_auth_jwt/README.md @@ -0,0 +1,90 @@ + +# emqx-auth-jwt + +EMQ X JWT Authentication Plugin + +Build +----- + +``` +make && make tests +``` + +Configure the Plugin +-------------------- + +File: etc/plugins/emqx_auth_jwt.conf + +``` +## HMAC Hash Secret. +## +## Value: String +auth.jwt.secret = emqxsecret + +## From where the JWT string can be got +## +## Value: username | password +## Default: password +auth.jwt.from = password + +## RSA or ECDSA public key file. +## +## Value: File +## auth.jwt.pubkey = etc/certs/jwt_public_key.pem + +## Enable to verify claims fields +## +## Value: on | off +auth.jwt.verify_claims = off + +## The checklist of claims to validate +## +## Value: String +## auth.jwt.verify_claims.$name = expected +## +## Variables: +## - %u: username +## - %c: clientid +# auth.jwt.verify_claims.username = %u +``` + +Load the Plugin +--------------- + +``` +./bin/emqx_ctl plugins load emqx_auth_jwt +``` + +Example +------- + +``` +mosquitto_pub -t 'pub' -m 'hello' -i test -u test -P eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoiYm9iIiwiYWdlIjoyOX0.bIV_ZQ8D5nQi0LT8AVkpM4Pd6wmlbpR9S8nOLJAsA8o +``` + +Algorithms +---------- + +The JWT spec supports several algorithms for cryptographic signing. This plugin currently supports: + +* HS256 - HMAC using SHA-256 hash algorithm +* HS384 - HMAC using SHA-384 hash algorithm +* HS512 - HMAC using SHA-512 hash algorithm + +* RS256 - RSA with the SHA-256 hash algorithm +* RS384 - RSA with the SHA-384 hash algorithm +* RS512 - RSA with the SHA-512 hash algorithm + +* ES256 - ECDSA using the P-256 curve +* ES384 - ECDSA using the P-384 curve +* ES512 - ECDSA using the P-512 curve + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. diff --git a/apps/emqx_auth_jwt/TODO.md b/apps/emqx_auth_jwt/TODO.md new file mode 100644 index 000000000..dfd730e0a --- /dev/null +++ b/apps/emqx_auth_jwt/TODO.md @@ -0,0 +1,2 @@ +1. Notice for the [Critical vulnerabilities in JSON Web Token](https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/) + diff --git a/apps/emqx_auth_jwt/doc/hmac-vs-ecdsa-for-jwt.txt b/apps/emqx_auth_jwt/doc/hmac-vs-ecdsa-for-jwt.txt new file mode 100644 index 000000000..88fa5ebde --- /dev/null +++ b/apps/emqx_auth_jwt/doc/hmac-vs-ecdsa-for-jwt.txt @@ -0,0 +1,3 @@ + +https://crypto.stackexchange.com/questions/30657/hmac-vs-ecdsa-for-jwt + diff --git a/apps/emqx_auth_jwt/etc/emqx_auth_jwt.conf b/apps/emqx_auth_jwt/etc/emqx_auth_jwt.conf new file mode 100644 index 000000000..5a599ca23 --- /dev/null +++ b/apps/emqx_auth_jwt/etc/emqx_auth_jwt.conf @@ -0,0 +1,45 @@ +##-------------------------------------------------------------------- +## JWT Auth Plugin +##-------------------------------------------------------------------- + +## HMAC Hash Secret. +## +## Value: String +auth.jwt.secret = emqxsecret + +## RSA or ECDSA public key file. +## +## Value: File +#auth.jwt.pubkey = etc/certs/jwt_public_key.pem + +## The JWKs server address +## +## see: http://self-issued.info/docs/draft-ietf-jose-json-web-key.html +## +#auth.jwt.jwks = https://127.0.0.1:8080/jwks + +## The JWKs refresh interval +## +## Value: Duration +#auth.jwt.jwks.refresh_interval = 5m + +## From where the JWT string can be got +## +## Value: username | password +## Default: password +auth.jwt.from = password + +## Enable to verify claims fields +## +## Value: on | off +auth.jwt.verify_claims = off + +## The checklist of claims to validate +## +## Value: String +## auth.jwt.verify_claims.$name = expected +## +## Variables: +## - %u: username +## - %c: clientid +#auth.jwt.verify_claims.username = %u diff --git a/apps/emqx_auth_jwt/priv/emqx_auth_jwt.schema b/apps/emqx_auth_jwt/priv/emqx_auth_jwt.schema new file mode 100644 index 000000000..3d8de3678 --- /dev/null +++ b/apps/emqx_auth_jwt/priv/emqx_auth_jwt.schema @@ -0,0 +1,49 @@ +%%-*- mode: erlang -*- + +{mapping, "auth.jwt.secret", "emqx_auth_jwt.secret", [ + {datatype, string} +]}. + +{mapping, "auth.jwt.jwks", "emqx_auth_jwt.jwks", [ + {datatype, string} +]}. + +{mapping, "auth.jwt.jwks.refresh_interval", "emqx_auth_jwt.refresh_interval", [ + {datatype, {duration, ms}} +]}. + +{mapping, "auth.jwt.from", "emqx_auth_jwt.from", [ + {default, password}, + {datatype, atom} +]}. + +{mapping, "auth.jwt.pubkey", "emqx_auth_jwt.pubkey", [ + {datatype, string} +]}. + +{mapping, "auth.jwt.signature_format", "emqx_auth_jwt.jwerl_opts", [ + {default, "der"}, + {datatype, {enum, [raw, der]}} +]}. + +{mapping, "auth.jwt.verify_claims", "emqx_auth_jwt.verify_claims", [ + {default, off}, + {datatype, flag} +]}. + +{mapping, "auth.jwt.verify_claims.$name", "emqx_auth_jwt.verify_claims", [ + {datatype, string} +]}. + +{translation, "emqx_auth_jwt.verify_claims", fun(Conf) -> + case cuttlefish:conf_get("auth.jwt.verify_claims", Conf) of + false -> cuttlefish:unset(); + true -> + lists:foldr( + fun({["auth","jwt","verify_claims", Name], Value}, Acc) -> + [{list_to_atom(Name), list_to_binary(Value)} | Acc]; + ({["auth","jwt","verify_claims"], _Value}, Acc) -> + Acc + end, [], cuttlefish_variable:filter_by_prefix("auth.jwt.verify_claims", Conf)) + end +end}. diff --git a/apps/emqx_auth_jwt/rebar.config b/apps/emqx_auth_jwt/rebar.config new file mode 100644 index 000000000..4164d1fed --- /dev/null +++ b/apps/emqx_auth_jwt/rebar.config @@ -0,0 +1,25 @@ +{deps, + [ + {jose, {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.10.1"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, [{emqx_ct_helpers, {git, "http://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}]} + ]} + ]}. diff --git a/apps/emqx_auth_jwt/rebar.config.script b/apps/emqx_auth_jwt/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_jwt/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src new file mode 100644 index 000000000..e5d25e11b --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_jwt, + [{description, "EMQ X Authentication with JWT"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_jwt_sup]}, + {applications, [kernel,stdlib,jose]}, + {mod, {emqx_auth_jwt_app, []}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-jwt"} + ]} + ]}. diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src.script b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src new file mode 100644 index 000000000..50f8376ba --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.appup.src @@ -0,0 +1,16 @@ +%% -*-: erlang -*- + +{VSN, + [ + {"4.2.0", [ + {restart_application, emqx_auth_jwt} + ]}, + {<<".*">>, []} + ], + [ + {"4.2.0", [ + {restart_application, emqx_auth_jwt} + ]}, + {<<".*">>, []} + ] +}. diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl new file mode 100644 index 000000000..6be726dc9 --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt.erl @@ -0,0 +1,99 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_jwt). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[JWT]"). + +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +%%-------------------------------------------------------------------- +%% Authentication callbacks +%%-------------------------------------------------------------------- + +check(ClientInfo, AuthResult, #{pid := Pid, + from := From, + checklists := Checklists}) -> + case maps:find(From, ClientInfo) of + error -> + ok = emqx_metrics:inc(?AUTH_METRICS(ignore)); + {ok, undefined} -> + ok = emqx_metrics:inc(?AUTH_METRICS(ignore)); + {ok, Token} -> + case emqx_auth_jwt_svr:verify(Pid, Token) of + {error, not_found} -> + ok = emqx_metrics:inc(?AUTH_METRICS(ignore)); + {error, not_token} -> + ok = emqx_metrics:inc(?AUTH_METRICS(ignore)); + {error, Reason} -> + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => Reason, anonymous => false}}; + {ok, Claims} -> + {stop, maps:merge(AuthResult, verify_claims(Checklists, Claims, ClientInfo))} + end + end. + +description() -> "Authentication with JWT". + +%%------------------------------------------------------------------------------ +%% Verify Claims +%%-------------------------------------------------------------------- + +verify_claims(Checklists, Claims, ClientInfo) -> + case do_verify_claims(feedvar(Checklists, ClientInfo), Claims) of + {error, Reason} -> + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + #{auth_result => Reason, anonymous => false}; + ok -> + ok = emqx_metrics:inc(?AUTH_METRICS(success)), + #{auth_result => success, anonymous => false, jwt_claims => Claims} + end. + +do_verify_claims([], _Claims) -> + ok; +do_verify_claims([{Key, Expected} | L], Claims) -> + case maps:get(Key, Claims, undefined) =:= Expected of + true -> do_verify_claims(L, Claims); + false -> {error, {verify_claim_failed, Key}} + end. + +feedvar(Checklists, #{username := Username, clientid := ClientId}) -> + lists:map(fun({K, <<"%u">>}) -> {K, Username}; + ({K, <<"%c">>}) -> {K, ClientId}; + ({K, Expected}) -> {K, Expected} + end, Checklists). diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt_app.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt_app.erl new file mode 100644 index 000000000..736fb28b9 --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt_app.erl @@ -0,0 +1,82 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_jwt_app). + +-behaviour(application). + +-behaviour(supervisor). + +-emqx_plugin(auth). + +-export([start/2, stop/1]). + +-export([init/1]). + +-define(APP, emqx_auth_jwt). + +start(_Type, _Args) -> + {ok, Sup} = supervisor:start_link({local, ?MODULE}, ?MODULE, []), + + {ok, Pid} = start_auth_server(jwks_svr_options()), + ok = emqx_auth_jwt:register_metrics(), + + AuthEnv0 = auth_env(), + AuthEnv1 = AuthEnv0#{pid => Pid}, + + emqx:hook('client.authenticate', {emqx_auth_jwt, check, [AuthEnv1]}), + {ok, Sup, AuthEnv1}. + +stop(AuthEnv) -> + emqx:unhook('client.authenticate', {emqx_auth_jwt, check, [AuthEnv]}). + +%%-------------------------------------------------------------------- +%% Dummy supervisor +%%-------------------------------------------------------------------- + +init([]) -> + {ok, {{one_for_all, 1, 10}, []}}. + +start_auth_server(Options) -> + Spec = #{id => jwt_svr, + start => {emqx_auth_jwt_svr, start_link, [Options]}, + restart => permanent, + shutdown => brutal_kill, + type => worker, + modules => [emqx_auth_jwt_svr]}, + supervisor:start_child(?MODULE, Spec). + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +auth_env() -> + Checklists = [{atom_to_binary(K, utf8), V} + || {K, V} <- env(verify_claims, [])], + #{ from => env(from, password) + , checklists => Checklists + }. + +jwks_svr_options() -> + [{K, V} || {K, V} + <- [{secret, env(secret, undefined)}, + {pubkey, env(pubkey, undefined)}, + {jwks_addr, env(jwks, undefined)}, + {interval, env(refresh_interval, undefined)}], + V /= undefined]. + +env(Key, Default) -> + application:get_env(?APP, Key, Default). diff --git a/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl b/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl new file mode 100644 index 000000000..b347d0e0b --- /dev/null +++ b/apps/emqx_auth_jwt/src/emqx_auth_jwt_svr.erl @@ -0,0 +1,222 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_jwt_svr). + +-behaviour(gen_server). + +-include_lib("emqx/include/logger.hrl"). +-include_lib("jose/include/jose_jwk.hrl"). + +-logger_header("[JWT-SVR]"). + +%% APIs +-export([start_link/1]). + +-export([verify/2]). + +%% gen_server callbacks +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-type options() :: [option()]. +-type option() :: {secret, list()} + | {pubkey, list()} + | {jwks_addr, list()} + | {interval, pos_integer()}. + +-define(INTERVAL, 300000). + +-record(state, {static, remote, addr, tref, intv}). + +%%-------------------------------------------------------------------- +%% APIs +%%-------------------------------------------------------------------- + +-spec start_link(options()) -> gen_server:start_ret(). +start_link(Options) -> + gen_server:start_link(?MODULE, [Options], []). + +-spec verify(pid(), binary()) + -> {error, term()} + | {ok, Payload :: map()}. +verify(S, JwsCompacted) when is_binary(JwsCompacted) -> + case catch jose_jws:peek(JwsCompacted) of + {'EXIT', _} -> {error, not_token}; + _ -> gen_server:call(S, {verify, JwsCompacted}) + end. + +%%-------------------------------------------------------------------- +%% gen_server callbacks +%%-------------------------------------------------------------------- + +init([Options]) -> + ok = jose:json_module(jiffy), + {Static, Remote} = do_init_jwks(Options), + Intv = proplists:get_value(interval, Options, ?INTERVAL), + {ok, reset_timer( + #state{ + static = Static, + remote = Remote, + addr = proplists:get_value(jwks_addr, Options), + intv = Intv})}. + +%% @private +do_init_jwks(Options) -> + K2J = fun(K, F) -> + case proplists:get_value(K, Options) of + undefined -> undefined; + V -> + try F(V) of + {error, Reason} -> + ?LOG(warning, "Build ~p JWK ~p failed: {error, ~p}~n", + [K, V, Reason]), + undefined; + J -> J + catch T:R:_ -> + ?LOG(warning, "Build ~p JWK ~p failed: {~p, ~p}~n", + [K, V, T, R]), + undefined + end + end + end, + OctJwk = K2J(secret, fun(V) -> + jose_jwk:from_oct(list_to_binary(V)) + end), + PemJwk = K2J(pubkey, fun jose_jwk:from_pem_file/1), + Remote = K2J(jwks_addr, fun request_jwks/1), + {[J ||J <- [OctJwk, PemJwk], J /= undefined], Remote}. + +handle_call({verify, JwsCompacted}, _From, State) -> + handle_verify(JwsCompacted, State); + +handle_call(_Req, _From, State) -> + {reply, ok, State}. + +handle_cast(_Msg, State) -> + {noreply, State}. + +handle_info({timeout, _TRef, refresh}, State = #state{addr = Addr}) -> + NState = try + State#state{remote = request_jwks(Addr)} + catch _:_ -> + State + end, + {noreply, reset_timer(NState)}; + +handle_info(_Info, State) -> + {noreply, State}. + +terminate(_Reason, State) -> + _ = cancel_timer(State), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +handle_verify(JwsCompacted, + State = #state{static = Static, remote = Remote}) -> + try + Jwks = case emqx_json:decode(jose_jws:peek_protected(JwsCompacted), [return_maps]) of + #{<<"kid">> := Kid} -> + [J || J <- Remote, maps:get(<<"kid">>, J#jose_jwk.fields, undefined) =:= Kid]; + _ -> Static + end, + case Jwks of + [] -> {reply, {error, not_found}, State}; + _ -> + {reply, do_verify(JwsCompacted, Jwks), State} + end + catch + _:_ -> + {reply, {error, invalid_signature}, State} + end. + +request_jwks(Addr) -> + case httpc:request(get, {Addr, []}, [], [{body_format, binary}]) of + {error, Reason} -> + error(Reason); + {ok, {_Code, _Headers, Body}} -> + try + JwkSet = jose_jwk:from(emqx_json:decode(Body, [return_maps])), + {_, Jwks} = JwkSet#jose_jwk.keys, Jwks + catch _:_ -> + ?LOG(error, "Invalid jwks server response: ~p~n", [Body]), + error(badarg) + end + end. + +reset_timer(State = #state{addr = undefined}) -> + State; +reset_timer(State = #state{intv = Intv}) -> + State#state{tref = erlang:start_timer(Intv, self(), refresh)}. + +cancel_timer(State = #state{tref = undefined}) -> + State; +cancel_timer(State = #state{tref = TRef}) -> + erlang:cancel_timer(TRef), + State#state{tref = undefined}. + +do_verify(_JwsCompated, []) -> + {error, invalid_signature}; +do_verify(JwsCompacted, [Jwk|More]) -> + case jose_jws:verify(Jwk, JwsCompacted) of + {true, Payload, _Jws} -> + Claims = emqx_json:decode(Payload, [return_maps]), + case check_claims(Claims) of + false -> + {error, invalid_signature}; + NClaims -> + {ok, NClaims} + end; + {false, _, _} -> + do_verify(JwsCompacted, More) + end. + +check_claims(Claims) -> + Now = os:system_time(seconds), + Checker = [{<<"exp">>, fun(ExpireTime) -> + Now < ExpireTime + end}, + {<<"iat">>, fun(IssueAt) -> + IssueAt =< Now + end}, + {<<"nbf">>, fun(NotBefore) -> + NotBefore =< Now + end} + ], + do_check_claim(Checker, Claims). + +do_check_claim([], Claims) -> + Claims; +do_check_claim([{K, F}|More], Claims) -> + case maps:take(K, Claims) of + error -> do_check_claim(More, Claims); + {V, NClaims} -> + case F(V) of + true -> do_check_claim(More, NClaims); + _ -> false + end + end. diff --git a/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl b/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl new file mode 100644 index 000000000..12f307b2a --- /dev/null +++ b/apps/emqx_auth_jwt/test/emqx_auth_jwt_SUITE.erl @@ -0,0 +1,142 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_jwt_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-define(APP, emqx_auth_jwt). + +all() -> + [{group, emqx_auth_jwt}]. + +groups() -> + [{emqx_auth_jwt, [sequence], [ t_check_auth + , t_check_claims + , t_check_claims_clientid + , t_check_claims_username + ]} + ]. + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx, emqx_auth_jwt], fun set_special_configs/1), + Config. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_auth_jwt, emqx]). + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, acl_nomatch, deny), + application:set_env(emqx, enable_acl_cache, false), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + AclFilePath = filename:join(["test", "emqx_SUITE_data", "acl.conf"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, AclFilePath)); + +set_special_configs(emqx_auth_jwt) -> + application:set_env(emqx_auth_jwt, secret, "emqxsecret"), + application:set_env(emqx_auth_jwt, from, password); + +set_special_configs(_) -> + ok. + +sign(Payload, Alg, Key) -> + Jwk = jose_jwk:from_oct(Key), + Jwt = emqx_json:encode(Payload), + {_, Token} = jose_jws:compact(jose_jwt:sign(Jwk, #{<<"alg">> => Alg}, Jwt)), + Token. + +%%------------------------------------------------------------------------------ +%% Testcases +%%------------------------------------------------------------------------------ + +t_check_auth(_) -> + Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external}, + Jwt = sign([{clientid, <<"client1">>}, + {username, <<"plain">>}, + {exp, os:system_time(seconds) + 3}], <<"HS256">>, <<"emqxsecret">>), + ct:pal("Jwt: ~p~n", [Jwt]), + + Result0 = emqx_access_control:authenticate(Plain#{password => Jwt}), + ct:pal("Auth result: ~p~n", [Result0]), + ?assertMatch({ok, #{auth_result := success, jwt_claims := #{<<"clientid">> := <<"client1">>}}}, Result0), + + ct:sleep(3100), + Result1 = emqx_access_control:authenticate(Plain#{password => Jwt}), + ct:pal("Auth result after 1000ms: ~p~n", [Result1]), + ?assertMatch({error, _}, Result1), + + Jwt_Error = sign([{client_id, <<"client1">>}, + {username, <<"plain">>}], <<"HS256">>, <<"secret">>), + ct:pal("invalid jwt: ~p~n", [Jwt_Error]), + Result2 = emqx_access_control:authenticate(Plain#{password => Jwt_Error}), + ct:pal("Auth result for the invalid jwt: ~p~n", [Result2]), + ?assertEqual({error, invalid_signature}, Result2), + ?assertMatch({error, _}, emqx_access_control:authenticate(Plain#{password => <<"asd">>})). + +t_check_claims(_) -> + application:set_env(emqx_auth_jwt, verify_claims, [{sub, <<"value">>}]), + Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external}, + Jwt = sign([{client_id, <<"client1">>}, + {username, <<"plain">>}, + {sub, value}, + {exp, os:system_time(seconds) + 3}], <<"HS256">>, <<"emqxsecret">>), + Result0 = emqx_access_control:authenticate(Plain#{password => Jwt}), + ct:pal("Auth result: ~p~n", [Result0]), + ?assertMatch({ok, #{auth_result := success, jwt_claims := _}}, Result0), + Jwt_Error = sign([{clientid, <<"client1">>}, + {username, <<"plain">>}], <<"HS256">>, <<"secret">>), + Result2 = emqx_access_control:authenticate(Plain#{password => Jwt_Error}), + ct:pal("Auth result for the invalid jwt: ~p~n", [Result2]), + ?assertEqual({error, invalid_signature}, Result2). + +t_check_claims_clientid(_) -> + application:set_env(emqx_auth_jwt, verify_claims, [{clientid, <<"%c">>}]), + Plain = #{clientid => <<"client23">>, username => <<"plain">>, zone => external}, + Jwt = sign([{client_id, <<"client23">>}, + {username, <<"plain">>}, + {exp, os:system_time(seconds) + 3}], <<"HS256">>, <<"emqxsecret">>), + Result0 = emqx_access_control:authenticate(Plain#{password => Jwt}), + ct:pal("Auth result: ~p~n", [Result0]), + ?assertMatch({ok, #{auth_result := success, jwt_claims := _}}, Result0), + Jwt_Error = sign([{clientid, <<"client1">>}, + {username, <<"plain">>}], <<"HS256">>, <<"secret">>), + Result2 = emqx_access_control:authenticate(Plain#{password => Jwt_Error}), + ct:pal("Auth result for the invalid jwt: ~p~n", [Result2]), + ?assertEqual({error, invalid_signature}, Result2). + +t_check_claims_username(_) -> + application:set_env(emqx_auth_jwt, verify_claims, [{username, <<"%u">>}]), + Plain = #{clientid => <<"client23">>, username => <<"plain">>, zone => external}, + Jwt = sign([{client_id, <<"client23">>}, + {username, <<"plain">>}, + {exp, os:system_time(seconds) + 3}], <<"HS256">>, <<"emqxsecret">>), + Result0 = emqx_access_control:authenticate(Plain#{password => Jwt}), + ct:pal("Auth result: ~p~n", [Result0]), + ?assertMatch({ok, #{auth_result := success, jwt_claims := _}}, Result0), + Jwt_Error = sign([{clientid, <<"client1">>}, + {username, <<"plain">>}], <<"HS256">>, <<"secret">>), + Result3 = emqx_access_control:authenticate(Plain#{password => Jwt_Error}), + ct:pal("Auth result for the invalid jwt: ~p~n", [Result3]), + ?assertEqual({error, invalid_signature}, Result3). diff --git a/apps/emqx_auth_ldap/.ci/docker-compose.yml b/apps/emqx_auth_ldap/.ci/docker-compose.yml new file mode 100644 index 000000000..bba9b711f --- /dev/null +++ b/apps/emqx_auth_ldap/.ci/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3' + +services: + erlang: + image: erlang:22.1 + volumes: + - ../:/emqx_auth_ldap + networks: + - emqx_bridge + depends_on: + - ldap_server + tty: true + + ldap_server: + build: ./emqx-ldap + image: emqx-ldap:1.0 + restart: always + ports: + - 389:389 + - 636:636 + networks: + - emqx_bridge + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_ldap/.ci/emqx-ldap/Dockerfile b/apps/emqx_auth_ldap/.ci/emqx-ldap/Dockerfile new file mode 100644 index 000000000..0a01572c4 --- /dev/null +++ b/apps/emqx_auth_ldap/.ci/emqx-ldap/Dockerfile @@ -0,0 +1,26 @@ +FROM buildpack-deps:stretch + +ENV VERSION=2.4.50 + +RUN apt-get update && apt-get install -y groff groff-base +RUN wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-${VERSION}.tgz \ + && gunzip -c openldap-${VERSION}.tgz | tar xvfB - \ + && cd openldap-${VERSION} \ + && ./configure && make depend && make && make install \ + && cd .. && rm -rf openldap-${VERSION} + +COPY ./slapd.conf /usr/local/etc/openldap/slapd.conf +COPY ./emqx.io.ldif /usr/local/etc/openldap/schema/emqx.io.ldif +COPY ./emqx.schema /usr/local/etc/openldap/schema/emqx.schema +COPY ./*.pem /usr/local/etc/openldap/ + +RUN mkdir -p /usr/local/etc/openldap/data \ + && slapadd -l /usr/local/etc/openldap/schema/emqx.io.ldif -f /usr/local/etc/openldap/slapd.conf + +WORKDIR /usr/local/etc/openldap + +EXPOSE 389 636 + +ENTRYPOINT ["/usr/local/libexec/slapd", "-h", "ldap:/// ldaps:///", "-d", "3", "-f", "/usr/local/etc/openldap/slapd.conf"] + +CMD [] diff --git a/apps/emqx_auth_ldap/.ci/emqx-ldap/slapd.conf b/apps/emqx_auth_ldap/.ci/emqx-ldap/slapd.conf new file mode 100644 index 000000000..d6ba20caa --- /dev/null +++ b/apps/emqx_auth_ldap/.ci/emqx-ldap/slapd.conf @@ -0,0 +1,16 @@ +include /usr/local/etc/openldap/schema/core.schema +include /usr/local/etc/openldap/schema/cosine.schema +include /usr/local/etc/openldap/schema/inetorgperson.schema +include /usr/local/etc/openldap/schema/ppolicy.schema +include /usr/local/etc/openldap/schema/emqx.schema + +TLSCACertificateFile /usr/local/etc/openldap/cacert.pem +TLSCertificateFile /usr/local/etc/openldap/cert.pem +TLSCertificateKeyFile /usr/local/etc/openldap/key.pem + +database bdb +suffix "dc=emqx,dc=io" +rootdn "cn=root,dc=emqx,dc=io" +rootpw {SSHA}eoF7NhNrejVYYyGHqnt+MdKNBh4r1w3W + +directory /usr/local/etc/openldap/data diff --git a/apps/emqx_auth_ldap/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_ldap/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..dd6978406 --- /dev/null +++ b/apps/emqx_auth_ldap/.github/workflows/run_test_cases.yaml @@ -0,0 +1,49 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + strategy: + matrix: + network_type: + - ipv4 + - ipv6 + + steps: + - name: install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + - uses: actions/checkout@v1 + - name: prepare + env: + NETWORK_TYPE: ${{ matrix.network_type }} + run: | + set -e -x -u + cp ./emqx.io.ldif ./emqx.schema ./.ci/emqx-ldap + cp ./test/certs/* ./.ci/emqx-ldap + docker-compose -f ./.ci/docker-compose.yml -p tests build + if [ "$NETWORK_TYPE" = "ipv6" ];then docker network create --driver bridge --ipv6 --subnet fd15:555::/64 tests_emqx_bridge --attachable; fi + docker-compose -f ./.ci/docker-compose.yml -p tests up -d + if [ "$NETWORK_TYPE" != "ipv6" ];then + docker exec -i tests_erlang_1 sh -c "sed -i '/auth.ldap.servers/c auth.ldap.servers = ldap_server' ./emqx_auth_ldap/etc/emqx_auth_ldap.conf" + else + ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=tests_ldap_server_1 -q)) + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "sed -i '/auth.ldap.servers/c auth.ldap.servers = $ipv6_address' /emqx_auth_ldap/etc/emqx_auth_ldap.conf" + fi + - name: run test cases + run: | + set -e -x -u + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_ldap xref" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_ldap eunit" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_ldap ct" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_ldap cover" + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs_${{ matrix.network_type }} + path: _build/test/logs + diff --git a/apps/emqx_auth_ldap/.gitignore b/apps/emqx_auth_ldap/.gitignore new file mode 100644 index 000000000..eb8f0639f --- /dev/null +++ b/apps/emqx_auth_ldap/.gitignore @@ -0,0 +1,25 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +emqx_auth_ldap.d +data/ +cover/ +ct.coverdata +eunit.coverdata +logs/ +test/ct.cover.spec +.DS_Store +_build/ +rebar.lock +erlang.mk +rebar3.crashdump +.rebar3/ +etc/emqx_auth_ldap.conf.rendered diff --git a/apps/emqx_auth_ldap/LICENSE b/apps/emqx_auth_ldap/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_ldap/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_ldap/Makefile b/apps/emqx_auth_ldap/Makefile new file mode 100644 index 000000000..759c123fa --- /dev/null +++ b/apps/emqx_auth_ldap/Makefile @@ -0,0 +1,35 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + + +compile: + $(REBAR) compile + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +clean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_ldap.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_ldap.conf -i priv/emqx_auth_ldap.schema -d data diff --git a/apps/emqx_auth_ldap/README.md b/apps/emqx_auth_ldap/README.md new file mode 100644 index 000000000..c4d56c839 --- /dev/null +++ b/apps/emqx_auth_ldap/README.md @@ -0,0 +1,96 @@ +emqx_auth_ldap +============== + +EMQ X LDAP Authentication Plugin + +Build +----- + +``` +make +``` + +Load the Plugin +--------------- + +``` +# ./bin/emqx_ctl plugins load emqx_auth_ldap +``` + +Generate Password +--------------- + +``` +slappasswd -h '{ssha}' -s public +``` + +Configuration Open LDAP +----------------------- + +vim /etc/openldap/slapd.conf + +``` +include /etc/openldap/schema/core.schema +include /etc/openldap/schema/cosine.schema +include /etc/openldap/schema/inetorgperson.schema +include /etc/openldap/schema/ppolicy.schema +include /etc/openldap/schema/emqx.schema + +database bdb +suffix "dc=emqx,dc=io" +rootdn "cn=root,dc=emqx,dc=io" +rootpw {SSHA}eoF7NhNrejVYYyGHqnt+MdKNBh4r1w3W + +directory /etc/openldap/data +``` + +If the ldap launched with error below: +``` +Unrecognized database type (bdb) +5c4a72b9 slapd.conf: line 7: failed init (bdb) +slapadd: bad configuration file! +``` + +Insert lines to the slapd.conf +``` +modulepath /usr/lib/ldap +moduleload back_bdb.la +``` + +Import EMQX User Data +---------------------- + +Use ldapadd +``` +# ldapadd -x -D "cn=root,dc=emqx,dc=io" -w public -f emqx.com.ldif +``` + +Use slapadd +``` +# sudo slapadd -l schema/emqx.io.ldif -f slapd.conf +``` + +Launch slapd +``` +# sudo slapd -d 3 +``` + +Test +----- +After configure slapd correctly and launch slapd successfully. +You could execute + +``` bash +# make tests +``` + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_auth_ldap/emqx.io.ldif b/apps/emqx_auth_ldap/emqx.io.ldif new file mode 100644 index 000000000..f9833cd88 --- /dev/null +++ b/apps/emqx_auth_ldap/emqx.io.ldif @@ -0,0 +1,135 @@ +## create emqx.io + +dn:dc=emqx,dc=io +objectclass: top +objectclass: dcobject +objectclass: organization +dc:emqx +o:emqx,Inc. + +# create testdevice.emqx.io +dn:ou=testdevice,dc=emqx,dc=io +objectClass: top +objectclass:organizationalUnit +ou:testdevice + +# create user admin +dn:uid=admin,ou=testdevice,dc=emqx,dc=io +objectClass: top +objectClass: simpleSecurityObject +objectClass: account +userPassword:: e1NIQX1XNnBoNU1tNVB6OEdnaVVMYlBnekczN21qOWc9 +uid: admin + +## create user=mqttuser0001, +# password=mqttuser0001, +# passhash={SHA}mlb3fat40MKBTXUVZwCKmL73R/0= +# base64passhash=e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9 +dn:uid=mqttuser0001,ou=testdevice,dc=emqx,dc=io +objectClass: top +objectClass: mqttUser +objectClass: mqttDevice +objectClass: mqttSecurity +uid: mqttuser0001 +isEnabled: TRUE +mqttAccountName: user1 +mqttPublishTopic: mqttuser0001/pub/1 +mqttPublishTopic: mqttuser0001/pub/+ +mqttPublishTopic: mqttuser0001/pub/# +mqttSubscriptionTopic: mqttuser0001/sub/1 +mqttSubscriptionTopic: mqttuser0001/sub/+ +mqttSubscriptionTopic: mqttuser0001/sub/# +mqttPubSubTopic: mqttuser0001/pubsub/1 +mqttPubSubTopic: mqttuser0001/pubsub/+ +mqttPubSubTopic: mqttuser0001/pubsub/# +userPassword:: e1NIQX1tbGIzZmF0NDBNS0JUWFVWWndDS21MNzNSLzA9 + +## create user=mqttuser0002 +# password=mqttuser0002, +# passhash={SSHA}n9XdtoG4Q/TQ3TQF4Y+khJbMBH4qXj4M +# base64passhash=e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0= +dn:uid=mqttuser0002,ou=testdevice,dc=emqx,dc=io +objectClass: top +objectClass: mqttUser +objectClass: mqttDevice +objectClass: mqttSecurity +uid: mqttuser0002 +isEnabled: TRUE +mqttAccountName: user2 +mqttPublishTopic: mqttuser0002/pub/1 +mqttPublishTopic: mqttuser0002/pub/+ +mqttPublishTopic: mqttuser0002/pub/# +mqttSubscriptionTopic: mqttuser0002/sub/1 +mqttSubscriptionTopic: mqttuser0002/sub/+ +mqttSubscriptionTopic: mqttuser0002/sub/# +mqttPubSubTopic: mqttuser0002/pubsub/1 +mqttPubSubTopic: mqttuser0002/pubsub/+ +mqttPubSubTopic: mqttuser0002/pubsub/# +userPassword:: e1NTSEF9bjlYZHRvRzRRL1RRM1RRRjRZK2toSmJNQkg0cVhqNE0= + +## create user mqttuser0003 +# password=mqttuser0003, +# passhash={MD5}ybsPGoaK3nDyiQvveiCOIw== +# base64passhash=e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0= +dn:uid=mqttuser0003,ou=testdevice,dc=emqx,dc=io +objectClass: top +objectClass: mqttUser +objectClass: mqttDevice +objectClass: mqttSecurity +uid: mqttuser0003 +isEnabled: TRUE +mqttPublishTopic: mqttuser0003/pub/1 +mqttPublishTopic: mqttuser0003/pub/+ +mqttPublishTopic: mqttuser0003/pub/# +mqttSubscriptionTopic: mqttuser0003/sub/1 +mqttSubscriptionTopic: mqttuser0003/sub/+ +mqttSubscriptionTopic: mqttuser0003/sub/# +mqttPubSubTopic: mqttuser0003/pubsub/1 +mqttPubSubTopic: mqttuser0003/pubsub/+ +mqttPubSubTopic: mqttuser0003/pubsub/# +userPassword:: e01ENX15YnNQR29hSzNuRHlpUXZ2ZWlDT0l3PT0= + +## create user mqttuser0004 +# password=mqttuser0004, +# passhash={MD5}2Br6pPDSEDIEvUlu9+s+MA== +# base64passhash=e01ENX0yQnI2cFBEU0VESUV2VWx1OStzK01BPT0= +dn:uid=mqttuser0004,ou=testdevice,dc=emqx,dc=io +objectClass: top +objectClass: mqttUser +objectClass: mqttDevice +objectClass: mqttSecurity +uid: mqttuser0004 +isEnabled: TRUE +mqttPublishTopic: mqttuser0004/pub/1 +mqttPublishTopic: mqttuser0004/pub/+ +mqttPublishTopic: mqttuser0004/pub/# +mqttSubscriptionTopic: mqttuser0004/sub/1 +mqttSubscriptionTopic: mqttuser0004/sub/+ +mqttSubscriptionTopic: mqttuser0004/sub/# +mqttPubSubTopic: mqttuser0004/pubsub/1 +mqttPubSubTopic: mqttuser0004/pubsub/+ +mqttPubSubTopic: mqttuser0004/pubsub/# +userPassword: {MD5}2Br6pPDSEDIEvUlu9+s+MA== + +## create user mqttuser0005 +# password=mqttuser0005, +# passhash={SHA}jKnxeEDGR14kE8AR7yuVFOelhz4= +# base64passhash=e1NIQX1qS254ZUVER1IxNGtFOEFSN3l1VkZPZWxoejQ9 +objectClass: top +dn:uid=mqttuser0005,ou=testdevice,dc=emqx,dc=io +objectClass: mqttUser +objectClass: mqttDevice +objectClass: mqttSecurity +uid: mqttuser0005 +isEnabled: TRUE +mqttPublishTopic: mqttuser0005/pub/1 +mqttPublishTopic: mqttuser0005/pub/+ +mqttPublishTopic: mqttuser0005/pub/# +mqttSubscriptionTopic: mqttuser0005/sub/1 +mqttSubscriptionTopic: mqttuser0005/sub/+ +mqttSubscriptionTopic: mqttuser0005/sub/# +mqttPubSubTopic: mqttuser0005/pubsub/1 +mqttPubSubTopic: mqttuser0005/pubsub/+ +mqttPubSubTopic: mqttuser0005/pubsub/# +userPassword: {SHA}jKnxeEDGR14kE8AR7yuVFOelhz4= + diff --git a/apps/emqx_auth_ldap/emqx.schema b/apps/emqx_auth_ldap/emqx.schema new file mode 100644 index 000000000..55f92269b --- /dev/null +++ b/apps/emqx_auth_ldap/emqx.schema @@ -0,0 +1,46 @@ +# +# Preliminary Apple OS X Native LDAP Schema +# This file is subject to change. +# +attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.1.3 NAME 'isEnabled' + EQUALITY booleanMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 + SINGLE-VALUE + USAGE userApplications ) + +attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.1 NAME ( 'mqttPublishTopic' 'mpt' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + USAGE userApplications ) +attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.2 NAME ( 'mqttSubscriptionTopic' 'mst' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + USAGE userApplications ) +attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.3 NAME ( 'mqttPubSubTopic' 'mpst' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + USAGE userApplications ) +attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.4 NAME ( 'mqttAccountName' 'man' ) + EQUALITY caseIgnoreMatch + SUBSTR caseIgnoreSubstringsMatch + SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 + USAGE userApplications ) + + +objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4 NAME 'mqttUser' + AUXILIARY + MAY ( mqttPublishTopic $ mqttSubscriptionTopic $ mqttPubSubTopic $ mqttAccountName) ) + +objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.2 NAME 'mqttDevice' + SUP top + STRUCTURAL + MUST ( uid ) + MAY ( isEnabled ) ) + +objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.3 NAME 'mqttSecurity' + SUP top + AUXILIARY + MAY ( userPassword $ userPKCS12 $ pwdAttribute $ pwdLockout ) ) diff --git a/apps/emqx_auth_ldap/etc/emqx_auth_ldap.conf b/apps/emqx_auth_ldap/etc/emqx_auth_ldap.conf new file mode 100644 index 000000000..746510fb3 --- /dev/null +++ b/apps/emqx_auth_ldap/etc/emqx_auth_ldap.conf @@ -0,0 +1,78 @@ +##-------------------------------------------------------------------- +## LDAP Auth Plugin +##-------------------------------------------------------------------- + +## LDAP server list, seperated by ','. +## +## Value: String +auth.ldap.servers = 127.0.0.1 + +## LDAP server port. +## +## Value: Port +auth.ldap.port = 389 + +## LDAP pool size +## +## Value: String +auth.ldap.pool = 8 + +## LDAP Bind DN. +## +## Value: DN +auth.ldap.bind_dn = cn=root,dc=emqx,dc=io + +## LDAP Bind Password. +## +## Value: String +auth.ldap.bind_password = public + +## LDAP query timeout. +## +## Value: Number +auth.ldap.timeout = 30s + +## Device DN. +## +## Variables: +## +## Value: DN +auth.ldap.device_dn = ou=device,dc=emqx,dc=io + +## Specified ObjectClass +## +## Variables: +## +## Value: string +auth.ldap.match_objectclass = mqttUser + +## attributetype for username +## +## Variables: +## +## Value: string +auth.ldap.username.attributetype = uid + +## attributetype for password +## +## Variables: +## +## Value: string +auth.ldap.password.attributetype = userPassword + +## Whether to enable SSL. +## +## Value: true | false +auth.ldap.ssl = false + +#auth.ldap.ssl.certfile = etc/certs/cert.pem + +#auth.ldap.ssl.keyfile = etc/certs/key.pem + +#auth.ldap.ssl.cacertfile = etc/certs/cacert.pem + +#auth.ldap.ssl.verify = verify_peer + +#auth.ldap.ssl.fail_if_no_peer_cert = true + +#auth.ldap.ssl.server_name_indication = your_server_name diff --git a/apps/emqx_auth_ldap/include/emqx_auth_ldap.hrl b/apps/emqx_auth_ldap/include/emqx_auth_ldap.hrl new file mode 100644 index 000000000..8950c0ec8 --- /dev/null +++ b/apps/emqx_auth_ldap/include/emqx_auth_ldap.hrl @@ -0,0 +1,23 @@ + +-define(APP, emqx_auth_ldap). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_ldap/priv/emqx_auth_ldap.schema b/apps/emqx_auth_ldap/priv/emqx_auth_ldap.schema new file mode 100644 index 000000000..554752a0b --- /dev/null +++ b/apps/emqx_auth_ldap/priv/emqx_auth_ldap.schema @@ -0,0 +1,176 @@ +%%-*- mode: erlang -*- +%% emqx_auth_ldap config mapping + +{mapping, "auth.ldap.servers", "emqx_auth_ldap.ldap", [ + {default, "127.0.0.1"}, + {datatype, string} +]}. + +{mapping, "auth.ldap.port", "emqx_auth_ldap.ldap", [ + {default, 389}, + {datatype, integer} +]}. + +{mapping, "auth.ldap.pool", "emqx_auth_ldap.ldap", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.ldap.bind_dn", "emqx_auth_ldap.ldap", [ + {datatype, string}, + {default, "cn=root,dc=emqx,dc=io"} +]}. + +{mapping, "auth.ldap.bind_password", "emqx_auth_ldap.ldap", [ + {datatype, string}, + {default, "public"} +]}. + +{mapping, "auth.ldap.timeout", "emqx_auth_ldap.ldap", [ + {default, "30s"}, + {datatype, {duration, ms}} +]}. + +{mapping, "auth.ldap.ssl", "emqx_auth_ldap.ldap", [ + {default, false}, + {datatype, {enum, [true, false]}} +]}. + +{mapping, "auth.ldap.ssl.certfile", "emqx_auth_ldap.ldap", [ + {datatype, string} +]}. + +{mapping, "auth.ldap.ssl.keyfile", "emqx_auth_ldap.ldap", [ + {datatype, string} +]}. + +{mapping, "auth.ldap.ssl.cacertfile", "emqx_auth_ldap.ldap", [ + {datatype, string} +]}. + +{mapping, "auth.ldap.ssl.verify", "emqx_auth_ldap.ldap", [ + {default, verify_none}, + {datatype, {enum, [verify_none, verify_peer]}} +]}. + +{mapping, "auth.ldap.ssl.fail_if_no_peer_cert", "emqx_auth_ldap.ldap", [ + {datatype, {enum, [true, false]}} +]}. + +{mapping, "auth.ldap.ssl.server_name_indication", "emqx_auth_ldap.ldap", [ + {datatype, string} +]}. + +{translation, "emqx_auth_ldap.ldap", fun(Conf) -> + A2N = fun(A) -> case inet:parse_address(A) of {ok, N} -> N; _ -> A end end, + Servers = [A2N(A) || A <- string:tokens(cuttlefish:conf_get("auth.ldap.servers", Conf), ",")], + Port = cuttlefish:conf_get("auth.ldap.port", Conf), + Pool = cuttlefish:conf_get("auth.ldap.pool", Conf), + BindDN = cuttlefish:conf_get("auth.ldap.bind_dn", Conf), + BindPassword = cuttlefish:conf_get("auth.ldap.bind_password", Conf), + Timeout = cuttlefish:conf_get("auth.ldap.timeout", Conf), + Filter = fun(Ls) -> [E || E = {_, V} <- Ls, V /= undefined]end, + SslOpts = fun() -> + [{certfile, cuttlefish:conf_get("auth.ldap.ssl.certfile", Conf)}, + {keyfile, cuttlefish:conf_get("auth.ldap.ssl.keyfile", Conf)}, + {cacertfile, cuttlefish:conf_get("auth.ldap.ssl.cacertfile", Conf, undefined)}, + {verify, cuttlefish:conf_get("auth.ldap.ssl.verify", Conf, undefined)}, + {server_name_indication, cuttlefish:conf_get("auth.ldap.ssl.server_name_indication", Conf, disable)}, + {fail_if_no_peer_cert, cuttlefish:conf_get("auth.ldap.ssl.fail_if_no_peer_cert", Conf, undefined)}] + end, + Opts = [{servers, Servers}, + {port, Port}, + {timeout, Timeout}, + {bind_dn, BindDN}, + {bind_password, BindPassword}, + {pool, Pool}, + {auto_reconnect, 2}], + case cuttlefish:conf_get("auth.ldap.ssl", Conf) of + true -> [{ssl, true}, {sslopts, Filter(SslOpts())}|Opts]; + false -> [{ssl, false}|Opts] + end +end}. + +{mapping, "auth.ldap.device_dn", "emqx_auth_ldap.device_dn", [ + {default, "ou=device,dc=emqx,dc=io"}, + {datatype, string} +]}. + +{mapping, "auth.ldap.match_objectclass", "emqx_auth_ldap.match_objectclass", [ + {default, "mqttUser"}, + {datatype, string} +]}. + +{mapping, "auth.ldap.custom_base_dn", "emqx_auth_ldap.custom_base_dn", [ + {default, "${username_attr}=${user},${device_dn}"}, + {datatype, string} +]}. + +%% auth.ldap.filters.1.key = "objectClass" +%% auth.ldap.filters.1.value = "mqttUser" +%% auth.ldap.filters.1.op = "and" +%% auth.ldap.filters.2.key = "uiAttr" +%% auth.ldap.filters.2.value "someAttr" +%% auth.ldap.filters.2.op = "or" +%% auth.ldap.filters.3.key = "someKey" +%% auth.ldap.filters.3.value = "someValue" +%% The configuratation structure sent to the application: +%% [{"objectClass","mqttUser"},"and",{"uiAttr","someAttr"},"or",{"someKey","someAttr"}] +%% The resulting LDAP filter would look like this: +%% ==> "|(&(objectClass=Class)(uiAttr=someAttr)(someKey=someValue))" +{translation, "emqx_auth_ldap.filters", +fun(Conf) -> + Settings = cuttlefish_variable:filter_by_prefix("auth.ldap.filters", Conf), + Keys = [{Num, {key, V}} || {["auth","ldap","filters", Num, "key"], V} <- Settings], + Values = [{Num, {value, V}} || {["auth","ldap","filters", Num, "value"], V} <- Settings], + Ops = [{Num, {op, V}} || {["auth","ldap","filters", Num, "op"], V} <- Settings], + RawFilters = Keys ++ Values ++ Ops, + Filters = + lists:foldl( + fun({Num,{T,V}}, Acc)-> + maps:update_with(Num, + fun(F)-> + maps:put(T,V,F) + end, + #{T=>V}, Acc) + end, #{}, RawFilters), + Order=lists:usort(maps:keys(Filters)), + lists:reverse( + lists:foldl( + fun(F,Acc)-> + case F of + #{key:=K, op:=Op, value:=V} -> [Op,{K,V}|Acc]; + #{key:=K, value:=V} -> [{K,V}|Acc] + end + end, + [], + lists:map(fun(K) -> maps:get(K, Filters) end, Order))) +end}. + +{mapping, "auth.ldap.filters.$num.key", "emqx_auth_ldap.filters", [ + {datatype, string} +]}. + +{mapping, "auth.ldap.filters.$num.value", "emqx_auth_ldap.filters", [ + {datatype, string} +]}. + +{mapping, "auth.ldap.filters.$num.op", "emqx_auth_ldap.filters", [ + {datatype, {enum, [ "or", "and" ] } } +]}. + + +{mapping, "auth.ldap.bind_as_user", "emqx_auth_ldap.bind_as_user", [ + {default, false}, + {datatype, {enum, [true, false]}} +]}. + +{mapping, "auth.ldap.username.attributetype", "emqx_auth_ldap.username_attr", [ + {default, "uid"}, + {datatype, string} +]}. + +{mapping, "auth.ldap.password.attributetype", "emqx_auth_ldap.password_attr", [ + {default, "userPassword"}, + {datatype, string} +]}. diff --git a/apps/emqx_auth_ldap/rebar.config b/apps/emqx_auth_ldap/rebar.config new file mode 100644 index 000000000..c155efaed --- /dev/null +++ b/apps/emqx_auth_ldap/rebar.config @@ -0,0 +1,27 @@ +{deps, + [{eldap2, {git, "https://github.com/emqx/eldap2", {tag, "v0.2.2"}}}, + {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqx_passwd, {git, "https://github.com/emqx/emqx-passwd", {tag, "v1.1.1"}}} + ]}. + +{profiles, + [{test, + [{deps, [{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}]} + ]} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + diff --git a/apps/emqx_auth_ldap/rebar.config.script b/apps/emqx_auth_ldap/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_ldap/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl b/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl new file mode 100644 index 000000000..cfd51164a --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_acl_ldap.erl @@ -0,0 +1,98 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_ldap). + +-include("emqx_auth_ldap.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eldap/include/eldap.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). + +-import(proplists, [get_value/2]). + +-import(emqx_auth_ldap_cli, [search/4]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(ClientInfo, PubSub, Topic, NoMatchAction, State) -> + case do_check_acl(ClientInfo, PubSub, Topic, NoMatchAction, State) of + ok -> emqx_metrics:inc(?ACL_METRICS(ignore)), ok; + {stop, allow} -> emqx_metrics:inc(?ACL_METRICS(allow)), {stop, allow}; + {stop, deny} -> emqx_metrics:inc(?ACL_METRICS(deny)), {stop, deny} + end. + +do_check_acl(#{username := <<$$, _/binary>>}, _PubSub, _Topic, _NoMatchAction, _State) -> + ok; + +do_check_acl(#{username := Username}, PubSub, Topic, _NoMatchAction, + #{device_dn := DeviceDn, + match_objectclass := ObjectClass, + username_attr := UidAttr, + custom_base_dn := CustomBaseDN, + pool := Pool} = Config) -> + + Filters = maps:get(filters, Config, []), + + ReplaceRules = [{"${username_attr}", UidAttr}, + {"${user}", binary_to_list(Username)}, + {"${device_dn}", DeviceDn}], + + Filter = emqx_auth_ldap:prepare_filter(Filters, UidAttr, ObjectClass, ReplaceRules), + + Attribute = case PubSub of + publish -> "mqttPublishTopic"; + subscribe -> "mqttSubscriptionTopic" + end, + Attribute1 = "mqttPubSubTopic", + ?LOG(debug, "[LDAP] search dn:~p filter:~p, attribute:~p", + [DeviceDn, Filter, Attribute]), + + BaseDN = emqx_auth_ldap:replace_vars(CustomBaseDN, ReplaceRules), + + case search(Pool, BaseDN, Filter, [Attribute, Attribute1]) of + {error, noSuchObject} -> + ok; + {ok, #eldap_search_result{entries = []}} -> + ok; + {ok, #eldap_search_result{entries = [Entry]}} -> + Topics = get_value(Attribute, Entry#eldap_entry.attributes) + ++ get_value(Attribute1, Entry#eldap_entry.attributes), + match(Topic, Topics); + Error -> + ?LOG(error, "[LDAP] search error:~p", [Error]), + {stop, deny} + end. + +match(_Topic, []) -> + ok; + +match(Topic, [Filter | Topics]) -> + case emqx_topic:match(Topic, list_to_binary(Filter)) of + true -> {stop, allow}; + false -> match(Topic, Topics) + end. + +description() -> + "ACL with LDAP". + diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src new file mode 100644 index 000000000..51286dd9d --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_ldap, + [{description, "EMQ X Authentication/ACL with LDAP"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_ldap_sup]}, + {applications, [kernel,stdlib,eldap2,ecpool,emqx_passwd]}, + {mod, {emqx_auth_ldap_app,[]}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-ldap"} + ]} + ]}. diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src.script b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl b/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl new file mode 100644 index 000000000..01cbb0ecb --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap.erl @@ -0,0 +1,210 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap). + +-include("emqx_auth_ldap.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eldap/include/eldap.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-import(proplists, [get_value/2]). + +-import(emqx_auth_ldap_cli, [search/3]). + +-export([ register_metrics/0 + , check/3 + , description/0 + , prepare_filter/4 + , replace_vars/2 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo = #{username := Username, password := Password}, AuthResult, + State = #{password_attr := PasswdAttr, bind_as_user := BindAsUserRequired, pool := Pool}) -> + CheckResult = + case lookup_user(Username, State) of + undefined -> {error, not_found}; + {error, Error} -> {error, Error}; + Entry -> + PasswordString = binary_to_list(Password), + ObjectName = Entry#eldap_entry.object_name, + Attributes = Entry#eldap_entry.attributes, + case BindAsUserRequired of + true -> + emqx_auth_ldap_cli:post_bind(Pool, ObjectName, PasswordString); + false -> + case get_value(PasswdAttr, Attributes) of + undefined -> + logger:error("LDAP Search State: ~p, uid: ~p, result:~p", + [State, Username, Attributes]), + {error, not_found}; + [Passhash1] -> + format_password(Passhash1, Password, ClientInfo) + end + end + end, + case CheckResult of + ok -> + ok = emqx_metrics:inc(?AUTH_METRICS(success)), + {stop, AuthResult#{auth_result => success, anonymous => false}}; + {error, not_found} -> + emqx_metrics:inc(?AUTH_METRICS(ignore)); + {error, ResultCode} -> + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + ?LOG(error, "[LDAP] Auth from ldap failed: ~p", [ResultCode]), + {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} + end. + +lookup_user(Username, #{username_attr := UidAttr, + match_objectclass := ObjectClass, + device_dn := DeviceDn, + custom_base_dn := CustomBaseDN, pool := Pool} = Config) -> + + Filters = maps:get(filters, Config, []), + + ReplaceRules = [{"${username_attr}", UidAttr}, + {"${user}", binary_to_list(Username)}, + {"${device_dn}", DeviceDn}], + + Filter = prepare_filter(Filters, UidAttr, ObjectClass, ReplaceRules), + + %% auth.ldap.custom_base_dn = "${username_attr}=${user},${device_dn}" + BaseDN = replace_vars(CustomBaseDN, ReplaceRules), + + case search(Pool, BaseDN, Filter) of + %% This clause seems to be impossible to match. `eldap2:search/2` does + %% not validates the result, so if it returns "successfully" from the + %% LDAP server, it always returns `{ok, #eldap_search_result{}}`. + {error, noSuchObject} -> + undefined; + %% In case no user was found by the search, but the search was completed + %% without error we get an empty `entries` list. + {ok, #eldap_search_result{entries = []}} -> + undefined; + {ok, #eldap_search_result{entries = [Entry]}} -> + Attributes = Entry#eldap_entry.attributes, + case get_value("isEnabled", Attributes) of + undefined -> + Entry; + [Val] -> + case list_to_atom(string:to_lower(Val)) of + true -> Entry; + false -> {error, username_disabled} + end + end; + {error, Error} -> + ?LOG(error, "[LDAP] Search dn: ~p, filter: ~p, fail:~p", [DeviceDn, Filter, Error]), + {error, username_or_password_error} + end. + +check_pass(Password, Password, _ClientInfo) -> ok; +check_pass(_, _, _) -> {error, bad_username_or_password}. + +format_password(Passhash, Password, ClientInfo) -> + case do_format_password(Passhash, Password) of + {error, Error2} -> + {error, Error2}; + {Passhash1, Password1} -> + check_pass(Passhash1, Password1, ClientInfo) + end. + +do_format_password(Passhash, Password) -> + Base64PasshashHandler = + handle_passhash(fun(HashType, Passhash1, Password1) -> + Passhash2 = binary_to_list(base64:decode(Passhash1)), + resolve_passhash(HashType, Passhash2, Password1) + end, + fun(_Passhash, _Password) -> + {error, password_error} + end), + PasshashHandler = handle_passhash(fun resolve_passhash/3, Base64PasshashHandler), + PasshashHandler(Passhash, Password). + +resolve_passhash(HashType, Passhash, Password) -> + [_, Passhash1] = string:tokens(Passhash, "}"), + do_resolve(HashType, Passhash1, Password). + +handle_passhash(HandleMatch, HandleNoMatch) -> + fun(Passhash, Password) -> + case re:run(Passhash, "(?<={)[^{}]+(?=})", [{capture, all, list}, global]) of + {match, [[HashType]]} -> + HandleMatch(list_to_atom(string:to_lower(HashType)), Passhash, Password); + _ -> + HandleNoMatch(Passhash, Password) + end + end. + +do_resolve(ssha, Passhash, Password) -> + D64 = base64:decode(Passhash), + {HashedData, Salt} = lists:split(20, binary_to_list(D64)), + NewHash = crypto:hash(sha, <>), + {list_to_binary(HashedData), NewHash}; +do_resolve(HashType, Passhash, Password) -> + Password1 = base64:encode(crypto:hash(HashType, Password)), + {list_to_binary(Passhash), Password1}. + +description() -> "LDAP Authentication Plugin". + +prepare_filter(Filters, _UidAttr, ObjectClass, ReplaceRules) -> + SubFilters = + lists:map(fun({K, V}) -> + {replace_vars(K, ReplaceRules), replace_vars(V, ReplaceRules)}; + (Op) -> + Op + end, Filters), + case SubFilters of + [] -> eldap2:equalityMatch("objectClass", ObjectClass); + _List -> compile_filters(SubFilters, []) + end. + + +compile_filters([{Key, Value}], []) -> + compile_equal(Key, Value); +compile_filters([{K1, V1}, "and", {K2, V2} | Rest], []) -> + compile_filters( + Rest, + eldap2:'and'([compile_equal(K1, V1), + compile_equal(K2, V2)])); +compile_filters([{K1, V1}, "or", {K2, V2} | Rest], []) -> + compile_filters( + Rest, + eldap2:'or'([compile_equal(K1, V1), + compile_equal(K2, V2)])); +compile_filters(["and", {K, V} | Rest], PartialFilter) -> + compile_filters( + Rest, + eldap2:'and'([PartialFilter, + compile_equal(K, V)])); +compile_filters(["or", {K, V} | Rest], PartialFilter) -> + compile_filters( + Rest, + eldap2:'or'([PartialFilter, + compile_equal(K, V)])); +compile_filters([], Filter) -> + Filter. + +compile_equal(Key, Value) -> + eldap2:equalityMatch(Key, Value). + +replace_vars(CustomBaseDN, ReplaceRules) -> + lists:foldl(fun({Pattern, Substitute}, DN) -> + lists:flatten(string:replace(DN, Pattern, Substitute)) + end, CustomBaseDN, ReplaceRules). diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap_app.erl b/apps/emqx_auth_ldap/src/emqx_auth_ldap_app.erl new file mode 100644 index 000000000..5922950f0 --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap_app.erl @@ -0,0 +1,78 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_ldap.hrl"). + +%% Application callbacks +-export([ start/2 + , prep_stop/1 + , stop/1 + ]). + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_ldap_sup:start_link(), + if_enabled([device_dn, match_objectclass, + username_attr, password_attr, + filters, custom_base_dn, bind_as_user], + fun load_auth_hook/1), + if_enabled([device_dn, match_objectclass, + username_attr, password_attr, + filters, custom_base_dn, bind_as_user], + fun load_acl_hook/1), + {ok, Sup}. + +prep_stop(State) -> + emqx:unhook('client.authenticate', fun emqx_auth_ldap:check/3), + emqx:unhook('client.check_acl', fun emqx_acl_ldap:check_acl/5), + State. + +stop(_State) -> + ok. + +load_auth_hook(DeviceDn) -> + ok = emqx_auth_ldap:register_metrics(), + Params = maps:from_list(DeviceDn), + emqx:hook('client.authenticate', fun emqx_auth_ldap:check/3, [Params#{pool => ?APP}]). + +load_acl_hook(DeviceDn) -> + ok = emqx_acl_ldap:register_metrics(), + Params = maps:from_list(DeviceDn), + emqx:hook('client.check_acl', fun emqx_acl_ldap:check_acl/5 , [Params#{pool => ?APP}]). + +if_enabled(Cfgs, Fun) -> + case get_env(Cfgs) of + {ok, InitArgs} -> Fun(InitArgs); + [] -> ok + end. + +get_env(Cfgs) -> + get_env(Cfgs, []). + +get_env([Cfg | LeftCfgs], ENVS) -> + case application:get_env(?APP, Cfg) of + {ok, ENV} -> + get_env(LeftCfgs, [{Cfg, ENV} | ENVS]); + undefined -> + get_env(LeftCfgs, ENVS) + end; +get_env([], ENVS) -> + {ok, ENVS}. diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap_cli.erl b/apps/emqx_auth_ldap/src/emqx_auth_ldap_cli.erl new file mode 100644 index 000000000..2f6e8099c --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap_cli.erl @@ -0,0 +1,150 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap_cli). + +-behaviour(ecpool_worker). + +-include("emqx_auth_ldap.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +%% ecpool callback +-export([connect/1]). + +-export([ search/3 + , search/4 + , post_bind/3 + , init_args/1 + ]). + +-import(proplists, + [ get_value/2 + , get_value/3 + ]). + +%%-------------------------------------------------------------------- +%% LDAP Connect/Search +%%-------------------------------------------------------------------- + +connect(Opts) -> + Servers = get_value(servers, Opts, ["localhost"]), + Port = get_value(port, Opts, 389), + Timeout = get_value(timeout, Opts, 30), + BindDn = get_value(bind_dn, Opts), + BindPassword = get_value(bind_password, Opts), + LdapOpts = case get_value(ssl, Opts, false)of + true -> + SslOpts = get_value(sslopts, Opts), + [{port, Port}, {timeout, Timeout}, {sslopts, SslOpts}]; + false -> + [{port, Port}, {timeout, Timeout}] + end, + ?LOG(debug, "[LDAP] Connecting to OpenLDAP server: ~p, Opts:~p ...", [Servers, LdapOpts]), + + case eldap2:open(Servers, LdapOpts) of + {ok, LDAP} -> + try eldap2:simple_bind(LDAP, BindDn, BindPassword) of + ok -> {ok, LDAP}; + {error, Error} -> + ?LOG(error, "[LDAP] Can't authenticated to OpenLDAP server: ~p", [Error]), + {error, Error} + catch + error:Reason -> + ?LOG(error, "[LDAP] Can't authenticated to OpenLDAP server: ~p", [Reason]), + {error, Reason} + end; + {error, Reason} -> + ?LOG(error, "[LDAP] Can't connect to OpenLDAP server: ~p", [Reason]), + {error, Reason} + end. + +search(Pool, Base, Filter) -> + ecpool:with_client(Pool, + fun(C) -> + case application:get_env(?APP, bind_as_user) of + {ok, true} -> + {ok, Opts} = application:get_env(?APP, ldap), + BindDn = get_value(bind_dn, Opts), + BindPassword = get_value(bind_password, Opts), + try eldap2:simple_bind(C, BindDn, BindPassword) of + ok -> + eldap2:search(C, [{base, Base}, + {filter, Filter}, + {deref, eldap2:derefFindingBaseObj()}]); + {error, Error} -> + {error, Error} + catch + error:Reason -> {error, Reason} + end; + {ok, false} -> + eldap2:search(C, [{base, Base}, + {filter, Filter}, + {deref, eldap2:derefFindingBaseObj()}]) + end + end). + +search(Pool, Base, Filter, Attributes) -> + ecpool:with_client(Pool, + fun(C) -> + case application:get_env(?APP, bind_as_user) of + {ok, true} -> + {ok, Opts} = application:get_env(?APP, ldap), + BindDn = get_value(bind_dn, Opts), + BindPassword = get_value(bind_password, Opts), + try eldap2:simple_bind(C, BindDn, BindPassword) of + ok -> + eldap2:search(C, [{base, Base}, + {filter, Filter}, + {attributes, Attributes}, + {deref, eldap2:derefFindingBaseObj()}]); + {error, Error} -> + {error, Error} + catch + error:Reason -> {error, Reason} + end; + {ok, false} -> + eldap2:search(C, [{base, Base}, + {filter, Filter}, + {attributes, Attributes}, + {deref, eldap2:derefFindingBaseObj()}]) + end + end). + +post_bind(Pool, BindDn, BindPassword) -> + ecpool:with_client(Pool, + fun(C) -> + try eldap2:simple_bind(C, BindDn, BindPassword) of + ok -> ok; + {error, Error} -> + {error, Error} + catch + error:Reason -> {error, Reason} + end + end). + + +init_args(ENVS) -> + DeviceDn = get_value(device_dn, ENVS), + ObjectClass = get_value(match_objectclass, ENVS), + UidAttr = get_value(username_attr, ENVS), + PasswdAttr = get_value(password_attr, ENVS), + {ok, #{device_dn => DeviceDn, + match_objectclass => ObjectClass, + username_attr => UidAttr, + password_attr => PasswdAttr}}. + diff --git a/apps/emqx_auth_ldap/src/emqx_auth_ldap_sup.erl b/apps/emqx_auth_ldap/src/emqx_auth_ldap_sup.erl new file mode 100644 index 000000000..ca4440f1a --- /dev/null +++ b/apps/emqx_auth_ldap/src/emqx_auth_ldap_sup.erl @@ -0,0 +1,35 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap_sup). + +-behaviour(supervisor). + +-include("emqx_auth_ldap.hrl"). + +-export([start_link/0]). + +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + %% LDAP Connection Pool. + {ok, Server} = application:get_env(?APP, ldap), + PoolSpec = ecpool:pool_spec(?APP, ?APP, emqx_auth_ldap_cli, Server), + {ok, {{one_for_one, 10, 100}, [PoolSpec]}}. + diff --git a/apps/emqx_auth_ldap/test/certs/cacert.pem b/apps/emqx_auth_ldap/test/certs/cacert.pem new file mode 100644 index 000000000..604fd2362 --- /dev/null +++ b/apps/emqx_auth_ldap/test/certs/cacert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDUTCCAjmgAwIBAgIJAPPYCjTmxdt/MA0GCSqGSIb3DQEBCwUAMD8xCzAJBgNV +BAYTAkNOMREwDwYDVQQIDAhoYW5nemhvdTEMMAoGA1UECgwDRU1RMQ8wDQYDVQQD +DAZSb290Q0EwHhcNMjAwNTA4MDgwNjUyWhcNMzAwNTA2MDgwNjUyWjA/MQswCQYD +VQQGEwJDTjERMA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UE +AwwGUm9vdENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzcgVLex1 +EZ9ON64EX8v+wcSjzOZpiEOsAOuSXOEN3wb8FKUxCdsGrsJYB7a5VM/Jot25Mod2 +juS3OBMg6r85k2TWjdxUoUs+HiUB/pP/ARaaW6VntpAEokpij/przWMPgJnBF3Ur +MjtbLayH9hGmpQrI5c2vmHQ2reRZnSFbY+2b8SXZ+3lZZgz9+BaQYWdQWfaUWEHZ +uDaNiViVO0OT8DRjCuiDp3yYDj3iLWbTA/gDL6Tf5XuHuEwcOQUrd+h0hyIphO8D +tsrsHZ14j4AWYLk1CPA6pq1HIUvEl2rANx2lVUNv+nt64K/Mr3RnVQd9s8bK+TXQ +KGHd2Lv/PALYuwIDAQABo1AwTjAdBgNVHQ4EFgQUGBmW+iDzxctWAWxmhgdlE8Pj +EbQwHwYDVR0jBBgwFoAUGBmW+iDzxctWAWxmhgdlE8PjEbQwDAYDVR0TBAUwAwEB +/zANBgkqhkiG9w0BAQsFAAOCAQEAGbhRUjpIred4cFAFJ7bbYD9hKu/yzWPWkMRa +ErlCKHmuYsYk+5d16JQhJaFy6MGXfLgo3KV2itl0d+OWNH0U9ULXcglTxy6+njo5 +CFqdUBPwN1jxhzo9yteDMKF4+AHIxbvCAJa17qcwUKR5MKNvv09C6pvQDJLzid7y +E2dkgSuggik3oa0427KvctFf8uhOV94RvEDyqvT5+pgNYZ2Yfga9pD/jjpoHEUlo +88IGU8/wJCx3Ds2yc8+oBg/ynxG8f/HmCC1ET6EHHoe2jlo8FpU/SgGtghS1YL30 +IWxNsPrUP+XsZpBJy/mvOhE5QXo6Y35zDqqj8tI7AGmAWu22jg== +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_ldap/test/certs/cert.pem b/apps/emqx_auth_ldap/test/certs/cert.pem new file mode 100644 index 000000000..092390b1d --- /dev/null +++ b/apps/emqx_auth_ldap/test/certs/cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDEzCCAfugAwIBAgIBAjANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER +MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB +MB4XDTIwMDUwODA4MDcwNVoXDTMwMDUwNjA4MDcwNVowPzELMAkGA1UEBhMCQ04x +ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBlNlcnZl +cjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNeWT3pE+QFfiRJzKmn +AMUrWo3K2j/Tm3+Xnl6WLz67/0rcYrJbbKvS3uyRP/stXyXEKw9CepyQ1ViBVFkW +Aoy8qQEOWFDsZc/5UzhXUnb6LXr3qTkFEjNmhj+7uzv/lbBxlUG1NlYzSeOB6/RT +8zH/lhOeKhLnWYPXdXKsa1FL6ij4X8DeDO1kY7fvAGmBn/THh1uTpDizM4YmeI+7 +4dmayA5xXvARte5h4Vu5SIze7iC057N+vymToMk2Jgk+ZZFpyXrnq+yo6RaD3ANc +lrc4FbeUQZ5a5s5Sxgs9a0Y3WMG+7c5VnVXcbjBRz/aq2NtOnQQjikKKQA8GF080 +BQkCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL +BQADggEBAJefnMZpaRDHQSNUIEL3iwGXE9c6PmIsQVE2ustr+CakBp3TZ4l0enLt +iGMfEVFju69cO4oyokWv+hl5eCMkHBf14Kv51vj448jowYnF1zmzn7SEzm5Uzlsa +sqjtAprnLyof69WtLU1j5rYWBuFX86yOTwRAFNjm9fvhAcrEONBsQtqipBWkMROp +iUYMkRqbKcQMdwxov+lHBYKq9zbWRoqLROAn54SRqgQk6c15JdEfgOOjShbsOkIH +UhqcwRkQic7n1zwHVGVDgNIZVgmJ2IdIWBlPEC7oLrRrBD/X1iEEXtKab6p5o22n +KB5mN+iQaE+Oe2cpGKZJiJRdM+IqDDQ= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_ldap/test/certs/client-cert.pem b/apps/emqx_auth_ldap/test/certs/client-cert.pem new file mode 100644 index 000000000..09d855221 --- /dev/null +++ b/apps/emqx_auth_ldap/test/certs/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDEzCCAfugAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJDTjER +MA8GA1UECAwIaGFuZ3pob3UxDDAKBgNVBAoMA0VNUTEPMA0GA1UEAwwGUm9vdENB +MB4XDTIwMDUwODA4MDY1N1oXDTMwMDUwNjA4MDY1N1owPzELMAkGA1UEBhMCQ04x +ETAPBgNVBAgMCGhhbmd6aG91MQwwCgYDVQQKDANFTVExDzANBgNVBAMMBkNsaWVu +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMy4hoksKcZBDbY680u6 +TS25U51nuB1FBcGMlF9B/t057wPOlxF/OcmbxY5MwepS41JDGPgulE1V7fpsXkiW +1LUimYV/tsqBfymIe0mlY7oORahKji7zKQ2UBIVFhdlvQxunlIDnw6F9popUgyHt +dMhtlgZK8oqRwHxO5dbfoukYd6J/r+etS5q26sgVkf3C6dt0Td7B25H9qW+f7oLV +PbcHYCa+i73u9670nrpXsC+Qc7Mygwa2Kq/jwU+ftyLQnOeW07DuzOwsziC/fQZa +nbxR+8U9FNftgRcC3uP/JMKYUqsiRAuaDokARZxVTV5hUElfpO6z6/NItSDvvh3i +eikCAwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQEL +BQADggEBABchYxKo0YMma7g1qDswJXsR5s56Czx/I+B41YcpMBMTrRqpUC0nHtLk +M7/tZp592u/tT8gzEnQjZLKBAhFeZaR3aaKyknLqwiPqJIgg0pgsBGITrAK3Pv4z +5/YvAJJKgTe5UdeTz6U4lvNEux/4juZ4pmqH4qSFJTOzQS7LmgSmNIdd072rwXBd +UzcSHzsJgEMb88u/LDLjj1pQ7AtZ4Tta8JZTvcgBFmjB0QUi6fgkHY6oGat/W4kR +jSRUBlMUbM/drr2PVzRc2dwbFIl3X+ZE6n5Sl3ZwRAC/s92JU6CPMRW02muVu6xl +goraNgPISnrbpR6KjxLZkVembXzjNNc= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_ldap/test/certs/client-key.pem b/apps/emqx_auth_ldap/test/certs/client-key.pem new file mode 100644 index 000000000..2b3f30cf6 --- /dev/null +++ b/apps/emqx_auth_ldap/test/certs/client-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAzLiGiSwpxkENtjrzS7pNLblTnWe4HUUFwYyUX0H+3TnvA86X +EX85yZvFjkzB6lLjUkMY+C6UTVXt+mxeSJbUtSKZhX+2yoF/KYh7SaVjug5FqEqO +LvMpDZQEhUWF2W9DG6eUgOfDoX2milSDIe10yG2WBkryipHAfE7l1t+i6Rh3on+v +561LmrbqyBWR/cLp23RN3sHbkf2pb5/ugtU9twdgJr6Lve73rvSeulewL5BzszKD +BrYqr+PBT5+3ItCc55bTsO7M7CzOIL99BlqdvFH7xT0U1+2BFwLe4/8kwphSqyJE +C5oOiQBFnFVNXmFQSV+k7rPr80i1IO++HeJ6KQIDAQABAoIBAGWgvPjfuaU3qizq +uti/FY07USz0zkuJdkANH6LiSjlchzDmn8wJ0pApCjuIE0PV/g9aS8z4opp5q/gD +UBLM/a8mC/xf2EhTXOMrY7i9p/I3H5FZ4ZehEqIw9sWKK9YzC6dw26HabB2BGOnW +5nozPSQ6cp2RGzJ7BIkxSZwPzPnVTgy3OAuPOiJytvK+hGLhsNaT+Y9bNDvplVT2 +ZwYTV8GlHZC+4b2wNROILm0O86v96O+Qd8nn3fXjGHbMsAnONBq10bZS16L4fvkH +5G+W/1PeSXmtZFppdRRDxIW+DWcXK0D48WRliuxcV4eOOxI+a9N2ZJZZiNLQZGwg +w3A8+mECgYEA8HuJFrlRvdoBe2U/EwUtG74dcyy30L4yEBnN5QscXmEEikhaQCfX +Wm6EieMcIB/5I5TQmSw0cmBMeZjSXYoFdoI16/X6yMMuATdxpvhOZGdUGXxhAH+x +xoTUavWZnEqW3fkUU71kT5E2f2i+0zoatFESXHeslJyz85aAYpP92H0CgYEA2e5A +Yozt5eaA1Gyhd8SeptkEU4xPirNUnVQHStpMWUb1kzTNXrPmNWccQ7JpfpG6DcYl +zUF6p6mlzY+zkMiyPQjwEJlhiHM2NlL1QS7td0R8ewgsFoyn8WsBI4RejWrEG9td +EDniuIw+pBFkcWthnTLHwECHdzgquToyTMjrBB0CgYEA28tdGbrZXhcyAZEhHAZA +Gzog+pKlkpEzeonLKIuGKzCrEKRecIK5jrqyQsCjhS0T7ZRnL4g6i0s+umiV5M5w +fcc292pEA1h45L3DD6OlKplSQVTv55/OYS4oY3YEJtf5mfm8vWi9lQeY8sxOlQpn +O+VZTdBHmTC8PGeTAgZXHZUCgYA6Tyv88lYowB7SN2qQgBQu8jvdGtqhcs/99GCr +H3N0I69LPsKAR0QeH8OJPXBKhDUywESXAaEOwS5yrLNP1tMRz5Vj65YUCzeDG3kx +gpvY4IMp7ArX0bSRvJ6mYSFnVxy3k174G3TVCfksrtagHioVBGQ7xUg5ltafjrms +n8l55QKBgQDVzU8tQvBVqY8/1lnw11Vj4fkE/drZHJ5UkdC1eenOfSWhlSLfUJ8j +ds7vEWpRPPoVuPZYeR1y78cyxKe1GBx6Wa2lF5c7xjmiu0xbRnrxYeLolce9/ntp +asClqpnHT8/VJYTD7Kqj0fouTTZf0zkig/y+2XERppd8k+pSKjUCPQ== +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_ldap/test/certs/key.pem b/apps/emqx_auth_ldap/test/certs/key.pem new file mode 100644 index 000000000..6c338216e --- /dev/null +++ b/apps/emqx_auth_ldap/test/certs/key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAs15ZPekT5AV+JEnMqacAxStajcraP9Obf5eeXpYvPrv/Stxi +sltsq9Le7JE/+y1fJcQrD0J6nJDVWIFUWRYCjLypAQ5YUOxlz/lTOFdSdvotevep +OQUSM2aGP7u7O/+VsHGVQbU2VjNJ44Hr9FPzMf+WE54qEudZg9d1cqxrUUvqKPhf +wN4M7WRjt+8AaYGf9MeHW5OkOLMzhiZ4j7vh2ZrIDnFe8BG17mHhW7lIjN7uILTn +s36/KZOgyTYmCT5lkWnJeuer7KjpFoPcA1yWtzgVt5RBnlrmzlLGCz1rRjdYwb7t +zlWdVdxuMFHP9qrY206dBCOKQopADwYXTzQFCQIDAQABAoIBAQCuvCbr7Pd3lvI/ +n7VFQG+7pHRe1VKwAxDkx2t8cYos7y/QWcm8Ptwqtw58HzPZGWYrgGMCRpzzkRSF +V9g3wP1S5Scu5C6dBu5YIGc157tqNGXB+SpdZddJQ4Nc6yGHXYERllT04ffBGc3N +WG/oYS/1cSteiSIrsDy/91FvGRCi7FPxH3wIgHssY/tw69s1Cfvaq5lr2NTFzxIG +xCvpJKEdSfVfS9I7LYiymVjst3IOR/w76/ZFY9cRa8ZtmQSWWsm0TUpRC1jdcbkm +ZoJptYWlP+gSwx/fpMYftrkJFGOJhHJHQhwxT5X/ajAISeqjjwkWSEJLwnHQd11C +Zy2+29lBAoGBANlEAIK4VxCqyPXNKfoOOi5dS64NfvyH4A1v2+KaHWc7lqaqPN49 +ezfN2n3X+KWx4cviDD914Yc2JQ1vVJjSaHci7yivocDo2OfZDmjBqzaMp/y+rX1R +/f3MmiTqMa468rjaxI9RRZu7vDgpTR+za1+OBCgMzjvAng8dJuN/5gjlAoGBANNY +uYPKtearBmkqdrSV7eTUe49Nhr0XotLaVBH37TCW0Xv9wjO2xmbm5Ga/DCtPIsBb +yPeYwX9FjoasuadUD7hRvbFu6dBa0HGLmkXRJZTcD7MEX2Lhu4BuC72yDLLFd0r+ +Ep9WP7F5iJyagYqIZtz+4uf7gBvUDdmvXz3sGr1VAoGAdXTD6eeKeiI6PlhKBztF +zOb3EQOO0SsLv3fnodu7ZaHbUgLaoTMPuB17r2jgrYM7FKQCBxTNdfGZmmfDjlLB +0xZ5wL8ibU30ZXL8zTlWPElST9sto4B+FYVVF/vcG9sWeUUb2ncPcJ/Po3UAktDG +jYQTTyuNGtSJHpad/YOZctkCgYBtWRaC7bq3of0rJGFOhdQT9SwItN/lrfj8hyHA +OjpqTV4NfPmhsAtu6j96OZaeQc+FHvgXwt06cE6Rt4RG4uNPRluTFgO7XYFDfitP +vCppnoIw6S5BBvHwPP+uIhUX2bsi/dm8vu8tb+gSvo4PkwtFhEr6I9HglBKmcmog +q6waEQKBgHyecFBeM6Ls11Cd64vborwJPAuxIW7HBAFj/BS99oeG4TjBx4Sz2dFd +rzUibJt4ndnHIvCN8JQkjNG14i9hJln+H3mRss8fbZ9vQdqG+2vOWADYSzzsNI55 +RFY7JjluKcVkp/zCDeUxTU3O6sS+v6/3VE11Cob6OYQx3lN5wrZ3 +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_ldap/test/emqx_auth_ldap_SUITE.erl b/apps/emqx_auth_ldap/test/emqx_auth_ldap_SUITE.erl new file mode 100644 index 000000000..c9c38f610 --- /dev/null +++ b/apps/emqx_auth_ldap/test/emqx_auth_ldap_SUITE.erl @@ -0,0 +1,152 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-define(PID, emqx_auth_ldap). + +-define(APP, emqx_auth_ldap). + +-define(DeviceDN, "ou=test_device,dc=emqx,dc=io"). + +-define(AuthDN, "ou=test_auth,dc=emqx,dc=io"). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> + [{group, nossl}, {group, ssl}]. + +groups() -> + Cases = emqx_ct:all(?MODULE), + [{nossl, Cases}, {ssl, Cases}]. + +init_per_group(GrpName, Cfg) -> + Fun = fun(App) -> set_special_configs(GrpName, App) end, + emqx_ct_helpers:start_apps([emqx_auth_ldap], Fun), + Cfg. + +end_per_group(_GrpName, _Cfg) -> + emqx_ct_helpers:stop_apps([emqx_auth_ldap]). + +%%-------------------------------------------------------------------- +%% Cases +%%-------------------------------------------------------------------- + +t_check_auth(_) -> + MqttUser1 = #{clientid => <<"mqttuser1">>, + username => <<"mqttuser0001">>, + password => <<"mqttuser0001">>, + zone => external}, + MqttUser2 = #{clientid => <<"mqttuser2">>, + username => <<"mqttuser0002">>, + password => <<"mqttuser0002">>, + zone => external}, + MqttUser3 = #{clientid => <<"mqttuser3">>, + username => <<"mqttuser0003">>, + password => <<"mqttuser0003">>, + zone => external}, + MqttUser4 = #{clientid => <<"mqttuser4">>, + username => <<"mqttuser0004">>, + password => <<"mqttuser0004">>, + zone => external}, + MqttUser5 = #{clientid => <<"mqttuser5">>, + username => <<"mqttuser0005">>, + password => <<"mqttuser0005">>, + zone => external}, + NonExistUser1 = #{clientid => <<"mqttuser6">>, + username => <<"mqttuser0006">>, + password => <<"mqttuser0006">>, + zone => external}, + NonExistUser2 = #{clientid => <<"mqttuser7">>, + username => <<"mqttuser0005">>, + password => <<"mqttuser0006">>, + zone => external}, + ct:log("MqttUser: ~p", [emqx_access_control:authenticate(MqttUser1)]), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser1)), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser2)), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser3)), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser4)), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser5)), + ?assertEqual({error, not_authorized}, emqx_access_control:authenticate(NonExistUser1)), + ?assertEqual({error, bad_username_or_password}, emqx_access_control:authenticate(NonExistUser2)). + +t_check_acl(_) -> + MqttUser = #{clientid => <<"mqttuser1">>, username => <<"mqttuser0001">>, zone => external}, + NoMqttUser = #{clientid => <<"mqttuser2">>, username => <<"mqttuser0007">>, zone => external}, + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/1">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/+">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/#">>), + + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/1">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/+">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/#">>), + + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/1">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/+">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/#">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/1">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/+">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/#">>), + + deny = emqx_access_control:check_acl(NoMqttUser, publish, <<"mqttuser0001/req/mqttuser0001/+">>), + deny = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/req/mqttuser0002/+">>), + deny = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/req/+/mqttuser0002">>), + ok. + +%%-------------------------------------------------------------------- +%% Helpers +%%-------------------------------------------------------------------- + +set_special_configs(_, emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, acl_nomatch, deny), + AclFilePath = filename:join(["test", "emqx_SUITE_data", "acl.conf"]), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, AclFilePath)), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)); + +set_special_configs(Ssl, emqx_auth_ldap) -> + case Ssl == ssl of + true -> + LdapOpts = application:get_env(emqx_auth_ldap, ldap, []), + Path = emqx_ct_helpers:deps_path(emqx_auth_ldap, "test/certs/"), + SslOpts = [{verify, verify_peer}, + {fail_if_no_peer_cert, true}, + {server_name_indication, disable}, + {keyfile, Path ++ "/client-key.pem"}, + {certfile, Path ++ "/client-cert.pem"}, + {cacertfile, Path ++ "/cacert.pem"}], + LdapOpts1 = lists:keystore(ssl, 1, LdapOpts, {ssl, true}), + LdapOpts2 = lists:keystore(sslopts, 1, LdapOpts1, {sslopts, SslOpts}), + LdapOpts3 = lists:keystore(port, 1, LdapOpts2, {port, 636}), + application:set_env(emqx_auth_ldap, ldap, LdapOpts3); + _ -> + ok + end, + application:set_env(emqx_auth_ldap, device_dn, "ou=testdevice, dc=emqx, dc=io"). + diff --git a/apps/emqx_auth_ldap/test/emqx_auth_ldap_bind_as_user_SUITE.erl b/apps/emqx_auth_ldap/test/emqx_auth_ldap_bind_as_user_SUITE.erl new file mode 100644 index 000000000..15875c6e3 --- /dev/null +++ b/apps/emqx_auth_ldap/test/emqx_auth_ldap_bind_as_user_SUITE.erl @@ -0,0 +1,114 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_ldap_bind_as_user_SUITE). + +-compile(export_all). +-compile(no_warning_export). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-define(PID, emqx_auth_ldap). + +-define(APP, emqx_auth_ldap). + +-define(DeviceDN, "ou=test_device,dc=emqx,dc=io"). + +-define(AuthDN, "ou=test_auth,dc=emqx,dc=io"). + +all() -> + [check_auth, + check_acl]. + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx, emqx_auth_ldap], fun set_special_configs/1), + % emqx_mod_acl_internal:unload([]), + Config. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_auth_ldap, emqx]). + +check_auth(_) -> + MqttUser1 = #{clientid => <<"mqttuser1">>, + username => <<"user1">>, + password => <<"mqttuser0001">>, + zone => external}, + MqttUser2 = #{clientid => <<"mqttuser2">>, + username => <<"user2">>, + password => <<"mqttuser0002">>, + zone => external}, + NonExistUser1 = #{clientid => <<"mqttuser3">>, + username => <<"user3">>, + password => <<"mqttuser0003">>, + zone => external}, + ct:log("MqttUser: ~p", [emqx_access_control:authenticate(MqttUser1)]), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser1)), + ?assertMatch({ok, #{auth_result := success}}, emqx_access_control:authenticate(MqttUser2)), + ?assertEqual({error, not_authorized}, emqx_access_control:authenticate(NonExistUser1)). + +check_acl(_) -> + % emqx_modules:load_module(emqx_mod_acl_internal, false), + MqttUser = #{clientid => <<"mqttuser1">>, username => <<"user1">>, zone => external}, + NoMqttUser = #{clientid => <<"mqttuser2">>, username => <<"user7">>, zone => external}, + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/1">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/+">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pub/#">>), + + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/1">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/+">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/sub/#">>), + + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/1">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/+">>), + allow = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/pubsub/#">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/1">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/+">>), + allow = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/pubsub/#">>), + + deny = emqx_access_control:check_acl(NoMqttUser, publish, <<"mqttuser0001/req/mqttuser0001/+">>), + deny = emqx_access_control:check_acl(MqttUser, publish, <<"mqttuser0001/req/mqttuser0002/+">>), + deny = emqx_access_control:check_acl(MqttUser, subscribe, <<"mqttuser0001/req/+/mqttuser0002">>), + ok. + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, acl_nomatch, deny), + AclFilePath = filename:join(["test", "emqx_SUITE_data", "acl.conf"]), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, AclFilePath)), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)); + +set_special_configs(emqx_auth_ldap) -> + application:set_env(emqx_auth_ldap, bind_as_user, true), + application:set_env(emqx_auth_ldap, device_dn, "ou=testdevice, dc=emqx, dc=io"), + application:set_env(emqx_auth_ldap, custom_base_dn, "${device_dn}"), + %% auth.ldap.filters.1.key = mqttAccountName + %% auth.ldap.filters.1.value = ${user} + %% auth.ldap.filters.1.op = and + %% auth.ldap.filters.2.key = objectClass + %% auth.ldap.filters.1.value = mqttUser + application:set_env(emqx_auth_ldap, filters, [{"mqttAccountName", "${user}"}, + "and", + {"objectClass", "mqttUser"}]); + +set_special_configs(_App) -> + ok. + diff --git a/apps/emqx_auth_mnesia/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_mnesia/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..31efc5f92 --- /dev/null +++ b/apps/emqx_auth_mnesia/.github/workflows/run_test_cases.yaml @@ -0,0 +1,29 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: run test cases + run: | + make xref + make eunit + make ct + make cover + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs + - uses: actions/upload-artifact@v1 + with: + name: cover + path: _build/test/cover + diff --git a/apps/emqx_auth_mnesia/.gitignore b/apps/emqx_auth_mnesia/.gitignore new file mode 100644 index 000000000..a4d9fea0a --- /dev/null +++ b/apps/emqx_auth_mnesia/.gitignore @@ -0,0 +1,26 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +emqx_auth_mnesia.d +data/ +_build/ +.DS_Store +cover/ +ct.coverdata +eunit.coverdata +logs/ +test/ct.cover.spec +rebar.lock +rebar3.crashdump +erlang.mk +.*.swp +.rebar3/ +etc/emqx_auth_mnesia.conf.rendered diff --git a/apps/emqx_auth_mnesia/LICENSE b/apps/emqx_auth_mnesia/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/apps/emqx_auth_mnesia/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_mnesia/Makefile b/apps/emqx_auth_mnesia/Makefile new file mode 100644 index 000000000..aadf317d3 --- /dev/null +++ b/apps/emqx_auth_mnesia/Makefile @@ -0,0 +1,28 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +clean: distclean + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock diff --git a/apps/emqx_auth_mnesia/README.md b/apps/emqx_auth_mnesia/README.md new file mode 100644 index 000000000..8b4c145a8 --- /dev/null +++ b/apps/emqx_auth_mnesia/README.md @@ -0,0 +1,2 @@ +emqx_auth_mnesia +=============== diff --git a/apps/emqx_auth_mnesia/etc/emqx_auth_mnesia.conf b/apps/emqx_auth_mnesia/etc/emqx_auth_mnesia.conf new file mode 100644 index 000000000..ff74656cb --- /dev/null +++ b/apps/emqx_auth_mnesia/etc/emqx_auth_mnesia.conf @@ -0,0 +1,30 @@ +## Password hash. +## +## Value: plain | md5 | sha | sha256 | sha512 +auth.mnesia.password_hash = sha256 + +##-------------------------------------------------------------------- +## ClientId Authentication +##-------------------------------------------------------------------- + +## Examples +##auth.client.1.clientid = id +##auth.client.1.password = passwd +##auth.client.2.clientid = dev:devid +##auth.client.2.password = passwd2 +##auth.client.3.clientid = app:appid +##auth.client.3.password = passwd3 +##auth.client.4.clientid = client~!@#$%^&*()_+ +##auth.client.4.password = passwd~!@#$%^&*()_+ + +##-------------------------------------------------------------------- +## Username Authentication +##-------------------------------------------------------------------- + +## Examples: +##auth.user.1.username = admin +##auth.user.1.password = public +##auth.user.2.username = feng@emqtt.io +##auth.user.2.password = public +##auth.user.3.username = name~!@#$%^&*()_+ +##auth.user.3.password = pwsswd~!@#$%^&*()_+ diff --git a/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl b/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl new file mode 100644 index 000000000..034bd4f30 --- /dev/null +++ b/apps/emqx_auth_mnesia/include/emqx_auth_mnesia.hrl @@ -0,0 +1,38 @@ +-define(APP, emqx_auth_mnesia). + +-type(login():: {clientid, binary()} + | {username, binary()}). + +-record(emqx_user, { + login :: login(), + password :: binary(), + created_at :: integer() + }). + +-record(emqx_acl, { + filter:: {login() | all, emqx_topic:topic()}, + action :: pub | sub | pubsub, + access :: allow | deny, + created_at :: integer() + }). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_mnesia/priv/emqx_auth_mnesia.schema b/apps/emqx_auth_mnesia/priv/emqx_auth_mnesia.schema new file mode 100644 index 000000000..87d6bf47f --- /dev/null +++ b/apps/emqx_auth_mnesia/priv/emqx_auth_mnesia.schema @@ -0,0 +1,43 @@ +%%-*- mode: erlang -*- +%% emqx_auth_mnesia config mapping + +{mapping, "auth.mnesia.password_hash", "emqx_auth_mnesia.password_hash", [ + {default, sha256}, + {datatype, {enum, [plain, md5, sha, sha256, sha512]}} +]}. + +{mapping, "auth.client.$id.clientid", "emqx_auth_mnesia.clientid_list", [ + {datatype, string} +]}. + +{mapping, "auth.client.$id.password", "emqx_auth_mnesia.clientid_list", [ + {datatype, string} +]}. + +{translation, "emqx_auth_mnesia.clientid_list", fun(Conf) -> + ClientList = cuttlefish_variable:filter_by_prefix("auth.client", Conf), + lists:foldl( + fun({["auth", "client", Id, "clientid"], ClientId}, AccIn) -> + [{ClientId, cuttlefish:conf_get("auth.client." ++ Id ++ ".password", Conf)} | AccIn]; + (_, AccIn) -> + AccIn + end, [], ClientList) +end}. + +{mapping, "auth.user.$id.username", "emqx_auth_mnesia.username_list", [ + {datatype, string} +]}. + +{mapping, "auth.user.$id.password", "emqx_auth_mnesia.username_list", [ + {datatype, string} +]}. + +{translation, "emqx_auth_mnesia.username_list", fun(Conf) -> + Userlist = cuttlefish_variable:filter_by_prefix("auth.user", Conf), + lists:foldl( + fun({["auth", "user", Id, "username"], Username}, AccIn) -> + [{Username, cuttlefish:conf_get("auth.user." ++ Id ++ ".password", Conf)} | AccIn]; + (_, AccIn) -> + AccIn + end, [], Userlist) +end}. diff --git a/apps/emqx_auth_mnesia/rebar.config b/apps/emqx_auth_mnesia/rebar.config new file mode 100644 index 000000000..8ad5b9c60 --- /dev/null +++ b/apps/emqx_auth_mnesia/rebar.config @@ -0,0 +1,29 @@ +{minimum_otp_vsn, "21"}. + +{deps, + [{emqx_passwd, {git, "https://github.com/emqx/emqx-passwd.git", {tag, "v1.1.1"}}}, + {minirest, {git, "https://github.com/emqx/minirest.git", {tag, "0.3.2"}}} + ]}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "v1.2.2"}}} + ]} + ]} + ]}. + +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + diff --git a/apps/emqx_auth_mnesia/rebar.config.script b/apps/emqx_auth_mnesia/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_mnesia/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl new file mode 100644 index 000000000..c657e54a0 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia.erl @@ -0,0 +1,103 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mnesia). + +-include("emqx_auth_mnesia.hrl"). + +-include_lib("stdlib/include/ms_transform.hrl"). + +-define(TABLE, emqx_acl). + +%% ACL Callbacks +-export([ init/0 + , register_metrics/0 + , check_acl/5 + , description/0 + ]). + +init() -> + ok = ekka_mnesia:create_table(emqx_acl, [ + {disc_copies, [node()]}, + {attributes, record_info(fields, emqx_acl)}, + {storage_properties, [{ets, [{read_concurrency, true}]}]}]), + ok = ekka_mnesia:copy_table(emqx_acl, disc_copies). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(ClientInfo = #{ clientid := Clientid }, PubSub, Topic, _NoMatchAction, _Params) -> + Username = maps:get(username, ClientInfo, undefined), + + Acls = case Username of + undefined -> + emqx_acl_mnesia_cli:lookup_acl({clientid, Clientid}) ++ + emqx_acl_mnesia_cli:lookup_acl(all); + _ -> + emqx_acl_mnesia_cli:lookup_acl({clientid, Clientid}) ++ + emqx_acl_mnesia_cli:lookup_acl({username, Username}) ++ + emqx_acl_mnesia_cli:lookup_acl(all) + end, + + case match(ClientInfo, PubSub, Topic, Acls) of + allow -> + emqx_metrics:inc(?ACL_METRICS(allow)), + {stop, allow}; + deny -> + emqx_metrics:inc(?ACL_METRICS(deny)), + {stop, deny}; + _ -> + emqx_metrics:inc(?ACL_METRICS(ignore)), + ok + end. + +description() -> "Acl with Mnesia". + +%%-------------------------------------------------------------------- +%% Internal functions +%%------------------------------------------------------------------- + +match(_ClientInfo, _PubSub, _Topic, []) -> + nomatch; +match(ClientInfo, PubSub, Topic, [ {_, ACLTopic, Action, Access, _} | Acls]) -> + case match_actions(PubSub, Action) andalso match_topic(ClientInfo, Topic, ACLTopic) of + true -> Access; + false -> match(ClientInfo, PubSub, Topic, Acls) + end. + +match_topic(ClientInfo, Topic, ACLTopic) when is_binary(Topic) -> + emqx_topic:match(Topic, feed_var(ClientInfo, ACLTopic)). + +match_actions(_, pubsub) -> true; +match_actions(subscribe, sub) -> true; +match_actions(publish, pub) -> true; +match_actions(_, _) -> false. + +feed_var(ClientInfo, Pattern) -> + feed_var(ClientInfo, emqx_topic:words(Pattern), []). +feed_var(_ClientInfo, [], Acc) -> + emqx_topic:join(lists:reverse(Acc)); +feed_var(ClientInfo = #{clientid := undefined}, [<<"%c">>|Words], Acc) -> + feed_var(ClientInfo, Words, [<<"%c">>|Acc]); +feed_var(ClientInfo = #{clientid := ClientId}, [<<"%c">>|Words], Acc) -> + feed_var(ClientInfo, Words, [ClientId |Acc]); +feed_var(ClientInfo = #{username := undefined}, [<<"%u">>|Words], Acc) -> + feed_var(ClientInfo, Words, [<<"%u">>|Acc]); +feed_var(ClientInfo = #{username := Username}, [<<"%u">>|Words], Acc) -> + feed_var(ClientInfo, Words, [Username|Acc]); +feed_var(ClientInfo, [W|Words], Acc) -> + feed_var(ClientInfo, Words, [W|Acc]). diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_api.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_api.erl new file mode 100644 index 000000000..8f858dfa6 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_api.erl @@ -0,0 +1,237 @@ +%c%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mnesia_api). + +-include("emqx_auth_mnesia.hrl"). + +-include_lib("stdlib/include/ms_transform.hrl"). + +-import(proplists, [ get_value/2 + , get_value/3 + ]). + +-import(minirest, [return/1]). + +-rest_api(#{name => list_clientid, + method => 'GET', + path => "/acl/clientid", + func => list_clientid, + descr => "List available mnesia in the cluster" + }). + +-rest_api(#{name => list_username, + method => 'GET', + path => "/acl/username", + func => list_username, + descr => "List available mnesia in the cluster" + }). + +-rest_api(#{name => list_all, + method => 'GET', + path => "/acl/$all", + func => list_all, + descr => "List available mnesia in the cluster" + }). + +-rest_api(#{name => lookup_clientid, + method => 'GET', + path => "/acl/clientid/:bin:clientid", + func => lookup, + descr => "Lookup mnesia in the cluster" + }). + +-rest_api(#{name => lookup_username, + method => 'GET', + path => "/acl/username/:bin:username", + func => lookup, + descr => "Lookup mnesia in the cluster" + }). + +-rest_api(#{name => add, + method => 'POST', + path => "/acl", + func => add, + descr => "Add mnesia in the cluster" + }). + +-rest_api(#{name => delete_clientid, + method => 'DELETE', + path => "/acl/clientid/:bin:clientid/topic/:bin:topic", + func => delete, + descr => "Delete mnesia in the cluster" + }). + +-rest_api(#{name => delete_username, + method => 'DELETE', + path => "/acl/username/:bin:username/topic/:bin:topic", + func => delete, + descr => "Delete mnesia in the cluster" + }). + +-rest_api(#{name => delete_all, + method => 'DELETE', + path => "/acl/$all/topic/:bin:topic", + func => delete, + descr => "Delete mnesia in the cluster" + }). + + +-export([ list_clientid/2 + , list_username/2 + , list_all/2 + , lookup/2 + , add/2 + , delete/2 + ]). + +list_clientid(_Bindings, Params) -> + MatchSpec = ets:fun2ms( + fun({emqx_acl, {{clientid, Clientid}, Topic}, Action, Access, CreatedAt}) -> {{clientid,Clientid}, Topic, Action,Access, CreatedAt} end), + return({ok, emqx_auth_mnesia_api:paginate(emqx_acl, MatchSpec, Params, fun emqx_acl_mnesia_cli:comparing/2, fun format/1)}). + +list_username(_Bindings, Params) -> + MatchSpec = ets:fun2ms( + fun({emqx_acl, {{username, Username}, Topic}, Action, Access, CreatedAt}) -> {{username, Username}, Topic, Action,Access, CreatedAt} end), + return({ok, emqx_auth_mnesia_api:paginate(emqx_acl, MatchSpec, Params, fun emqx_acl_mnesia_cli:comparing/2, fun format/1)}). + +list_all(_Bindings, Params) -> + MatchSpec = ets:fun2ms( + fun({emqx_acl, {all, Topic}, Action, Access, CreatedAt}) -> {all, Topic, Action,Access, CreatedAt}end + ), + return({ok, emqx_auth_mnesia_api:paginate(emqx_acl, MatchSpec, Params, fun emqx_acl_mnesia_cli:comparing/2, fun format/1)}). + + +lookup(#{clientid := Clientid}, _Params) -> + return({ok, format(emqx_acl_mnesia_cli:lookup_acl({clientid, urldecode(Clientid)}))}); +lookup(#{username := Username}, _Params) -> + return({ok, format(emqx_acl_mnesia_cli:lookup_acl({username, urldecode(Username)}))}). + +add(_Bindings, Params) -> + [ P | _] = Params, + case is_list(P) of + true -> return(do_add(Params, [])); + false -> + Re = do_add(Params), + case Re of + #{result := ok} -> return({ok, Re}); + #{result := <<"ok">>} -> return({ok, Re}); + _ -> return({error, Re}) + end + end. + +do_add([ Params | ParamsN ], ReList) -> + do_add(ParamsN, [do_add(Params) | ReList]); + +do_add([], ReList) -> + {ok, ReList}. + +do_add(Params) -> + Clientid = get_value(<<"clientid">>, Params, undefined), + Username = get_value(<<"username">>, Params, undefined), + Login = case {Clientid, Username} of + {undefined, undefined} -> all; + {_, undefined} -> {clientid, urldecode(Clientid)}; + {undefined, _} -> {username, urldecode(Username)} + end, + Topic = urldecode(get_value(<<"topic">>, Params)), + Action = urldecode(get_value(<<"action">>, Params)), + Access = urldecode(get_value(<<"access">>, Params)), + Re = case validate([login, topic, action, access], [Login, Topic, Action, Access]) of + ok -> + emqx_acl_mnesia_cli:add_acl(Login, Topic, erlang:binary_to_atom(Action, utf8), erlang:binary_to_atom(Access, utf8)); + Err -> Err + end, + maps:merge(#{topic => Topic, + action => Action, + access => Access, + result => format_msg(Re) + }, case Login of + all -> #{all => '$all'}; + _ -> maps:from_list([Login]) + end). + +delete(#{clientid := Clientid, topic := Topic}, _) -> + return(emqx_acl_mnesia_cli:remove_acl({clientid, urldecode(Clientid)}, urldecode(Topic))); +delete(#{username := Username, topic := Topic}, _) -> + return(emqx_acl_mnesia_cli:remove_acl({username, urldecode(Username)}, urldecode(Topic))); +delete(#{topic := Topic}, _) -> + return(emqx_acl_mnesia_cli:remove_acl(all, urldecode(Topic))). + +%%------------------------------------------------------------------------------ +%% Interval Funcs +%%------------------------------------------------------------------------------ +format({{clientid, Clientid}, Topic, Action, Access, _CreatedAt}) -> + #{clientid => Clientid, topic => Topic, action => Action, access => Access}; +format({{username, Username}, Topic, Action, Access, _CreatedAt}) -> + #{username => Username, topic => Topic, action => Action, access => Access}; +format({all, Topic, Action, Access, _CreatedAt}) -> + #{all => '$all', topic => Topic, action => Action, access => Access}; +format(List) when is_list(List) -> + format(List, []). + +format([L | List], Relist) -> + format(List, [format(L) | Relist]); +format([], ReList) -> lists:reverse(ReList). + +validate([], []) -> + ok; +validate([K|Keys], [V|Values]) -> + case do_validation(K, V) of + false -> {error, K}; + true -> validate(Keys, Values) + end. +do_validation(login, all) -> + true; +do_validation(login, {clientid, V}) when is_binary(V) + andalso byte_size(V) > 0-> + true; +do_validation(login, {username, V}) when is_binary(V) + andalso byte_size(V) > 0-> + true; +do_validation(clientid, V) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(username, V) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(topic, V) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(action, V) when is_binary(V) -> + case V =:= <<"pub">> orelse V =:= <<"sub">> orelse V =:= <<"pubsub">> of + true -> true; + false -> false + end; +do_validation(access, V) when V =:= <<"allow">> orelse V =:= <<"deny">> -> + true; +do_validation(_, _) -> + false. + +format_msg(Message) + when is_atom(Message); + is_binary(Message) -> Message; + +format_msg(Message) when is_tuple(Message) -> + iolist_to_binary(io_lib:format("~p", [Message])). + +-if(?OTP_RELEASE >= 23). +urldecode(S) -> + [{R, _}] = uri_string:dissect_query(S), R. +-else. +urldecode(S) -> + http_uri:decode(S). +-endif. diff --git a/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl new file mode 100644 index 000000000..10fb4e87b --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_acl_mnesia_cli.erl @@ -0,0 +1,198 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mnesia_cli). + +-include("emqx_auth_mnesia.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("stdlib/include/ms_transform.hrl"). +-define(TABLE, emqx_acl). + +%% Acl APIs +-export([ add_acl/4 + , lookup_acl/1 + , all_acls/0 + , all_acls/1 + , remove_acl/2 + ]). + +-export([cli/1]). +-export([comparing/2]). +%%-------------------------------------------------------------------- +%% Acl API +%%-------------------------------------------------------------------- + +%% @doc Add Acls +-spec(add_acl(login() |all, emqx_topic:topic(), pub | sub| pubsub, allow | deny) -> ok | {error, any()}). +add_acl(Login, Topic, Action, Access) -> + Acls = #?TABLE{ + filter = {Login, Topic}, + action = Action, + access = Access, + created_at = erlang:system_time(millisecond) + }, + ret(mnesia:transaction(fun mnesia:write/1, [Acls])). + +%% @doc Lookup acl by login +-spec(lookup_acl(login() | all) -> list()). +lookup_acl(undefined) -> []; +lookup_acl(Login) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {Filter, ACLTopic}, Action, Access, CreatedAt}) + when Filter =:= Login -> {Filter, ACLTopic, Action, Access, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)). + +%% @doc Remove acl +-spec(remove_acl(login() | all, emqx_topic:topic()) -> ok | {error, any()}). +remove_acl(Login, Topic) -> + ret(mnesia:transaction(fun mnesia:delete/1, [{?TABLE, {Login, Topic}}])). + +%% @doc All logins +-spec(all_acls() -> list()). +all_acls() -> + all_acls(clientid) ++ + all_acls(username) ++ + all_acls(all). + +all_acls(clientid) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {{clientid, Clientid}, Topic}, Action, Access, CreatedAt}) -> {{clientid, Clientid}, Topic, Action, Access, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)); +all_acls(username) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {{username, Username}, Topic}, Action, Access, CreatedAt}) -> {{username, Username}, Topic, Action, Access, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)); +all_acls(all) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {all, Topic}, Action, Access, CreatedAt}) -> {all, Topic, Action, Access, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)). + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +comparing({_, _, _, _, CreatedAt1}, + {_, _, _, _, CreatedAt2}) -> + CreatedAt1 >= CreatedAt2. + +ret({atomic, ok}) -> ok; +ret({aborted, Error}) -> {error, Error}. + +validate(action, "pub") -> true; +validate(action, "sub") -> true; +validate(action, "pubsub") -> true; +validate(access, "allow") -> true; +validate(access, "deny") -> true; +validate(_, _) -> false. + +%%-------------------------------------------------------------------- +%% ACL Cli +%%-------------------------------------------------------------------- + +cli(["list"]) -> + [ begin + case Filter of + {clientid, Clientid} -> + emqx_ctl:print("Acl(clientid = ~p topic = ~p action = ~p access = ~p)~n",[Clientid, Topic, Action, Access]); + {username, Username} -> + emqx_ctl:print("Acl(username = ~p topic = ~p action = ~p access = ~p)~n",[Username, Topic, Action, Access]); + all -> + emqx_ctl:print("Acl($all topic = ~p action = ~p access = ~p)~n",[Topic, Action, Access]) + end + end || {Filter, Topic, Action, Access, _} <- all_acls()]; + +cli(["list", "clientid"]) -> + [emqx_ctl:print("Acl(clientid = ~p topic = ~p action = ~p access = ~p)~n",[Clientid, Topic, Action, Access]) + || {{clientid, Clientid}, Topic, Action, Access, _} <- all_acls(clientid) ]; + +cli(["list", "username"]) -> + [emqx_ctl:print("Acl(username = ~p topic = ~p action = ~p access = ~p)~n",[Username, Topic, Action, Access]) + || {{username, Username}, Topic, Action, Access, _} <- all_acls(username) ]; + +cli(["list", "_all"]) -> + [emqx_ctl:print("Acl($all topic = ~p action = ~p access = ~p)~n",[Topic, Action, Access]) + || {all, Topic, Action, Access, _} <- all_acls(all) ]; + +cli(["add", "clientid", Clientid, Topic, Action, Access]) -> + case validate(action, Action) andalso validate(access, Access) of + true -> + case add_acl({clientid, iolist_to_binary(Clientid)}, iolist_to_binary(Topic), list_to_existing_atom(Action), list_to_existing_atom(Access)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + _ -> + emqx_ctl:print("Error: Input is illegal~n") + end; + +cli(["add", "username", Username, Topic, Action, Access]) -> + case validate(action, Action) andalso validate(access, Access) of + true -> + case add_acl({username, iolist_to_binary(Username)}, iolist_to_binary(Topic), list_to_existing_atom(Action), list_to_existing_atom(Access)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + _ -> + emqx_ctl:print("Error: Input is illegal~n") + end; + +cli(["add", "_all", Topic, Action, Access]) -> + case validate(action, Action) andalso validate(access, Access) of + true -> + case add_acl(all, iolist_to_binary(Topic), list_to_existing_atom(Action), list_to_existing_atom(Access)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + _ -> + emqx_ctl:print("Error: Input is illegal~n") + end; + +cli(["show", "clientid", Clientid]) -> + [emqx_ctl:print("Acl(clientid = ~p topic = ~p action = ~p access = ~p)~n",[NClientid, Topic, Action, Access]) + || {{clientid, NClientid}, Topic, Action, Access, _} <- lookup_acl({clientid, iolist_to_binary(Clientid)}) ]; + +cli(["show", "username", Username]) -> + [emqx_ctl:print("Acl(username = ~p topic = ~p action = ~p access = ~p)~n",[NUsername, Topic, Action, Access]) + || {{username, NUsername}, Topic, Action, Access, _} <- lookup_acl({username, iolist_to_binary(Username)}) ]; + +cli(["del", "clientid", Clientid, Topic])-> + case remove_acl({clientid, iolist_to_binary(Clientid)}, iolist_to_binary(Topic)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +cli(["del", "username", Username, Topic])-> + case remove_acl({username, iolist_to_binary(Username)}, iolist_to_binary(Topic)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +cli(["del", "_all", Topic])-> + case remove_acl(all, iolist_to_binary(Topic)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +cli(_) -> + emqx_ctl:usage([ {"acl list clientid","List clientid acls"} + , {"acl list username","List username acls"} + , {"acl list _all","List $all acls"} + , {"acl show clientid ", "Lookup clientid acl detail"} + , {"acl show username ", "Lookup username acl detail"} + , {"acl aad clientid ", "Add clientid acl"} + , {"acl add Username ", "Add username acl"} + , {"acl add _all ", "Add $all acl"} + , {"acl del clientid ", "Delete clientid acl"} + , {"acl del username ", "Delete username acl"} + , {"acl del _all ", "Delete $all acl"} + ]). + + diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src new file mode 100644 index 000000000..debd8259b --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_mnesia, + [{description, "EMQ X Authentication with Mnesia"}, + {vsn, "git"}, + {modules, []}, + {registered, []}, + {applications, [kernel,stdlib,mnesia]}, + {mod, {emqx_auth_mnesia_app,[]}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-mnesia"} + ]} + ]}. diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src.script b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src new file mode 100644 index 000000000..34d68b11f --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.appup.src @@ -0,0 +1,39 @@ +%% -*-: erlang -*- +{VSN, + [ + {"4.2.2", [ + {load_module, emqx_auth_mnesia_app}, + {load_module, emqx_auth_mnesia_cli}, + {load_module, emqx_acl_mnesia_cli}, + {apply, {emqx_ctl, unregister_command, [username]}} + ]}, + {"4.2.1", [ + {load_module, emqx_auth_mnesia_app}, + {load_module, emqx_auth_mnesia_cli}, + {load_module, emqx_acl_mnesia_cli}, + {apply, {emqx_ctl, unregister_command, [username]}} + ]}, + {"4.2.0", [ + {restart_application, emqx_auth_mnesia} + ]}, + {<<".*">>, []} + ], + [ + {"4.2.2", [ + {load_module, emqx_auth_mnesia_app}, + {load_module, emqx_auth_mnesia_cli}, + {load_module, emqx_acl_mnesia_cli}, + {apply, {emqx_ctl, register_command, [username, {emqx_auth_mnesia_cli, auth_username_cli}, []]}} + ]}, + {"4.2.1", [ + {load_module, emqx_auth_mnesia_app}, + {load_module, emqx_auth_mnesia_cli}, + {load_module, emqx_acl_mnesia_cli}, + {apply, {emqx_ctl, register_command, [username, {emqx_auth_mnesia_cli, auth_username_cli}, []]}} + ]}, + {"4.2.0", [ + {restart_application, emqx_auth_mnesia} + ]}, + {<<".*">>, []} + ] +}. diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl new file mode 100644 index 000000000..9cb468a8f --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia.erl @@ -0,0 +1,109 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia). + +-include("emqx_auth_mnesia.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/types.hrl"). + +-include_lib("stdlib/include/ms_transform.hrl"). + +-define(TABLE, emqx_user). +%% Auth callbacks +-export([ init/1 + , register_metrics/0 + , check/3 + , description/0 + ]). + +init(#{clientid_list := ClientidList, username_list := UsernameList}) -> + ok = ekka_mnesia:create_table(emqx_user, [ + {disc_copies, [node()]}, + {attributes, record_info(fields, emqx_user)}, + {storage_properties, [{ets, [{read_concurrency, true}]}]}]), + [ add_default_user({{clientid, iolist_to_binary(Clientid)}, iolist_to_binary(Password)}) + || {Clientid, Password} <- ClientidList], + [ add_default_user({{username, iolist_to_binary(Username)}, iolist_to_binary(Password)}) + || {Username, Password} <- UsernameList], + ok = ekka_mnesia:copy_table(emqx_user, disc_copies). + +%% @private +add_default_user({Login, Password}) when is_tuple(Login) -> + emqx_auth_mnesia_cli:add_user(Login, Password). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo = #{ clientid := Clientid + , password := NPassword + }, AuthResult, #{hash_type := HashType}) -> + Username = maps:get(username, ClientInfo, undefined), + MatchSpec = ets:fun2ms(fun({?TABLE, {clientid, X }, Password, InterTime}) when X =:= Clientid-> Password; + ({?TABLE, {username, X }, Password, InterTime}) when X =:= Username andalso X =/= undefined -> Password + end), + case ets:select(?TABLE, MatchSpec) of + [] -> + emqx_metrics:inc(?AUTH_METRICS(ignore)), + ok; + List -> + case match_password(NPassword, HashType, List) of + false -> + ?LOG(error, "[Mnesia] Auth from mnesia failed: ~p", [ClientInfo]), + emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{anonymous => false, auth_result => password_error}}; + _ -> + emqx_metrics:inc(?AUTH_METRICS(success)), + {stop, AuthResult#{anonymous => false, auth_result => success}} + end + end. + +description() -> "Authentication with Mnesia". + +match_password(Password, HashType, HashList) -> + lists:any( + fun(Secret) -> + case is_salt_hash(Secret, HashType) of + true -> + <> = Secret, + Hash =:= hash(Password, Salt, HashType); + _ -> + Secret =:= hash(Password, HashType) + end + end, HashList). + +hash(undefined, HashType) -> + hash(<<>>, HashType); +hash(Password, HashType) -> + emqx_passwd:hash(HashType, Password). + +hash(undefined, SaltBin, HashType) -> + hash(<<>>, SaltBin, HashType); +hash(Password, SaltBin, HashType) -> + emqx_passwd:hash(HashType, <>). + +is_salt_hash(_, plain) -> + true; +is_salt_hash(Secret, HashType) -> + not (byte_size(Secret) == len(HashType)). + +len(md5) -> 32; +len(sha) -> 40; +len(sha256) -> 64; +len(sha512) -> 128. diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_api.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_api.erl new file mode 100644 index 000000000..ee52fcf36 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_api.erl @@ -0,0 +1,319 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia_api). + +-include_lib("stdlib/include/qlc.hrl"). +-include_lib("stdlib/include/ms_transform.hrl"). + +-define(TABLE, emqx_user). + +-import(proplists, [get_value/2]). +-import(minirest, [return/1]). +-export([paginate/5]). + +-export([ list_clientid/2 + , lookup_clientid/2 + , add_clientid/2 + , update_clientid/2 + , delete_clientid/2 + ]). + +-rest_api(#{name => list_clientid, + method => 'GET', + path => "/auth_clientid", + func => list_clientid, + descr => "List available clientid in the cluster" + }). + +-rest_api(#{name => lookup_clientid, + method => 'GET', + path => "/auth_clientid/:bin:clientid", + func => lookup_clientid, + descr => "Lookup clientid in the cluster" + }). + +-rest_api(#{name => add_clientid, + method => 'POST', + path => "/auth_clientid", + func => add_clientid, + descr => "Add clientid in the cluster" + }). + +-rest_api(#{name => update_clientid, + method => 'PUT', + path => "/auth_clientid/:bin:clientid", + func => update_clientid, + descr => "Update clientid in the cluster" + }). + +-rest_api(#{name => delete_clientid, + method => 'DELETE', + path => "/auth_clientid/:bin:clientid", + func => delete_clientid, + descr => "Delete clientid in the cluster" + }). + +-export([ list_username/2 + , lookup_username/2 + , add_username/2 + , update_username/2 + , delete_username/2 + ]). + +-rest_api(#{name => list_username, + method => 'GET', + path => "/auth_username", + func => list_username, + descr => "List available username in the cluster" + }). + +-rest_api(#{name => lookup_username, + method => 'GET', + path => "/auth_username/:bin:username", + func => lookup_username, + descr => "Lookup username in the cluster" + }). + +-rest_api(#{name => add_username, + method => 'POST', + path => "/auth_username", + func => add_username, + descr => "Add username in the cluster" + }). + +-rest_api(#{name => update_username, + method => 'PUT', + path => "/auth_username/:bin:username", + func => update_username, + descr => "Update username in the cluster" + }). + +-rest_api(#{name => delete_username, + method => 'DELETE', + path => "/auth_username/:bin:username", + func => delete_username, + descr => "Delete username in the cluster" + }). + +%%------------------------------------------------------------------------------ +%% Auth Clientid Api +%%------------------------------------------------------------------------------ + +list_clientid(_Bindings, Params) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {clientid, Clientid}, Password, CreatedAt}) -> {?TABLE, {clientid, Clientid}, Password, CreatedAt} end), + return({ok, paginate(?TABLE, MatchSpec, Params, fun emqx_auth_mnesia_cli:comparing/2, fun({?TABLE, {clientid, X}, _, _}) -> #{clientid => X} end)}). + +lookup_clientid(#{clientid := Clientid}, _Params) -> + return({ok, format(emqx_auth_mnesia_cli:lookup_user({clientid, urldecode(Clientid)}))}). + +add_clientid(_Bindings, Params) -> + [ P | _] = Params, + case is_list(P) of + true -> return(do_add_clientid(Params, [])); + false -> + Re = do_add_clientid(Params), + case Re of + ok -> return(ok); + <<"ok">> -> return(ok); + _ -> return({error, format_msg(Re)}) + end + end. + +do_add_clientid([ Params | ParamsN ], ReList ) -> + Clientid = urldecode(get_value(<<"clientid">>, Params)), + do_add_clientid(ParamsN, [{Clientid, format_msg(do_add_clientid(Params))} | ReList]); + +do_add_clientid([], ReList) -> + {ok, ReList}. + +do_add_clientid(Params) -> + Clientid = urldecode(get_value(<<"clientid">>, Params)), + Password = urldecode(get_value(<<"password">>, Params)), + Login = {clientid, Clientid}, + case validate([login, password], [Login, Password]) of + ok -> + emqx_auth_mnesia_cli:add_user(Login, Password); + Err -> Err + end. + +update_clientid(#{clientid := Clientid}, Params) -> + Password = get_value(<<"password">>, Params), + case validate([password], [Password]) of + ok -> return(emqx_auth_mnesia_cli:update_user({clientid, urldecode(Clientid)}, urldecode(Password))); + Err -> return(Err) + end. + +delete_clientid(#{clientid := Clientid}, _) -> + return(emqx_auth_mnesia_cli:remove_user({clientid, urldecode(Clientid)})). + +%%------------------------------------------------------------------------------ +%% Auth Username Api +%%------------------------------------------------------------------------------ + +list_username(_Bindings, Params) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {username, Username}, Password, CreatedAt}) -> {?TABLE, {username, Username}, Password, CreatedAt} end), + return({ok, paginate(?TABLE, MatchSpec, Params, fun emqx_auth_mnesia_cli:comparing/2, fun({?TABLE, {username, X}, _, _}) -> #{username => X} end)}). + +lookup_username(#{username := Username}, _Params) -> + return({ok, format(emqx_auth_mnesia_cli:lookup_user({username, urldecode(Username)}))}). + +add_username(_Bindings, Params) -> + [ P | _] = Params, + case is_list(P) of + true -> return(do_add_username(Params, [])); + false -> + case do_add_username(Params) of + ok -> return(ok); + <<"ok">> -> return(ok); + Error -> return({error, format_msg(Error)}) + end + end. + +do_add_username([ Params | ParamsN ], ReList ) -> + Username = urldecode(get_value(<<"username">>, Params)), + do_add_username(ParamsN, [{Username, format_msg(do_add_username(Params))} | ReList]); + +do_add_username([], ReList) -> + {ok, ReList}. + +do_add_username(Params) -> + Username = urldecode(get_value(<<"username">>, Params)), + Password = urldecode(get_value(<<"password">>, Params)), + Login = {username, Username}, + case validate([login, password], [Login, Password]) of + ok -> + emqx_auth_mnesia_cli:add_user(Login, Password); + Err -> Err + end. + +update_username(#{username := Username}, Params) -> + Password = get_value(<<"password">>, Params), + case validate([password], [Password]) of + ok -> return(emqx_auth_mnesia_cli:update_user({username, urldecode(Username)}, urldecode(Password))); + Err -> return(Err) + end. + +delete_username(#{username := Username}, _) -> + return(emqx_auth_mnesia_cli:remove_user({username, urldecode(Username)})). + +%%------------------------------------------------------------------------------ +%% Paging Query +%%------------------------------------------------------------------------------ + +paginate(Tables, MatchSpec, Params, ComparingFun, RowFun) -> + Qh = query_handle(Tables, MatchSpec), + Count = count(Tables, MatchSpec), + Page = page(Params), + Limit = limit(Params), + Cursor = qlc:cursor(Qh), + case Page > 1 of + true -> qlc:next_answers(Cursor, (Page - 1) * Limit); + false -> ok + end, + Rows = qlc:next_answers(Cursor, Limit), + qlc:delete_cursor(Cursor), + #{meta => #{page => Page, limit => Limit, count => Count}, + data => [RowFun(Row) || Row <- lists:sort(ComparingFun, Rows)]}. + +query_handle(Table, MatchSpec) when is_atom(Table) -> + Options = {traverse, {select, MatchSpec}}, + qlc:q([R|| R <- ets:table(Table, Options)]); +query_handle([Table], MatchSpec) when is_atom(Table) -> + Options = {traverse, {select, MatchSpec}}, + qlc:q([R|| R <- ets:table(Table, Options)]); +query_handle(Tables, MatchSpec) -> + Options = {traverse, {select, MatchSpec}}, + qlc:append([qlc:q([E || E <- ets:table(T, Options)]) || T <- Tables]). + +count(Table, MatchSpec) when is_atom(Table) -> + [{MatchPattern, Where, _Re}] = MatchSpec, + NMatchSpec = [{MatchPattern, Where, [true]}], + ets:select_count(Table, NMatchSpec); +count([Table], MatchSpec) when is_atom(Table) -> + [{MatchPattern, Where, _Re}] = MatchSpec, + NMatchSpec = [{MatchPattern, Where, [true]}], + ets:select_count(Table, NMatchSpec); +count(Tables, MatchSpec) -> + lists:sum([count(T, MatchSpec) || T <- Tables]). + +page(Params) -> + binary_to_integer(proplists:get_value(<<"_page">>, Params, <<"1">>)). + +limit(Params) -> + case proplists:get_value(<<"_limit">>, Params) of + undefined -> 10; + Size -> binary_to_integer(Size) + end. + +%%------------------------------------------------------------------------------ +%% Interval Funcs +%%------------------------------------------------------------------------------ + +format({?TABLE, {clientid, ClientId}, Password, _InterTime}) -> + #{clientid => ClientId, + password => Password}; + +format({?TABLE, {username, Username}, Password, _InterTime}) -> + #{username => Username, + password => Password}; + +format([{?TABLE, {clientid, ClientId}, Password, _InterTime}]) -> + #{clientid => ClientId, + password => Password}; + +format([{?TABLE, {username, Username}, Password, _InterTime}]) -> + #{username => Username, + password => Password}; + +format([]) -> + #{}. + +validate([], []) -> + ok; +validate([K|Keys], [V|Values]) -> + case do_validation(K, V) of + false -> {error, K}; + true -> validate(Keys, Values) + end. + +do_validation(login, {clientid, V}) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(login, {username, V}) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(password, V) when is_binary(V) + andalso byte_size(V) > 0 -> + true; +do_validation(_, _) -> + false. + +format_msg(Message) + when is_atom(Message); + is_binary(Message) -> Message; + +format_msg(Message) when is_tuple(Message) -> + iolist_to_binary(io_lib:format("~p", [Message])). + +-if(?OTP_RELEASE >= 23). +urldecode(S) -> + [{R, _}] = uri_string:dissect_query(S), R. +-else. +urldecode(S) -> + http_uri:decode(S). +-endif. + diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_app.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_app.erl new file mode 100644 index 000000000..e55e45ed4 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_app.erl @@ -0,0 +1,68 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_mnesia.hrl"). + +%% Application callbacks +-export([ start/2 + , prep_stop/1 + , stop/1 + ]). + +%%-------------------------------------------------------------------- +%% Application callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_mnesia_sup:start_link(), + emqx_ctl:register_command(clientid, {emqx_auth_mnesia_cli, auth_clientid_cli}, []), + emqx_ctl:register_command(user, {emqx_auth_mnesia_cli, auth_username_cli}, []), + emqx_ctl:register_command(acl, {emqx_acl_mnesia_cli, cli}, []), + load_auth_hook(), + load_acl_hook(), + {ok, Sup}. + +prep_stop(State) -> + emqx:unhook('client.authenticate', fun emqx_auth_mnesia:check/3), + emqx:unhook('client.check_acl', fun emqx_acl_mnesia:check_acl/5), + emqx_ctl:unregister_command(clientid), + emqx_ctl:unregister_command(user), + emqx_ctl:unregister_command(acl), + State. + +stop(_State) -> + ok. + +load_auth_hook() -> + ClientidList = application:get_env(?APP, clientid_list, []), + UsernameList = application:get_env(?APP, username_list, []), + ok = emqx_auth_mnesia:init(#{clientid_list => ClientidList, username_list => UsernameList}), + ok = emqx_auth_mnesia:register_metrics(), + Params = #{ + hash_type => application:get_env(emqx_auth_mnesia, hash_type, sha256) + }, + emqx:hook('client.authenticate', fun emqx_auth_mnesia:check/3, [Params]). + +load_acl_hook() -> + ok = emqx_acl_mnesia:init(), + ok = emqx_acl_mnesia:register_metrics(), + emqx:hook('client.check_acl', fun emqx_acl_mnesia:check_acl/5, [#{}]). diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl new file mode 100644 index 000000000..7c0181e47 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_cli.erl @@ -0,0 +1,181 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia_cli). + +-include("emqx_auth_mnesia.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("stdlib/include/ms_transform.hrl"). +-define(TABLE, emqx_user). +%% Auth APIs +-export([ add_user/2 + , update_user/2 + , remove_user/1 + , lookup_user/1 + , all_users/0 + , all_users/1 + ]). +%% Cli +-export([ auth_clientid_cli/1 + , auth_username_cli/1 + ]). + +%% Helper +-export([comparing/2]). + +%%-------------------------------------------------------------------- +%% Auth APIs +%%-------------------------------------------------------------------- + +%% @doc Add User +-spec(add_user(tuple(), binary()) -> ok | {error, any()}). +add_user(Login, Password) -> + User = #emqx_user{login = Login, password = encrypted_data(Password), created_at = erlang:system_time(millisecond)}, + ret(mnesia:transaction(fun insert_user/1, [User])). + +insert_user(User = #emqx_user{login = Login}) -> + case mnesia:read(?TABLE, Login) of + [] -> mnesia:write(User); + [_|_] -> mnesia:abort(existed) + end. + +%% @doc Update User +-spec(update_user(tuple(), binary()) -> ok | {error, any()}). +update_user(Login, NewPassword) -> + User = #emqx_user{login = Login, password = encrypted_data(NewPassword)}, + ret(mnesia:transaction(fun do_update_user/1, [User])). + +do_update_user(User = #emqx_user{login = Login}) -> + case mnesia:read(?TABLE, Login) of + [{?TABLE, Login, _, CreateAt}] -> mnesia:write(User#emqx_user{created_at = CreateAt}); + [] -> mnesia:abort(noexisted) + end. + +%% @doc Lookup user by login +-spec(lookup_user(tuple()) -> list()). +lookup_user(undefined) -> []; +lookup_user(Login) -> + case mnesia:dirty_read(?TABLE, Login) of + {error, Reason} -> + ?LOG(error, "[Mnesia] do_check_user error: ~p~n", [Reason]), + []; + Re -> + lists:sort(fun comparing/2, Re) + end. + +%% @doc Remove user +-spec(remove_user(tuple()) -> ok | {error, any()}). +remove_user(Login) -> + ret(mnesia:transaction(fun mnesia:delete/1, [{?TABLE, Login}])). + +%% @doc All logins +-spec(all_users() -> list()). +all_users() -> mnesia:dirty_all_keys(?TABLE). + +all_users(clientid) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {clientid, Clientid}, Password, CreatedAt}) -> {?TABLE, {clientid, Clientid}, Password, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)); + +all_users(username) -> + MatchSpec = ets:fun2ms(fun({?TABLE, {username, Username}, Password, CreatedAt}) -> {?TABLE, {username, Username}, Password, CreatedAt} end), + lists:sort(fun comparing/2, ets:select(?TABLE, MatchSpec)). + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +comparing({?TABLE, _, _, CreatedAt1}, + {?TABLE, _, _, CreatedAt2}) -> + CreatedAt1 >= CreatedAt2. + +ret({atomic, ok}) -> ok; +ret({aborted, Error}) -> {error, Error}. + +encrypted_data(Password) -> + HashType = application:get_env(emqx_auth_mnesia, password_hash, sha256), + SaltBin = salt(), + <>. + +hash(undefined, SaltBin, HashType) -> + hash(<<>>, SaltBin, HashType); +hash(Password, SaltBin, HashType) -> + emqx_passwd:hash(HashType, <>). + +salt() -> + rand:seed(exsplus, erlang:timestamp()), + Salt = rand:uniform(16#ffffffff), <>. + +%%-------------------------------------------------------------------- +%% Auth Clientid Cli +%%-------------------------------------------------------------------- + +auth_clientid_cli(["list"]) -> + [emqx_ctl:print("~s~n", [ClientId]) || {?TABLE, {clientid, ClientId}, _Password, _CreatedAt} <- all_users(clientid)]; + +auth_clientid_cli(["add", ClientId, Password]) -> + case add_user({clientid, iolist_to_binary(ClientId)}, iolist_to_binary(Password)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_clientid_cli(["update", ClientId, NewPassword]) -> + case update_user({clientid, iolist_to_binary(ClientId)}, iolist_to_binary(NewPassword)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_clientid_cli(["del", ClientId]) -> + case remove_user({clientid, iolist_to_binary(ClientId)}) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_clientid_cli(_) -> + emqx_ctl:usage([{"clientid list", "List clientid auth rules"}, + {"clientid add ", "Add clientid auth rule"}, + {"clientid update ", "Update clientid auth rule"}, + {"clientid del ", "Delete clientid auth rule"}]). + +%%-------------------------------------------------------------------- +%% Auth Username Cli +%%-------------------------------------------------------------------- + +auth_username_cli(["list"]) -> + [emqx_ctl:print("~s~n", [Username]) || {?TABLE, {username, Username}, _Password, _CreatedAt}<- all_users(username)]; + +auth_username_cli(["add", Username, Password]) -> + case add_user({username, iolist_to_binary(Username)}, iolist_to_binary(Password)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_username_cli(["update", Username, NewPassword]) -> + case update_user({username, iolist_to_binary(Username)}, iolist_to_binary(NewPassword)) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_username_cli(["del", Username]) -> + case remove_user({username, iolist_to_binary(Username)}) of + ok -> emqx_ctl:print("ok~n"); + {error, Reason} -> emqx_ctl:print("Error: ~p~n", [Reason]) + end; + +auth_username_cli(_) -> + emqx_ctl:usage([{"user list", "List username auth rules"}, + {"user add ", "Add username auth rule"}, + {"user update ", "Update username auth rule"}, + {"user del ", "Delete username auth rule"}]). diff --git a/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_sup.erl b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_sup.erl new file mode 100644 index 000000000..ed32b31e7 --- /dev/null +++ b/apps/emqx_auth_mnesia/src/emqx_auth_mnesia_sup.erl @@ -0,0 +1,36 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia_sup). + +-behaviour(supervisor). + +-include("emqx_auth_mnesia.hrl"). + +-export([start_link/0]). + +%% Supervisor callbacks +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%%-------------------------------------------------------------------- +%% Supervisor callbacks +%%-------------------------------------------------------------------- + +init([]) -> + {ok, {{one_for_one, 10, 100}, []}}. \ No newline at end of file diff --git a/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl new file mode 100644 index 000000000..61356dd24 --- /dev/null +++ b/apps/emqx_auth_mnesia/test/emqx_acl_mnesia_SUITE.erl @@ -0,0 +1,215 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mnesia_SUITE). + +-compile(export_all). + +-include("emqx_auth_mnesia.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-import(emqx_ct_http, [ request_api/3 + , request_api/5 + , get_http_data/1 + , create_default_app/0 + , default_auth_header/0 + ]). + +-define(HOST, "http://127.0.0.1:8081/"). +-define(API_VERSION, "v4"). +-define(BASE_PATH, "api"). + +all() -> + emqx_ct:all(?MODULE). + +groups() -> + []. + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx_management, emqx_auth_mnesia], fun set_special_configs/1), + create_default_app(), + Config. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_management, emqx_auth_mnesia]). + +init_per_testcase(t_check_acl_as_clientid, Config) -> + emqx:hook('client.check_acl', fun emqx_acl_mnesia:check_acl/5, [#{key_as => clientid}]), + Config; + +init_per_testcase(_, Config) -> + emqx:hook('client.check_acl', fun emqx_acl_mnesia:check_acl/5, [#{key_as => username}]), + Config. + +end_per_testcase(_, Config) -> + emqx:unhook('client.check_acl', fun emqx_acl_mnesia:check_acl/5), + Config. + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, true), + application:set_env(emqx, enable_acl_cache, false), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)); + +set_special_configs(_App) -> + ok. + +%%------------------------------------------------------------------------------ +%% Testcases +%%------------------------------------------------------------------------------ + +t_management(_Config) -> + clean_all_acls(), + ?assertEqual("Acl with Mnesia", emqx_acl_mnesia:description()), + ?assertEqual([], emqx_acl_mnesia_cli:all_acls()), + + ok = emqx_acl_mnesia_cli:add_acl({clientid, <<"test_clientid">>}, <<"topic/%c">>, sub, allow), + ok = emqx_acl_mnesia_cli:add_acl({clientid, <<"test_clientid">>}, <<"topic/+">>, pub, deny), + ok = emqx_acl_mnesia_cli:add_acl({username, <<"test_username">>}, <<"topic/%u">>, sub, deny), + ok = emqx_acl_mnesia_cli:add_acl({username, <<"test_username">>}, <<"topic/+">>, pub, allow), + ok = emqx_acl_mnesia_cli:add_acl(all, <<"#">>, pubsub, deny), + + ?assertEqual(2, length(emqx_acl_mnesia_cli:lookup_acl({clientid, <<"test_clientid">>}))), + ?assertEqual(2, length(emqx_acl_mnesia_cli:lookup_acl({username, <<"test_username">>}))), + ?assertEqual(1, length(emqx_acl_mnesia_cli:lookup_acl(all))), + ?assertEqual(5, length(emqx_acl_mnesia_cli:all_acls())), + + User1 = #{zone => external, clientid => <<"test_clientid">>}, + User2 = #{zone => external, clientid => <<"no_exist">>, username => <<"test_username">>}, + User3 = #{zone => external, clientid => <<"test_clientid">>, username => <<"test_username">>}, + allow = emqx_access_control:check_acl(User1, subscribe, <<"topic/test_clientid">>), + deny = emqx_access_control:check_acl(User1, publish, <<"topic/A">>), + deny = emqx_access_control:check_acl(User2, subscribe, <<"topic/test_username">>), + allow = emqx_access_control:check_acl(User2, publish, <<"topic/A">>), + allow = emqx_access_control:check_acl(User3, subscribe, <<"topic/test_clientid">>), + deny = emqx_access_control:check_acl(User3, subscribe, <<"topic/test_username">>), + deny = emqx_access_control:check_acl(User3, publish, <<"topic/A">>), + deny = emqx_access_control:check_acl(User3, subscribe, <<"topic/A/B">>), + deny = emqx_access_control:check_acl(User3, publish, <<"topic/A/B">>), + + ok = emqx_acl_mnesia_cli:remove_acl({clientid, <<"test_clientid">>}, <<"topic/%c">>), + ok = emqx_acl_mnesia_cli:remove_acl({clientid, <<"test_clientid">>}, <<"topic/+">>), + ok = emqx_acl_mnesia_cli:remove_acl({username, <<"test_username">>}, <<"topic/%u">>), + ok = emqx_acl_mnesia_cli:remove_acl({username, <<"test_username">>}, <<"topic/+">>), + ok = emqx_acl_mnesia_cli:remove_acl(all, <<"#">>), + + ?assertEqual([], emqx_acl_mnesia_cli:all_acls()). + +t_acl_cli(_Config) -> + meck:new(emqx_ctl, [non_strict, passthrough]), + meck:expect(emqx_ctl, print, fun(Arg) -> emqx_ctl:format(Arg) end), + meck:expect(emqx_ctl, print, fun(Msg, Arg) -> emqx_ctl:format(Msg, Arg) end), + meck:expect(emqx_ctl, usage, fun(Usages) -> emqx_ctl:format_usage(Usages) end), + meck:expect(emqx_ctl, usage, fun(Cmd, Descr) -> emqx_ctl:format_usage(Cmd, Descr) end), + + clean_all_acls(), + + ?assertEqual(0, length(emqx_acl_mnesia_cli:cli(["list"]))), + + emqx_acl_mnesia_cli:cli(["add", "clientid", "test_clientid", "topic/A", "pub", "allow"]), + ?assertMatch(["Acl(clientid = <<\"test_clientid\">> topic = <<\"topic/A\">> action = pub access = allow)\n"], emqx_acl_mnesia_cli:cli(["show", "clientid", "test_clientid"])), + ?assertMatch(["Acl(clientid = <<\"test_clientid\">> topic = <<\"topic/A\">> action = pub access = allow)\n"], emqx_acl_mnesia_cli:cli(["list", "clientid"])), + + emqx_acl_mnesia_cli:cli(["add", "username", "test_username", "topic/B", "sub", "deny"]), + ?assertMatch(["Acl(username = <<\"test_username\">> topic = <<\"topic/B\">> action = sub access = deny)\n"], emqx_acl_mnesia_cli:cli(["show", "username", "test_username"])), + ?assertMatch(["Acl(username = <<\"test_username\">> topic = <<\"topic/B\">> action = sub access = deny)\n"], emqx_acl_mnesia_cli:cli(["list", "username"])), + + emqx_acl_mnesia_cli:cli(["add", "_all", "#", "pubsub", "deny"]), + ?assertMatch(["Acl($all topic = <<\"#\">> action = pubsub access = deny)\n"], emqx_acl_mnesia_cli:cli(["list", "_all"])), + ?assertEqual(3, length(emqx_acl_mnesia_cli:cli(["list"]))), + + emqx_acl_mnesia_cli:cli(["del", "clientid", "test_clientid", "topic/A"]), + emqx_acl_mnesia_cli:cli(["del", "username", "test_username", "topic/B"]), + emqx_acl_mnesia_cli:cli(["del", "_all", "#"]), + ?assertEqual(0, length(emqx_acl_mnesia_cli:cli(["list"]))), + + meck:unload(emqx_ctl). + +t_rest_api(_Config) -> + clean_all_acls(), + + Params1 = [#{<<"clientid">> => <<"test_clientid">>, <<"topic">> => <<"topic/A">>, <<"action">> => <<"pub">>, <<"access">> => <<"allow">>}, + #{<<"clientid">> => <<"test_clientid">>, <<"topic">> => <<"topic/B">>, <<"action">> => <<"sub">>, <<"access">> => <<"allow">>}, + #{<<"clientid">> => <<"test_clientid">>, <<"topic">> => <<"topic/C">>, <<"action">> => <<"pubsub">>, <<"access">> => <<"deny">>}], + {ok, _} = request_http_rest_add([], Params1), + {ok, Re1} = request_http_rest_list(["clientid", "test_clientid"]), + ?assertMatch(3, length(get_http_data(Re1))), + {ok, _} = request_http_rest_delete(["clientid", "test_clientid", "topic", "topic/A"]), + {ok, _} = request_http_rest_delete(["clientid", "test_clientid", "topic", "topic/B"]), + {ok, _} = request_http_rest_delete(["clientid", "test_clientid", "topic", "topic/C"]), + {ok, Res1} = request_http_rest_list(["clientid"]), + ?assertMatch([], get_http_data(Res1)), + + Params2 = [#{<<"username">> => <<"test_username">>, <<"topic">> => <<"topic/A">>, <<"action">> => <<"pub">>, <<"access">> => <<"allow">>}, + #{<<"username">> => <<"test_username">>, <<"topic">> => <<"topic/B">>, <<"action">> => <<"sub">>, <<"access">> => <<"allow">>}, + #{<<"username">> => <<"test_username">>, <<"topic">> => <<"topic/C">>, <<"action">> => <<"pubsub">>, <<"access">> => <<"deny">>}], + {ok, _} = request_http_rest_add([], Params2), + {ok, Re2} = request_http_rest_list(["username", "test_username"]), + ?assertMatch(3, length(get_http_data(Re2))), + {ok, _} = request_http_rest_delete(["username", "test_username", "topic", "topic/A"]), + {ok, _} = request_http_rest_delete(["username", "test_username", "topic", "topic/B"]), + {ok, _} = request_http_rest_delete(["username", "test_username", "topic", "topic/C"]), + {ok, Res2} = request_http_rest_list(["username"]), + ?assertMatch([], get_http_data(Res2)), + + Params3 = [#{<<"topic">> => <<"topic/A">>, <<"action">> => <<"pub">>, <<"access">> => <<"allow">>}, + #{<<"topic">> => <<"topic/B">>, <<"action">> => <<"sub">>, <<"access">> => <<"allow">>}, + #{<<"topic">> => <<"topic/C">>, <<"action">> => <<"pubsub">>, <<"access">> => <<"deny">>}], + {ok, _} = request_http_rest_add([], Params3), + {ok, Re3} = request_http_rest_list(["$all"]), + ?assertMatch(3, length(get_http_data(Re3))), + {ok, _} = request_http_rest_delete(["$all", "topic", "topic/A"]), + {ok, _} = request_http_rest_delete(["$all", "topic", "topic/B"]), + {ok, _} = request_http_rest_delete(["$all", "topic", "topic/C"]), + {ok, Res3} = request_http_rest_list(["$all"]), + ?assertMatch([], get_http_data(Res3)). + +%%------------------------------------------------------------------------------ +%% Helpers +%%------------------------------------------------------------------------------ + +clean_all_acls() -> + [ mnesia:dirty_delete({emqx_acl, Login}) + || Login <- mnesia:dirty_all_keys(emqx_acl)]. + +%%-------------------------------------------------------------------- +%% HTTP Request +%%-------------------------------------------------------------------- + +request_http_rest_list(Path) -> + request_api(get, uri(Path), default_auth_header()). + +request_http_rest_lookup(Path) -> + request_api(get, uri(Path), default_auth_header()). + +request_http_rest_add(Path, Params) -> + request_api(post, uri(Path), [], default_auth_header(), Params). + +request_http_rest_delete(Path) -> + request_api(delete, uri(Path), default_auth_header()). + +uri() -> uri([]). +uri(Parts) when is_list(Parts) -> + NParts = [b2l(E) || E <- Parts], + ?HOST ++ filename:join([?BASE_PATH, ?API_VERSION, "acl"| NParts]). + +%% @private +b2l(B) when is_binary(B) -> + http_uri:encode(binary_to_list(B)); +b2l(L) when is_list(L) -> + http_uri:encode(L). diff --git a/apps/emqx_auth_mnesia/test/emqx_auth_mnesia_SUITE.erl b/apps/emqx_auth_mnesia/test/emqx_auth_mnesia_SUITE.erl new file mode 100644 index 000000000..0f4884247 --- /dev/null +++ b/apps/emqx_auth_mnesia/test/emqx_auth_mnesia_SUITE.erl @@ -0,0 +1,284 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mnesia_SUITE). + +-compile(export_all). + +-include("emqx_auth_mnesia.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-import(emqx_ct_http, [ request_api/3 + , request_api/5 + , get_http_data/1 + , create_default_app/0 + , default_auth_header/0 + ]). + +-define(HOST, "http://127.0.0.1:8081/"). +-define(API_VERSION, "v4"). +-define(BASE_PATH, "api"). + +-define(TABLE, emqx_user). +-define(CLIENTID, <<"clientid_for_ct">>). +-define(USERNAME, <<"username_for_ct">>). +-define(PASSWORD, <<"password">>). +-define(NPASSWORD, <<"new_password">>). + +all() -> + emqx_ct:all(?MODULE). + +groups() -> + []. + +init_per_suite(Config) -> + ok = emqx_ct_helpers:start_apps([emqx_management, emqx_auth_mnesia], fun set_special_configs/1), + create_default_app(), + Config. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_management, emqx_auth_mnesia]). + +init_per_testcase(t_check_as_clientid, Config) -> + Params = #{ + hash_type => application:get_env(emqx_auth_mnesia, hash_type, sha256), + key_as => clientid + }, + emqx:hook('client.authenticate', fun emqx_auth_mnesia:check/3, [Params]), + Config; + +init_per_testcase(_, Config) -> + Params = #{ + hash_type => application:get_env(emqx_auth_mnesia, hash_type, sha256), + key_as => username + }, + emqx:hook('client.authenticate', fun emqx_auth_mnesia:check/3, [Params]), + Config. + +end_per_suite(_, Config) -> + emqx:unhook('client.authenticate', fun emqx_auth_mnesia:check/3), + Config. + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, true), + application:set_env(emqx, enable_acl_cache, false), + LoadedPluginPath = filename:join(["test", "emqx_SUITE_data", "loaded_plugins"]), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, LoadedPluginPath)); + +set_special_configs(_App) -> + ok. + +%%------------------------------------------------------------------------------ +%% Testcases +%%------------------------------------------------------------------------------ + +t_management(_Config) -> + clean_all_users(), + + ok = emqx_auth_mnesia_cli:add_user({username,?USERNAME}, ?PASSWORD), + {error, existed} = emqx_auth_mnesia_cli:add_user({username,?USERNAME}, ?PASSWORD), + ?assertMatch([{?TABLE, {username, ?USERNAME}, _Password, _InterTime}], emqx_auth_mnesia_cli:all_users(username)), + + ok = emqx_auth_mnesia_cli:add_user({clientid,?CLIENTID}, ?PASSWORD), + {error, existed} = emqx_auth_mnesia_cli:add_user({clientid,?CLIENTID}, ?PASSWORD), + ?assertMatch([{?TABLE, {clientid, ?CLIENTID}, _Password, _InterTime}], emqx_auth_mnesia_cli:all_users(clientid)), + + ?assertEqual(2,length(emqx_auth_mnesia_cli:all_users())), + + ok = emqx_auth_mnesia_cli:update_user({username,?USERNAME}, ?NPASSWORD), + {error,noexisted} = emqx_auth_mnesia_cli:update_user({username, <<"no_existed_user">>}, ?PASSWORD), + + ok = emqx_auth_mnesia_cli:update_user({clientid,?CLIENTID}, ?NPASSWORD), + {error,noexisted} = emqx_auth_mnesia_cli:update_user({clientid, <<"no_existed_user">>}, ?PASSWORD), + + + ?assertMatch([{?TABLE, {username, ?USERNAME}, _Password, _InterTime}], emqx_auth_mnesia_cli:lookup_user({username, ?USERNAME})), + ?assertMatch([{?TABLE, {clientid, ?CLIENTID}, _Password, _InterTime}], emqx_auth_mnesia_cli:lookup_user({clientid, ?CLIENTID})), + + User1 = #{username => ?USERNAME, + clientid => undefined, + password => ?NPASSWORD, + zone => external}, + + {ok, #{auth_result := success, + anonymous := false}} = emqx_access_control:authenticate(User1), + + {error,password_error} = emqx_access_control:authenticate(User1#{password => <<"error_password">>}), + + ok = emqx_auth_mnesia_cli:remove_user({username,?USERNAME}), + {ok, #{auth_result := success, + anonymous := true }} = emqx_access_control:authenticate(User1), + + User2 = #{clientid => ?CLIENTID, + password => ?NPASSWORD, + zone => external}, + + {ok, #{auth_result := success, + anonymous := false}} = emqx_access_control:authenticate(User2), + + {error,password_error} = emqx_access_control:authenticate(User2#{password => <<"error_password">>}), + + ok = emqx_auth_mnesia_cli:remove_user({clientid,?CLIENTID}), + {ok, #{auth_result := success, + anonymous := true }} = emqx_access_control:authenticate(User2), + + [] = emqx_auth_mnesia_cli:all_users(). + +t_auth_clientid_cli(_) -> + clean_all_users(), + + HashType = application:get_env(emqx_auth_mnesia, password_hash, sha256), + + emqx_auth_mnesia_cli:auth_clientid_cli(["add", ?CLIENTID, ?PASSWORD]), + [{_, {clientid, ?CLIENTID}, <>, _}] = emqx_auth_mnesia_cli:lookup_user({clientid, ?CLIENTID}), + ?assertEqual(Hash, emqx_passwd:hash(HashType, <>)), + + emqx_auth_mnesia_cli:auth_clientid_cli(["update", ?CLIENTID, ?NPASSWORD]), + [{_, {clientid, ?CLIENTID}, <>, _}] = emqx_auth_mnesia_cli:lookup_user({clientid, ?CLIENTID}), + ?assertEqual(Hash1, emqx_passwd:hash(HashType, <>)), + + emqx_auth_mnesia_cli:auth_clientid_cli(["del", ?CLIENTID]), + ?assertEqual([], emqx_auth_mnesia_cli:lookup_user(?CLIENTID)), + + emqx_auth_mnesia_cli:auth_clientid_cli(["add", "user1", "pass1"]), + emqx_auth_mnesia_cli:auth_clientid_cli(["add", "user2", "pass2"]), + ?assertEqual(2, length(emqx_auth_mnesia_cli:auth_clientid_cli(["list"]))), + + emqx_auth_mnesia_cli:auth_clientid_cli(usage). + +t_auth_username_cli(_) -> + clean_all_users(), + + HashType = application:get_env(emqx_auth_mnesia, password_hash, sha256), + + emqx_auth_mnesia_cli:auth_username_cli(["add", ?USERNAME, ?PASSWORD]), + [{_, {username, ?USERNAME}, <>, _}] = emqx_auth_mnesia_cli:lookup_user({username, ?USERNAME}), + ?assertEqual(Hash, emqx_passwd:hash(HashType, <>)), + + emqx_auth_mnesia_cli:auth_username_cli(["update", ?USERNAME, ?NPASSWORD]), + [{_, {username, ?USERNAME}, <>, _}] = emqx_auth_mnesia_cli:lookup_user({username, ?USERNAME}), + ?assertEqual(Hash1, emqx_passwd:hash(HashType, <>)), + + emqx_auth_mnesia_cli:auth_username_cli(["del", ?USERNAME]), + ?assertEqual([], emqx_auth_mnesia_cli:lookup_user(?USERNAME)), + + emqx_auth_mnesia_cli:auth_username_cli(["add", "user1", "pass1"]), + emqx_auth_mnesia_cli:auth_username_cli(["add", "user2", "pass2"]), + ?assertEqual(2, length(emqx_auth_mnesia_cli:auth_username_cli(["list"]))), + + emqx_auth_mnesia_cli:auth_username_cli(usage). + + +t_clientid_rest_api(_Config) -> + clean_all_users(), + + {ok, Result1} = request_http_rest_list(["auth_clientid"]), + [] = get_http_data(Result1), + + Params1 = #{<<"clientid">> => ?CLIENTID, <<"password">> => ?PASSWORD}, + {ok, _} = request_http_rest_add(["auth_clientid"], Params1), + + Params2 = #{<<"clientid">> => ?CLIENTID, <<"password">> => ?NPASSWORD}, + {ok, _} = request_http_rest_update(["auth_clientid/" ++ binary_to_list(?CLIENTID)], Params2), + + {ok, Result2} = request_http_rest_lookup(["auth_clientid/" ++ binary_to_list(?CLIENTID)]), + ?assertMatch(#{<<"clientid">> := ?CLIENTID}, get_http_data(Result2)), + + Params3 = [ #{<<"clientid">> => ?CLIENTID, <<"password">> => ?PASSWORD} + , #{<<"clientid">> => <<"clientid1">>, <<"password">> => ?PASSWORD} + , #{<<"clientid">> => <<"clientid2">>, <<"password">> => ?PASSWORD} + ], + {ok, Result3} = request_http_rest_add(["auth_clientid"], Params3), + ?assertMatch(#{ ?CLIENTID := <<"{error,existed}">> + , <<"clientid1">> := <<"ok">> + , <<"clientid2">> := <<"ok">> + }, get_http_data(Result3)), + + {ok, Result4} = request_http_rest_list(["auth_clientid"]), + ?assertEqual(3, length(get_http_data(Result4))), + + {ok, _} = request_http_rest_delete(["auth_clientid/" ++ binary_to_list(?CLIENTID)]), + {ok, Result5} = request_http_rest_lookup(["auth_clientid/" ++ binary_to_list(?CLIENTID)]), + ?assertMatch(#{}, get_http_data(Result5)). + +t_username_rest_api(_Config) -> + clean_all_users(), + + {ok, Result1} = request_http_rest_list(["auth_username"]), + [] = get_http_data(Result1), + + Params1 = #{<<"username">> => ?USERNAME, <<"password">> => ?PASSWORD}, + {ok, _} = request_http_rest_add(["auth_username"], Params1), + + Params2 = #{<<"username">> => ?USERNAME, <<"password">> => ?NPASSWORD}, + {ok, _} = request_http_rest_update(["auth_username/" ++ binary_to_list(?USERNAME)], Params2), + + {ok, Result2} = request_http_rest_lookup(["auth_username/" ++ binary_to_list(?USERNAME)]), + ?assertMatch(#{<<"username">> := ?USERNAME}, get_http_data(Result2)), + + Params3 = [ #{<<"username">> => ?USERNAME, <<"password">> => ?PASSWORD} + , #{<<"username">> => <<"username1">>, <<"password">> => ?PASSWORD} + , #{<<"username">> => <<"username2">>, <<"password">> => ?PASSWORD} + ], + {ok, Result3} = request_http_rest_add(["auth_username"], Params3), + ?assertMatch(#{ ?USERNAME := <<"{error,existed}">> + , <<"username1">> := <<"ok">> + , <<"username2">> := <<"ok">> + }, get_http_data(Result3)), + + {ok, Result4} = request_http_rest_list(["auth_username"]), + ?assertEqual(3, length(get_http_data(Result4))), + + {ok, _} = request_http_rest_delete(["auth_username/" ++ binary_to_list(?USERNAME)]), + {ok, Result5} = request_http_rest_lookup(["auth_username/" ++ binary_to_list(?USERNAME)]), + ?assertMatch(#{}, get_http_data(Result5)). + +%%------------------------------------------------------------------------------ +%% Helpers +%%------------------------------------------------------------------------------ + +clean_all_users() -> + [ mnesia:dirty_delete({emqx_user, Login}) + || Login <- mnesia:dirty_all_keys(emqx_user)]. + +%%-------------------------------------------------------------------- +%% HTTP Request +%%-------------------------------------------------------------------- + +request_http_rest_list(Path) -> + request_api(get, uri(Path), default_auth_header()). + +request_http_rest_lookup(Path) -> + request_api(get, uri([Path]), default_auth_header()). + +request_http_rest_add(Path, Params) -> + request_api(post, uri(Path), [], default_auth_header(), Params). + +request_http_rest_update(Path, Params) -> + request_api(put, uri([Path]), [], default_auth_header(), Params). + +request_http_rest_delete(Login) -> + request_api(delete, uri([Login]), default_auth_header()). + +uri() -> uri([]). +uri(Parts) when is_list(Parts) -> + NParts = [b2l(E) || E <- Parts], + ?HOST ++ filename:join([?BASE_PATH, ?API_VERSION | NParts]). + +%% @private +b2l(B) when is_binary(B) -> + binary_to_list(B); +b2l(L) when is_list(L) -> + L. diff --git a/apps/emqx_auth_mongo/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_mongo/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..94217cacb --- /dev/null +++ b/apps/emqx_auth_mongo/.github/workflows/run_test_cases.yaml @@ -0,0 +1,59 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + strategy: + matrix: + mongo_tag: + - 3 + - 4 + network_type: + - ipv4 + - ipv6 + connect_type: + - ssl + - tcp + + steps: + - name: install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + - uses: actions/checkout@v1 + - name: run test cases + env: + MONGO_TAG: ${{ matrix.mongo_tag }} + NETWORK_TYPE: ${{ matrix.network_type }} + CONNECT_TYPE: ${{ matrix.connect_type }} + run: | + set -e -u -x + if [ "$NETWORK_TYPE" = "ipv6" ];then docker network create --driver bridge --ipv6 --subnet fd15:555::/64 tests_emqx_bridge --attachable; fi + if [ "$CONNECT_TYPE" = "ssl" ]; then + docker-compose -f ./docker-compose-ssl.yml -p tests up -d + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "echo 'auth.mongo.ssl = true' >> /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "echo 'auth.mongo.ssl_opts.cacertfile = /emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem' >> /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "echo 'auth.mongo.ssl_opts.certfile = /emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem' >> /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "echo 'auth.mongo.ssl_opts.keyfile = /emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem' >> /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + else + docker-compose -f ./docker-compose.yml -p tests up -d + fi + if [ "$NETWORK_TYPE" != "ipv6" ];then + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "sed -i '/auth.mongo.server/c auth.mongo.server = mongo_server:27017' /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + else + ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=tests_mongo_server_1 -q)) + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "sed -i '/auth.mongo.server/c auth.mongo.server = $ipv6_address:27017' /emqx_auth_mongo/etc/emqx_auth_mongo.conf" + fi + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_mongo xref" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_mongo eunit" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_mongo ct" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_mongo cover" + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs_mongo${{ matrix.mongo_tag}}_${{ matrix.network_type }} + path: _build/test/logs + diff --git a/apps/emqx_auth_mongo/.gitignore b/apps/emqx_auth_mongo/.gitignore new file mode 100644 index 000000000..a6635ffa0 --- /dev/null +++ b/apps/emqx_auth_mongo/.gitignore @@ -0,0 +1,24 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.DS_Store +.erlang.mk/ +emqx_auth_mongo.d +ct.coverdata +logs/ +test/ct.cover.spec +data/ +cover/ +eunit.coverdata +_build/ +rebar.lock +erlang.mk +etc/emqx_auth_mongo.conf.rendered +.rebar3 diff --git a/apps/emqx_auth_mongo/CHANGES b/apps/emqx_auth_mongo/CHANGES new file mode 100644 index 000000000..4bddd63a9 --- /dev/null +++ b/apps/emqx_auth_mongo/CHANGES @@ -0,0 +1,31 @@ + +2.0.7 (2017-01-20) +------------------ + +Tag 2.0.7 - use `cuttlefish:unset()` for commented ACL/super config + +2.0.1 (2016-11-30) +------------------ + +Tag 2.0.1 + +2.0-beta.1 (2016-08-24) +----------------------- + +gen_conf + +1.1.3-beta (2016-08-19) +----------------------- + +Bump version to 1.1.3 + +1.1.2-beta (2016-06-30) +----------------------- + +Bump version to 1.1.2 + +1.1-beta (2016-05-28) +--------------------- + +First public release + diff --git a/apps/emqx_auth_mongo/LICENSE b/apps/emqx_auth_mongo/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_mongo/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_mongo/Makefile b/apps/emqx_auth_mongo/Makefile new file mode 100644 index 000000000..8e8a20cb0 --- /dev/null +++ b/apps/emqx_auth_mongo/Makefile @@ -0,0 +1,37 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_mongo.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_mongo.conf -i priv/emqx_auth_mongo.schema -d data diff --git a/apps/emqx_auth_mongo/README.md b/apps/emqx_auth_mongo/README.md new file mode 100644 index 000000000..3bacfca5b --- /dev/null +++ b/apps/emqx_auth_mongo/README.md @@ -0,0 +1,192 @@ +emqx_auth_mongo +=============== + +EMQ X Authentication/ACL with MongoDB + +Build the Plugin +---------------- + +``` +make & make tests +``` + +Configuration +------------- + +File: etc/emqx_auth_mongo.conf + +``` +## MongoDB Topology Type. +## +## Value: single | unknown | sharded | rs +auth.mongo.type = single + +## Sets the set name if type is rs. +## +## Value: String +## auth.mongo.rs_set_name = + +## MongoDB server list. +## +## Value: String +## +## Examples: 127.0.0.1:27017,127.0.0.2:27017... +auth.mongo.server = 127.0.0.1:27017 + +## MongoDB pool size +## +## Value: Number +auth.mongo.pool = 8 + +## MongoDB login user. +## +## Value: String +## auth.mongo.login = + +## MongoDB password. +## +## Value: String +## auth.mongo.password = + +## MongoDB AuthSource +## +## Value: String +## Default: mqtt +## auth.mongo.auth_source = admin + +## MongoDB database +## +## Value: String +auth.mongo.database = mqtt + +## MongoDB write mode. +## +## Value: unsafe | safe +## auth.mongo.w_mode = + +## Mongo read mode. +## +## Value: master | slave_ok +## auth.mongo.r_mode = + +## MongoDB topology options. +auth.mongo.topology.pool_size = 1 +auth.mongo.topology.max_overflow = 0 +## auth.mongo.topology.overflow_ttl = 1000 +## auth.mongo.topology.overflow_check_period = 1000 +## auth.mongo.topology.local_threshold_ms = 1000 +## auth.mongo.topology.connect_timeout_ms = 20000 +## auth.mongo.topology.socket_timeout_ms = 100 +## auth.mongo.topology.server_selection_timeout_ms = 30000 +## auth.mongo.topology.wait_queue_timeout_ms = 1000 +## auth.mongo.topology.heartbeat_frequency_ms = 10000 +## auth.mongo.topology.min_heartbeat_frequency_ms = 1000 + +## Authentication query. +auth.mongo.auth_query.collection = mqtt_user + +auth.mongo.auth_query.password_field = password + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.mongo.auth_query.password_hash = sha256 + +## sha256 with salt suffix +## auth.mongo.auth_query.password_hash = sha256,salt + +## sha256 with salt prefix +## auth.mongo.auth_query.password_hash = salt,sha256 + +## bcrypt with salt prefix +## auth.mongo.auth_query.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.mongo.auth_query.password_hash = pbkdf2,sha256,1000,20 + +auth.mongo.auth_query.selector = username=%u + +## Enable superuser query. +auth.mongo.super_query = on + +auth.mongo.super_query.collection = mqtt_user + +auth.mongo.super_query.super_field = is_superuser + +auth.mongo.super_query.selector = username=%u + +## Enable ACL query. +auth.mongo.acl_query = on + +auth.mongo.acl_query.collection = mqtt_acl + +auth.mongo.acl_query.selector = username=%u +``` + +Load the Plugin +--------------- + +``` +./bin/emqx_ctl plugins load emqx_auth_mongo +``` + +MongoDB Database +---------------- + +``` +use mqtt +db.createCollection("mqtt_user") +db.createCollection("mqtt_acl") +db.mqtt_user.ensureIndex({"username":1}) +``` + +mqtt_user Collection +-------------------- + +``` +{ + username: "user", + password: "password hash", + salt: "password salt", + is_superuser: boolean (true, false), + created: "datetime" +} +``` + +For example: +``` +db.mqtt_user.insert({username: "test", password: "password hash", salt: "password salt", is_superuser: false}) +db.mqtt_user.insert({username: "root", is_superuser: true}) +``` + +mqtt_acl Collection +------------------- + +``` +{ + username: "username", + clientid: "clientid", + publish: ["topic1", "topic2", ...], + subscribe: ["subtop1", "subtop2", ...], + pubsub: ["topic/#", "topic1", ...] +} +``` + +For example: + +``` +db.mqtt_acl.insert({username: "test", publish: ["t/1", "t/2"], subscribe: ["user/%u", "client/%c"]}) +db.mqtt_acl.insert({username: "admin", pubsub: ["#"]}) +``` + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_auth_mongo/docker-compose-ssl.yml b/apps/emqx_auth_mongo/docker-compose-ssl.yml new file mode 100644 index 000000000..7af0981b1 --- /dev/null +++ b/apps/emqx_auth_mongo/docker-compose-ssl.yml @@ -0,0 +1,31 @@ +version: '3' + +services: + erlang: + image: erlang:22.1 + volumes: + - ./:/emqx_auth_mongo + networks: + - emqx_bridge + depends_on: + - mongo_server + tty: true + + mongo_server: + image: mongo:${MONGO_TAG} + restart: always + environment: + MONGO_INITDB_DATABASE: mqtt + volumes: + - ./test/emqx_auth_mongo_SUITE_data/mongodb.pem/:/etc/certs/mongodb.pem + networks: + - emqx_bridge + command: + --ipv6 + --bind_ip_all + --sslMode requireSSL + --sslPEMKeyFile /etc/certs/mongodb.pem + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_mongo/docker-compose.yml b/apps/emqx_auth_mongo/docker-compose.yml new file mode 100644 index 000000000..9ff9cce23 --- /dev/null +++ b/apps/emqx_auth_mongo/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3' + +services: + erlang: + image: erlang:22.1 + volumes: + - ./:/emqx_auth_mongo + networks: + - emqx_bridge + depends_on: + - mongo_server + tty: true + + mongo_server: + image: mongo:${MONGO_TAG} + restart: always + environment: + MONGO_INITDB_DATABASE: mqtt + networks: + - emqx_bridge + command: + --ipv6 + --bind_ip_all + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf b/apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf new file mode 100644 index 000000000..cf1614efa --- /dev/null +++ b/apps/emqx_auth_mongo/etc/emqx_auth_mongo.conf @@ -0,0 +1,172 @@ +##-------------------------------------------------------------------- +## MongoDB Auth/ACL Plugin +##-------------------------------------------------------------------- + +## MongoDB Topology Type. +## +## Value: single | unknown | sharded | rs +auth.mongo.type = single + +## The set name if type is rs. +## +## Value: String +## auth.mongo.rs_set_name = + +## MongoDB server list. +## +## Value: String +## +## Examples: 127.0.0.1:27017,127.0.0.2:27017... +auth.mongo.server = 127.0.0.1:27017 + +## MongoDB pool size +## +## Value: Number +auth.mongo.pool = 8 + +## MongoDB login user. +## +## Value: String +## auth.mongo.login = + +## MongoDB password. +## +## Value: String +## auth.mongo.password = + +## MongoDB AuthSource +## +## Value: String +## Default: mqtt +## auth.mongo.auth_source = admin + +## MongoDB database +## +## Value: String +auth.mongo.database = mqtt + +## MongoDB query timeout +## +## Value: Duration +## auth.mongo.query_timeout = 5s + +## Whether to enable SSL connection. +## +## Value: true | false +## auth.mongo.ssl = false + +## SSL keyfile. +## +## Value: File +## auth.mongo.ssl_opts.keyfile = + +## SSL certfile. +## +## Value: File +## auth.mongo.ssl_opts.certfile = + +## SSL cacertfile. +## +## Value: File +## auth.mongo.ssl_opts.cacertfile = + +## MongoDB write mode. +## +## Value: unsafe | safe +## auth.mongo.w_mode = + +## Mongo read mode. +## +## Value: master | slave_ok +## auth.mongo.r_mode = + +## MongoDB topology options. +auth.mongo.topology.pool_size = 1 +auth.mongo.topology.max_overflow = 0 +## auth.mongo.topology.overflow_ttl = 1000 +## auth.mongo.topology.overflow_check_period = 1000 +## auth.mongo.topology.local_threshold_ms = 1000 +## auth.mongo.topology.connect_timeout_ms = 20000 +## auth.mongo.topology.socket_timeout_ms = 100 +## auth.mongo.topology.server_selection_timeout_ms = 30000 +## auth.mongo.topology.wait_queue_timeout_ms = 1000 +## auth.mongo.topology.heartbeat_frequency_ms = 10000 +## auth.mongo.topology.min_heartbeat_frequency_ms = 1000 + +## ------------------------------------------------- +## Auth Query +## ------------------------------------------------- +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.mongo.auth_query.password_hash = sha256 + +## sha256 with salt suffix +## auth.mongo.auth_query.password_hash = sha256,salt + +## sha256 with salt prefix +## auth.mongo.auth_query.password_hash = salt,sha256 + +## bcrypt with salt prefix +## auth.mongo.auth_query.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.mongo.auth_query.password_hash = pbkdf2,sha256,1000,20 + +## Authentication query. +auth.mongo.auth_query.collection = mqtt_user + +## Password mainly fields +## +## Value: password | password,salt +auth.mongo.auth_query.password_field = password + +## Authentication Selector. +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## auth.mongo.auth_query.selector = {Field}={Placeholder} +auth.mongo.auth_query.selector = username=%u + +## ------------------------------------------------- +## Super User Query +## ------------------------------------------------- +auth.mongo.super_query.collection = mqtt_user +auth.mongo.super_query.super_field = is_superuser +#auth.mongo.super_query.selector = username=%u, clientid=%c +auth.mongo.super_query.selector = username=%u + +## ACL Selector. +## +## Multiple selectors could be combined with '$or' +## when query acl from mongo. +## +## e.g. +## +## With following 2 selectors configured: +## +## auth.mongo.acl_query.selector.1 = username=%u +## auth.mongo.acl_query.selector.2 = username=$all +## +## And if a client connected using username 'ilyas', +## then the following mongo command will be used to +## retrieve acl entries: +## +## db.mqtt_acl.find({$or: [{username: "ilyas"}, {username: "$all"}]}); +## +## Variables: +## - %u: username +## - %c: clientid +## +## Examples: +## +## auth.mongo.acl_query.selector.1 = username=%u,clientid=%c +## auth.mongo.acl_query.selector.2 = username=$all +## auth.mongo.acl_query.selector.3 = clientid=$all +auth.mongo.acl_query.collection = mqtt_acl +auth.mongo.acl_query.selector = username=%u diff --git a/apps/emqx_auth_mongo/include/emqx_auth_mongo.hrl b/apps/emqx_auth_mongo/include/emqx_auth_mongo.hrl new file mode 100644 index 000000000..97ecf9973 --- /dev/null +++ b/apps/emqx_auth_mongo/include/emqx_auth_mongo.hrl @@ -0,0 +1,37 @@ + +-define(APP, emqx_auth_mongo). + +-define(DEFAULT_SELECTORS, [{<<"username">>, <<"%u">>}]). + +-record(superquery, {collection = <<"mqtt_user">>, + field = <<"is_superuser">>, + selector = {<<"username">>, <<"%u">>}}). + +-record(authquery, {collection = <<"mqtt_user">>, + field = <<"password">>, + hash = sha256, + selector = {<<"username">>, <<"%u">>}}). + +-record(aclquery, {collection = <<"mqtt_acl">>, + selector = {<<"username">>, <<"%u">>}}). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_mongo/priv/emqx_auth_mongo.schema b/apps/emqx_auth_mongo/priv/emqx_auth_mongo.schema new file mode 100644 index 000000000..9b331e6c4 --- /dev/null +++ b/apps/emqx_auth_mongo/priv/emqx_auth_mongo.schema @@ -0,0 +1,292 @@ +%%-*- mode: erlang -*- +%% emqx_auth_mongo config mapping + +{mapping, "auth.mongo.type", "emqx_auth_mongo.server", [ + {default, single}, + {datatype, {enum, [single, unknown, sharded, rs]}} +]}. + +{mapping, "auth.mongo.rs_set_name", "emqx_auth_mongo.server", [ + {default, "mqtt"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.server", "emqx_auth_mongo.server", [ + {default, "127.0.0.1:27017"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.pool", "emqx_auth_mongo.server", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.mongo.login", "emqx_auth_mongo.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mongo.password", "emqx_auth_mongo.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mongo.database", "emqx_auth_mongo.server", [ + {default, "mqtt"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.auth_source", "emqx_auth_mongo.server", [ + {default, "mqtt"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.ssl", "emqx_auth_mongo.server", [ + {default, false}, + {datatype, {enum, [true, false]}} +]}. + +{mapping, "auth.mongo.ssl_opts.keyfile", "emqx_auth_mongo.server", [ + {datatype, string} +]}. + +{mapping, "auth.mongo.ssl_opts.certfile", "emqx_auth_mongo.server", [ + {datatype, string} +]}. + +{mapping, "auth.mongo.ssl_opts.cacertfile", "emqx_auth_mongo.server", [ + {datatype, string} +]}. + +{mapping, "auth.mongo.w_mode", "emqx_auth_mongo.server", [ + {default, undef}, + {datatype, {enum, [safe, unsafe, undef]}} +]}. + +{mapping, "auth.mongo.r_mode", "emqx_auth_mongo.server", [ + {default, undef}, + {datatype, {enum, [master, slave_ok, undef]}} +]}. + +{mapping, "auth.mongo.topology.$name", "emqx_auth_mongo.server", [ + {datatype, integer} +]}. + +{translation, "emqx_auth_mongo.server", fun(Conf) -> + H = cuttlefish:conf_get("auth.mongo.server", Conf), + Hosts = string:tokens(H, ","), + Type0 = cuttlefish:conf_get("auth.mongo.type", Conf), + Pool = cuttlefish:conf_get("auth.mongo.pool", Conf), + Login = cuttlefish:conf_get("auth.mongo.login", Conf), + Passwd = cuttlefish:conf_get("auth.mongo.password", Conf), + DB = cuttlefish:conf_get("auth.mongo.database", Conf), + AuthSrc = cuttlefish:conf_get("auth.mongo.auth_source", Conf), + R = cuttlefish:conf_get("auth.mongo.w_mode", Conf), + W = cuttlefish:conf_get("auth.mongo.r_mode", Conf), + Login0 = case Login =:= [] of + true -> []; + false -> [{login, list_to_binary(Login)}] + end, + Passwd0 = case Passwd =:= [] of + true -> []; + false -> [{password, list_to_binary(Passwd)}] + end, + W0 = case W =:= undef of + true -> []; + false -> [{w_mode, W}] + end, + R0 = case R =:= undef of + true -> []; + false -> [{r_mode, R}] + end, + Ssl = case cuttlefish:conf_get("auth.mongo.ssl", Conf) of + true -> + Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end, + SslOpts = fun(Prefix) -> + Filter([{keyfile, cuttlefish:conf_get(Prefix ++ ".keyfile", Conf, undefined)}, + {certfile, cuttlefish:conf_get(Prefix ++ ".certfile", Conf, undefined)}, + {cacertfile, cuttlefish:conf_get(Prefix ++ ".cacertfile", Conf, undefined)}]) + end, + [{ssl, true}, {ssl_opts, SslOpts("auth.mongo.ssl_opts")}]; + false -> + [] + end, + WorkerOptions = [{database, list_to_binary(DB)}, {auth_source, list_to_binary(AuthSrc)}] + ++ Login0 ++ Passwd0 ++ W0 ++ R0 ++ Ssl, + + Vars = cuttlefish_variable:fuzzy_matches(["auth", "mongo", "topology", "$name"], Conf), + Options = lists:map(fun({_, Name}) -> + Name2 = case Name of + "local_threshold_ms" -> "localThresholdMS"; + "connect_timeout_ms" -> "connectTimeoutMS"; + "socket_timeout_ms" -> "socketTimeoutMS"; + "server_selection_timeout_ms" -> "serverSelectionTimeoutMS"; + "wait_queue_timeout_ms" -> "waitQueueTimeoutMS"; + "heartbeat_frequency_ms" -> "heartbeatFrequencyMS"; + "min_heartbeat_frequency_ms" -> "minHeartbeatFrequencyMS"; + _ -> Name + end, + {list_to_atom(Name2), cuttlefish:conf_get("auth.mongo.topology."++Name, Conf)} + end, Vars), + + Type = case Type0 =:= rs of + true -> {Type0, list_to_binary(cuttlefish:conf_get("auth.mongo.rs_set_name", Conf))}; + false -> Type0 + end, + [{type, Type}, + {hosts, Hosts}, + {options, Options}, + {worker_options, WorkerOptions}, + {auto_reconnect, 1}, + {pool_size, Pool}] +end}. + +%% The mongodb operation timeout is specified by the value of `cursor_timeout` from application config, +%% or `infinity` if `cursor_timeout` not specified +{mapping, "auth.mongo.query_timeout", "mongodb.cursor_timeout", [ + {datatype, string} +]}. + +{translation, "mongodb.cursor_timeout", fun(Conf) -> + case cuttlefish:conf_get("auth.mongo.query_timeout", Conf, undefined) of + undefined -> infinity; + Duration -> + case cuttlefish_duration:parse(Duration, ms) of + {error, Reason} -> error(Reason); + Ms when is_integer(Ms) -> Ms + end + end +end}. + +{mapping, "auth.mongo.auth_query.collection", "emqx_auth_mongo.auth_query", [ + {default, "mqtt_user"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.auth_query.password_field", "emqx_auth_mongo.auth_query", [ + {default, "password"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.auth_query.password_hash", "emqx_auth_mongo.auth_query", [ + {datatype, string} +]}. + +{mapping, "auth.mongo.auth_query.selector", "emqx_auth_mongo.auth_query", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_mongo.auth_query", fun(Conf) -> + case cuttlefish:conf_get("auth.mongo.auth_query.collection", Conf) of + undefined -> cuttlefish:unset(); + Collection -> + PasswordField = cuttlefish:conf_get("auth.mongo.auth_query.password_field", Conf), + PasswordHash = cuttlefish:conf_get("auth.mongo.auth_query.password_hash", Conf), + SelectorStr = cuttlefish:conf_get("auth.mongo.auth_query.selector", Conf), + SelectorList = + lists:map(fun(Selector) -> + case string:tokens(Selector, "=") of + [Field, Val] -> {list_to_binary(Field), list_to_binary(Val)}; + _ -> {<<"username">>, <<"%u">>} + end + end, string:tokens(SelectorStr, ", ")), + + PasswordFields = [list_to_binary(Field) || Field <- string:tokens(PasswordField, ",")], + HashValue = + case string:tokens(PasswordHash, ",") of + [Hash] -> list_to_atom(Hash); + [Prefix, Suffix] -> {list_to_atom(Prefix), list_to_atom(Suffix)}; + [Hash, MacFun, Iterations, Dklen] -> {list_to_atom(Hash), list_to_atom(MacFun), list_to_integer(Iterations), list_to_integer(Dklen)}; + _ -> plain + end, + [{collection, Collection}, + {password_field, PasswordFields}, + {password_hash, HashValue}, + {selector, SelectorList}] + end +end}. + +{mapping, "auth.mongo.super_query", "emqx_auth_mongo.super_query", [ + {default, off}, + {datatype, flag} +]}. + +{mapping, "auth.mongo.super_query.collection", "emqx_auth_mongo.super_query", [ + {default, "mqtt_user"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.super_query.super_field", "emqx_auth_mongo.super_query", [ + {default, "is_superuser"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.super_query.selector", "emqx_auth_mongo.super_query", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_mongo.super_query", fun(Conf) -> + case cuttlefish:conf_get("auth.mongo.super_query.collection", Conf) of + undefined -> cuttlefish:unset(); + Collection -> + SuperField = cuttlefish:conf_get("auth.mongo.super_query.super_field", Conf), + SelectorStr = cuttlefish:conf_get("auth.mongo.super_query.selector", Conf), + SelectorList = + lists:map(fun(Selector) -> + case string:tokens(Selector, "=") of + [Field, Val] -> {list_to_binary(Field), list_to_binary(Val)}; + _ -> {<<"username">>, <<"%u">>} + end + end, string:tokens(SelectorStr, ", ")), + [{collection, Collection}, {super_field, SuperField}, {selector, SelectorList}] + end +end}. + +{mapping, "auth.mongo.acl_query", "emqx_auth_mongo.acl_query", [ + {default, off}, + {datatype, flag} +]}. + +{mapping, "auth.mongo.acl_query.collection", "emqx_auth_mongo.acl_query", [ + {default, "mqtt_user"}, + {datatype, string} +]}. + +{mapping, "auth.mongo.acl_query.selector", "emqx_auth_mongo.acl_query", [ + {default, ""}, + {datatype, string} +]}. +{mapping, "auth.mongo.acl_query.selector.$id", "emqx_auth_mongo.acl_query", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_mongo.acl_query", fun(Conf) -> + case cuttlefish:conf_get("auth.mongo.acl_query.collection", Conf) of + undefined -> cuttlefish:unset(); + Collection -> + SelectorStrList = + lists:map( + fun + ({["auth","mongo","acl_query","selector"], ConfEntry}) -> + ConfEntry; + ({["auth","mongo","acl_query","selector", _], ConfEntry}) -> + ConfEntry + end, + cuttlefish_variable:filter_by_prefix("auth.mongo.acl_query.selector", Conf)), + SelectorListList = + lists:map( + fun(SelectorStr) -> + lists:map(fun(Selector) -> + case string:tokens(Selector, "=") of + [Field, Val] -> {list_to_binary(Field), list_to_binary(Val)}; + _ -> {<<"username">>, <<"%u">>} + end + end, string:tokens(SelectorStr, ", ")) + end, + SelectorStrList), + [{collection, Collection}, {selector, SelectorListList}] + end +end}. diff --git a/apps/emqx_auth_mongo/rebar.config b/apps/emqx_auth_mongo/rebar.config new file mode 100644 index 000000000..b946b5a95 --- /dev/null +++ b/apps/emqx_auth_mongo/rebar.config @@ -0,0 +1,35 @@ +{deps, + [{mongodb, {git,"https://github.com/emqx/mongodb-erlang", {tag, "v3.0.7"}}}, + {ecpool, {git,"https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqx_passwd, {git, "https://github.com/emqx/emqx-passwd", {tag, "v1.1.1"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + compressed, + {parse_transform} + ]}. +{overrides, [{add, [{erl_opts, [compressed]}]}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions + ]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helper, {git, "https://github.com/emqx/emqx-ct-helper", {tag, "1.2.2"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}} + ]}, + {erl_opts, [debug_info]} + ]} + ]}. diff --git a/apps/emqx_auth_mongo/rebar.config.script b/apps/emqx_auth_mongo/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_mongo/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl b/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl new file mode 100644 index 000000000..db6268f69 --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_acl_mongo.erl @@ -0,0 +1,90 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mongo). + +-include("emqx_auth_mongo.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +%% ACL callbacks +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(#{username := <<$$, _/binary>>}, _PubSub, _Topic, _AclResult, _State) -> + ok; + +check_acl(ClientInfo, PubSub, Topic, _AclResult, #{aclquery := AclQuery , pool := Pool}) -> + #aclquery{collection = Coll, selector = SelectorList} = AclQuery, + SelectorMapList = + lists:map(fun(Selector) -> + maps:from_list(emqx_auth_mongo:replvars(Selector, ClientInfo)) + end, SelectorList), + case emqx_auth_mongo:query_multi(Pool, Coll, SelectorMapList) of + [] -> ok; + Rows -> + try match(ClientInfo, Topic, topics(PubSub, Rows)) of + matched -> emqx_metrics:inc(?ACL_METRICS(allow)), + {stop, allow}; + nomatch -> emqx_metrics:inc(?ACL_METRICS(deny)), + {stop, deny} + catch + _Err:Reason-> + ?LOG(error, "[MongoDB] Check mongo ~p ACL failed, got ACL config: ~p, error: :~p", + [PubSub, Rows, Reason]), + emqx_metrics:inc(?ACL_METRICS(ignore)), + ignore + end + end. + + +match(_ClientInfo, _Topic, []) -> + nomatch; +match(ClientInfo, Topic, [TopicFilter|More]) -> + case emqx_topic:match(Topic, feedvar(ClientInfo, TopicFilter)) of + true -> matched; + false -> match(ClientInfo, Topic, More) + end. + +topics(publish, Rows) -> + lists:foldl(fun(Row, Acc) -> + Topics = maps:get(<<"publish">>, Row, []) ++ maps:get(<<"pubsub">>, Row, []), + lists:umerge(Acc, Topics) + end, [], Rows); + +topics(subscribe, Rows) -> + lists:foldl(fun(Row, Acc) -> + Topics = maps:get(<<"subscribe">>, Row, []) ++ maps:get(<<"pubsub">>, Row, []), + lists:umerge(Acc, Topics) + end, [], Rows). + +feedvar(#{clientid := ClientId, username := Username}, Str) -> + lists:foldl(fun({Var, Val}, Acc) -> + feedvar(Acc, Var, Val) + end, Str, [{"%u", Username}, {"%c", ClientId}]). + +feedvar(Str, _Var, undefined) -> + Str; +feedvar(Str, Var, Val) -> + re:replace(Str, Var, Val, [global, {return, binary}]). + +description() -> "ACL with MongoDB". + diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src new file mode 100644 index 000000000..71bb7fa92 --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_mongo, + [{description, "EMQ X Authentication/ACL with MongoDB"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_mongo_sup]}, + {applications, [kernel,stdlib,mongodb,ecpool,emqx_passwd]}, + {mod, {emqx_auth_mongo_app,[]}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-mongo"} + ]} + ]}. diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src.script b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl b/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl new file mode 100644 index 000000000..3a7deaf87 --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo.erl @@ -0,0 +1,133 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mongo). + +-behaviour(ecpool_worker). + +-include("emqx_auth_mongo.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/types.hrl"). + +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-export([ replvar/2 + , replvars/2 + , connect/1 + , query/3 + , query_multi/3 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo = #{password := Password}, AuthResult, + #{authquery := AuthQuery, superquery := SuperQuery, pool := Pool}) -> + #authquery{collection = Collection, field = Fields, + hash = HashType, selector = Selector} = AuthQuery, + case query(Pool, Collection, maps:from_list(replvars(Selector, ClientInfo))) of + undefined -> emqx_metrics:inc(?AUTH_METRICS(ignore)); + {error, Reason} -> + ?LOG(error, "[MongoDB] Can't connect to MongoDB server: ~0p", [Reason]), + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => not_authorized, anonymous => false}}; + UserMap -> + Result = case [maps:get(Field, UserMap, undefined) || Field <- Fields] of + [undefined] -> {error, password_error}; + [PassHash] -> + check_pass({PassHash, Password}, HashType); + [PassHash, Salt|_] -> + check_pass({PassHash, Salt, Password}, HashType) + end, + case Result of + ok -> + ok = emqx_metrics:inc(?AUTH_METRICS(success)), + {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), + anonymous => false, + auth_result => success}}; + {error, Error} -> + ?LOG(error, "[MongoDB] check auth fail: ~p", [Error]), + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => Error, anonymous => false}} + end + end. + +check_pass(Password, HashType) -> + case emqx_passwd:check_pass(Password, HashType) of + ok -> ok; + {error, _Reason} -> {error, not_authorized} + end. + +description() -> "Authentication with MongoDB". + +%%-------------------------------------------------------------------- +%% Is Superuser? +%%-------------------------------------------------------------------- + +-spec(is_superuser(string(), maybe(#superquery{}), emqx_types:clientinfo()) -> boolean()). +is_superuser(_Pool, undefined, _ClientInfo) -> + false; +is_superuser(Pool, #superquery{collection = Coll, field = Field, selector = Selector}, ClientInfo) -> + Row = query(Pool, Coll, maps:from_list(replvars(Selector, ClientInfo))), + case maps:get(Field, Row, false) of + true -> true; + _False -> false + end. + +replvars(VarList, ClientInfo) -> + lists:map(fun(Var) -> replvar(Var, ClientInfo) end, VarList). + +replvar({Field, <<"%u">>}, #{username := Username}) -> + {Field, Username}; +replvar({Field, <<"%c">>}, #{clientid := ClientId}) -> + {Field, ClientId}; +replvar({Field, <<"%C">>}, #{cn := CN}) -> + {Field, CN}; +replvar({Field, <<"%d">>}, #{dn := DN}) -> + {Field, DN}; +replvar(Selector, _ClientInfo) -> + Selector. + +%%-------------------------------------------------------------------- +%% MongoDB Connect/Query +%%-------------------------------------------------------------------- + +connect(Opts) -> + Type = proplists:get_value(type, Opts, single), + Hosts = proplists:get_value(hosts, Opts, []), + Options = proplists:get_value(options, Opts, []), + WorkerOptions = proplists:get_value(worker_options, Opts, []), + mongo_api:connect(Type, Hosts, Options, WorkerOptions). + +query(Pool, Collection, Selector) -> + ecpool:with_client(Pool, fun(Conn) -> mongo_api:find_one(Conn, Collection, Selector, #{}) end). + +query_multi(Pool, Collection, SelectorList) -> + lists:reverse(lists:flatten(lists:foldl(fun(Selector, Acc1) -> + Batch = ecpool:with_client(Pool, fun(Conn) -> + case mongo_api:find(Conn, Collection, Selector, #{}) of + [] -> []; + {ok, Cursor} -> + mc_cursor:foldl(fun(O, Acc2) -> [O|Acc2] end, [], Cursor, 1000) + end + end), + [Batch|Acc1] + end, [], SelectorList))). diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo_app.erl b/apps/emqx_auth_mongo/src/emqx_auth_mongo_app.erl new file mode 100644 index 000000000..e13fe30b7 --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo_app.erl @@ -0,0 +1,87 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mongo_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_mongo.hrl"). + +-import(proplists, [get_value/3]). + +%% Application callbacks +-export([ start/2 + , prep_stop/1 + , stop/1 + ]). + +%%-------------------------------------------------------------------- +%% Application callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_mongo_sup:start_link(), + with_env(auth_query, fun reg_authmod/1), + with_env(acl_query, fun reg_aclmod/1), + {ok, Sup}. + +prep_stop(State) -> + ok = emqx:unhook('client.authenticate', fun emqx_auth_mongo:check/3), + ok = emqx:unhook('client.check_acl', fun emqx_acl_mongo:check_acl/5), + State. + +stop(_State) -> + ok. + +reg_authmod(AuthQuery) -> + emqx_auth_mongo:register_metrics(), + SuperQuery = r(super_query, application:get_env(?APP, super_query, undefined)), + ok = emqx:hook('client.authenticate', fun emqx_auth_mongo:check/3, + [#{authquery => AuthQuery, superquery => SuperQuery, pool => ?APP}]). + +reg_aclmod(AclQuery) -> + emqx_acl_mongo:register_metrics(), + ok = emqx:hook('client.check_acl', fun emqx_acl_mongo:check_acl/5, [#{aclquery => AclQuery, pool => ?APP}]). + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +with_env(Name, Fun) -> + case application:get_env(?APP, Name) of + undefined -> ok; + {ok, Config} -> Fun(r(Name, Config)) + end. + +r(super_query, undefined) -> + undefined; +r(super_query, Config) -> + #superquery{collection = list_to_binary(get_value(collection, Config, "mqtt_user")), + field = list_to_binary(get_value(super_field, Config, "is_superuser")), + selector = get_value(selector, Config, ?DEFAULT_SELECTORS)}; + +r(auth_query, Config) -> + #authquery{collection = list_to_binary(get_value(collection, Config, "mqtt_user")), + field = get_value(password_field, Config, [<<"password">>]), + hash = get_value(password_hash, Config, sha256), + selector = get_value(selector, Config, ?DEFAULT_SELECTORS)}; + +r(acl_query, Config) -> + #aclquery{collection = list_to_binary(get_value(collection, Config, "mqtt_acl")), + selector = get_value(selector, Config, [?DEFAULT_SELECTORS])}. + diff --git a/apps/emqx_auth_mongo/src/emqx_auth_mongo_sup.erl b/apps/emqx_auth_mongo/src/emqx_auth_mongo_sup.erl new file mode 100644 index 000000000..dc2c37fd4 --- /dev/null +++ b/apps/emqx_auth_mongo/src/emqx_auth_mongo_sup.erl @@ -0,0 +1,34 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mongo_sup). + +-behaviour(supervisor). + +-include("emqx_auth_mongo.hrl"). + +-export([start_link/0]). + +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + {ok, PoolEnv} = application:get_env(?APP, server), + PoolSpec = ecpool:pool_spec(?APP, ?APP, ?APP, PoolEnv), + {ok, {{one_for_all, 10, 100}, [PoolSpec]}}. + diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE.erl b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE.erl new file mode 100644 index 000000000..dffd5b423 --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE.erl @@ -0,0 +1,173 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mongo_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-define(APP, emqx_auth_mongo). + +-define(POOL(App), ecpool_worker:client(gproc_pool:pick_worker({ecpool, App}))). + +-define(MONGO_CL_ACL, <<"mqtt_acl">>). +-define(MONGO_CL_USER, <<"mqtt_user">>). + +-define(INIT_ACL, [{<<"username">>, <<"testuser">>, <<"clientid">>, <<"null">>, <<"subscribe">>, [<<"#">>]}, + {<<"username">>, <<"dashboard">>, <<"clientid">>, <<"null">>, <<"pubsub">>, [<<"$SYS/#">>]}, + {<<"username">>, <<"user3">>, <<"clientid">>, <<"null">>, <<"publish">>, [<<"a/b/c">>]}]). + +-define(INIT_AUTH, [{<<"username">>, <<"plain">>, <<"password">>, <<"plain">>, <<"salt">>, <<"salt">>, <<"is_superuser">>, true}, + {<<"username">>, <<"md5">>, <<"password">>, <<"1bc29b36f623ba82aaf6724fd3b16718">>, <<"salt">>, <<"salt">>, <<"is_superuser">>, false}, + {<<"username">>, <<"sha">>, <<"password">>, <<"d8f4590320e1343a915b6394170650a8f35d6926">>, <<"salt">>, <<"salt">>, <<"is_superuser">>, false}, + {<<"username">>, <<"sha256">>, <<"password">>, <<"5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e">>, <<"salt">>, <<"salt">>, <<"is_superuser">>, false}, + {<<"username">>, <<"pbkdf2_password">>, <<"password">>, <<"cdedb5281bb2f801565a1122b2563515">>, <<"salt">>, <<"ATHENA.MIT.EDUraeburn">>, <<"is_superuser">>, false}, + {<<"username">>, <<"bcrypt_foo">>, <<"password">>, <<"$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6">>, <<"salt">>, <<"$2a$12$sSS8Eg.ovVzaHzi1nUHYK.">>, <<"is_superuser">>, false} + ]). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> + emqx_ct:all(?MODULE). + +init_per_suite(Cfg) -> + emqx_ct_helpers:start_apps([emqx_auth_mongo], fun set_special_confs/1), + init_mongo_data(), + Cfg. + +end_per_suite(_Cfg) -> + deinit_mongo_data(), + emqx_ct_helpers:stop_apps([emqx_auth_mongo]). + +set_special_confs(emqx) -> + application:set_env(emqx, acl_nomatch, deny), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/acl.conf")), + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); +set_special_confs(_App) -> + ok. + +init_mongo_data() -> + %% Users + {ok, Connection} = ?POOL(?APP), + mongo_api:delete(Connection, ?MONGO_CL_USER, {}), + ?assertMatch({{true, _}, _}, mongo_api:insert(Connection, ?MONGO_CL_USER, ?INIT_AUTH)), + %% ACLs + mongo_api:delete(Connection, ?MONGO_CL_ACL, {}), + ?assertMatch({{true, _}, _}, mongo_api:insert(Connection, ?MONGO_CL_ACL, ?INIT_ACL)). + +deinit_mongo_data() -> + {ok, Connection} = ?POOL(?APP), + mongo_api:delete(Connection, ?MONGO_CL_USER, {}), + mongo_api:delete(Connection, ?MONGO_CL_ACL, {}). + +%%-------------------------------------------------------------------- +%% Test cases +%%-------------------------------------------------------------------- + +t_check_auth(_) -> + Plain = #{zone => external, clientid => <<"client1">>, username => <<"plain">>}, + Plain1 = #{zone => external, clientid => <<"client1">>, username => <<"plain2">>}, + Md5 = #{zone => external, clientid => <<"md5">>, username => <<"md5">>}, + Sha = #{zone => external, clientid => <<"sha">>, username => <<"sha">>}, + Sha256 = #{zone => external, clientid => <<"sha256">>, username => <<"sha256">>}, + Pbkdf2 = #{zone => external, clientid => <<"pbkdf2_password">>, username => <<"pbkdf2_password">>}, + Bcrypt = #{zone => external, clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>}, + User1 = #{zone => external, clientid => <<"bcrypt_foo">>, username => <<"user">>}, + reload({auth_query, [{password_hash, plain}]}), + %% With exactly username/password, connection success + {ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}), + %% With exactly username and wrong password, connection fail + {error, _} = emqx_access_control:authenticate(Plain#{password => <<"error_pwd">>}), + %% With wrong username and wrong password, emqx_auth_mongo auth fail, then allow anonymous authentication + {error, _} = emqx_access_control:authenticate(Plain1#{password => <<"error_pwd">>}), + %% With wrong username and exactly password, emqx_auth_mongo auth fail, then allow anonymous authentication + {error, _} = emqx_access_control:authenticate(Plain1#{password => <<"plain">>}), + reload({auth_query, [{password_hash, md5}]}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}), + reload({auth_query, [{password_hash, sha}]}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha#{password => <<"sha">>}), + reload({auth_query, [{password_hash, sha256}]}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}), + %%pbkdf2 sha + reload({auth_query, [{password_hash, {pbkdf2, sha, 1, 16}}, {password_field, [<<"password">>, <<"salt">>]}]}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}), + reload({auth_query, [{password_hash, {salt, bcrypt}}]}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"foo">>}), + {error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}). + +t_check_acl(_) -> + {ok, Connection} = ?POOL(?APP), + User1 = #{zone => external, clientid => <<"client1">>, username => <<"testuser">>}, + User2 = #{zone => external, clientid => <<"client2">>, username => <<"dashboard">>}, + User3 = #{zone => external, clientid => <<"client2">>, username => <<"user3">>}, + User4 = #{zone => external, clientid => <<"$$client2">>, username => <<"$$user3">>}, + 3 = mongo_api:count(Connection, ?MONGO_CL_ACL, {}, 17), + %% ct log output + allow = emqx_access_control:check_acl(User1, subscribe, <<"users/testuser/1">>), + deny = emqx_access_control:check_acl(User1, subscribe, <<"$SYS/testuser/1">>), + deny = emqx_access_control:check_acl(User2, subscribe, <<"a/b/c">>), + allow = emqx_access_control:check_acl(User2, subscribe, <<"$SYS/testuser/1">>), + allow = emqx_access_control:check_acl(User3, publish, <<"a/b/c">>), + deny = emqx_access_control:check_acl(User3, publish, <<"c">>), + deny = emqx_access_control:check_acl(User4, publish, <<"a/b/c">>). + +t_acl_super(_) -> + reload({auth_query, [{password_hash, plain}, {password_field, [<<"password">>]}]}), + {ok, C} = emqtt:start_link([{clientid, <<"simpleClient">>}, + {username, <<"plain">>}, + {password, <<"plain">>}]), + {ok, _} = emqtt:connect(C), + timer:sleep(10), + emqtt:subscribe(C, <<"TopicA">>, qos2), + timer:sleep(1000), + emqtt:publish(C, <<"TopicA">>, <<"Payload">>, qos2), + timer:sleep(1000), + receive + {publish, #{payload := Payload}} -> + ?assertEqual(<<"Payload">>, Payload) + after + 1000 -> + ct:fail({receive_timeout, <<"Payload">>}), + ok + end, + emqtt:disconnect(C). + +%%-------------------------------------------------------------------- +%% Utils +%%-------------------------------------------------------------------- + +reload({Par, Vals}) when is_list(Vals) -> + application:stop(?APP), + {ok, TupleVals} = application:get_env(?APP, Par), + NewVals = + lists:filtermap(fun({K, V}) -> + case lists:keymember(K, 1, Vals) of + false ->{true, {K, V}}; + _ -> false + end + end, TupleVals), + application:set_env(?APP, Par, lists:append(NewVals, Vals)), + application:start(?APP). diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca-key.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca-key.pem new file mode 100644 index 000000000..e9717011e --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA0kGUBi9NDp65jgdxKfizIfuSr2wpwb44yM9SuP4oUQSULOA2 +4iFpLR/c5FAYHU81y9Vx91dQjdZfffaBZuv2zVvteXUkol8Nez7boKbo2E41MTew +8edtNKZAQVvnaHAC2NCZxjchCzUCDEoUUcl+cIERZ8R48FBqK5iTVcMRIx1akwus ++dhBqP0ykA5TGOWZkJrLM9aUXSPQha9+wXlOpkvu0Ur2nkX8PPJnifWao9UShSar +ll1IqPZNCSlZMwcFYcQNBCpdvITUUYlHvMRQV64bUpOxUGDuJkQL3dLKBlNuBRlJ +BcjBAKw7rFnwwHZcMmQ9tan/dZzpzwjo/T0XjwIDAQABAoIBAQCSHvUqnzDkWjcG +l/Fzg92qXlYBCCC0/ugj1sHcwvVt6Mq5rVE3MpUPwTcYjPlVVTlD4aEEjm/zQuq2 +ddxUlOS+r4aIhHrjRT/vSS4FpjnoKeIZxGR6maVxk6DQS3i1QjMYT1CvSpzyVvKH +a+xXMrtmoKxh+085ZAmFJtIuJhUA2yEa4zggCxWnvz8ecLClUPfVDPhdLBHc3KmL +CRpHEC6L/wanvDPRdkkzfKyaJuIJlTDaCg63AY5sDkTW2I57iI/nJ3haSeidfQKz +39EfbnM1A/YprIakafjAu3frBIsjBVcxwGihZmL/YriTHjOggJF841kT5zFkkv2L +/530Wk6xAoGBAOqZLZ4DIi/zLndEOz1mRbUfjc7GQUdYplBnBwJ22VdS0P4TOXnd +UbJth2MA92NM7ocTYVFl4TVIZY/Y+Prxk7KQdHWzR7JPpKfx9OEVgtSqV0vF9eGI +rKp79Y1T4Mvc3UcQCXX6TP7nHLihEzpS8odm2LW4txrOiLsn4Fq/IWrLAoGBAOVv +6U4tm3lImotUupKLZPKEBYwruo9qRysoug9FiorP4TjaBVOfltiiHbAQD6aGfVtN +SZpZZtrs17wL7Xl4db5asgMcZd+8Hkfo5siR7AuGW9FZloOjDcXb5wCh9EvjJ74J +Cjw7RqyVymq9t7IP6wnVwj5Ck48YhlOZCz/mzlnNAoGAWq7NYFgLvgc9feLFF23S +IjpJQZWHJEITP98jaYNxbfzYRm49+GphqxwFinKULjFNvq7yHlnIXSVYBOu1CqOZ +GRwXuGuNmlKI7lZr9xmukfAqgGLMMdr4C4qRF4lFyufcLRz42z7exmWlx4ST/yaT +E13hBRWayeTuG5JFei6Jh1MCgYEAqmX4LyC+JFBgvvQZcLboLRkSCa18bADxhENG +FAuAvmFvksqRRC71WETmqZj0Fqgxt7pp3KFjO1rFSprNLvbg85PmO1s+6fCLyLpX +lESTu2d5D71qhK93jigooxalGitFm+SY3mzjq0/AOpBWOn+J/w7rqVPGxXLgaHv0 +l+vx+00CgYBOvo9/ImjwYii2jFl+sHEoCzlvpITi2temRlT2j6ulSjCLJgjwEFw9 +8e+vvfQumQOsutakUVyURrkMGNDiNlIv8kv5YLCCkrwN22E6Ghyi69MJUvHQXkc/ +QZhjn/luyfpB5f/BeHFS2bkkxAXo+cfG45ApY3Qfz6/7o+H+vDa6/A== +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem new file mode 100644 index 000000000..00b31d8a4 --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDAzCCAeugAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowPDE6MDgGA1UEAwwxTXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANJBlAYvTQ6euY4HcSn4syH7kq9s +KcG+OMjPUrj+KFEElCzgNuIhaS0f3ORQGB1PNcvVcfdXUI3WX332gWbr9s1b7Xl1 +JKJfDXs+26Cm6NhONTE3sPHnbTSmQEFb52hwAtjQmcY3IQs1AgxKFFHJfnCBEWfE +ePBQaiuYk1XDESMdWpMLrPnYQaj9MpAOUxjlmZCayzPWlF0j0IWvfsF5TqZL7tFK +9p5F/DzyZ4n1mqPVEoUmq5ZdSKj2TQkpWTMHBWHEDQQqXbyE1FGJR7zEUFeuG1KT +sVBg7iZEC93SygZTbgUZSQXIwQCsO6xZ8MB2XDJkPbWp/3Wc6c8I6P09F48CAwEA +AaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADKz6bIpP5anp +GgLB0jkclRWuMlS4qqIt4itSsMXPJ/ezpHwECixmgW2TIQl6S1woRkUeMxhT2/Ay +Sn/7aKxuzRagyE5NEGOvrOuAP5RO2ZdNJ/X3/Rh533fK1sOTEEbSsWUvW6iSkZef +rsfZBVP32xBhRWkKRdLeLB4W99ADMa0IrTmZPCXHSSE2V4e1o6zWLXcOZeH1Qh8N +SkelBweR+8r1Fbvy1r3s7eH7DCbYoGEDVLQGOLvzHKBisQHmoDnnF5E9g1eeNRdg +o+vhOKfYCOzeNREJIqS42PHcGhdNRk90ycigPmfUJclz1mDHoMjKR2S5oosTpr65 +tNPx3CL7GA== +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem new file mode 100644 index 000000000..aad1404ca --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAzANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0N1oXDTMwMDYwOTAzMzg0N1owQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DbGllbnRfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVYSWpOvCTupz82fc85Opv +EQ7rkB8X2oOMyBCpkyHKBIr1ZQgRDWBp9UVOASq3GnSElm6+T3Kb1QbOffa8GIlw +sjAueKdq5L2eSkmPIEQ7eoO5kEW+4V866hE1LeL/PmHg2lGP0iqZiJYtElhHNQO8 +3y9I7cm3xWMAA3SSWikVtpJRn3qIp2QSrH+tK+/HHbE5QwtPxdir4ULSCSOaM5Yh +Wi5Oto88TZqe1v7SXC864JVvO4LuS7TuSreCdWZyPXTJFBFeCEWSAxonKZrqHbBe +CwKML6/0NuzjaQ51c2tzmVI6xpHj3nnu4cSRx6Jf9WBm+35vm0wk4pohX3ptdzeV +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAByQ5zSNeFUH +Aw7JlpZHtHaSEeiiyBHke20ziQ07BK1yi/ms2HAWwQkpZv149sjNuIRH8pkTmkZn +g8PDzSefjLbC9AsWpWV0XNV22T/cdobqLqMBDDZ2+5bsV+jTrOigWd9/AHVZ93PP +IJN8HJn6rtvo2l1bh/CdsX14uVSdofXnuWGabNTydqtMvmCerZsdf6qKqLL+PYwm +RDpgWiRUY7KPBSSlKm/9lJzA+bOe4dHeJzxWFVCJcbpoiTFs1je1V8kKQaHtuW39 +ifX6LTKUMlwEECCbDKM8Yq2tm8NjkjCcnFDtKg8zKGPUu+jrFMN5otiC3wnKcP7r +O9EkaPcgYH8= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem new file mode 100644 index 000000000..6789d0291 --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA1WElqTrwk7qc/Nn3POTqbxEO65AfF9qDjMgQqZMhygSK9WUI +EQ1gafVFTgEqtxp0hJZuvk9ym9UGzn32vBiJcLIwLninauS9nkpJjyBEO3qDuZBF +vuFfOuoRNS3i/z5h4NpRj9IqmYiWLRJYRzUDvN8vSO3Jt8VjAAN0klopFbaSUZ96 +iKdkEqx/rSvvxx2xOUMLT8XYq+FC0gkjmjOWIVouTraPPE2antb+0lwvOuCVbzuC +7ku07kq3gnVmcj10yRQRXghFkgMaJyma6h2wXgsCjC+v9Dbs42kOdXNrc5lSOsaR +49557uHEkceiX/VgZvt+b5tMJOKaIV96bXc3lQIDAQABAoIBAF7yjXmSOn7h6P0y +WCuGiTLG2mbDiLJqj2LTm2Z5i+2Cu/qZ7E76Ls63TxF4v3MemH5vGfQhEhR5ZD/6 +GRJ1sKKvB3WGRqjwA9gtojHH39S/nWGy6vYW/vMOOH37XyjIr3EIdIaUtFQBTSHd +Kd71niYrAbVn6fyWHolhADwnVmTMOl5OOAhCdEF4GN3b5aIhIu8BJ7EUzTtHBJIj +CAEfjZFjDs1y1cIgGFJkuIQxMfCpq5recU2qwip7YO6fk//WEjOPu7kSf5IEswL8 +jg1dea9rGBV6KaD2xsgsC6Ll6Sb4BbsrHMfflG3K2Lk3RdVqqTFp1Fn1PTLQE/1S +S/SZPYECgYEA9qYcHKHd0+Q5Ty5wgpxKGa4UCWkpwvfvyv4bh8qlmxueB+l2AIdo +ZvkM8gTPagPQ3WypAyC2b9iQu70uOJo1NizTtKnpjDdN1YpDjISJuS/P0x73gZwy +gmoM5AzMtN4D6IbxXtXnPaYICvwLKU80ouEN5ZPM4/ODLUu6gsp0v2UCgYEA3Xgi +zMC4JF0vEKEaK0H6QstaoXUmw/lToZGH3TEojBIkb/2LrHUclygtONh9kJSFb89/ +jbmRRLAOrx3HZKCNGUmF4H9k5OQyAIv6OGBinvLGqcbqnyNlI+Le8zxySYwKMlEj +EMrBCLmSyi0CGFrbZ3mlj/oCET/ql9rNvcK+DHECgYAEx5dH3sMjtgp+RFId1dWB +xePRgt4yTwewkVgLO5wV82UOljGZNQaK6Eyd7AXw8f38LHzh+KJQbIvxd2sL4cEi +OaAoohpKg0/Y0YMZl//rPMf0OWdmdZZs/I0fZjgZUSwWN3c59T8z7KG/RL8an9RP +S7kvN7wCttdV61/D5RR6GQKBgDxCe/WKWpBKaovzydMLWLTj7/0Oi0W3iXHkzzr4 +LTgvl4qBSofaNbVLUUKuZTv5rXUG2IYPf99YqCYtzBstNDc1MiAriaBeFtzfOW4t +i6gEFtoLLbuvPc3N5Sv5vn8Ug5G9UfU3td5R4AbyyCcoUZqOFuZd+EIJSiOXfXOs +kVmBAoGBAIU9aPAqhU5LX902oq8KsrpdySONqv5mtoStvl3wo95WIqXNEsFY60wO +q02jKQmJJ2MqhkJm2EoF2Mq8+40EZ5sz8LdgeQ/M0yQ9lAhPi4rftwhpe55Ma9dk +SE9X1c/DMCBEaIjJqVXdy0/EeArwpb8sHkguVVAZUWxzD+phm1gs +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/mongodb.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/mongodb.pem new file mode 100644 index 000000000..1fe94891a --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/mongodb.pem @@ -0,0 +1,46 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcEnEm5hqP1EbEJycOz8Ua +NWp29QdpFUzTWhkKGhVXk+0msmNTw4NBAFB42moY44OU8wvDideOlJNhPRWveD8z +G2lxzJA91p0UK4et8ia9MmeuCGhdC9jxJ8X69WNlUiPyy0hI/ZsqRq9Z0C2eW0iL +JPXsy4X8Xpw3SFwoXf5pR9RFY5Pb2tuyxqmSestu2VXT/NQjJg4CVDR3mFcHPXZB +4elRzH0WshExEGkgy0bg20MJeRc2Qdb5Xx+EakbmwroDWaCn3NSGqQ7jv6Vw0doy +TGvS6h6RHBxnyqRfRgKGlCoOMG9/5+rFJC00QpCUG2vHXHWGoWlMlJ3foN7rj5v9 +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ5zt2rj4Ag6 +zpN59AWC1Fur8g8l41ksHkSpKPp+PtyO/ngvbMqBpfmK1e7JCKZv/68QXfMyWWAI +hwalqZkXXWHKjuz3wE7dE25PXFXtGJtcZAaj10xt98fzdqt8lQSwh2kbfNwZIz1F +sgAStgE7+ZTcqTgvNB76Os1UK0to+/P0VBWktaVFdyub4Nc2SdPVnZNvrRBXBwOD +3V8ViwywDOFoE7DvCvwx/SVsvoC0Z4j3AMMovO6oHicP7uU83qsQgm1Qru3YeoLR ++DoVi7IPHbWvN7MqFYn3YjNlByO2geblY7MR0BlqbFlmFrqLsUfjsh2ys7/U/knC +dN/klu446fI= +-----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAnBJxJuYaj9RGxCcnDs/FGjVqdvUHaRVM01oZChoVV5PtJrJj +U8ODQQBQeNpqGOODlPMLw4nXjpSTYT0Vr3g/MxtpccyQPdadFCuHrfImvTJnrgho +XQvY8SfF+vVjZVIj8stISP2bKkavWdAtnltIiyT17MuF/F6cN0hcKF3+aUfURWOT +29rbssapknrLbtlV0/zUIyYOAlQ0d5hXBz12QeHpUcx9FrIRMRBpIMtG4NtDCXkX +NkHW+V8fhGpG5sK6A1mgp9zUhqkO47+lcNHaMkxr0uoekRwcZ8qkX0YChpQqDjBv +f+fqxSQtNEKQlBtrx1x1hqFpTJSd36De64+b/QIDAQABAoIBAFiah66Dt9SruLkn +WR8piUaFyLlcBib8Nq9OWSTJBhDAJERxxb4KIvvGB+l0ZgNXNp5bFPSfzsZdRwZP +PX5uj8Kd71Dxx3mz211WESMJdEC42u+MSmN4lGLkJ5t/sDwXU91E1vbJM0ve8THV +4/Ag9qA4DX2vVZOeyqT/6YHpSsPNZplqzrbAiwrfHwkctHfgqwOf3QLfhmVQgfCS +VwidBldEUv2whSIiIxh4Rv5St4kA68IBCbJxdpOpyuQBkk6CkxZ7VN9FqOuSd4Pk +Wm7iWyBMZsCmELZh5XAXld4BEt87C5R4CvbPBDZxAv3THk1DNNvpy3PFQfwARRFb +SAToYMECgYEAyL7U8yxpzHDYWd3oCx6vTi9p9N/z0FfAkWrRF6dm4UcSklNiT1Aq +EOnTA+SaW8tV3E64gCWcY23gNP8so/ZseWj6L+peHwtchaP9+KB7yGw2A+05+lOx +VetLTjAOmfpiUXFe5w1q4C1RGhLjZjjzW+GvwdAuchQgUEFaomrV+PUCgYEAxwfH +cmVGFbAktcjU4HSRjKSfawCrut+3YUOLybyku3Q/hP9amG8qkVTFe95CTLjLe2D0 +ccaTTpofFEJ32COeck0g0Ujn/qQ+KXRoauOYs4FB1DtqMpqB78wufWEUpDpbd9/h +J+gJdC/IADd4tJW9zA92g8IA7ZtFmqDtiSpQ0ekCgYAQGkaorvJZpN+l7cf0RGTZ +h7IfI2vCVZer0n6tQA9fmLzjoe6r4AlPzAHSOR8sp9XeUy43kUzHKQQoHCPvjw/K +eWJAP7OHF/k2+x2fOPhU7mEy1W+mJdp+wt4Kio5RSaVjVQ3AyPG+w8PSrJszEvRq +dWMMz+851WV2KpfjmWBKlQKBgQC++4j4DZQV5aMkSKV1CIZOBf3vaIJhXKEUFQPD +PmB4fBEjpwCg+zNGp6iktt65zi17o8qMjrb1mtCt2SY04eD932LZUHNFlwcLMmes +Ad+aiDLJ24WJL1f16eDGcOyktlblDZB5gZ/ovJzXEGOkLXglosTfo77OQculmDy2 +/UL2WQKBgGeKasmGNfiYAcWio+KXgFkHXWtAXB9B91B1OFnCa40wx+qnl71MIWQH +PQ/CZFNWOfGiNEJIZjrHsfNJoeXkhq48oKcT0AVCDYyLV0VxDO4ejT95mGW6njNd +JpvmhwwAjOvuWVr0tn4iXlSK8irjlJHmwcRjLTJq97vE9fsA2MjI +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/private_key.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/private_key.pem new file mode 100644 index 000000000..8fbf6bdec --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/private_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA1zVmMhPqpSPMmYkKh5wwlRD5XuS8YWJKEM6tjFx61VK8qxHE +YngkC2KnL5EuKAjQZIF3tJskwt0hAat047CCCZxrkNEpbVvSnvnk+A/8bg/Ww1n3 +qxzfifhsWfpUKlDnwrtH+ftt+5rZeEkf37XAPy7ZjzecAF9SDV6WSiPeAxUX2+hN +dId42Pf45woo4LFGUlQeagCFkD/R0dpNIMGwcnkKCUikiBqr2ijSIgvRtBfZ9fBG +jFGER2uE/Eay4AgcQsHue8skRwDCng8OnqtPnBtTytmqTy9V/BRgsVKUoksm6wsx +kUYwgHeaq7UCvlCm25SZ7yRyd4k8t0BKDf2h+wIDAQABAoIBAEQcrHmRACTADdNS +IjkFYALt2l8EOfMAbryfDSJtapr1kqz59JPNvmq0EIHnixo0n/APYdmReLML1ZR3 +tYkSpjVwgkLVUC1CcIjMQoGYXaZf8PLnGJHZk45RR8m6hsTV0mQ5bfBaeVa2jbma +OzJMjcnxg/3l9cPQZ2G/3AUfEPccMxOXp1KRz3mUQcGnKJGtDbN/kfmntcwYoxaE +Zg4RoeKAoMpK1SSHAiJKe7TnztINJ7uygR9XSzNd6auY8A3vomSIjpYO7XL+lh7L +izm4Ir3Gb/eCYBvWgQyQa2KCJgK/sQyEs3a09ngofSEUhQJQYhgZDwUj+fDDOGqj +hCZOA8ECgYEA+ZWuHdcUQ3ygYhLds2QcogUlIsx7C8n/Gk/FUrqqXJrTkuO0Eqqa +B47lCITvmn2zm0ODfSFIARgKEUEDLS/biZYv7SUTrFqBLcet+aGI7Dpv91CgB75R +tNzcIf8VxoiP0jPqdbh9mLbbxGi5Uc4p9TVXRljC4hkswaouebWee0sCgYEA3L2E +YB3kiHrhPI9LHS5Px9C1w+NOu5wP5snxrDGEgaFCvL6zgY6PflacppgnmTXl8D1x +im0IDKSw5dP3FFonSVXReq3CXDql7UnhfTCiLDahV7bLxTH42FofcBpDN3ERdOal +58RwQh6VrLkzQRVoObo+hbGlFiwwSAfQC509FhECgYBsRSBpVXo25IN2yBRg09cP ++gdoFyhxrsj5kw1YnB13WrrZh+oABv4WtUhp77E5ZbpaamlKCPwBbXpAjeFg4tfr +0bksuN7V79UGFQ9FsWuCfr8/nDwv38H2IbFlFhFONMOfPmJBey0Q6JJhm8R41mSh +OOiJXcv85UrjIH5U0hLUDQKBgQDVLOU5WcUJlPoOXSgiT0ZW5xWSzuOLRUUKEf6l +19BqzAzCcLy0orOrRAPW01xylt2v6/bJw1Ahva7k1ZZo/kOwjANYoZPxM+ZoSZBN +MXl8j2mzZuJVV1RFxItV3NcLJNPB/Lk+IbRz9kt/2f9InF7iWR3mSU/wIM6j0X+2 +p6yFsQKBgQCM/ldWb511lA+SNkqXB2P6WXAgAM/7+jwsNHX2ia2Ikufm4SUEKMSv +mti/nZkHDHsrHU4wb/2cOAywMELzv9EHzdcoenjBQP65OAc/1qWJs+LnBcCXfqKk +aHjEZW6+brkHdRGLLY3YAHlt/AUL+RsKPJfN72i/FSpmu+52G36eeQ== +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/public_key.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/public_key.pem new file mode 100644 index 000000000..f9772b533 --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/public_key.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1zVmMhPqpSPMmYkKh5ww +lRD5XuS8YWJKEM6tjFx61VK8qxHEYngkC2KnL5EuKAjQZIF3tJskwt0hAat047CC +CZxrkNEpbVvSnvnk+A/8bg/Ww1n3qxzfifhsWfpUKlDnwrtH+ftt+5rZeEkf37XA +Py7ZjzecAF9SDV6WSiPeAxUX2+hNdId42Pf45woo4LFGUlQeagCFkD/R0dpNIMGw +cnkKCUikiBqr2ijSIgvRtBfZ9fBGjFGER2uE/Eay4AgcQsHue8skRwDCng8OnqtP +nBtTytmqTy9V/BRgsVKUoksm6wsxkUYwgHeaq7UCvlCm25SZ7yRyd4k8t0BKDf2h ++wIDAQAB +-----END PUBLIC KEY----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-cert.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-cert.pem new file mode 100644 index 000000000..a2f9688df --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcEnEm5hqP1EbEJycOz8Ua +NWp29QdpFUzTWhkKGhVXk+0msmNTw4NBAFB42moY44OU8wvDideOlJNhPRWveD8z +G2lxzJA91p0UK4et8ia9MmeuCGhdC9jxJ8X69WNlUiPyy0hI/ZsqRq9Z0C2eW0iL +JPXsy4X8Xpw3SFwoXf5pR9RFY5Pb2tuyxqmSestu2VXT/NQjJg4CVDR3mFcHPXZB +4elRzH0WshExEGkgy0bg20MJeRc2Qdb5Xx+EakbmwroDWaCn3NSGqQ7jv6Vw0doy +TGvS6h6RHBxnyqRfRgKGlCoOMG9/5+rFJC00QpCUG2vHXHWGoWlMlJ3foN7rj5v9 +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ5zt2rj4Ag6 +zpN59AWC1Fur8g8l41ksHkSpKPp+PtyO/ngvbMqBpfmK1e7JCKZv/68QXfMyWWAI +hwalqZkXXWHKjuz3wE7dE25PXFXtGJtcZAaj10xt98fzdqt8lQSwh2kbfNwZIz1F +sgAStgE7+ZTcqTgvNB76Os1UK0to+/P0VBWktaVFdyub4Nc2SdPVnZNvrRBXBwOD +3V8ViwywDOFoE7DvCvwx/SVsvoC0Z4j3AMMovO6oHicP7uU83qsQgm1Qru3YeoLR ++DoVi7IPHbWvN7MqFYn3YjNlByO2geblY7MR0BlqbFlmFrqLsUfjsh2ys7/U/knC +dN/klu446fI= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-key.pem b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-key.pem new file mode 100644 index 000000000..a1dfd5f78 --- /dev/null +++ b/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/server-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAnBJxJuYaj9RGxCcnDs/FGjVqdvUHaRVM01oZChoVV5PtJrJj +U8ODQQBQeNpqGOODlPMLw4nXjpSTYT0Vr3g/MxtpccyQPdadFCuHrfImvTJnrgho +XQvY8SfF+vVjZVIj8stISP2bKkavWdAtnltIiyT17MuF/F6cN0hcKF3+aUfURWOT +29rbssapknrLbtlV0/zUIyYOAlQ0d5hXBz12QeHpUcx9FrIRMRBpIMtG4NtDCXkX +NkHW+V8fhGpG5sK6A1mgp9zUhqkO47+lcNHaMkxr0uoekRwcZ8qkX0YChpQqDjBv +f+fqxSQtNEKQlBtrx1x1hqFpTJSd36De64+b/QIDAQABAoIBAFiah66Dt9SruLkn +WR8piUaFyLlcBib8Nq9OWSTJBhDAJERxxb4KIvvGB+l0ZgNXNp5bFPSfzsZdRwZP +PX5uj8Kd71Dxx3mz211WESMJdEC42u+MSmN4lGLkJ5t/sDwXU91E1vbJM0ve8THV +4/Ag9qA4DX2vVZOeyqT/6YHpSsPNZplqzrbAiwrfHwkctHfgqwOf3QLfhmVQgfCS +VwidBldEUv2whSIiIxh4Rv5St4kA68IBCbJxdpOpyuQBkk6CkxZ7VN9FqOuSd4Pk +Wm7iWyBMZsCmELZh5XAXld4BEt87C5R4CvbPBDZxAv3THk1DNNvpy3PFQfwARRFb +SAToYMECgYEAyL7U8yxpzHDYWd3oCx6vTi9p9N/z0FfAkWrRF6dm4UcSklNiT1Aq +EOnTA+SaW8tV3E64gCWcY23gNP8so/ZseWj6L+peHwtchaP9+KB7yGw2A+05+lOx +VetLTjAOmfpiUXFe5w1q4C1RGhLjZjjzW+GvwdAuchQgUEFaomrV+PUCgYEAxwfH +cmVGFbAktcjU4HSRjKSfawCrut+3YUOLybyku3Q/hP9amG8qkVTFe95CTLjLe2D0 +ccaTTpofFEJ32COeck0g0Ujn/qQ+KXRoauOYs4FB1DtqMpqB78wufWEUpDpbd9/h +J+gJdC/IADd4tJW9zA92g8IA7ZtFmqDtiSpQ0ekCgYAQGkaorvJZpN+l7cf0RGTZ +h7IfI2vCVZer0n6tQA9fmLzjoe6r4AlPzAHSOR8sp9XeUy43kUzHKQQoHCPvjw/K +eWJAP7OHF/k2+x2fOPhU7mEy1W+mJdp+wt4Kio5RSaVjVQ3AyPG+w8PSrJszEvRq +dWMMz+851WV2KpfjmWBKlQKBgQC++4j4DZQV5aMkSKV1CIZOBf3vaIJhXKEUFQPD +PmB4fBEjpwCg+zNGp6iktt65zi17o8qMjrb1mtCt2SY04eD932LZUHNFlwcLMmes +Ad+aiDLJ24WJL1f16eDGcOyktlblDZB5gZ/ovJzXEGOkLXglosTfo77OQculmDy2 +/UL2WQKBgGeKasmGNfiYAcWio+KXgFkHXWtAXB9B91B1OFnCa40wx+qnl71MIWQH +PQ/CZFNWOfGiNEJIZjrHsfNJoeXkhq48oKcT0AVCDYyLV0VxDO4ejT95mGW6njNd +JpvmhwwAjOvuWVr0tn4iXlSK8irjlJHmwcRjLTJq97vE9fsA2MjI +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mysql/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_mysql/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..90f2d7437 --- /dev/null +++ b/apps/emqx_auth_mysql/.github/workflows/run_test_cases.yaml @@ -0,0 +1,59 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + strategy: + matrix: + mysql_tag: + - 5.7 + - 8 + network_type: + - ipv4 + - ipv6 + connect_type: + - ssl + - tcp + + steps: + - name: install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + - uses: actions/checkout@v1 + - name: run test cases + env: + MYSQL_TAG: ${{ matrix.mysql_tag }} + NETWORK_TYPE: ${{ matrix.network_type }} + CONNECT_TYPE: ${{ matrix.connect_type }} + run: | + if [ "$NETWORK_TYPE" = "ipv6" ];then docker network create --driver bridge --ipv6 --subnet fd15:555::/64 test_emqx_bridge --attachable; fi + if [ "$CONNECT_TYPE" = "ssl" ]; then + docker-compose -f ./docker-compose-ssl.yml -p test up -d + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "echo 'auth.mysql.ssl.cafile = /emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem' >> /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "echo 'auth.mysql.ssl.certfile = /emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem' >> /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "echo 'auth.mysql.ssl.keyfile = /emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem' >> /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + else + docker-compose -f ./docker-compose.yml -p test up -d + fi + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "echo 'auth.mysql.username = root' >> /emqx_auth_mysql/etc/emqx_auth_mysql.conf " + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "echo 'auth.mysql.password = public' >> /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + if [ "$NETWORK_TYPE" != "ipv6" ];then + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "sed -i '/auth.mysql.server/c auth.mysql.server = mysql_server:3306' /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + else + ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=test_mysql_server_1 -q)) + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "sed -i '/auth.mysql.server/c auth.mysql.server = $ipv6_address:3306' /emqx_auth_mysql/etc/emqx_auth_mysql.conf" + fi + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "make -C /emqx_auth_mysql xref" + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "make -C /emqx_auth_mysql eunit" + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "make -C /emqx_auth_mysql ct" + docker exec -i $(docker ps -a -f name=test_erlang_1 -q) sh -c "make -C /emqx_auth_mysql cover" + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs_mysql${{ matrix.mysql_tag }}_${{ matrix.network_type }} + path: _build/test/logs + diff --git a/apps/emqx_auth_mysql/.gitignore b/apps/emqx_auth_mysql/.gitignore new file mode 100644 index 000000000..bc6fa0f2f --- /dev/null +++ b/apps/emqx_auth_mysql/.gitignore @@ -0,0 +1,31 @@ +.eunit +deps +*.so +.iml +.idea +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +emqx_auth_mysql.d +ct.coverdata +logs/ +test/ct.cover.spec +test/*.beam +cover/ +eunit.coverdata +data +.placeholder +_build/ +rebar.lock +erlang.mk +rebar3.crashdump +etc/emqx_auth_mysql.conf.rendered +.rebar3/ +*.swp +.DS_Store diff --git a/apps/emqx_auth_mysql/LICENSE b/apps/emqx_auth_mysql/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_mysql/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_mysql/Makefile b/apps/emqx_auth_mysql/Makefile new file mode 100644 index 000000000..ba2e57af3 --- /dev/null +++ b/apps/emqx_auth_mysql/Makefile @@ -0,0 +1,43 @@ + +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +clean: distclean + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +dialyzer: + $(REBAR) dialyzer + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_mysql.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_mysql.conf -i priv/emqx_auth_mysql.schema -d data diff --git a/apps/emqx_auth_mysql/README.md b/apps/emqx_auth_mysql/README.md new file mode 100644 index 000000000..e55a2103f --- /dev/null +++ b/apps/emqx_auth_mysql/README.md @@ -0,0 +1,167 @@ +emqx_auth_mysql +=============== + +Authentication, ACL with MySQL Database. + +Notice: changed mysql driver to [mysql-otp](https://github.com/mysql-otp/mysql-otp). + +Features +--------- + +- Full *Authentication*, *Superuser*, *ACL* support +- IPv4, IPv6 and TLS support +- Connection pool by [ecpool](https://github.com/emqx/ecpool) +- Completely cover MySQL 5.7, MySQL 8 in our tests + +Build Plugin +------------- + +make && make tests + +Configure Plugin +---------------- + +File: etc/emqx_auth_mysql.conf + +``` +## MySQL server address. +## +## Value: Port | IP:Port +## +## Examples: 3306, 127.0.0.1:3306, localhost:3306 +auth.mysql.server = 127.0.0.1:3306 + +## MySQL pool size. +## +## Value: Number +auth.mysql.pool = 8 + +## MySQL username. +## +## Value: String +## auth.mysql.username = + +## MySQL Password. +## +## Value: String +## auth.mysql.password = + +## MySQL database. +## +## Value: String +auth.mysql.database = mqtt + +## Variables: %u = username, %c = clientid + +## Authentication query. +## +## Note that column names should be 'password' and 'salt' (if used). +## In case column names differ in your DB - please use aliases, +## e.g. "my_column_name as password". +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +auth.mysql.auth_query = select password from mqtt_user where username = '%u' limit 1 +## auth.mysql.auth_query = select password_hash as password from mqtt_user where username = '%u' limit 1 + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.mysql.password_hash = sha256 + +## sha256 with salt prefix +## auth.mysql.password_hash = salt,sha256 + +## bcrypt with salt only prefix +## auth.mysql.password_hash = salt,bcrypt + +## sha256 with salt suffix +## auth.mysql.password_hash = sha256,salt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.mysql.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +auth.mysql.super_query = select is_superuser from mqtt_user where username = '%u' limit 1 + +## ACL query. +## +## Value: SQL +## +## Variables: +## - %a: ipaddr +## - %u: username +## - %c: clientid +## Note: You can add the 'ORDER BY' statement to control the rules match order +auth.mysql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' + +``` + +Import mqtt.sql +--------------- + +Import mqtt.sql into your database. + +Load Plugin +----------- + +./bin/emqx_ctl plugins load emqx_auth_mysql + +Auth Table +---------- + +Notice: This is a demo table. You could authenticate with any user table. + +```sql +CREATE TABLE `mqtt_user` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(100) DEFAULT NULL, + `password` varchar(100) DEFAULT NULL, + `salt` varchar(35) DEFAULT NULL, + `is_superuser` tinyint(1) DEFAULT 0, + `created` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `mqtt_username` (`username`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +``` + +ACL Table +---------- + +```sql +CREATE TABLE `mqtt_acl` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `allow` int(1) DEFAULT NULL COMMENT '0: deny, 1: allow', + `ipaddr` varchar(60) DEFAULT NULL COMMENT 'IpAddress', + `username` varchar(100) DEFAULT NULL COMMENT 'Username', + `clientid` varchar(100) DEFAULT NULL COMMENT 'ClientId', + `access` int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub', + `topic` varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +``` + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. diff --git a/apps/emqx_auth_mysql/docker-compose-ssl.yml b/apps/emqx_auth_mysql/docker-compose-ssl.yml new file mode 100644 index 000000000..fe7d442fe --- /dev/null +++ b/apps/emqx_auth_mysql/docker-compose-ssl.yml @@ -0,0 +1,41 @@ +version: '3' + +services: + erlang: + image: erlang:22.3 + volumes: + - ./:/emqx_auth_mysql + networks: + - emqx_bridge + depends_on: + - mysql_server + tty: true + + mysql_server: + image: mysql:${MYSQL_TAG} + restart: always + environment: + MYSQL_ROOT_PASSWORD: public + MYSQL_DATABASE: mqtt + volumes: + - ./test/emqx_auth_mysql_SUITE_data/ca.pem:/etc/certs/ca-cert.pem + - ./test/emqx_auth_mysql_SUITE_data/server-cert.pem:/etc/certs/server-cert.pem + - ./test/emqx_auth_mysql_SUITE_data/server-key.pem:/etc/certs/server-key.pem + networks: + - emqx_bridge + command: + --bind-address "::" + --default-authentication-plugin=mysql_native_password + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + --max_allowed_packet=128M + --skip-symbolic-links + --ssl-ca=/etc/certs/ca.pem + --ssl-cert=/etc/certs/server-cert.pem + --ssl-key=/etc/certs/server-key.pem + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_mysql/docker-compose.yml b/apps/emqx_auth_mysql/docker-compose.yml new file mode 100644 index 000000000..c37bf983b --- /dev/null +++ b/apps/emqx_auth_mysql/docker-compose.yml @@ -0,0 +1,34 @@ +version: '3' + +services: + erlang: + image: erlang:22.3 + volumes: + - ./:/emqx_auth_mysql + networks: + - emqx_bridge + depends_on: + - mysql_server + tty: true + + mysql_server: + image: mysql:${MYSQL_TAG} + restart: always + environment: + MYSQL_ROOT_PASSWORD: public + MYSQL_DATABASE: mqtt + networks: + - emqx_bridge + command: + --bind-address "::" + --default-authentication-plugin=mysql_native_password + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + --max_allowed_packet=128M + --skip-symbolic-links + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf b/apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf new file mode 100644 index 000000000..0efccce29 --- /dev/null +++ b/apps/emqx_auth_mysql/etc/emqx_auth_mysql.conf @@ -0,0 +1,116 @@ +##-------------------------------------------------------------------- +## MySQL Auth/ACL Plugin +##-------------------------------------------------------------------- + +## MySQL server address. +## +## Value: Port | IP:Port +## +## Examples: 3306, 127.0.0.1:3306, localhost:3306 +auth.mysql.server = 127.0.0.1:3306 + +## MySQL pool size. +## +## Value: Number +auth.mysql.pool = 8 + +## MySQL username. +## +## Value: String +## auth.mysql.username = + +## MySQL password. +## +## Value: String +## auth.mysql.password = + +## MySQL database. +## +## Value: String +auth.mysql.database = mqtt + +## MySQL query timeout +## +## Value: Duration +## auth.mysql.query_timeout = 5s + +## Variables: %u = username, %c = clientid + +## Authentication query. +## +## Note that column names should be 'password' and 'salt' (if used). +## In case column names differ in your DB - please use aliases, +## e.g. "my_column_name as password". +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +auth.mysql.auth_query = select password from mqtt_user where username = '%u' limit 1 +## auth.mysql.auth_query = select password_hash as password from mqtt_user where username = '%u' limit 1 + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.mysql.password_hash = sha256 + +## sha256 with salt prefix +## auth.mysql.password_hash = salt,sha256 + +## bcrypt with salt only prefix +## auth.mysql.password_hash = salt,bcrypt + +## sha256 with salt suffix +## auth.mysql.password_hash = sha256,salt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.mysql.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +auth.mysql.super_query = select is_superuser from mqtt_user where username = '%u' limit 1 + +## ACL query. +## +## Value: SQL +## +## Variables: +## - %a: ipaddr +## - %u: username +## - %c: clientid +## +## Note: You can add the 'ORDER BY' statement to control the rules match order +auth.mysql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' + +## Mysql ssl configuration. +## +## Value: on | off +auth.mysql.ssl = off + +## CA certificate. +## +## Value: File +## auth.mysql.ssl.cafile = path to your ca file + +## Client ssl certificate. +## +## Value: File +## auth.mysql.ssl.certfile = path to your clientcert file + +## Client ssl keyfile. +## +## Value: File +## auth.mysql.ssl.keyfile = path to your clientkey file diff --git a/apps/emqx_auth_mysql/include/emqx_auth_mysql.hrl b/apps/emqx_auth_mysql/include/emqx_auth_mysql.hrl new file mode 100644 index 000000000..fca431e81 --- /dev/null +++ b/apps/emqx_auth_mysql/include/emqx_auth_mysql.hrl @@ -0,0 +1,23 @@ + +-define(APP, emqx_auth_mysql). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_mysql/mqtt.sql b/apps/emqx_auth_mysql/mqtt.sql new file mode 100644 index 000000000..9635bee58 --- /dev/null +++ b/apps/emqx_auth_mysql/mqtt.sql @@ -0,0 +1,41 @@ + +DROP TABLE IF EXISTS `mqtt_acl`; + +CREATE TABLE `mqtt_acl` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `allow` int(1) DEFAULT NULL COMMENT '0: deny, 1: allow', + `ipaddr` varchar(60) DEFAULT NULL COMMENT 'IpAddress', + `username` varchar(100) DEFAULT NULL COMMENT 'Username', + `clientid` varchar(100) DEFAULT NULL COMMENT 'ClientId', + `access` int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub', + `topic` varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +LOCK TABLES `mqtt_acl` WRITE; + +INSERT INTO `mqtt_acl` (`id`, `allow`, `ipaddr`, `username`, `clientid`, `access`, `topic`) +VALUES + (1,1,NULL,'$all',NULL,2,'#'), + (2,0,NULL,'$all',NULL,1,'$SYS/#'), + (3,0,NULL,'$all',NULL,1,'eq #'), + (4,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'), + (5,1,'127.0.0.1',NULL,NULL,2,'#'), + (6,1,NULL,'dashboard',NULL,1,'$SYS/#'); + +UNLOCK TABLES; + + +DROP TABLE IF EXISTS `mqtt_user`; + +CREATE TABLE `mqtt_user` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(100) DEFAULT NULL, + `password` varchar(100) DEFAULT NULL, + `salt` varchar(35) DEFAULT NULL, + `is_superuser` tinyint(1) DEFAULT 0, + `created` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `mqtt_username` (`username`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; + diff --git a/apps/emqx_auth_mysql/priv/emqx_auth_mysql.schema b/apps/emqx_auth_mysql/priv/emqx_auth_mysql.schema new file mode 100644 index 000000000..37eed8a5f --- /dev/null +++ b/apps/emqx_auth_mysql/priv/emqx_auth_mysql.schema @@ -0,0 +1,129 @@ +%%-*- mode: erlang -*- +%% emqx_auth_mysql config mapping +{mapping, "auth.mysql.server", "emqx_auth_mysql.server", [ + {default, {"127.0.0.1", 3306}}, + {datatype, [integer, ip, string]} +]}. + +{mapping, "auth.mysql.pool", "emqx_auth_mysql.server", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.mysql.username", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mysql.password", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mysql.database", "emqx_auth_mysql.server", [ + {default, "mqtt"}, + {datatype, string} +]}. + +{mapping, "auth.mysql.query_timeout", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mysql.ssl", "emqx_auth_mysql.server", [ + {default, off}, + {datatype, flag} +]}. + +{mapping, "auth.mysql.ssl.cafile", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mysql.ssl.certfile", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.mysql.ssl.keyfile", "emqx_auth_mysql.server", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_mysql.server", fun(Conf) -> + {MyHost, MyPort} = + case cuttlefish:conf_get("auth.mysql.server", Conf) of + {Ip, Port} -> {Ip, Port}; + S -> case string:tokens(S, ":") of + [Domain] -> {Domain, 3306}; + [Domain, Port] -> {Domain, list_to_integer(Port)} + end + end, + Pool = cuttlefish:conf_get("auth.mysql.pool", Conf), + Username = cuttlefish:conf_get("auth.mysql.username", Conf), + Passwd = cuttlefish:conf_get("auth.mysql.password", Conf), + DB = cuttlefish:conf_get("auth.mysql.database", Conf), + Timeout = case cuttlefish:conf_get("auth.mysql.query_timeout", Conf) of + "" -> 300000; + Duration -> + case cuttlefish_duration:parse(Duration, ms) of + {error, Reason} -> error(Reason); + Ms when is_integer(Ms) -> Ms + end + end, + Options = [{pool_size, Pool}, + {auto_reconnect, 1}, + {host, MyHost}, + {port, MyPort}, + {user, Username}, + {password, Passwd}, + {database, DB}, + {encoding, utf8}, + {query_timeout, Timeout}, + {keep_alive, true}], + Options1 = + case cuttlefish:conf_get("auth.mysql.ssl", Conf) of + true -> + CA = cuttlefish:conf_get("auth.mysql.ssl.cafile", Conf), + Cert = cuttlefish:conf_get("auth.mysql.ssl.certfile", Conf), + Key = cuttlefish:conf_get("auth.mysql.ssl.keyfile", Conf), + Options ++ [{ssl, {server_name_indication, disable}, + {cacertfile, CA}, + {certfile, Cert}, + {keyfile, Key}}]; + _ -> + Options + end, + case inet:parse_address(MyHost) of + {ok, IpAddr} when tuple_size(IpAddr) =:= 8 -> + [{tcp_options, [inet6]} | Options1]; + _ -> + Options1 + end +end}. + +{mapping, "auth.mysql.auth_query", "emqx_auth_mysql.auth_query", [ + {datatype, string} +]}. + +{mapping, "auth.mysql.password_hash", "emqx_auth_mysql.password_hash", [ + {datatype, string} +]}. + +{mapping, "auth.mysql.super_query", "emqx_auth_mysql.super_query", [ + {datatype, string} +]}. + +{mapping, "auth.mysql.acl_query", "emqx_auth_mysql.acl_query", [ + {datatype, string} +]}. + +{translation, "emqx_auth_mysql.password_hash", fun(Conf) -> + HashValue = cuttlefish:conf_get("auth.mysql.password_hash", Conf), + case string:tokens(HashValue, ",") of + [Hash] -> list_to_atom(Hash); + [Prefix, Suffix] -> {list_to_atom(Prefix), list_to_atom(Suffix)}; + [Hash, MacFun, Iterations, Dklen] -> {list_to_atom(Hash), list_to_atom(MacFun), list_to_integer(Iterations), list_to_integer(Dklen)}; + _ -> plain + end +end}. diff --git a/apps/emqx_auth_mysql/rebar.config b/apps/emqx_auth_mysql/rebar.config new file mode 100644 index 000000000..cd0c71b50 --- /dev/null +++ b/apps/emqx_auth_mysql/rebar.config @@ -0,0 +1,35 @@ +{deps, + [{ecpool, {git,"https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqx_passwd, {git, "https://github.com/emqx/emqx-passwd", {tag, "v1.1.1"}}}, + {mysql, {git, "https://github.com/emqx/mysql-otp", {tag, "1.6.1"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + compressed, + {parse_transform} + ]}. +{overrides, [{add, [{erl_opts, [compressed]}]}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions + ]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}} + ]}, + {erl_opts, [debug_info]} + ]} + ]}. diff --git a/apps/emqx_auth_mysql/rebar.config.script b/apps/emqx_auth_mysql/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_mysql/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl b/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl new file mode 100644 index 000000000..174e3cd27 --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_acl_mysql.erl @@ -0,0 +1,119 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_mysql). + +-include("emqx_auth_mysql.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +%% ACL Callbacks +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(ClientInfo, PubSub, Topic, NoMatchAction, #{pool := Pool} = State) -> + case do_check_acl(Pool, ClientInfo, PubSub, Topic, NoMatchAction, State) of + ok -> emqx_metrics:inc(?ACL_METRICS(ignore)), ok; + {stop, allow} -> emqx_metrics:inc(?ACL_METRICS(allow)), {stop, allow}; + {stop, deny} -> emqx_metrics:inc(?ACL_METRICS(deny)), {stop, deny} + end. + +do_check_acl(_Pool, #{username := <<$$, _/binary>>}, _PubSub, _Topic, _NoMatchAction, _State) -> + ok; +do_check_acl(Pool, ClientInfo, PubSub, Topic, _NoMatchAction, #{acl_query := {AclSql, AclParams}}) -> + case emqx_auth_mysql_cli:query(Pool, AclSql, AclParams, ClientInfo) of + {ok, _Columns, []} -> ok; + {ok, _Columns, Rows} -> + Rules = filter(PubSub, compile(Rows)), + case match(ClientInfo, Topic, Rules) of + {matched, allow} -> {stop, allow}; + {matched, deny} -> {stop, deny}; + nomatch -> ok + end; + {error, Reason} -> + ?LOG(error, "[MySQL] do_check_acl error: ~p~n", [Reason]), + ok + end. + +match(_ClientInfo, _Topic, []) -> + nomatch; + +match(ClientInfo, Topic, [Rule|Rules]) -> + case emqx_access_rule:match(ClientInfo, Topic, Rule) of + nomatch -> + match(ClientInfo, Topic, Rules); + {matched, AllowDeny} -> + {matched, AllowDeny} + end. + +filter(PubSub, Rules) -> + [Term || Term = {_, _, Access, _} <- Rules, + Access =:= PubSub orelse Access =:= pubsub]. + +compile(Rows) -> + compile(Rows, []). +compile([], Acc) -> + Acc; +compile([[Allow, IpAddr, Username, ClientId, Access, Topic]|T], Acc) -> + Who = who(IpAddr, Username, ClientId), + Term = {allow(Allow), Who, access(Access), [topic(Topic)]}, + compile(T, [emqx_access_rule:compile(Term) | Acc]). + +who(_, <<"$all">>, _) -> + all; +who(null, null, null) -> + throw(undefined_who); +who(CIDR, Username, ClientId) -> + Cols = [{ipaddr, b2l(CIDR)}, {user, Username}, {client, ClientId}], + case [{C, V} || {C, V} <- Cols, not empty(V)] of + [Who] -> Who; + Conds -> {'and', Conds} + end. + +allow(1) -> allow; +allow(0) -> deny; +allow(<<"1">>) -> allow; +allow(<<"0">>) -> deny. + +access(1) -> subscribe; +access(2) -> publish; +access(3) -> pubsub; +access(<<"1">>) -> subscribe; +access(<<"2">>) -> publish; +access(<<"3">>) -> pubsub. + +topic(<<"eq ", Topic/binary>>) -> + {eq, Topic}; +topic(Topic) -> + Topic. + +description() -> + "ACL with Mysql". + +b2l(null) -> null; +b2l(B) -> binary_to_list(B). + +empty(null) -> true; +empty("") -> true; +empty(<<>>) -> true; +empty(_) -> false. diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src new file mode 100644 index 000000000..3e21de565 --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_mysql, + [{description, "EMQ X Authentication/ACL with MySQL"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_mysql_sup]}, + {applications, [kernel,stdlib,mysql,ecpool,emqx_passwd]}, + {mod, {emqx_auth_mysql_app,[]}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-mysql"} + ]} + ]}. diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src.script b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src b/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src new file mode 100644 index 000000000..1c40f2abc --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.appup.src @@ -0,0 +1,16 @@ +%% -*-: erlang -*- + +{VSN, + [ + {"4.2.0", [ + {load_module, emqx_auth_mysql_cli, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ], + [ + {"4.2.0", [ + {load_module, emqx_auth_mysql_cli, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ] + }. diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl b/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl new file mode 100644 index 000000000..9cd9d5a25 --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql.erl @@ -0,0 +1,91 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mysql). + +-include("emqx_auth_mysql.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/types.hrl"). + +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-define(EMPTY(Username), (Username =:= undefined orelse Username =:= <<>>)). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo = #{password := Password}, AuthResult, + #{auth_query := {AuthSql, AuthParams}, + super_query := SuperQuery, + hash_type := HashType, + pool := Pool}) -> + CheckPass = case emqx_auth_mysql_cli:query(Pool, AuthSql, AuthParams, ClientInfo) of + {ok, [<<"password">>], [[PassHash]]} -> + check_pass({PassHash, Password}, HashType); + {ok, [<<"password">>, <<"salt">>], [[PassHash, Salt]]} -> + check_pass({PassHash, Salt, Password}, HashType); + {ok, _Columns, []} -> + {error, not_found}; + {error, Reason} -> + ?LOG(error, "[MySQL] query '~p' failed: ~p", [AuthSql, Reason]), + {error, Reason} + end, + case CheckPass of + ok -> + emqx_metrics:inc(?AUTH_METRICS(success)), + {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), + anonymous => false, + auth_result => success}}; + {error, not_found} -> + emqx_metrics:inc(?AUTH_METRICS(ignore)), ok; + {error, ResultCode} -> + ?LOG(error, "[MySQL] Auth from mysql failed: ~p", [ResultCode]), + emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} + end. + +%%-------------------------------------------------------------------- +%% Is Superuser? +%%-------------------------------------------------------------------- + +-spec(is_superuser(atom(), maybe({string(), list()}), emqx_types:client()) -> boolean()). +is_superuser(_Pool, undefined, _ClientInfo) -> false; +is_superuser(Pool, {SuperSql, Params}, ClientInfo) -> + case emqx_auth_mysql_cli:query(Pool, SuperSql, Params, ClientInfo) of + {ok, [_Super], [[1]]} -> + true; + {ok, [_Super], [[_False]]} -> + false; + {ok, [_Super], []} -> + false; + {error, _Error} -> + false + end. + +check_pass(Password, HashType) -> + case emqx_passwd:check_pass(Password, HashType) of + ok -> ok; + {error, _Reason} -> {error, not_authorized} + end. + +description() -> "Authentication with MySQL". + diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql_app.erl b/apps/emqx_auth_mysql/src/emqx_auth_mysql_app.erl new file mode 100644 index 000000000..26895cd9a --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql_app.erl @@ -0,0 +1,74 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mysql_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_mysql.hrl"). + +-import(emqx_auth_mysql_cli, [parse_query/1]). + +%% Application callbacks +-export([ start/2 + , prep_stop/1 + , stop/1 + ]). + +%%-------------------------------------------------------------------- +%% Application callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_mysql_sup:start_link(), + if_enabled(auth_query, fun load_auth_hook/1), + if_enabled(acl_query, fun load_acl_hook/1), + + {ok, Sup}. + +prep_stop(State) -> + emqx:unhook('client.authenticate', fun emqx_auth_mysql:check/3), + emqx:unhook('client.check_acl', fun emqx_acl_mysql:check_acl/5), + State. + +stop(_State) -> + ok. + +load_auth_hook(AuthQuery) -> + ok = emqx_auth_mysql:register_metrics(), + SuperQuery = parse_query(application:get_env(?APP, super_query, undefined)), + {ok, HashType} = application:get_env(?APP, password_hash), + Params = #{auth_query => AuthQuery, + super_query => SuperQuery, + hash_type => HashType, + pool => ?APP}, + emqx:hook('client.authenticate', fun emqx_auth_mysql:check/3, [Params]). + +load_acl_hook(AclQuery) -> + ok = emqx_acl_mysql:register_metrics(), + emqx:hook('client.check_acl', fun emqx_acl_mysql:check_acl/5, [#{acl_query => AclQuery, pool =>?APP}]). + +%%-------------------------------------------------------------------- +%% Internal function +%%-------------------------------------------------------------------- + +if_enabled(Cfg, Fun) -> + case application:get_env(?APP, Cfg) of + {ok, Query} -> Fun(parse_query(Query)); + undefined -> ok + end. diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql_cli.erl b/apps/emqx_auth_mysql/src/emqx_auth_mysql_cli.erl new file mode 100644 index 000000000..c3ee3b02a --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql_cli.erl @@ -0,0 +1,91 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mysql_cli). + +-behaviour(ecpool_worker). + +-include("emqx_auth_mysql.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([ parse_query/1 + , connect/1 + , query/4 + ]). + +%%-------------------------------------------------------------------- +%% Avoid SQL Injection: Parse SQL to Parameter Query. +%%-------------------------------------------------------------------- + +parse_query(undefined) -> + undefined; +parse_query(Sql) -> + case re:run(Sql, "'%[ucCad]'", [global, {capture, all, list}]) of + {match, Variables} -> + Params = [Var || [Var] <- Variables], + {re:replace(Sql, "'%[ucCad]'", "?", [global, {return, list}]), Params}; + nomatch -> + {Sql, []} + end. + +%%-------------------------------------------------------------------- +%% MySQL Connect/Query +%%-------------------------------------------------------------------- + +connect(Options) -> + case mysql:start_link(Options) of + {ok, Pid} -> {ok, Pid}; + ignore -> {error, ignore}; + {error, Reason = {{_, {error, econnrefused}}, _}} -> + ?LOG(error, "[MySQL] Can't connect to MySQL server: Connection refused."), + {error, Reason}; + {error, Reason = {ErrorCode, _, Error}} -> + ?LOG(error, "[MySQL] Can't connect to MySQL server: ~p - ~p", [ErrorCode, Error]), + {error, Reason}; + {error, Reason} -> + ?LOG(error, "[MySQL] Can't connect to MySQL server: ~p", [Reason]), + {error, Reason} + end. + +query(Pool, Sql, Params, ClientInfo) -> + ecpool:with_client(Pool, fun(C) -> mysql:query(C, Sql, replvar(Params, ClientInfo)) end). + +replvar(Params, ClientInfo) -> + replvar(Params, ClientInfo, []). + +replvar([], _ClientInfo, Acc) -> + lists:reverse(Acc); + +replvar(["'%u'" | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [safe_get(username, ClientInfo) | Acc]); +replvar(["'%c'" | Params], ClientInfo = #{clientid := ClientId}, Acc) -> + replvar(Params, ClientInfo, [ClientId | Acc]); +replvar(["'%a'" | Params], ClientInfo = #{peerhost := IpAddr}, Acc) -> + replvar(Params, ClientInfo, [inet_parse:ntoa(IpAddr) | Acc]); +replvar(["'%C'" | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [safe_get(cn, ClientInfo)| Acc]); +replvar(["'%d'" | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [safe_get(dn, ClientInfo)| Acc]); +replvar([Param | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [Param | Acc]). + +safe_get(K, ClientInfo) -> + bin(maps:get(K, ClientInfo, "undefined")). + +bin(A) when is_atom(A) -> atom_to_binary(A, utf8); +bin(B) when is_binary(B) -> B; +bin(X) -> X. diff --git a/apps/emqx_auth_mysql/src/emqx_auth_mysql_sup.erl b/apps/emqx_auth_mysql/src/emqx_auth_mysql_sup.erl new file mode 100644 index 000000000..0b2bf2c38 --- /dev/null +++ b/apps/emqx_auth_mysql/src/emqx_auth_mysql_sup.erl @@ -0,0 +1,40 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mysql_sup). + +-behaviour(supervisor). + +-include("emqx_auth_mysql.hrl"). + +-export([start_link/0]). + +%% Supervisor callbacks +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +%%-------------------------------------------------------------------- +%% Supervisor callbacks +%%-------------------------------------------------------------------- + +init([]) -> + %% MySQL Connection Pool. + {ok, Server} = application:get_env(?APP, server), + PoolSpec = ecpool:pool_spec(?APP, ?APP, emqx_auth_mysql_cli, Server), + {ok, {{one_for_one, 10, 100}, [PoolSpec]}}. + diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE.erl b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE.erl new file mode 100644 index 000000000..044655ac1 --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE.erl @@ -0,0 +1,234 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_mysql_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-define(APP, emqx_auth_mysql). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +-define(DROP_ACL_TABLE, <<"DROP TABLE IF EXISTS mqtt_acl">>). + +-define(CREATE_ACL_TABLE, <<"CREATE TABLE mqtt_acl (" + " id int(11) unsigned NOT NULL AUTO_INCREMENT," + " allow int(1) DEFAULT NULL COMMENT '0: deny, 1: allow'," + " ipaddr varchar(60) DEFAULT NULL COMMENT 'IpAddress'," + " username varchar(100) DEFAULT NULL COMMENT 'Username'," + " clientid varchar(100) DEFAULT NULL COMMENT 'ClientId'," + " access int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub'," + " topic varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter'," + " PRIMARY KEY (`id`)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4">>). + +-define(INIT_ACL, <<"INSERT INTO mqtt_acl (id, allow, ipaddr, username, clientid, access, topic)" + "VALUES (1,1,'127.0.0.1','u1','c1',1,'t1')," + "(2,0,'127.0.0.1','u2','c2',1,'t1')," + "(3,1,'10.10.0.110','u1','c1',1,'t1')," + "(4,1,'127.0.0.1','u3','c3',3,'t1')">>). + +-define(DROP_AUTH_TABLE, <<"DROP TABLE IF EXISTS `mqtt_user`">>). + +-define(CREATE_AUTH_TABLE, <<"CREATE TABLE `mqtt_user` (" + "`id` int(11) unsigned NOT NULL AUTO_INCREMENT," + "`username` varchar(100) DEFAULT NULL," + "`password` varchar(100) DEFAULT NULL," + "`salt` varchar(100) DEFAULT NULL," + "`is_superuser` tinyint(1) DEFAULT 0," + "`created` datetime DEFAULT NULL," + "PRIMARY KEY (`id`)," + "UNIQUE KEY `mqtt_username` (`username`)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4">>). + +-define(INIT_AUTH, <<"INSERT INTO mqtt_user (id, is_superuser, username, password, salt)" + "VALUES (1, 1, 'plain', 'plain', 'salt')," + "(2, 0, 'md5', '1bc29b36f623ba82aaf6724fd3b16718', 'salt')," + "(3, 0, 'sha', 'd8f4590320e1343a915b6394170650a8f35d6926', 'salt')," + "(4, 0, 'sha256', '5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e', 'salt')," + "(5, 0, 'pbkdf2_password', 'cdedb5281bb2f801565a1122b2563515', 'ATHENA.MIT.EDUraeburn')," + "(6, 0, 'bcrypt_foo', '$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6', '$2a$12$sSS8Eg.ovVzaHzi1nUHYK.')," + "(7, 0, 'bcrypt', '$2y$16$rEVsDarhgHYB0TGnDFJzyu5f.T.Ha9iXMTk9J36NCMWWM7O16qyaK', 'salt')," + "(8, 0, 'bcrypt_wrong', '$2y$16$rEVsDarhgHYB0TGnDFJzyu', 'salt')">>). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> + emqx_ct:all(?MODULE). + +init_per_suite(Cfg) -> + emqx_ct_helpers:start_apps([emqx_auth_mysql], fun set_special_configs/1), + init_mysql_data(), + Cfg. + +end_per_suite(_) -> + deinit_mysql_data(), + emqx_ct_helpers:stop_apps([emqx_auth_mysql]), + ok. + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); + +set_special_configs(_App) -> + ok. + +init_mysql_data() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?APP})), + %% Users + ok = mysql:query(Pid, ?DROP_AUTH_TABLE), + ok = mysql:query(Pid, ?CREATE_AUTH_TABLE), + ok = mysql:query(Pid, ?INIT_AUTH), + + %% ACLs + ok = mysql:query(Pid, ?DROP_ACL_TABLE), + ok = mysql:query(Pid, ?CREATE_ACL_TABLE), + ok = mysql:query(Pid, ?INIT_ACL). + +deinit_mysql_data() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?APP})), + ok = mysql:query(Pid, ?DROP_AUTH_TABLE), + ok = mysql:query(Pid, ?DROP_ACL_TABLE). + +%%-------------------------------------------------------------------- +%% Test cases +%%-------------------------------------------------------------------- + +t_check_acl(_) -> + User0 = #{zone => external,peerhost => {127,0,0,1}}, + allow = emqx_access_control:check_acl(User0, subscribe, <<"t1">>), + User1 = #{zone => external, clientid => <<"c1">>, username => <<"u1">>, peerhost => {127,0,0,1}}, + User2 = #{zone => external, clientid => <<"c2">>, username => <<"u2">>, peerhost => {127,0,0,1}}, + allow = emqx_access_control:check_acl(User1, subscribe, <<"t1">>), + deny = emqx_access_control:check_acl(User2, subscribe, <<"t1">>), + + User3 = #{zone => external, peerhost => {10,10,0,110}, clientid => <<"c1">>, username => <<"u1">>}, + User4 = #{zone => external, peerhost => {10,10,10,110}, clientid => <<"c1">>, username => <<"u1">>}, + allow = emqx_access_control:check_acl(User3, subscribe, <<"t1">>), + allow = emqx_access_control:check_acl(User3, subscribe, <<"t1">>), + allow = emqx_access_control:check_acl(User3, subscribe, <<"t2">>),%% nomatch -> ignore -> emqx acl + allow = emqx_access_control:check_acl(User4, subscribe, <<"t1">>),%% nomatch -> ignore -> emqx acl + User5 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c3">>, username => <<"u3">>}, + allow = emqx_access_control:check_acl(User5, subscribe, <<"t1">>), + allow = emqx_access_control:check_acl(User5, publish, <<"t1">>). + +t_acl_super(_Config) -> + reload([{password_hash, plain}, + {auth_query, "select password from mqtt_user where username = '%u' limit 1"}]), + {ok, C} = emqtt:start_link([{host, "localhost"}, + {clientid, <<"simpleClient">>}, + {username, <<"plain">>}, + {password, <<"plain">>}]), + {ok, _} = emqtt:connect(C), + timer:sleep(10), + emqtt:subscribe(C, <<"TopicA">>, qos2), + timer:sleep(1000), + emqtt:publish(C, <<"TopicA">>, <<"Payload">>, qos2), + timer:sleep(1000), + receive + {publish, #{payload := Payload}} -> + ?assertEqual(<<"Payload">>, Payload) + after + 1000 -> + ct:fail({receive_timeout, <<"Payload">>}), + ok + end, + emqtt:disconnect(C). + +t_check_auth(_) -> + Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external}, + Md5 = #{clientid => <<"md5">>, username => <<"md5">>, zone => external}, + Sha = #{clientid => <<"sha">>, username => <<"sha">>, zone => external}, + Sha256 = #{clientid => <<"sha256">>, username => <<"sha256">>, zone => external}, + Pbkdf2 = #{clientid => <<"pbkdf2_password">>, username => <<"pbkdf2_password">>, zone => external}, + BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external}, + User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external}, + Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external}, + BcryptWrong = #{clientid => <<"bcrypt_wrong">>, username => <<"bcrypt_wrong">>, zone => external}, + reload([{password_hash, plain}]), + {ok,#{is_superuser := true}} = + emqx_access_control:authenticate(Plain#{password => <<"plain">>}), + reload([{password_hash, md5}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(Md5#{password => <<"md5">>}), + reload([{password_hash, sha}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(Sha#{password => <<"sha">>}), + reload([{password_hash, sha256}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}), + reload([{password_hash, bcrypt}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}), + {error, not_authorized} = + emqx_access_control:authenticate(BcryptWrong#{password => <<"password">>}), + %%pbkdf2 sha + reload([{password_hash, {pbkdf2, sha, 1, 16}}, + {auth_query, "select password, salt from mqtt_user where username = '%u' limit 1"}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}), + reload([{password_hash, {salt, bcrypt}}]), + {ok,#{is_superuser := false}} = + emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}), + {error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}), + {error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}). + +t_comment_config(_) -> + application:stop(?APP), + [application:unset_env(?APP, Par) || Par <- [acl_query, auth_query]], + application:start(?APP). + +t_placeholders(_) -> + ClientA = #{username => <<"plain">>, clientid => <<"plain">>, zone => external}, + + reload([{password_hash, plain}, + {auth_query, "select password from mqtt_user where username = '%u' and 'a_cn_val' = '%C' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => undefined}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => <<"a_cn_val">>}), + + reload([{auth_query, "select password from mqtt_user where username = '%c' and 'a_dn_val' = '%d' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => undefined}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => <<"a_dn_val">>}), + + reload([{auth_query, "select password from mqtt_user where username = '%u' and '192.168.1.5' = '%a' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, peerhost => {192,168,1,5}}). + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +reload(Config) when is_list(Config) -> + application:stop(?APP), + [application:set_env(?APP, K, V) || {K, V} <- Config], + application:start(?APP). diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca-key.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca-key.pem new file mode 100644 index 000000000..e9717011e --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA0kGUBi9NDp65jgdxKfizIfuSr2wpwb44yM9SuP4oUQSULOA2 +4iFpLR/c5FAYHU81y9Vx91dQjdZfffaBZuv2zVvteXUkol8Nez7boKbo2E41MTew +8edtNKZAQVvnaHAC2NCZxjchCzUCDEoUUcl+cIERZ8R48FBqK5iTVcMRIx1akwus ++dhBqP0ykA5TGOWZkJrLM9aUXSPQha9+wXlOpkvu0Ur2nkX8PPJnifWao9UShSar +ll1IqPZNCSlZMwcFYcQNBCpdvITUUYlHvMRQV64bUpOxUGDuJkQL3dLKBlNuBRlJ +BcjBAKw7rFnwwHZcMmQ9tan/dZzpzwjo/T0XjwIDAQABAoIBAQCSHvUqnzDkWjcG +l/Fzg92qXlYBCCC0/ugj1sHcwvVt6Mq5rVE3MpUPwTcYjPlVVTlD4aEEjm/zQuq2 +ddxUlOS+r4aIhHrjRT/vSS4FpjnoKeIZxGR6maVxk6DQS3i1QjMYT1CvSpzyVvKH +a+xXMrtmoKxh+085ZAmFJtIuJhUA2yEa4zggCxWnvz8ecLClUPfVDPhdLBHc3KmL +CRpHEC6L/wanvDPRdkkzfKyaJuIJlTDaCg63AY5sDkTW2I57iI/nJ3haSeidfQKz +39EfbnM1A/YprIakafjAu3frBIsjBVcxwGihZmL/YriTHjOggJF841kT5zFkkv2L +/530Wk6xAoGBAOqZLZ4DIi/zLndEOz1mRbUfjc7GQUdYplBnBwJ22VdS0P4TOXnd +UbJth2MA92NM7ocTYVFl4TVIZY/Y+Prxk7KQdHWzR7JPpKfx9OEVgtSqV0vF9eGI +rKp79Y1T4Mvc3UcQCXX6TP7nHLihEzpS8odm2LW4txrOiLsn4Fq/IWrLAoGBAOVv +6U4tm3lImotUupKLZPKEBYwruo9qRysoug9FiorP4TjaBVOfltiiHbAQD6aGfVtN +SZpZZtrs17wL7Xl4db5asgMcZd+8Hkfo5siR7AuGW9FZloOjDcXb5wCh9EvjJ74J +Cjw7RqyVymq9t7IP6wnVwj5Ck48YhlOZCz/mzlnNAoGAWq7NYFgLvgc9feLFF23S +IjpJQZWHJEITP98jaYNxbfzYRm49+GphqxwFinKULjFNvq7yHlnIXSVYBOu1CqOZ +GRwXuGuNmlKI7lZr9xmukfAqgGLMMdr4C4qRF4lFyufcLRz42z7exmWlx4ST/yaT +E13hBRWayeTuG5JFei6Jh1MCgYEAqmX4LyC+JFBgvvQZcLboLRkSCa18bADxhENG +FAuAvmFvksqRRC71WETmqZj0Fqgxt7pp3KFjO1rFSprNLvbg85PmO1s+6fCLyLpX +lESTu2d5D71qhK93jigooxalGitFm+SY3mzjq0/AOpBWOn+J/w7rqVPGxXLgaHv0 +l+vx+00CgYBOvo9/ImjwYii2jFl+sHEoCzlvpITi2temRlT2j6ulSjCLJgjwEFw9 +8e+vvfQumQOsutakUVyURrkMGNDiNlIv8kv5YLCCkrwN22E6Ghyi69MJUvHQXkc/ +QZhjn/luyfpB5f/BeHFS2bkkxAXo+cfG45ApY3Qfz6/7o+H+vDa6/A== +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem new file mode 100644 index 000000000..00b31d8a4 --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDAzCCAeugAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowPDE6MDgGA1UEAwwxTXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANJBlAYvTQ6euY4HcSn4syH7kq9s +KcG+OMjPUrj+KFEElCzgNuIhaS0f3ORQGB1PNcvVcfdXUI3WX332gWbr9s1b7Xl1 +JKJfDXs+26Cm6NhONTE3sPHnbTSmQEFb52hwAtjQmcY3IQs1AgxKFFHJfnCBEWfE +ePBQaiuYk1XDESMdWpMLrPnYQaj9MpAOUxjlmZCayzPWlF0j0IWvfsF5TqZL7tFK +9p5F/DzyZ4n1mqPVEoUmq5ZdSKj2TQkpWTMHBWHEDQQqXbyE1FGJR7zEUFeuG1KT +sVBg7iZEC93SygZTbgUZSQXIwQCsO6xZ8MB2XDJkPbWp/3Wc6c8I6P09F48CAwEA +AaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADKz6bIpP5anp +GgLB0jkclRWuMlS4qqIt4itSsMXPJ/ezpHwECixmgW2TIQl6S1woRkUeMxhT2/Ay +Sn/7aKxuzRagyE5NEGOvrOuAP5RO2ZdNJ/X3/Rh533fK1sOTEEbSsWUvW6iSkZef +rsfZBVP32xBhRWkKRdLeLB4W99ADMa0IrTmZPCXHSSE2V4e1o6zWLXcOZeH1Qh8N +SkelBweR+8r1Fbvy1r3s7eH7DCbYoGEDVLQGOLvzHKBisQHmoDnnF5E9g1eeNRdg +o+vhOKfYCOzeNREJIqS42PHcGhdNRk90ycigPmfUJclz1mDHoMjKR2S5oosTpr65 +tNPx3CL7GA== +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem new file mode 100644 index 000000000..aad1404ca --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAzANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0N1oXDTMwMDYwOTAzMzg0N1owQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DbGllbnRfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVYSWpOvCTupz82fc85Opv +EQ7rkB8X2oOMyBCpkyHKBIr1ZQgRDWBp9UVOASq3GnSElm6+T3Kb1QbOffa8GIlw +sjAueKdq5L2eSkmPIEQ7eoO5kEW+4V866hE1LeL/PmHg2lGP0iqZiJYtElhHNQO8 +3y9I7cm3xWMAA3SSWikVtpJRn3qIp2QSrH+tK+/HHbE5QwtPxdir4ULSCSOaM5Yh +Wi5Oto88TZqe1v7SXC864JVvO4LuS7TuSreCdWZyPXTJFBFeCEWSAxonKZrqHbBe +CwKML6/0NuzjaQ51c2tzmVI6xpHj3nnu4cSRx6Jf9WBm+35vm0wk4pohX3ptdzeV +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAByQ5zSNeFUH +Aw7JlpZHtHaSEeiiyBHke20ziQ07BK1yi/ms2HAWwQkpZv149sjNuIRH8pkTmkZn +g8PDzSefjLbC9AsWpWV0XNV22T/cdobqLqMBDDZ2+5bsV+jTrOigWd9/AHVZ93PP +IJN8HJn6rtvo2l1bh/CdsX14uVSdofXnuWGabNTydqtMvmCerZsdf6qKqLL+PYwm +RDpgWiRUY7KPBSSlKm/9lJzA+bOe4dHeJzxWFVCJcbpoiTFs1je1V8kKQaHtuW39 +ifX6LTKUMlwEECCbDKM8Yq2tm8NjkjCcnFDtKg8zKGPUu+jrFMN5otiC3wnKcP7r +O9EkaPcgYH8= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem new file mode 100644 index 000000000..6789d0291 --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA1WElqTrwk7qc/Nn3POTqbxEO65AfF9qDjMgQqZMhygSK9WUI +EQ1gafVFTgEqtxp0hJZuvk9ym9UGzn32vBiJcLIwLninauS9nkpJjyBEO3qDuZBF +vuFfOuoRNS3i/z5h4NpRj9IqmYiWLRJYRzUDvN8vSO3Jt8VjAAN0klopFbaSUZ96 +iKdkEqx/rSvvxx2xOUMLT8XYq+FC0gkjmjOWIVouTraPPE2antb+0lwvOuCVbzuC +7ku07kq3gnVmcj10yRQRXghFkgMaJyma6h2wXgsCjC+v9Dbs42kOdXNrc5lSOsaR +49557uHEkceiX/VgZvt+b5tMJOKaIV96bXc3lQIDAQABAoIBAF7yjXmSOn7h6P0y +WCuGiTLG2mbDiLJqj2LTm2Z5i+2Cu/qZ7E76Ls63TxF4v3MemH5vGfQhEhR5ZD/6 +GRJ1sKKvB3WGRqjwA9gtojHH39S/nWGy6vYW/vMOOH37XyjIr3EIdIaUtFQBTSHd +Kd71niYrAbVn6fyWHolhADwnVmTMOl5OOAhCdEF4GN3b5aIhIu8BJ7EUzTtHBJIj +CAEfjZFjDs1y1cIgGFJkuIQxMfCpq5recU2qwip7YO6fk//WEjOPu7kSf5IEswL8 +jg1dea9rGBV6KaD2xsgsC6Ll6Sb4BbsrHMfflG3K2Lk3RdVqqTFp1Fn1PTLQE/1S +S/SZPYECgYEA9qYcHKHd0+Q5Ty5wgpxKGa4UCWkpwvfvyv4bh8qlmxueB+l2AIdo +ZvkM8gTPagPQ3WypAyC2b9iQu70uOJo1NizTtKnpjDdN1YpDjISJuS/P0x73gZwy +gmoM5AzMtN4D6IbxXtXnPaYICvwLKU80ouEN5ZPM4/ODLUu6gsp0v2UCgYEA3Xgi +zMC4JF0vEKEaK0H6QstaoXUmw/lToZGH3TEojBIkb/2LrHUclygtONh9kJSFb89/ +jbmRRLAOrx3HZKCNGUmF4H9k5OQyAIv6OGBinvLGqcbqnyNlI+Le8zxySYwKMlEj +EMrBCLmSyi0CGFrbZ3mlj/oCET/ql9rNvcK+DHECgYAEx5dH3sMjtgp+RFId1dWB +xePRgt4yTwewkVgLO5wV82UOljGZNQaK6Eyd7AXw8f38LHzh+KJQbIvxd2sL4cEi +OaAoohpKg0/Y0YMZl//rPMf0OWdmdZZs/I0fZjgZUSwWN3c59T8z7KG/RL8an9RP +S7kvN7wCttdV61/D5RR6GQKBgDxCe/WKWpBKaovzydMLWLTj7/0Oi0W3iXHkzzr4 +LTgvl4qBSofaNbVLUUKuZTv5rXUG2IYPf99YqCYtzBstNDc1MiAriaBeFtzfOW4t +i6gEFtoLLbuvPc3N5Sv5vn8Ug5G9UfU3td5R4AbyyCcoUZqOFuZd+EIJSiOXfXOs +kVmBAoGBAIU9aPAqhU5LX902oq8KsrpdySONqv5mtoStvl3wo95WIqXNEsFY60wO +q02jKQmJJ2MqhkJm2EoF2Mq8+40EZ5sz8LdgeQ/M0yQ9lAhPi4rftwhpe55Ma9dk +SE9X1c/DMCBEaIjJqVXdy0/EeArwpb8sHkguVVAZUWxzD+phm1gs +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/private_key.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/private_key.pem new file mode 100644 index 000000000..8fbf6bdec --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/private_key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA1zVmMhPqpSPMmYkKh5wwlRD5XuS8YWJKEM6tjFx61VK8qxHE +YngkC2KnL5EuKAjQZIF3tJskwt0hAat047CCCZxrkNEpbVvSnvnk+A/8bg/Ww1n3 +qxzfifhsWfpUKlDnwrtH+ftt+5rZeEkf37XAPy7ZjzecAF9SDV6WSiPeAxUX2+hN +dId42Pf45woo4LFGUlQeagCFkD/R0dpNIMGwcnkKCUikiBqr2ijSIgvRtBfZ9fBG +jFGER2uE/Eay4AgcQsHue8skRwDCng8OnqtPnBtTytmqTy9V/BRgsVKUoksm6wsx +kUYwgHeaq7UCvlCm25SZ7yRyd4k8t0BKDf2h+wIDAQABAoIBAEQcrHmRACTADdNS +IjkFYALt2l8EOfMAbryfDSJtapr1kqz59JPNvmq0EIHnixo0n/APYdmReLML1ZR3 +tYkSpjVwgkLVUC1CcIjMQoGYXaZf8PLnGJHZk45RR8m6hsTV0mQ5bfBaeVa2jbma +OzJMjcnxg/3l9cPQZ2G/3AUfEPccMxOXp1KRz3mUQcGnKJGtDbN/kfmntcwYoxaE +Zg4RoeKAoMpK1SSHAiJKe7TnztINJ7uygR9XSzNd6auY8A3vomSIjpYO7XL+lh7L +izm4Ir3Gb/eCYBvWgQyQa2KCJgK/sQyEs3a09ngofSEUhQJQYhgZDwUj+fDDOGqj +hCZOA8ECgYEA+ZWuHdcUQ3ygYhLds2QcogUlIsx7C8n/Gk/FUrqqXJrTkuO0Eqqa +B47lCITvmn2zm0ODfSFIARgKEUEDLS/biZYv7SUTrFqBLcet+aGI7Dpv91CgB75R +tNzcIf8VxoiP0jPqdbh9mLbbxGi5Uc4p9TVXRljC4hkswaouebWee0sCgYEA3L2E +YB3kiHrhPI9LHS5Px9C1w+NOu5wP5snxrDGEgaFCvL6zgY6PflacppgnmTXl8D1x +im0IDKSw5dP3FFonSVXReq3CXDql7UnhfTCiLDahV7bLxTH42FofcBpDN3ERdOal +58RwQh6VrLkzQRVoObo+hbGlFiwwSAfQC509FhECgYBsRSBpVXo25IN2yBRg09cP ++gdoFyhxrsj5kw1YnB13WrrZh+oABv4WtUhp77E5ZbpaamlKCPwBbXpAjeFg4tfr +0bksuN7V79UGFQ9FsWuCfr8/nDwv38H2IbFlFhFONMOfPmJBey0Q6JJhm8R41mSh +OOiJXcv85UrjIH5U0hLUDQKBgQDVLOU5WcUJlPoOXSgiT0ZW5xWSzuOLRUUKEf6l +19BqzAzCcLy0orOrRAPW01xylt2v6/bJw1Ahva7k1ZZo/kOwjANYoZPxM+ZoSZBN +MXl8j2mzZuJVV1RFxItV3NcLJNPB/Lk+IbRz9kt/2f9InF7iWR3mSU/wIM6j0X+2 +p6yFsQKBgQCM/ldWb511lA+SNkqXB2P6WXAgAM/7+jwsNHX2ia2Ikufm4SUEKMSv +mti/nZkHDHsrHU4wb/2cOAywMELzv9EHzdcoenjBQP65OAc/1qWJs+LnBcCXfqKk +aHjEZW6+brkHdRGLLY3YAHlt/AUL+RsKPJfN72i/FSpmu+52G36eeQ== +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/public_key.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/public_key.pem new file mode 100644 index 000000000..f9772b533 --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/public_key.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1zVmMhPqpSPMmYkKh5ww +lRD5XuS8YWJKEM6tjFx61VK8qxHEYngkC2KnL5EuKAjQZIF3tJskwt0hAat047CC +CZxrkNEpbVvSnvnk+A/8bg/Ww1n3qxzfifhsWfpUKlDnwrtH+ftt+5rZeEkf37XA +Py7ZjzecAF9SDV6WSiPeAxUX2+hNdId42Pf45woo4LFGUlQeagCFkD/R0dpNIMGw +cnkKCUikiBqr2ijSIgvRtBfZ9fBGjFGER2uE/Eay4AgcQsHue8skRwDCng8OnqtP +nBtTytmqTy9V/BRgsVKUoksm6wsxkUYwgHeaq7UCvlCm25SZ7yRyd4k8t0BKDf2h ++wIDAQAB +-----END PUBLIC KEY----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-cert.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-cert.pem new file mode 100644 index 000000000..a2f9688df --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcEnEm5hqP1EbEJycOz8Ua +NWp29QdpFUzTWhkKGhVXk+0msmNTw4NBAFB42moY44OU8wvDideOlJNhPRWveD8z +G2lxzJA91p0UK4et8ia9MmeuCGhdC9jxJ8X69WNlUiPyy0hI/ZsqRq9Z0C2eW0iL +JPXsy4X8Xpw3SFwoXf5pR9RFY5Pb2tuyxqmSestu2VXT/NQjJg4CVDR3mFcHPXZB +4elRzH0WshExEGkgy0bg20MJeRc2Qdb5Xx+EakbmwroDWaCn3NSGqQ7jv6Vw0doy +TGvS6h6RHBxnyqRfRgKGlCoOMG9/5+rFJC00QpCUG2vHXHWGoWlMlJ3foN7rj5v9 +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ5zt2rj4Ag6 +zpN59AWC1Fur8g8l41ksHkSpKPp+PtyO/ngvbMqBpfmK1e7JCKZv/68QXfMyWWAI +hwalqZkXXWHKjuz3wE7dE25PXFXtGJtcZAaj10xt98fzdqt8lQSwh2kbfNwZIz1F +sgAStgE7+ZTcqTgvNB76Os1UK0to+/P0VBWktaVFdyub4Nc2SdPVnZNvrRBXBwOD +3V8ViwywDOFoE7DvCvwx/SVsvoC0Z4j3AMMovO6oHicP7uU83qsQgm1Qru3YeoLR ++DoVi7IPHbWvN7MqFYn3YjNlByO2geblY7MR0BlqbFlmFrqLsUfjsh2ys7/U/knC +dN/klu446fI= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-key.pem b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-key.pem new file mode 100644 index 000000000..a1dfd5f78 --- /dev/null +++ b/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/server-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAnBJxJuYaj9RGxCcnDs/FGjVqdvUHaRVM01oZChoVV5PtJrJj +U8ODQQBQeNpqGOODlPMLw4nXjpSTYT0Vr3g/MxtpccyQPdadFCuHrfImvTJnrgho +XQvY8SfF+vVjZVIj8stISP2bKkavWdAtnltIiyT17MuF/F6cN0hcKF3+aUfURWOT +29rbssapknrLbtlV0/zUIyYOAlQ0d5hXBz12QeHpUcx9FrIRMRBpIMtG4NtDCXkX +NkHW+V8fhGpG5sK6A1mgp9zUhqkO47+lcNHaMkxr0uoekRwcZ8qkX0YChpQqDjBv +f+fqxSQtNEKQlBtrx1x1hqFpTJSd36De64+b/QIDAQABAoIBAFiah66Dt9SruLkn +WR8piUaFyLlcBib8Nq9OWSTJBhDAJERxxb4KIvvGB+l0ZgNXNp5bFPSfzsZdRwZP +PX5uj8Kd71Dxx3mz211WESMJdEC42u+MSmN4lGLkJ5t/sDwXU91E1vbJM0ve8THV +4/Ag9qA4DX2vVZOeyqT/6YHpSsPNZplqzrbAiwrfHwkctHfgqwOf3QLfhmVQgfCS +VwidBldEUv2whSIiIxh4Rv5St4kA68IBCbJxdpOpyuQBkk6CkxZ7VN9FqOuSd4Pk +Wm7iWyBMZsCmELZh5XAXld4BEt87C5R4CvbPBDZxAv3THk1DNNvpy3PFQfwARRFb +SAToYMECgYEAyL7U8yxpzHDYWd3oCx6vTi9p9N/z0FfAkWrRF6dm4UcSklNiT1Aq +EOnTA+SaW8tV3E64gCWcY23gNP8so/ZseWj6L+peHwtchaP9+KB7yGw2A+05+lOx +VetLTjAOmfpiUXFe5w1q4C1RGhLjZjjzW+GvwdAuchQgUEFaomrV+PUCgYEAxwfH +cmVGFbAktcjU4HSRjKSfawCrut+3YUOLybyku3Q/hP9amG8qkVTFe95CTLjLe2D0 +ccaTTpofFEJ32COeck0g0Ujn/qQ+KXRoauOYs4FB1DtqMpqB78wufWEUpDpbd9/h +J+gJdC/IADd4tJW9zA92g8IA7ZtFmqDtiSpQ0ekCgYAQGkaorvJZpN+l7cf0RGTZ +h7IfI2vCVZer0n6tQA9fmLzjoe6r4AlPzAHSOR8sp9XeUy43kUzHKQQoHCPvjw/K +eWJAP7OHF/k2+x2fOPhU7mEy1W+mJdp+wt4Kio5RSaVjVQ3AyPG+w8PSrJszEvRq +dWMMz+851WV2KpfjmWBKlQKBgQC++4j4DZQV5aMkSKV1CIZOBf3vaIJhXKEUFQPD +PmB4fBEjpwCg+zNGp6iktt65zi17o8qMjrb1mtCt2SY04eD932LZUHNFlwcLMmes +Ad+aiDLJ24WJL1f16eDGcOyktlblDZB5gZ/ovJzXEGOkLXglosTfo77OQculmDy2 +/UL2WQKBgGeKasmGNfiYAcWio+KXgFkHXWtAXB9B91B1OFnCa40wx+qnl71MIWQH +PQ/CZFNWOfGiNEJIZjrHsfNJoeXkhq48oKcT0AVCDYyLV0VxDO4ejT95mGW6njNd +JpvmhwwAjOvuWVr0tn4iXlSK8irjlJHmwcRjLTJq97vE9fsA2MjI +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_pgsql/.ci/docker-compose.yml b/apps/emqx_auth_pgsql/.ci/docker-compose.yml new file mode 100644 index 000000000..8782a841d --- /dev/null +++ b/apps/emqx_auth_pgsql/.ci/docker-compose.yml @@ -0,0 +1,30 @@ +version: '3' + +services: + erlang: + image: erlang:22.3 + volumes: + - ../:/emqx_auth_pgsql + networks: + - emqx_bridge + depends_on: + - pgsql_server + tty: true + + pgsql_server: + build: + context: ./pgsql + args: + BUILD_FROM: postgres:${PGSQL_TAG} + image: emqx-pgsql + restart: always + environment: + POSTGRES_PASSWORD: public + POSTGRES_USER: root + POSTGRES_DB: mqtt + networks: + - emqx_bridge + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_pgsql/.ci/pgsql/Dockerfile b/apps/emqx_auth_pgsql/.ci/pgsql/Dockerfile new file mode 100644 index 000000000..785bb875f --- /dev/null +++ b/apps/emqx_auth_pgsql/.ci/pgsql/Dockerfile @@ -0,0 +1,8 @@ +ARG BUILD_FROM=postgres:11 +FROM ${BUILD_FROM} +COPY pg.conf /etc/postgresql/postgresql.conf +COPY server-cert.pem /etc/postgresql/server-cert.pem +COPY server-key.pem /etc/postgresql/server-key.pem +RUN chown -R postgres:postgres /etc/postgresql \ + && chmod 600 /etc/postgresql/*.pem +CMD ["-c", "config_file=/etc/postgresql/postgresql.conf"] diff --git a/apps/emqx_auth_pgsql/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_pgsql/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..389359fb3 --- /dev/null +++ b/apps/emqx_auth_pgsql/.github/workflows/run_test_cases.yaml @@ -0,0 +1,51 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + strategy: + matrix: + pgsql_tag: + - 9 + - 10 + - 11 + - 12 + - 13 + network_type: + - ipv4 + - ipv6 + steps: + - name: install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + - uses: actions/checkout@v1 + - name: run test cases + env: + PGSQL_TAG: ${{ matrix.pgsql_tag }} + NETWORK_TYPE: ${{ matrix.network_type }} + run: | + set -e -u -x + if [ "$NETWORK_TYPE" = "ipv6" ]; then docker network create --driver bridge --ipv6 --subnet fd15:555::/64 tests_emqx_bridge --attachable; fi + + cp test/emqx_auth_pgsql_SUITE_data/* .ci/pgsql/ + docker-compose -f .ci/docker-compose.yml -p tests up -d --build + if [ "$NETWORK_TYPE" != "ipv6" ]; then + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "sed -i '/auth.pgsql.server/c auth.pgsql.server = pgsql_server:5432' /emqx_auth_pgsql/etc/emqx_auth_pgsql.conf" + else + ipv6_address=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=tests_pgsql_server_1 -q)) + docker exec -i $(docker ps -a -f name=tests_erlang_1 -q) sh -c "sed -i '/auth.pgsql.server/c auth.pgsql.server = $ipv6_address:5432' /emqx_auth_pgsql/etc/emqx_auth_pgsql.conf" + fi + + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_pgsql xref" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_pgsql eunit" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_pgsql ct" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_pgsql cover" + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs_for_pgsql${{ matrix.pgsql_tag }}_{{matrix.network_type}} + path: _build/test/logs diff --git a/apps/emqx_auth_pgsql/.gitignore b/apps/emqx_auth_pgsql/.gitignore new file mode 100644 index 000000000..672d34c0c --- /dev/null +++ b/apps/emqx_auth_pgsql/.gitignore @@ -0,0 +1,20 @@ +ebin +.rebar +.eunit +.DS_Store +.erlang.mk/ +deps/ +emqx_auth_pgsql.d +ct.coverdata +logs/ +test/ct.cover.spec +test/*.beam +data/ +.DS_Store +cover/ +eunit.coverdata +_build/ +rebar.lock +erlang.mk +*.conf.rendered +.rebar3/ diff --git a/apps/emqx_auth_pgsql/LICENSE b/apps/emqx_auth_pgsql/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_pgsql/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_pgsql/Makefile b/apps/emqx_auth_pgsql/Makefile new file mode 100644 index 000000000..3c379d2bf --- /dev/null +++ b/apps/emqx_auth_pgsql/Makefile @@ -0,0 +1,37 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_pgsql.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_pgsql.conf -i priv/emqx_auth_pgsql.schema -d data diff --git a/apps/emqx_auth_pgsql/README.md b/apps/emqx_auth_pgsql/README.md new file mode 100644 index 000000000..2dccd6f53 --- /dev/null +++ b/apps/emqx_auth_pgsql/README.md @@ -0,0 +1,183 @@ +emqx_auth_pgsql +=============== + +Authentication/ACL with PostgreSQL Database. + +Build Plugin +------------ + +make && make tests + +Configuration +------------- + +File: etc/emqx_auth_pgsql.conf + +``` +## PostgreSQL server address. +## +## Value: Port | IP:Port +## +## Examples: 5432, 127.0.0.1:5432, localhost:5432 +auth.pgsql.server = 127.0.0.1:5432 + +## PostgreSQL pool size. +## +## Value: Number +auth.pgsql.pool = 8 + +## PostgreSQL username. +## +## Value: String +auth.pgsql.username = root + +## PostgreSQL password. +## +## Value: String +## auth.pgsql.password = + +## PostgreSQL database. +## +## Value: String +auth.pgsql.database = mqtt + +## PostgreSQL database encoding. +## +## Value: String +auth.pgsql.encoding = utf8 + +## Whether to enable SSL connection. +## +## Value: true | false +auth.pgsql.ssl = false + +## SSL keyfile. +## +## Value: File +## auth.pgsql.ssl_opts.keyfile = + +## SSL certfile. +## +## Value: File +## auth.pgsql.ssl_opts.certfile = + +## SSL cacertfile. +## +## Value: File +## auth.pgsql.ssl_opts.cacertfile = + +## Authentication query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## +auth.pgsql.auth_query = select password from mqtt_user where username = '%u' limit 1 + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.pgsql.password_hash = sha256 + +## sha256 with salt prefix +## auth.pgsql.password_hash = salt,sha256 + +## sha256 with salt suffix +## auth.pgsql.password_hash = sha256,salt + +## bcrypt with salt prefix +## auth.pgsql.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.pgsql.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +auth.pgsql.super_query = select is_superuser from mqtt_user where username = '%u' limit 1 + +## ACL query. Comment this query, the ACL will be disabled. +## +## Value: SQL +## +## Variables: +## - %a: ipaddress +## - %u: username +## - %c: clientid +auth.pgsql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' +``` + +Load Plugin +----------- + +./bin/emqx_ctl plugins load emqx_auth_pgsql + +Auth Table +---------- + +Notice: This is a demo table. You could authenticate with any user table. + +```sql +CREATE TABLE mqtt_user ( + id SERIAL primary key, + is_superuser boolean, + username character varying(100), + password character varying(100), + salt character varying(40) +) +``` + +ACL Table +--------- + +```sql +CREATE TABLE mqtt_acl ( + id SERIAL primary key, + allow integer, + ipaddr character varying(60), + username character varying(100), + clientid character varying(100), + access integer, + topic character varying(100) +) + +INSERT INTO mqtt_acl (id, allow, ipaddr, username, clientid, access, topic) +VALUES + (1,1,NULL,'$all',NULL,2,'#'), + (2,0,NULL,'$all',NULL,1,'$SYS/#'), + (3,0,NULL,'$all',NULL,1,'eq #'), + (5,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'), + (6,1,'127.0.0.1',NULL,NULL,2,'#'), + (7,1,NULL,'dashboard',NULL,1,'$SYS/#'); +``` +**allow:** Client's permission to access a topic. '0' means that the client does not have permission to access the topic, '1' means that the client have permission to access the topic. + +**ipaddr:** Client IP address. For all ip addresses it can be '$all' or 'NULL'. + +**username:** Client username. For all users it can be '$all' or 'NULL'. + +**clientid:** Client id. For all client ids it can be '$all' or 'NULL'. + +**access:** Operations that the client can perform. '1' means that the client can subscribe to a topic, '2' means that the client can publish to a topic, '3' means that the client can subscribe and can publish to a topic. + +**topic:** Topic name. Topic wildcards are supported. + +**Notice that only one value allowed for ipaddr, username and clientid fields.** + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf b/apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf new file mode 100644 index 000000000..3e79d96d8 --- /dev/null +++ b/apps/emqx_auth_pgsql/etc/emqx_auth_pgsql.conf @@ -0,0 +1,110 @@ +##-------------------------------------------------------------------- +## PostgreSQL Auth/ACL Plugin +##-------------------------------------------------------------------- + +## PostgreSQL server address. +## +## Value: Port | IP:Port +## +## Examples: 5432, 127.0.0.1:5432, localhost:5432 +auth.pgsql.server = 127.0.0.1:5432 + +## PostgreSQL pool size. +## +## Value: Number +auth.pgsql.pool = 8 + +## PostgreSQL username. +## +## Value: String +auth.pgsql.username = root + +## PostgreSQL password. +## +## Value: String +## auth.pgsql.password = + +## PostgreSQL database. +## +## Value: String +auth.pgsql.database = mqtt + +## PostgreSQL database encoding. +## +## Value: String +auth.pgsql.encoding = utf8 + +## Whether to enable SSL connection. +## +## Value: true | false +auth.pgsql.ssl = false + +## SSL keyfile. +## +## Value: File +## auth.pgsql.ssl_opts.keyfile = + +## SSL certfile. +## +## Value: File +## auth.pgsql.ssl_opts.certfile = + +## SSL cacertfile. +## +## Value: File +## auth.pgsql.ssl_opts.cacertfile = + +## Authentication query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +auth.pgsql.auth_query = select password from mqtt_user where username = '%u' limit 1 + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.pgsql.password_hash = sha256 + +## sha256 with salt prefix +## auth.pgsql.password_hash = salt,sha256 + +## sha256 with salt suffix +## auth.pgsql.password_hash = sha256,salt + +## bcrypt with salt prefix +## auth.pgsql.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.pgsql.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query. +## +## Value: SQL +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +auth.pgsql.super_query = select is_superuser from mqtt_user where username = '%u' limit 1 + +## ACL query. Comment this query, the ACL will be disabled. +## +## Value: SQL +## +## Variables: +## - %a: ipaddress +## - %u: username +## - %c: clientid +## +## Note: You can add the 'ORDER BY' statement to control the rules match order +auth.pgsql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' + diff --git a/apps/emqx_auth_pgsql/include/emqx_auth_pgsql.hrl b/apps/emqx_auth_pgsql/include/emqx_auth_pgsql.hrl new file mode 100644 index 000000000..b86692752 --- /dev/null +++ b/apps/emqx_auth_pgsql/include/emqx_auth_pgsql.hrl @@ -0,0 +1,23 @@ +-define(APP, emqx_auth_pgsql). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). + diff --git a/apps/emqx_auth_pgsql/mqtt.sql b/apps/emqx_auth_pgsql/mqtt.sql new file mode 100644 index 000000000..933b0058a --- /dev/null +++ b/apps/emqx_auth_pgsql/mqtt.sql @@ -0,0 +1,28 @@ + +CREATE TABLE mqtt_user ( + id SERIAL primary key, + is_superuser boolean, + username character varying(100), + password character varying(100), + salt character varying(40) +); + +CREATE TABLE mqtt_acl ( + id SERIAL primary key, + allow integer, + ipaddr character varying(60), + username character varying(100), + clientid character varying(100), + access integer, + topic character varying(100) +); + +INSERT INTO mqtt_acl (id, allow, ipaddr, username, clientid, access, topic) +VALUES + (1,1,NULL,'$all',NULL,2,'#'), + (2,0,NULL,'$all',NULL,1,'$SYS/#'), + (3,0,NULL,'$all',NULL,1,'eq #'), + (5,1,'127.0.0.1',NULL,NULL,2,'$SYS/#'), + (6,1,'127.0.0.1',NULL,NULL,2,'#'), + (7,1,NULL,'dashboard',NULL,1,'$SYS/#'); + diff --git a/apps/emqx_auth_pgsql/priv/emqx_auth_pgsql.schema b/apps/emqx_auth_pgsql/priv/emqx_auth_pgsql.schema new file mode 100644 index 000000000..4a475ee0e --- /dev/null +++ b/apps/emqx_auth_pgsql/priv/emqx_auth_pgsql.schema @@ -0,0 +1,127 @@ +%%-*- mode: erlang -*- +%% emqx_auth_pgsl config mapping + +{mapping, "auth.pgsql.server", "emqx_auth_pgsql.server", [ + {default, {"127.0.0.1", 5432}}, + {datatype, [integer, ip, string]} +]}. + +{mapping, "auth.pgsql.pool", "emqx_auth_pgsql.server", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.pgsql.database", "emqx_auth_pgsql.server", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.username", "emqx_auth_pgsql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.pgsql.password", "emqx_auth_pgsql.server", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.pgsql.encoding", "emqx_auth_pgsql.server", [ + {default, utf8}, + {datatype, atom} +]}. + +{mapping, "auth.pgsql.ssl", "emqx_auth_pgsql.server", [ + {default, false}, + {datatype, {enum, [true, false]}} +]}. + +{mapping, "auth.pgsql.ssl_opts.keyfile", "emqx_auth_pgsql.server", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.ssl_opts.certfile", "emqx_auth_pgsql.server", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.ssl_opts.cacertfile", "emqx_auth_pgsql.server", [ + {datatype, string} +]}. + +{translation, "emqx_auth_pgsql.server", fun(Conf) -> + {PgHost, PgPort} = + case cuttlefish:conf_get("auth.pgsql.server", Conf) of + {Ip, Port} -> {Ip, Port}; + S -> case string:tokens(S, ":") of + [Domain] -> {Domain, 5432}; + [Domain, Port] -> {Domain, list_to_integer(Port)} + end + end, + Pool = cuttlefish:conf_get("auth.pgsql.pool", Conf), + Username = cuttlefish:conf_get("auth.pgsql.username", Conf), + Passwd = cuttlefish:conf_get("auth.pgsql.password", Conf, ""), + DB = cuttlefish:conf_get("auth.pgsql.database", Conf), + Encoding = cuttlefish:conf_get("auth.pgsql.encoding", Conf), + Ssl = cuttlefish:conf_get("auth.pgsql.ssl", Conf), + + Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end, + SslOpts = fun(Prefix) -> + Filter([{keyfile, cuttlefish:conf_get(Prefix ++ ".keyfile", Conf, undefined)}, + {certfile, cuttlefish:conf_get(Prefix ++ ".certfile", Conf, undefined)}, + {cacertfile, cuttlefish:conf_get(Prefix ++ ".cacertfile", Conf, undefined)}]) + end, + + TempHost = case inet:parse_address(PgHost) of + {ok, IpAddr} -> + IpAddr; + _ -> + PgHost + end, + [{pool_size, Pool}, + {auto_reconnect, 1}, + {host, TempHost}, + {port, PgPort}, + {username, Username}, + {password, Passwd}, + {database, DB}, + {encoding, Encoding}, + {ssl, Ssl}, + {ssl_opts, SslOpts("auth.pgsql.ssl_opts")}] +end}. + +{mapping, "auth.pgsql.auth_query", "emqx_auth_pgsql.auth_query", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.password_hash", "emqx_auth_pgsql.password_hash", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.pbkdf2_macfun", "emqx_auth_pgsql.pbkdf2_macfun", [ + {datatype, atom} +]}. + +{mapping, "auth.pgsql.pbkdf2_iterations", "emqx_auth_pgsql.pbkdf2_iterations", [ + {datatype, integer} +]}. + +{mapping, "auth.pgsql.pbkdf2_dklen", "emqx_auth_pgsql.pbkdf2_dklen", [ + {datatype, integer} +]}. + +{mapping, "auth.pgsql.super_query", "emqx_auth_pgsql.super_query", [ + {datatype, string} +]}. + +{mapping, "auth.pgsql.acl_query", "emqx_auth_pgsql.acl_query", [ + {datatype, string} +]}. + +{translation, "emqx_auth_pgsql.password_hash", fun(Conf) -> + HashValue = cuttlefish:conf_get("auth.pgsql.password_hash", Conf), + case string:tokens(HashValue, ",") of + [Hash] -> list_to_atom(Hash); + [Prefix, Suffix] -> {list_to_atom(Prefix), list_to_atom(Suffix)}; + [Hash, MacFun, Iterations, Dklen] -> {list_to_atom(Hash), list_to_atom(MacFun), list_to_integer(Iterations), list_to_integer(Dklen)}; + _ -> plain + end +end}. diff --git a/apps/emqx_auth_pgsql/rebar.config b/apps/emqx_auth_pgsql/rebar.config new file mode 100644 index 000000000..98b95fce7 --- /dev/null +++ b/apps/emqx_auth_pgsql/rebar.config @@ -0,0 +1,34 @@ +{deps, + [{epgsql, {git, "https://github.com/epgsql/epgsql", {tag, "4.4.0"}}}, + {ecpool, {git,"https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqx_passwd, {git, "https://github.com/emqx/emqx-passwd", {tag, "v1.1.1"}}} + ]}. + +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + compressed + ]}. +{overrides, [{add, [{erl_opts, [compressed]}]}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions + ]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helper, {git, "https://github.com/emqx/emqx-ct-helper", {branch, "1.2.2"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}} + ]}, + {erl_opts, [debug_info]} + ]} + ]}. + diff --git a/apps/emqx_auth_pgsql/rebar.config.script b/apps/emqx_auth_pgsql/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_pgsql/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl b/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl new file mode 100644 index 000000000..c1792f1e2 --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_acl_pgsql.erl @@ -0,0 +1,117 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_pgsql). + +-include("emqx_auth_pgsql.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +%% ACL callbacks +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(ClientInfo, PubSub, Topic, NoMatchAction, #{pool := Pool} = State) -> + case do_check_acl(Pool, ClientInfo, PubSub, Topic, NoMatchAction, State) of + ok -> emqx_metrics:inc(?ACL_METRICS(ignore)), ok; + {stop, allow} -> emqx_metrics:inc(?ACL_METRICS(allow)), {stop, allow}; + {stop, deny} -> emqx_metrics:inc(?ACL_METRICS(deny)), {stop, deny} + end. + +do_check_acl(_Pool, #{username := <<$$, _/binary>>}, _PubSub, _Topic, _NoMatchAction, _State) -> + ok; +do_check_acl(Pool, ClientInfo, PubSub, Topic, _NoMatchAction, #{acl_query := {AclSql, AclParams}}) -> + case emqx_auth_pgsql_cli:equery(Pool, AclSql, AclParams, ClientInfo) of + {ok, _, []} -> ok; + {ok, _, Rows} -> + Rules = filter(PubSub, compile(Rows)), + case match(ClientInfo, Topic, Rules) of + {matched, allow} -> {stop, allow}; + {matched, deny} -> {stop, deny}; + nomatch -> ok + end; + {error, Reason} -> + ?LOG(error, "[Postgres] do_check_acl error: ~p~n", [Reason]), + ok + end. + +match(_ClientInfo, _Topic, []) -> + nomatch; + +match(ClientInfo, Topic, [Rule|Rules]) -> + case emqx_access_rule:match(ClientInfo, Topic, Rule) of + nomatch -> match(ClientInfo, Topic, Rules); + {matched, AllowDeny} -> {matched, AllowDeny} + end. + +filter(PubSub, Rules) -> + [Term || Term = {_, _, Access, _} <- Rules, + Access =:= PubSub orelse Access =:= pubsub]. + +compile(Rows) -> + compile(Rows, []). +compile([], Acc) -> + Acc; +compile([{Allow, IpAddr, Username, ClientId, Access, Topic}|T], Acc) -> + Who = who(IpAddr, Username, ClientId), + Term = {allow(Allow), Who, access(Access), [topic(Topic)]}, + compile(T, [emqx_access_rule:compile(Term) | Acc]). + +who(_, <<"$all">>, _) -> + all; +who(null, null, null) -> + throw(undefined_who); +who(CIDR, Username, ClientId) -> + Cols = [{ipaddr, b2l(CIDR)}, {user, Username}, {client, ClientId}], + case [{C, V} || {C, V} <- Cols, not empty(V)] of + [Who] -> Who; + Conds -> {'and', Conds} + end. + +allow(1) -> allow; +allow(0) -> deny; +allow(<<"1">>) -> allow; +allow(<<"0">>) -> deny. + +access(1) -> subscribe; +access(2) -> publish; +access(3) -> pubsub; +access(<<"1">>) -> subscribe; +access(<<"2">>) -> publish; +access(<<"3">>) -> pubsub. + +topic(<<"eq ", Topic/binary>>) -> + {eq, Topic}; +topic(Topic) -> + Topic. + +description() -> + "ACL with Postgres". + +b2l(null) -> null; +b2l(B) -> binary_to_list(B). + +empty(null) -> true; +empty("") -> true; +empty(<<>>) -> true; +empty(_) -> false. + diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src new file mode 100644 index 000000000..fcfb74d33 --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_pgsql, + [{description, "EMQ X Authentication/ACL with PostgreSQL"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_pgsql_sup]}, + {applications, [kernel,stdlib,epgsql,ecpool,emqx_passwd]}, + {mod, {emqx_auth_pgsql_app,[]}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-pgsql"} + ]} + ]}. diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src.script b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src new file mode 100644 index 000000000..47c0ab24f --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.appup.src @@ -0,0 +1,16 @@ +%% -*-: erlang -*- + +{VSN, + [ + {"4.2.0", [ + {load_module, emqx_auth_pgsql_cli, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ], + [ + {"4.2.0", [ + {load_module, emqx_auth_pgsql_cli, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ] + }. diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl new file mode 100644 index 000000000..2dee5ef50 --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql.erl @@ -0,0 +1,91 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_pgsql). + +-include("emqx_auth_pgsql.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +%%-------------------------------------------------------------------- +%% Auth Module Callbacks +%%-------------------------------------------------------------------- + +check(ClientInfo = #{password := Password}, AuthResult, + #{auth_query := {AuthSql, AuthParams}, + super_query := SuperQuery, + hash_type := HashType, + pool := Pool}) -> + CheckPass = case emqx_auth_pgsql_cli:equery(Pool, AuthSql, AuthParams, ClientInfo) of + {ok, _, [Record]} -> + check_pass(erlang:append_element(Record, Password), HashType); + {ok, _, []} -> + {error, not_found}; + {error, Reason} -> + ?LOG(error, "[Postgres] query '~p' failed: ~p", [AuthSql, Reason]), + {error, not_found} + end, + case CheckPass of + ok -> + emqx_metrics:inc(?AUTH_METRICS(success)), + {stop, AuthResult#{is_superuser => is_superuser(Pool, SuperQuery, ClientInfo), + anonymous => false, + auth_result => success}}; + {error, not_found} -> + emqx_metrics:inc(?AUTH_METRICS(ignore)), ok; + {error, ResultCode} -> + ?LOG(error, "[Postgres] Auth from pgsql failed: ~p", [ResultCode]), + emqx_metrics:inc(?AUTH_METRICS(failure)), + {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} + end. + +%%-------------------------------------------------------------------- +%% Is Superuser? +%%-------------------------------------------------------------------- + +-spec(is_superuser(atom(),undefined | {string(), list()}, emqx_types:client()) -> boolean()). +is_superuser(_Pool, undefined, _Client) -> + false; +is_superuser(Pool, {SuperSql, Params}, ClientInfo) -> + case emqx_auth_pgsql_cli:equery(Pool, SuperSql, Params, ClientInfo) of + {ok, [_Super], [{true}]} -> + true; + {ok, [_Super], [_False]} -> + false; + {ok, [_Super], []} -> + false; + {error, _Error} -> + false + end. + +check_pass(Password, HashType) -> + case emqx_passwd:check_pass(Password, HashType) of + ok -> ok; + {error, _Reason} -> {error, not_authorized} + end. + +description() -> "Authentication with PostgreSQL". + diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_app.erl b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_app.erl new file mode 100644 index 000000000..1d05f6b8a --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_app.erl @@ -0,0 +1,63 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_pgsql_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_pgsql.hrl"). + +-import(emqx_auth_pgsql_cli, [parse_query/2]). + +%% Application callbacks +-export([ start/2 + , stop/1 + ]). + +%%-------------------------------------------------------------------- +%% Application callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_pgsql_sup:start_link(), + if_enabled(auth_query, fun(AuthQuery) -> + SuperQuery = parse_query(super_query, application:get_env(?APP, super_query, undefined)), + {ok, HashType} = application:get_env(?APP, password_hash), + AuthEnv = #{auth_query => AuthQuery, + super_query => SuperQuery, + hash_type => HashType, + pool => ?APP}, + ok = emqx_auth_pgsql:register_metrics(), + ok = emqx:hook('client.authenticate', fun emqx_auth_pgsql:check/3, [AuthEnv]) + end), + if_enabled(acl_query, fun(AclQuery) -> + ok = emqx_acl_pgsql:register_metrics(), + ok = emqx:hook('client.check_acl', fun emqx_acl_pgsql:check_acl/5, [#{acl_query => AclQuery, pool => ?APP}]) + end), + {ok, Sup}. + +stop(_State) -> + ok = emqx:unhook('client.authenticate', fun emqx_auth_pgsql:check/3), + ok = emqx:unhook('client.check_acl', fun emqx_acl_pgsql:check_acl/5). + +if_enabled(Par, Fun) -> + case application:get_env(?APP, Par) of + {ok, Query} -> Fun(parse_query(Par, Query)); + undefined -> ok + end. + diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_cli.erl b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_cli.erl new file mode 100644 index 000000000..27d25f35b --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_cli.erl @@ -0,0 +1,138 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_pgsql_cli). + +-behaviour(ecpool_worker). + +-include("emqx_auth_pgsql.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([connect/1]). +-export([parse_query/2]). +-export([ equery/4 + , equery/3 + ]). + +%%-------------------------------------------------------------------- +%% Avoid SQL Injection: Parse SQL to Parameter Query. +%%-------------------------------------------------------------------- + +parse_query(_Par, undefined) -> + undefined; +parse_query(Par, Sql) -> + case re:run(Sql, "'%[ucCad]'", [global, {capture, all, list}]) of + {match, Variables} -> + Params = [Var || [Var] <- Variables], + {atom_to_list(Par), Params}; + nomatch -> + {atom_to_list(Par), []} + end. + +pgvar(Sql, Params) -> + Vars = ["$" ++ integer_to_list(I) || I <- lists:seq(1, length(Params))], + lists:foldl(fun({Param, Var}, S) -> + re:replace(S, Param, Var, [{return, list}]) + end, Sql, lists:zip(Params, Vars)). + +%%-------------------------------------------------------------------- +%% PostgreSQL Connect/Query +%%-------------------------------------------------------------------- + +connect(Opts) -> + Host = proplists:get_value(host, Opts), + Username = proplists:get_value(username, Opts), + Password = proplists:get_value(password, Opts), + case epgsql:connect(Host, Username, Password, conn_opts(Opts)) of + {ok, C} -> + conn_post(C), + {ok, C}; + {error, Reason = econnrefused} -> + ?LOG(error, "[Postgres] Can't connect to Postgres server: Connection refused."), + {error, Reason}; + {error, Reason = invalid_authorization_specification} -> + ?LOG(error, "[Postgres] Can't connect to Postgres server: Invalid authorization specification."), + {error, Reason}; + {error, Reason = invalid_password} -> + ?LOG(error, "[Postgres] Can't connect to Postgres server: Invalid password."), + {error, Reason}; + {error, Reason} -> + ?LOG(error, "[Postgres] Can't connect to Postgres server: ~p", [Reason]), + {error, Reason} + end. + +conn_post(Connection) -> + lists:foreach(fun(Par) -> + Sql0 = application:get_env(?APP, Par, undefined), + case parse_query(Par, Sql0) of + undefined -> ok; + {_, Params} -> + Sql = pgvar(Sql0, Params), + epgsql:parse(Connection, atom_to_list(Par), Sql, []) + end + end, [auth_query, acl_query, super_query]). + +conn_opts(Opts) -> + conn_opts(Opts, []). +conn_opts([], Acc) -> + Acc; +conn_opts([Opt = {database, _}|Opts], Acc) -> + conn_opts(Opts, [Opt|Acc]); +conn_opts([Opt = {ssl, _}|Opts], Acc) -> + conn_opts(Opts, [Opt|Acc]); +conn_opts([Opt = {port, _}|Opts], Acc) -> + conn_opts(Opts, [Opt|Acc]); +conn_opts([Opt = {timeout, _}|Opts], Acc) -> + conn_opts(Opts, [Opt|Acc]); +conn_opts([Opt = {ssl_opts, _}|Opts], Acc) -> + conn_opts(Opts, [Opt|Acc]); +conn_opts([_Opt|Opts], Acc) -> + conn_opts(Opts, Acc). + +equery(Pool, Sql, Params) -> + ecpool:with_client(Pool, fun(C) -> epgsql:prepared_query(C, Sql, Params) end). + +equery(Pool, Sql, Params, ClientInfo) -> + ecpool:with_client(Pool, fun(C) -> epgsql:prepared_query(C, Sql, replvar(Params, ClientInfo)) end). + +replvar(Params, ClientInfo) -> + replvar(Params, ClientInfo, []). + +replvar([], _ClientInfo, Acc) -> + lists:reverse(Acc); + +replvar(["'%u'" | Params], ClientInfo = #{username := Username}, Acc) -> + replvar(Params, ClientInfo, [Username | Acc]); +replvar(["'%c'" | Params], ClientInfo = #{clientid := ClientId}, Acc) -> + replvar(Params, ClientInfo, [ClientId | Acc]); +replvar(["'%a'" | Params], ClientInfo = #{peerhost := IpAddr}, Acc) -> + replvar(Params, ClientInfo, [inet_parse:ntoa(IpAddr) | Acc]); +replvar(["'%C'" | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [safe_get(cn, ClientInfo)| Acc]); +replvar(["'%d'" | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [safe_get(dn, ClientInfo)| Acc]); +replvar([Param | Params], ClientInfo, Acc) -> + replvar(Params, ClientInfo, [Param | Acc]). + +safe_get(K, ClientInfo) -> + bin(maps:get(K, ClientInfo, undefined)). + +bin(A) when is_atom(A) -> atom_to_binary(A, utf8); +bin(B) when is_binary(B) -> B; +bin(X) -> X. + diff --git a/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_sup.erl b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_sup.erl new file mode 100644 index 000000000..162d04747 --- /dev/null +++ b/apps/emqx_auth_pgsql/src/emqx_auth_pgsql_sup.erl @@ -0,0 +1,37 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_pgsql_sup). + +-behaviour(supervisor). + +-include("emqx_auth_pgsql.hrl"). + +%% API +-export([start_link/0]). + +%% Supervisor callbacks +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + %% PgSQL Connection Pool + {ok, Opts} = application:get_env(?APP, server), + PoolSpec = ecpool:pool_spec(?APP, ?APP, emqx_auth_pgsql_cli, Opts), + {ok, {{one_for_one, 10, 100}, [PoolSpec]}}. + diff --git a/apps/emqx_auth_pgsql/test/.placeholder b/apps/emqx_auth_pgsql/test/.placeholder new file mode 100644 index 000000000..e69de29bb diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE.erl b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE.erl new file mode 100644 index 000000000..84aa5e800 --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE.erl @@ -0,0 +1,247 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_pgsql_SUITE). + +-compile(export_all). + +-define(POOL, emqx_auth_pgsql). + +-define(APP, emqx_auth_pgsql). + +-include_lib("emqx/include/emqx.hrl"). + +-include_lib("eunit/include/eunit.hrl"). + +-include_lib("common_test/include/ct.hrl"). + +%%setp1 init table +-define(DROP_ACL_TABLE, "DROP TABLE IF EXISTS mqtt_acl_test"). + +-define(CREATE_ACL_TABLE, "CREATE TABLE mqtt_acl_test ( + id SERIAL primary key, + allow integer, + ipaddr character varying(60), + username character varying(100), + clientid character varying(100), + access integer, + topic character varying(100))"). + +-define(INIT_ACL, "INSERT INTO mqtt_acl_test (id, allow, ipaddr, username, clientid, access, topic) + VALUES + (1,1,'127.0.0.1','u1','c1',1,'t1'), + (2,0,'127.0.0.1','u2','c2',1,'t1'), + (3,1,'10.10.0.110','u1','c1',1,'t1'), + (4,1,'127.0.0.1','u3','c3',3,'t1')"). + +-define(DROP_AUTH_TABLE, "DROP TABLE IF EXISTS mqtt_user_test"). + +-define(CREATE_AUTH_TABLE, "CREATE TABLE mqtt_user_test ( + id SERIAL primary key, + is_superuser boolean, + username character varying(100), + password character varying(100), + salt character varying(40))"). + +-define(INIT_AUTH, "INSERT INTO mqtt_user_test (id, is_superuser, username, password, salt) + VALUES + (1, true, 'plain', 'plain', 'salt'), + (2, false, 'md5', '1bc29b36f623ba82aaf6724fd3b16718', 'salt'), + (3, false, 'sha', 'd8f4590320e1343a915b6394170650a8f35d6926', 'salt'), + (4, false, 'sha256', '5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e', 'salt'), + (5, false, 'pbkdf2_password', 'cdedb5281bb2f801565a1122b2563515', 'ATHENA.MIT.EDUraeburn'), + (6, false, 'bcrypt_foo', '$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6', '$2a$12$sSS8Eg.ovVzaHzi1nUHYK.'), + (7, false, 'bcrypt', '$2y$16$rEVsDarhgHYB0TGnDFJzyu5f.T.Ha9iXMTk9J36NCMWWM7O16qyaK', 'salt')"). + +all() -> + [{group, ssl}, {group, nossl}]. + +groups() -> + Cases = emqx_ct:all(?MODULE), + [{ssl, [sequence], Cases}, {nossl, [sequence], Cases}]. + +init_per_group(Name, Config) -> + case Name of + ssl -> + emqx_ct_helpers:start_apps([emqx_auth_pgsql], fun set_special_configs_ssl/1); + nossl -> + emqx_ct_helpers:start_apps([emqx_auth_pgsql], fun set_special_configs/1) + end, + init_auth_(), + init_acl_(), + Config. + +end_per_group(_, Config) -> + drop_auth_(), + drop_acl_(), + emqx_ct_helpers:stop_apps([emqx_auth_pgsql]), + Config. + +set_special_configs_ssl(Name) -> + Server = application:get_env(?APP, server, []), + Path = emqx_ct_helpers:deps_path(emqx_auth_pgsql, "test/emqx_auth_pgsql_SUITE_data/"), + Sslopts = [{keyfile, Path ++ "/client-key.pem"}, + {certfile, Path ++ "/client-cert.pem"}, + {cacertfile, Path ++ "/ca.pem"}], + Temp = lists:keyreplace(ssl, 1, Server, {ssl, true}), + application:set_env(?APP, server, Temp), + application:set_env(?APP, server, lists:keyreplace(ssl_opts, 1, Temp, {ssl_opts, Sslopts})), + set_special_configs(Name). + +set_special_configs(emqx) -> + application:set_env(emqx, acl_nomatch, deny), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/acl.conf")), + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); + +set_special_configs(emqx_auth_pgsql) -> + Server = application:get_env(?APP, server, []), + application:set_env(?APP, server, + lists:keyreplace(password, + 1, + lists:keyreplace(pool_size, 1, Server, {pool_size, 1}), + {password, "public"})), + application:set_env(?APP, acl_query, "select allow, ipaddr, username, clientid, access, topic from mqtt_acl_test where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c'"), + application:set_env(?APP, super_query, "select is_superuser from mqtt_user_test where username = '%u' limit 1"), + application:set_env(?APP, auth_query, "select password from mqtt_user_test where username = '%u' limit 1"); +set_special_configs(_App) -> + ok. + +t_comment_config(_) -> + AuthCount = length(emqx_hooks:lookup('client.authenticate')), + AclCount = length(emqx_hooks:lookup('client.check_acl')), + application:stop(?APP), + [application:unset_env(?APP, Par) || Par <- [acl_query, auth_query]], + application:start(?APP), + ?assertEqual([], emqx_hooks:lookup('client.authenticate')), + ?assertEqual(AuthCount - 1, length(emqx_hooks:lookup('client.authenticate'))), + ?assertEqual(AclCount - 1, length(emqx_hooks:lookup('client.check_acl'))). + +t_placeholders(_) -> + ClientA = #{username => <<"plain">>, clientid => <<"plain">>, zone => external}, + reload([{password_hash, plain}, + {auth_query, "select password from mqtt_user_test where username = '%u' and 'a_cn_val' = '%C' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => undefined}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, cn => <<"a_cn_val">>}), + + reload([{auth_query, "select password from mqtt_user_test where username = '%c' and 'a_dn_val' = '%d' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => undefined}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, dn => <<"a_dn_val">>}), + + reload([{auth_query, "select password from mqtt_user_test where username = '%u' and '192.168.1.5' = '%a' limit 1"}]), + {error, not_authorized} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>}), + {ok, _} = + emqx_access_control:authenticate(ClientA#{password => <<"plain">>, peerhost => {192,168,1,5}}). + +t_check_auth(_) -> + Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external}, + Md5 = #{clientid => <<"md5">>, username => <<"md5">>, zone => external}, + Sha = #{clientid => <<"sha">>, username => <<"sha">>, zone => external}, + Sha256 = #{clientid => <<"sha256">>, username => <<"sha256">>, zone => external}, + Pbkdf2 = #{clientid => <<"pbkdf2_password">>, username => <<"pbkdf2_password">>, zone => external}, + BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external}, + User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external}, + Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external}, + reload([{password_hash, plain}, + {auth_query, "select password from mqtt_user_test where username = '%u' limit 1"}]), + {ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}), + reload([{password_hash, md5}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}), + reload([{password_hash, sha}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha#{password => <<"sha">>}), + reload([{password_hash, sha256}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}), + reload([{password_hash, bcrypt}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}), + %%pbkdf2 sha + reload([{password_hash, {pbkdf2, sha, 1, 16}}, {auth_query, "select password, salt from mqtt_user_test where username = '%u' limit 1"}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}), + reload([{password_hash, {salt, bcrypt}}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}), + {error, _} = emqx_access_control:authenticate(User1#{password => <<"foo">>}), + {error, not_authorized} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}). +t_check_acl(_) -> + % emqx_modules:load_module(emqx_mod_acl_internal, false), + User1 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c1">>, username => <<"u1">>}, + User2 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c2">>, username => <<"u2">>}, + reload([{acl_query, "select allow, ipaddr, username, clientid, access, topic from mqtt_acl_test where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c'"}]), + allow = emqx_access_control:check_acl(User1, subscribe, <<"t1">>), + deny = emqx_access_control:check_acl(User2, subscribe, <<"t1">>), + User3 = #{zone => external, peerhost => {10,10,0,110}, clientid => <<"c1">>, username => <<"u1">>}, + User4 = #{zone => external, peerhost => {10,10,10,110}, clientid => <<"c1">>, username => <<"u1">>}, + allow = emqx_access_control:check_acl(User3, subscribe, <<"t1">>), + allow = emqx_access_control:check_acl(User3, subscribe, <<"t1">>), + deny = emqx_access_control:check_acl(User3, subscribe, <<"t2">>),%% nomatch -> ignore -> emqttd acl + deny = emqx_access_control:check_acl(User4, subscribe, <<"t1">>), + User5 = #{zone => external, peerhost => {127,0,0,1}, clientid => <<"c3">>, username => <<"u3">>}, + allow = emqx_access_control:check_acl(User5, subscribe, <<"t1">>), + allow = emqx_access_control:check_acl(User5, publish, <<"t1">>). + +t_acl_super(_) -> + reload([{password_hash, plain}, {auth_query, "select password from mqtt_user_test where username = '%u' limit 1"}]), + {ok, C} = emqtt:start_link([{host, "localhost"}, {clientid, <<"simpleClient">>}, + {username, <<"plain">>}, {password, <<"plain">>}]), + {ok, _} = emqtt:connect(C), + timer:sleep(10), + emqtt:subscribe(C, <<"TopicA">>, qos2), + emqtt:publish(C, <<"TopicA">>, <<"Payload">>, qos2), + timer:sleep(1000), + receive + {publish, #{payload := Payload}} -> + ?assertEqual(<<"Payload">>, Payload) + after + 1000 -> + ct:fail({receive_timeout, <<"Payload">>}), + ok + end, + emqtt:disconnect(C). + +reload(Config) when is_list(Config) -> + application:stop(?APP), + [application:set_env(?APP, K, V) || {K, V} <- Config], + application:start(?APP). + +init_acl_() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})), + {ok, [], []} = epgsql:squery(Pid, ?DROP_ACL_TABLE), + {ok, [], []} = epgsql:squery(Pid, ?CREATE_ACL_TABLE), + {ok, _} = epgsql:equery(Pid, ?INIT_ACL). + +drop_acl_() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})), + {ok, [], []}= epgsql:squery(Pid, ?DROP_ACL_TABLE). + +init_auth_() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})), + {ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE), + {ok, [], []} = epgsql:squery(Pid, ?CREATE_AUTH_TABLE), + {ok, _} = epgsql:equery(Pid, ?INIT_AUTH). + +drop_auth_() -> + {ok, Pid} = ecpool_worker:client(gproc_pool:pick_worker({ecpool, ?POOL})), + {ok, [], []} = epgsql:squery(Pid, ?DROP_AUTH_TABLE). diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/ca.pem b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/ca.pem new file mode 100644 index 000000000..00b31d8a4 --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/ca.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDAzCCAeugAwIBAgIBATANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowPDE6MDgGA1UEAwwxTXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANJBlAYvTQ6euY4HcSn4syH7kq9s +KcG+OMjPUrj+KFEElCzgNuIhaS0f3ORQGB1PNcvVcfdXUI3WX332gWbr9s1b7Xl1 +JKJfDXs+26Cm6NhONTE3sPHnbTSmQEFb52hwAtjQmcY3IQs1AgxKFFHJfnCBEWfE +ePBQaiuYk1XDESMdWpMLrPnYQaj9MpAOUxjlmZCayzPWlF0j0IWvfsF5TqZL7tFK +9p5F/DzyZ4n1mqPVEoUmq5ZdSKj2TQkpWTMHBWHEDQQqXbyE1FGJR7zEUFeuG1KT +sVBg7iZEC93SygZTbgUZSQXIwQCsO6xZ8MB2XDJkPbWp/3Wc6c8I6P09F48CAwEA +AaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEADKz6bIpP5anp +GgLB0jkclRWuMlS4qqIt4itSsMXPJ/ezpHwECixmgW2TIQl6S1woRkUeMxhT2/Ay +Sn/7aKxuzRagyE5NEGOvrOuAP5RO2ZdNJ/X3/Rh533fK1sOTEEbSsWUvW6iSkZef +rsfZBVP32xBhRWkKRdLeLB4W99ADMa0IrTmZPCXHSSE2V4e1o6zWLXcOZeH1Qh8N +SkelBweR+8r1Fbvy1r3s7eH7DCbYoGEDVLQGOLvzHKBisQHmoDnnF5E9g1eeNRdg +o+vhOKfYCOzeNREJIqS42PHcGhdNRk90ycigPmfUJclz1mDHoMjKR2S5oosTpr65 +tNPx3CL7GA== +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-cert.pem b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-cert.pem new file mode 100644 index 000000000..aad1404ca --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAzANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0N1oXDTMwMDYwOTAzMzg0N1owQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9DbGllbnRfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVYSWpOvCTupz82fc85Opv +EQ7rkB8X2oOMyBCpkyHKBIr1ZQgRDWBp9UVOASq3GnSElm6+T3Kb1QbOffa8GIlw +sjAueKdq5L2eSkmPIEQ7eoO5kEW+4V866hE1LeL/PmHg2lGP0iqZiJYtElhHNQO8 +3y9I7cm3xWMAA3SSWikVtpJRn3qIp2QSrH+tK+/HHbE5QwtPxdir4ULSCSOaM5Yh +Wi5Oto88TZqe1v7SXC864JVvO4LuS7TuSreCdWZyPXTJFBFeCEWSAxonKZrqHbBe +CwKML6/0NuzjaQ51c2tzmVI6xpHj3nnu4cSRx6Jf9WBm+35vm0wk4pohX3ptdzeV +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAByQ5zSNeFUH +Aw7JlpZHtHaSEeiiyBHke20ziQ07BK1yi/ms2HAWwQkpZv149sjNuIRH8pkTmkZn +g8PDzSefjLbC9AsWpWV0XNV22T/cdobqLqMBDDZ2+5bsV+jTrOigWd9/AHVZ93PP +IJN8HJn6rtvo2l1bh/CdsX14uVSdofXnuWGabNTydqtMvmCerZsdf6qKqLL+PYwm +RDpgWiRUY7KPBSSlKm/9lJzA+bOe4dHeJzxWFVCJcbpoiTFs1je1V8kKQaHtuW39 +ifX6LTKUMlwEECCbDKM8Yq2tm8NjkjCcnFDtKg8zKGPUu+jrFMN5otiC3wnKcP7r +O9EkaPcgYH8= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-key.pem b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-key.pem new file mode 100644 index 000000000..6789d0291 --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/client-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEA1WElqTrwk7qc/Nn3POTqbxEO65AfF9qDjMgQqZMhygSK9WUI +EQ1gafVFTgEqtxp0hJZuvk9ym9UGzn32vBiJcLIwLninauS9nkpJjyBEO3qDuZBF +vuFfOuoRNS3i/z5h4NpRj9IqmYiWLRJYRzUDvN8vSO3Jt8VjAAN0klopFbaSUZ96 +iKdkEqx/rSvvxx2xOUMLT8XYq+FC0gkjmjOWIVouTraPPE2antb+0lwvOuCVbzuC +7ku07kq3gnVmcj10yRQRXghFkgMaJyma6h2wXgsCjC+v9Dbs42kOdXNrc5lSOsaR +49557uHEkceiX/VgZvt+b5tMJOKaIV96bXc3lQIDAQABAoIBAF7yjXmSOn7h6P0y +WCuGiTLG2mbDiLJqj2LTm2Z5i+2Cu/qZ7E76Ls63TxF4v3MemH5vGfQhEhR5ZD/6 +GRJ1sKKvB3WGRqjwA9gtojHH39S/nWGy6vYW/vMOOH37XyjIr3EIdIaUtFQBTSHd +Kd71niYrAbVn6fyWHolhADwnVmTMOl5OOAhCdEF4GN3b5aIhIu8BJ7EUzTtHBJIj +CAEfjZFjDs1y1cIgGFJkuIQxMfCpq5recU2qwip7YO6fk//WEjOPu7kSf5IEswL8 +jg1dea9rGBV6KaD2xsgsC6Ll6Sb4BbsrHMfflG3K2Lk3RdVqqTFp1Fn1PTLQE/1S +S/SZPYECgYEA9qYcHKHd0+Q5Ty5wgpxKGa4UCWkpwvfvyv4bh8qlmxueB+l2AIdo +ZvkM8gTPagPQ3WypAyC2b9iQu70uOJo1NizTtKnpjDdN1YpDjISJuS/P0x73gZwy +gmoM5AzMtN4D6IbxXtXnPaYICvwLKU80ouEN5ZPM4/ODLUu6gsp0v2UCgYEA3Xgi +zMC4JF0vEKEaK0H6QstaoXUmw/lToZGH3TEojBIkb/2LrHUclygtONh9kJSFb89/ +jbmRRLAOrx3HZKCNGUmF4H9k5OQyAIv6OGBinvLGqcbqnyNlI+Le8zxySYwKMlEj +EMrBCLmSyi0CGFrbZ3mlj/oCET/ql9rNvcK+DHECgYAEx5dH3sMjtgp+RFId1dWB +xePRgt4yTwewkVgLO5wV82UOljGZNQaK6Eyd7AXw8f38LHzh+KJQbIvxd2sL4cEi +OaAoohpKg0/Y0YMZl//rPMf0OWdmdZZs/I0fZjgZUSwWN3c59T8z7KG/RL8an9RP +S7kvN7wCttdV61/D5RR6GQKBgDxCe/WKWpBKaovzydMLWLTj7/0Oi0W3iXHkzzr4 +LTgvl4qBSofaNbVLUUKuZTv5rXUG2IYPf99YqCYtzBstNDc1MiAriaBeFtzfOW4t +i6gEFtoLLbuvPc3N5Sv5vn8Ug5G9UfU3td5R4AbyyCcoUZqOFuZd+EIJSiOXfXOs +kVmBAoGBAIU9aPAqhU5LX902oq8KsrpdySONqv5mtoStvl3wo95WIqXNEsFY60wO +q02jKQmJJ2MqhkJm2EoF2Mq8+40EZ5sz8LdgeQ/M0yQ9lAhPi4rftwhpe55Ma9dk +SE9X1c/DMCBEaIjJqVXdy0/EeArwpb8sHkguVVAZUWxzD+phm1gs +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/pg.conf b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/pg.conf new file mode 100644 index 000000000..7b78cd1e3 --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/pg.conf @@ -0,0 +1,21 @@ +# - Connection Settings - + +listen_addresses = '*' +port = 5432 # (change requires restart) +max_connections = 100 # (change requires restart) +# - SSL - + +ssl = on +ssl_cert_file = '/etc/postgresql/server-cert.pem' +ssl_key_file = '/etc/postgresql/server-key.pem' +shared_buffers = 128MB # min 128kB +checkpoint_timeout = 5min # range 30s-1d +max_wal_size = 1GB +min_wal_size = 80MB +datestyle = 'iso, mdy' +timezone = 'Etc/UTC' +lc_messages = 'en_US.utf8' # locale for system error message +lc_monetary = 'en_US.utf8' # locale for monetary formatting +lc_numeric = 'en_US.utf8' # locale for number formatting +lc_time = 'en_US.utf8' # locale for time formatting +default_text_search_config = 'pg_catalog.english' diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-cert.pem b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-cert.pem new file mode 100644 index 000000000..a2f9688df --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDBDCCAeygAwIBAgIBAjANBgkqhkiG9w0BAQsFADA8MTowOAYDVQQDDDFNeVNR +TF9TZXJ2ZXJfOC4wLjE5X0F1dG9fR2VuZXJhdGVkX0NBX0NlcnRpZmljYXRlMB4X +DTIwMDYxMTAzMzg0NloXDTMwMDYwOTAzMzg0NlowQDE+MDwGA1UEAww1TXlTUUxf +U2VydmVyXzguMC4xOV9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCcEnEm5hqP1EbEJycOz8Ua +NWp29QdpFUzTWhkKGhVXk+0msmNTw4NBAFB42moY44OU8wvDideOlJNhPRWveD8z +G2lxzJA91p0UK4et8ia9MmeuCGhdC9jxJ8X69WNlUiPyy0hI/ZsqRq9Z0C2eW0iL +JPXsy4X8Xpw3SFwoXf5pR9RFY5Pb2tuyxqmSestu2VXT/NQjJg4CVDR3mFcHPXZB +4elRzH0WshExEGkgy0bg20MJeRc2Qdb5Xx+EakbmwroDWaCn3NSGqQ7jv6Vw0doy +TGvS6h6RHBxnyqRfRgKGlCoOMG9/5+rFJC00QpCUG2vHXHWGoWlMlJ3foN7rj5v9 +AgMBAAGjDTALMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAJ5zt2rj4Ag6 +zpN59AWC1Fur8g8l41ksHkSpKPp+PtyO/ngvbMqBpfmK1e7JCKZv/68QXfMyWWAI +hwalqZkXXWHKjuz3wE7dE25PXFXtGJtcZAaj10xt98fzdqt8lQSwh2kbfNwZIz1F +sgAStgE7+ZTcqTgvNB76Os1UK0to+/P0VBWktaVFdyub4Nc2SdPVnZNvrRBXBwOD +3V8ViwywDOFoE7DvCvwx/SVsvoC0Z4j3AMMovO6oHicP7uU83qsQgm1Qru3YeoLR ++DoVi7IPHbWvN7MqFYn3YjNlByO2geblY7MR0BlqbFlmFrqLsUfjsh2ys7/U/knC +dN/klu446fI= +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-key.pem b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-key.pem new file mode 100644 index 000000000..a1dfd5f78 --- /dev/null +++ b/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/server-key.pem @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAnBJxJuYaj9RGxCcnDs/FGjVqdvUHaRVM01oZChoVV5PtJrJj +U8ODQQBQeNpqGOODlPMLw4nXjpSTYT0Vr3g/MxtpccyQPdadFCuHrfImvTJnrgho +XQvY8SfF+vVjZVIj8stISP2bKkavWdAtnltIiyT17MuF/F6cN0hcKF3+aUfURWOT +29rbssapknrLbtlV0/zUIyYOAlQ0d5hXBz12QeHpUcx9FrIRMRBpIMtG4NtDCXkX +NkHW+V8fhGpG5sK6A1mgp9zUhqkO47+lcNHaMkxr0uoekRwcZ8qkX0YChpQqDjBv +f+fqxSQtNEKQlBtrx1x1hqFpTJSd36De64+b/QIDAQABAoIBAFiah66Dt9SruLkn +WR8piUaFyLlcBib8Nq9OWSTJBhDAJERxxb4KIvvGB+l0ZgNXNp5bFPSfzsZdRwZP +PX5uj8Kd71Dxx3mz211WESMJdEC42u+MSmN4lGLkJ5t/sDwXU91E1vbJM0ve8THV +4/Ag9qA4DX2vVZOeyqT/6YHpSsPNZplqzrbAiwrfHwkctHfgqwOf3QLfhmVQgfCS +VwidBldEUv2whSIiIxh4Rv5St4kA68IBCbJxdpOpyuQBkk6CkxZ7VN9FqOuSd4Pk +Wm7iWyBMZsCmELZh5XAXld4BEt87C5R4CvbPBDZxAv3THk1DNNvpy3PFQfwARRFb +SAToYMECgYEAyL7U8yxpzHDYWd3oCx6vTi9p9N/z0FfAkWrRF6dm4UcSklNiT1Aq +EOnTA+SaW8tV3E64gCWcY23gNP8so/ZseWj6L+peHwtchaP9+KB7yGw2A+05+lOx +VetLTjAOmfpiUXFe5w1q4C1RGhLjZjjzW+GvwdAuchQgUEFaomrV+PUCgYEAxwfH +cmVGFbAktcjU4HSRjKSfawCrut+3YUOLybyku3Q/hP9amG8qkVTFe95CTLjLe2D0 +ccaTTpofFEJ32COeck0g0Ujn/qQ+KXRoauOYs4FB1DtqMpqB78wufWEUpDpbd9/h +J+gJdC/IADd4tJW9zA92g8IA7ZtFmqDtiSpQ0ekCgYAQGkaorvJZpN+l7cf0RGTZ +h7IfI2vCVZer0n6tQA9fmLzjoe6r4AlPzAHSOR8sp9XeUy43kUzHKQQoHCPvjw/K +eWJAP7OHF/k2+x2fOPhU7mEy1W+mJdp+wt4Kio5RSaVjVQ3AyPG+w8PSrJszEvRq +dWMMz+851WV2KpfjmWBKlQKBgQC++4j4DZQV5aMkSKV1CIZOBf3vaIJhXKEUFQPD +PmB4fBEjpwCg+zNGp6iktt65zi17o8qMjrb1mtCt2SY04eD932LZUHNFlwcLMmes +Ad+aiDLJ24WJL1f16eDGcOyktlblDZB5gZ/ovJzXEGOkLXglosTfo77OQculmDy2 +/UL2WQKBgGeKasmGNfiYAcWio+KXgFkHXWtAXB9B91B1OFnCa40wx+qnl71MIWQH +PQ/CZFNWOfGiNEJIZjrHsfNJoeXkhq48oKcT0AVCDYyLV0VxDO4ejT95mGW6njNd +JpvmhwwAjOvuWVr0tn4iXlSK8irjlJHmwcRjLTJq97vE9fsA2MjI +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_redis/.ci/docker-compose-tls.yml b/apps/emqx_auth_redis/.ci/docker-compose-tls.yml new file mode 100644 index 000000000..2247cd21b --- /dev/null +++ b/apps/emqx_auth_redis/.ci/docker-compose-tls.yml @@ -0,0 +1,31 @@ +version: '3' + +services: + erlang: + image: erlang:22.3 + volumes: + - ../:/emqx_auth_redis + networks: + - emqx_bridge + depends_on: + - redis_server + tty: true + + redis_server: + image: redis:6.0.9 + volumes: + - ../test/emqx_auth_redis_SUITE_data/certs:/tls + command: + - redis-server + - "--bind 0.0.0.0 ::" + - --tls-port 6380 + - --tls-cert-file /tls/redis.crt + - --tls-key-file /tls/redis.key + - --tls-ca-cert-file /tls/ca.crt + restart: always + networks: + - emqx_bridge + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_redis/.ci/docker-compose.yml b/apps/emqx_auth_redis/.ci/docker-compose.yml new file mode 100644 index 000000000..6716262ad --- /dev/null +++ b/apps/emqx_auth_redis/.ci/docker-compose.yml @@ -0,0 +1,25 @@ +version: '3' + +services: + erlang: + image: erlang:22.3 + volumes: + - ../:/emqx_auth_redis + networks: + - emqx_bridge + depends_on: + - redis_server + tty: true + + redis_server: + image: redis:${REDIS_TAG} + command: + - redis-server + - "--bind 0.0.0.0 ::" + restart: always + networks: + - emqx_bridge + +networks: + emqx_bridge: + driver: bridge diff --git a/apps/emqx_auth_redis/.github/workflows/run_test_cases.yaml b/apps/emqx_auth_redis/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..5af7bdbc3 --- /dev/null +++ b/apps/emqx_auth_redis/.github/workflows/run_test_cases.yaml @@ -0,0 +1,80 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_tests_cases: + runs-on: ubuntu-latest + + strategy: + matrix: + redis_tag: + - 5.0.9 + - 6.0.9 + network_type: + - ipv4 + - ipv6 + connect_type: + - tcp + - tls + + steps: + - name: install docker-compose + run: | + sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose + - uses: actions/checkout@v1 + - name: setup + if: matrix.connect_type == 'tcp' && matrix.network_type == 'ipv6' + env: + REDIS_TAG: ${{ matrix.redis_tag}} + run: | + set -e -u -x + docker network create --driver bridge --ipv6 --subnet fd15:555::/64 tests_emqx_bridge --attachable; + docker-compose -f ./.ci/docker-compose.yml -p tests up -d + ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=tests_redis_server_1 -q)) + sed -i "/auth.redis.server/c auth.redis.server = $ipv6_address:6379" ./etc/emqx_auth_redis.conf + - name: setup + if: matrix.connect_type == 'tcp' && matrix.network_type == 'ipv4' + env: + REDIS_TAG: ${{ matrix.redis_tag}} + run: | + set -e -u -x + docker-compose -f ./.ci/docker-compose.yml -p tests up -d + sed -i '/auth.redis.server/c auth.redis.server = redis_server:6379' ./etc/emqx_auth_redis.conf + - name: setup + if: matrix.connect_type == 'tls' && matrix.network_type == 'ipv6' && matrix.redis_tag == '6.0.9' + run: | + set -e -u -x + docker network create --driver bridge --ipv6 --subnet fd15:555::/64 tests_emqx_bridge --attachable; + docker-compose -f ./.ci/docker-compose-tls.yml -p tests up -d + ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' $(docker ps -a -f name=tests_redis_server_1 -q)) + sed -i "/auth.redis.server/c auth.redis.server = $ipv6_address:6380" ./etc/emqx_auth_redis.conf + echo '\n' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.ssl = on' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.cafile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.certfile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.keyfile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key' >> ./etc/emqx_auth_redis.conf + - name: setup + if: matrix.connect_type == 'tls' && matrix.network_type == 'ipv4' && matrix.redis_tag == '6.0.9' + run: | + set -e -u -x + docker-compose -f ./.ci/docker-compose-tls.yml -p tests up -d + sed -i '/auth.redis.server/c auth.redis.server = redis_server:6380' ./etc/emqx_auth_redis.conf + echo '\n' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.ssl = on' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.cafile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.certfile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt' >> ./etc/emqx_auth_redis.conf + echo 'auth.redis.keyfile = /emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key' >> ./etc/emqx_auth_redis.conf + - name: run test cases + if: matrix.connect_type == 'tcp' || (matrix.connect_type == 'tls' && matrix.redis_tag == '6.0.9') + run: | + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_redis xref" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_redis eunit" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_redis ct" + docker exec -i tests_erlang_1 sh -c "make -C /emqx_auth_redis cover" + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs_redis${{ matrix.redis_tag}}_${{ matrix.network_type }}_${{ matrix.connect_type }} + path: _build/test/logs diff --git a/apps/emqx_auth_redis/.gitignore b/apps/emqx_auth_redis/.gitignore new file mode 100644 index 000000000..d7472fa8f --- /dev/null +++ b/apps/emqx_auth_redis/.gitignore @@ -0,0 +1,24 @@ +.rebar/ +.eunit/ +.erlang.mk/ +emqttd_auth_redis.d +deps/ +ct.coverdata +logs/ +test/ct.cover.spec +ebin/ +*.o +*.beam +*.plt +erl_crash.dump +data +emqx_auth_redis.d +cover/ +eunit.coverdata +_build/ +rebar.lock +erlang.mk +*.conf.rendered +.rebar3/ +*.swp +rebar.lock diff --git a/apps/emqx_auth_redis/LICENSE b/apps/emqx_auth_redis/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_auth_redis/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_auth_redis/Makefile b/apps/emqx_auth_redis/Makefile new file mode 100644 index 000000000..d435f3681 --- /dev/null +++ b/apps/emqx_auth_redis/Makefile @@ -0,0 +1,37 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_auth_redis.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_auth_redis.conf -i priv/emqx_auth_redis.schema -d data diff --git a/apps/emqx_auth_redis/README.md b/apps/emqx_auth_redis/README.md new file mode 100644 index 000000000..9aa851f88 --- /dev/null +++ b/apps/emqx_auth_redis/README.md @@ -0,0 +1,171 @@ +emqx_auth_redis +=============== + +EMQ X Redis Authentication/ACL Plugin + +Features +--------- + +- Full *Authentication*, *Superuser*, *ACL* support +- IPv4, IPv6 support +- Connection pool by [ecpool](https://github.com/emqx/ecpool) +- Support `single`, `sentinel`, `cluster` deployment structures of Redis +- Completely cover Redis 5, Redis 6 in our tests + + +Build Plugin +------------ + +``` +make && make tests +``` + +Configure Plugin +---------------- + +File: etc/emqx_auth_redis.conf + +``` +## Redis server address. +## +## Value: Port | IP:Port +## +## Redis Server: 6379, 127.0.0.1:6379, localhost:6379, Redis Sentinel: 127.0.0.1:26379 +auth.redis.server = 127.0.0.1:6379 + +## redis sentinel cluster name +## auth.redis.sentinel = mymaster + +## Redis pool size. +## +## Value: Number +auth.redis.pool = 8 + +## Redis database no. +## +## Value: Number +auth.redis.database = 0 + +## Redis password. +## +## Value: String +## auth.redis.password = + +## Authentication query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Examples: +## - HGET mqtt_user:%u password +## - HMGET mqtt_user:%u password +## - HMGET mqtt_user:%u password salt +auth.redis.auth_cmd = HMGET mqtt_user:%u password + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.redis.password_hash = plain + +## sha256 with salt prefix +## auth.redis.password_hash = salt,sha256 + +## sha256 with salt suffix +## auth.redis.password_hash = sha256,salt + +## bcrypt with salt prefix +## auth.redis.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.redis.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +auth.redis.super_cmd = HGET mqtt_user:%u is_superuser + +## ACL query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +auth.redis.acl_cmd = HGETALL mqtt_acl:%u +``` + +SuperUser +--------- + +``` +HSET mqtt_user: is_superuser 1 +``` + +User Hash with Password Salt +---------------------------- + +Set a 'user' hash with 'password' 'salt' field, for example: + +``` +HMSET mqtt_user: password "password" salt "salt" +``` + +User Set with Password +----------------------- + +Set a 'user' Set with 'password' field for example: + +``` +HSET mqtt_user: password "password" +``` + +ACL Rule Hash +------------- + +The plugin uses a redis hash to store ACL rules: + +``` +HSET mqtt_acl: topic1 1 +HSET mqtt_acl: topic2 2 +HSET mqtt_acl: topic3 3 +``` + +NOTE: 1: subscribe, 2: publish, 3: pubsub + +Subscription Hash +----------------- + +NOTICE: Move to emqx_backend_redis... + +The plugin could store the static subscriptions into a redis Hash: + +``` +HSET mqtt_sub: topic1 0 +HSET mqtt_sub: topic2 1 +HSET mqtt_sub: topic3 2 +``` + +Load Plugin +----------- + +``` +./bin/emqx_ctl plugins load emqx_auth_redis +``` + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_auth_redis/etc/emqx_auth_redis.conf b/apps/emqx_auth_redis/etc/emqx_auth_redis.conf new file mode 100644 index 000000000..4d6b19b15 --- /dev/null +++ b/apps/emqx_auth_redis/etc/emqx_auth_redis.conf @@ -0,0 +1,116 @@ +##-------------------------------------------------------------------- +## Redis Auth/ACL Plugin +##-------------------------------------------------------------------- +## Redis Server cluster type +## single Single redis server +## sentinel Redis cluster through sentinel +## cluster Redis through cluster +auth.redis.type = single + +## Redis server address. +## +## Value: Port | IP:Port +## +## Single Redis Server: 127.0.0.1:6379, localhost:6379 +## Redis Sentinel: 127.0.0.1:26379,127.0.0.2:26379,127.0.0.3:26379 +## Redis Cluster: 127.0.0.1:6379,127.0.0.2:6379,127.0.0.3:6379 +auth.redis.server = 127.0.0.1:6379 + +## Redis sentinel cluster name. +## +## Value: String +## auth.redis.sentinel = mymaster + +## Redis pool size. +## +## Value: Number +auth.redis.pool = 8 + +## Redis database no. +## +## Value: Number +auth.redis.database = 0 + +## Redis password. +## +## Value: String +## auth.redis.password = + +## Redis query timeout +## +## Value: Duration +## auth.redis.query_timeout = 5s + +## Authentication query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +## +## Examples: +## - HGET mqtt_user:%u password +## - HMGET mqtt_user:%u password +## - HMGET mqtt_user:%u password salt +auth.redis.auth_cmd = HMGET mqtt_user:%u password + +## Password hash. +## +## Value: plain | md5 | sha | sha256 | bcrypt +auth.redis.password_hash = plain + +## sha256 with salt prefix +## auth.redis.password_hash = salt,sha256 + +## sha256 with salt suffix +## auth.redis.password_hash = sha256,salt + +## bcrypt with salt prefix +## auth.redis.password_hash = salt,bcrypt + +## pbkdf2 with macfun iterations dklen +## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512 +## auth.redis.password_hash = pbkdf2,sha256,1000,20 + +## Superuser query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +## - %C: common name of client TLS cert +## - %d: subject of client TLS cert +auth.redis.super_cmd = HGET mqtt_user:%u is_superuser + +## ACL query command. +## +## Value: Redis cmd +## +## Variables: +## - %u: username +## - %c: clientid +auth.redis.acl_cmd = HGETALL mqtt_acl:%u + +## Redis ssl configuration. +## +## Value: on | off +#auth.redis.ssl = off + +## CA certificate. +## +## Value: File +#auth.redis.cafile = path/to/your/cafile + +## Client ssl certificate. +## +## Value: File +#auth.redis.certfile = path/to/your/certfile + +## Client ssl keyfile. +## +## Value: File +#auth.redis.keyfile = path/to/your/keyfile \ No newline at end of file diff --git a/apps/emqx_auth_redis/include/emqx_auth_redis.hrl b/apps/emqx_auth_redis/include/emqx_auth_redis.hrl new file mode 100644 index 000000000..204d8ef70 --- /dev/null +++ b/apps/emqx_auth_redis/include/emqx_auth_redis.hrl @@ -0,0 +1,23 @@ + +-define(APP, emqx_auth_redis). + +-record(auth_metrics, { + success = 'client.auth.success', + failure = 'client.auth.failure', + ignore = 'client.auth.ignore' + }). + +-record(acl_metrics, { + allow = 'client.acl.allow', + deny = 'client.acl.deny', + ignore = 'client.acl.ignore' + }). + +-define(METRICS(Type), tl(tuple_to_list(#Type{}))). +-define(METRICS(Type, K), #Type{}#Type.K). + +-define(AUTH_METRICS, ?METRICS(auth_metrics)). +-define(AUTH_METRICS(K), ?METRICS(auth_metrics, K)). + +-define(ACL_METRICS, ?METRICS(acl_metrics)). +-define(ACL_METRICS(K), ?METRICS(acl_metrics, K)). diff --git a/apps/emqx_auth_redis/priv/emqx_auth_redis.schema b/apps/emqx_auth_redis/priv/emqx_auth_redis.schema new file mode 100644 index 000000000..59283cf11 --- /dev/null +++ b/apps/emqx_auth_redis/priv/emqx_auth_redis.schema @@ -0,0 +1,139 @@ +%%-*- mode: erlang -*- +%% emqx_auth_redis config mapping + +{mapping, "auth.redis.type", "emqx_auth_redis.server", [ + {default, single}, + {datatype, {enum, [single, sentinel, cluster]}} +]}. + +{mapping, "auth.redis.server", "emqx_auth_redis.server", [ + {default, "127.0.0.1:6379"}, + {datatype, [string]} +]}. + +{mapping, "auth.redis.sentinel", "emqx_auth_redis.server", [ + {default, ""}, + {datatype, string}, + hidden +]}. + +{mapping, "auth.redis.pool", "emqx_auth_redis.server", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "auth.redis.database", "emqx_auth_redis.server", [ + {default, 0}, + {datatype, integer} +]}. + +{mapping, "auth.redis.password", "emqx_auth_redis.server", [ + {default, ""}, + {datatype, string}, + hidden +]}. + +{mapping, "auth.redis.ssl", "emqx_auth_redis.options", [ + {default, off}, + {datatype, flag} +]}. + +{mapping, "auth.redis.cafile", "emqx_auth_redis.options", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.redis.certfile", "emqx_auth_redis.options", [ + {default, ""}, + {datatype, string} +]}. + +{mapping, "auth.redis.keyfile", "emqx_auth_redis.options", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_redis.options", fun(Conf) -> + Ssl = cuttlefish:conf_get("auth.redis.ssl", Conf, off), + case Ssl of + true -> + CA = cuttlefish:conf_get("auth.redis.cafile", Conf), + Cert = cuttlefish:conf_get("auth.redis.certfile", Conf), + Key = cuttlefish:conf_get("auth.redis.keyfile", Conf), + [{options, [{ssl_options, [{cacertfile, CA}, + {certfile, Cert}, + {keyfile, Key}]}]}]; + _ -> [{options, []}] + end +end}. + +{translation, "emqx_auth_redis.server", fun(Conf) -> + Fun = fun(S) -> + case string:split(S, ":", trailing) of + [Domain] -> {Domain, 6379}; + [Domain, Port] -> {Domain, list_to_integer(Port)} + end + end, + Servers = cuttlefish:conf_get("auth.redis.server", Conf), + Type = cuttlefish:conf_get("auth.redis.type", Conf), + Server = case Type of + single -> + {Host, Port} = Fun(Servers), + [{host, Host}, {port, Port}]; + _ -> + S = string:tokens(Servers, ","), + [{servers, [Fun(S1) || S1 <- S]}] + end, + Pool = cuttlefish:conf_get("auth.redis.pool", Conf), + Passwd = cuttlefish:conf_get("auth.redis.password", Conf), + DB = cuttlefish:conf_get("auth.redis.database", Conf), + Sentinel = cuttlefish:conf_get("auth.redis.sentinel", Conf), + [{type, Type}, + {pool_size, Pool}, + {auto_reconnect, 1}, + {database, DB}, + {password, Passwd}, + {sentinel, Sentinel}] ++ Server +end}. + +{mapping, "auth.redis.query_timeout", "emqx_auth_redis.query_timeout", [ + {default, ""}, + {datatype, string} +]}. + +{translation, "emqx_auth_redis.query_timeout", fun(Conf) -> + case cuttlefish:conf_get("auth.redis.query_timeout", Conf) of + "" -> infinity; + Duration -> + case cuttlefish_duration:parse(Duration, ms) of + {error, Reason} -> error(Reason); + Ms when is_integer(Ms) -> Ms + end + end +end}. + +{mapping, "auth.redis.auth_cmd", "emqx_auth_redis.auth_cmd", [ + {datatype, string} +]}. + +{mapping, "auth.redis.password_hash", "emqx_auth_redis.password_hash", [ + {datatype, string} +]}. + +{mapping, "auth.redis.super_cmd", "emqx_auth_redis.super_cmd", [ + {datatype, string} +]}. + +{mapping, "auth.redis.acl_cmd", "emqx_auth_redis.acl_cmd", [ + {datatype, string} +]}. + +{translation, "emqx_auth_redis.password_hash", fun(Conf) -> + HashValue = cuttlefish:conf_get("auth.redis.password_hash", Conf), + case string:tokens(HashValue, ",") of + [Hash] -> list_to_atom(Hash); + [Prefix, Suffix] -> {list_to_atom(Prefix), list_to_atom(Suffix)}; + [Hash, MacFun, Iterations, Dklen] -> {list_to_atom(Hash), list_to_atom(MacFun), list_to_integer(Iterations), list_to_integer(Dklen)}; + _ -> plain + end +end}. diff --git a/apps/emqx_auth_redis/rebar.config b/apps/emqx_auth_redis/rebar.config new file mode 100644 index 000000000..182a4c47c --- /dev/null +++ b/apps/emqx_auth_redis/rebar.config @@ -0,0 +1,33 @@ +{deps, + [{eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.6.4"}}}, + {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqx_passwd, {git, "https://github.com/emqx/emqx-passwd", {tag, "v1.1.1"}}} + ]}. + +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + compressed + ]}. +{overrides, [{add, [{erl_opts, [compressed]}]}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions + ]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helper, {git, "https://github.com/emqx/emqx-ct-helper", {tag, "1.2.2"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}} + ]}, + {erl_opts, [debug_info]} + ]} + ]}. diff --git a/apps/emqx_auth_redis/rebar.config.script b/apps/emqx_auth_redis/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_auth_redis/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_auth_redis/src/emqx_acl_redis.erl b/apps/emqx_auth_redis/src/emqx_acl_redis.erl new file mode 100644 index 000000000..096523487 --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_acl_redis.erl @@ -0,0 +1,86 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_acl_redis). + +-include("emqx_auth_redis.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([ register_metrics/0 + , check_acl/5 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?ACL_METRICS). + +check_acl(ClientInfo, PubSub, Topic, AclResult, Config) -> + case do_check_acl(ClientInfo, PubSub, Topic, AclResult, Config) of + ok -> emqx_metrics:inc(?ACL_METRICS(ignore)), ok; + {stop, allow} -> emqx_metrics:inc(?ACL_METRICS(allow)), {stop, allow}; + {stop, deny} -> emqx_metrics:inc(?ACL_METRICS(deny)), {stop, deny} + end. + +do_check_acl(#{username := <<$$, _/binary>>}, _PubSub, _Topic, _AclResult, _Config) -> + ok; +do_check_acl(ClientInfo, PubSub, Topic, _AclResult, + #{acl_cmd := AclCmd, timeout := Timeout, type := Type, pool := Pool}) -> + case emqx_auth_redis_cli:q(Pool, Type, AclCmd, ClientInfo, Timeout) of + {ok, []} -> ok; + {ok, Rules} -> + case match(ClientInfo, PubSub, Topic, Rules) of + allow -> {stop, allow}; + nomatch -> {stop, deny} + end; + {error, Reason} -> + ?LOG(error, "[Redis] do_check_acl error: ~p", [Reason]), + ok + end. + +match(_ClientInfo, _PubSub, _Topic, []) -> + nomatch; +match(ClientInfo, PubSub, Topic, [Filter, Access | Rules]) -> + case {match_topic(Topic, feed_var(ClientInfo, Filter)), + match_access(PubSub, b2i(Access))} of + {true, true} -> allow; + {_, _} -> match(ClientInfo, PubSub, Topic, Rules) + end. + +match_topic(Topic, Filter) -> + emqx_topic:match(Topic, Filter). + +match_access(subscribe, Access) -> + (1 band Access) > 0; +match_access(publish, Access) -> + (2 band Access) > 0. + +feed_var(#{clientid := ClientId, username := Username}, Str) -> + lists:foldl(fun({Var, Val}, Acc) -> + feed_var(Acc, Var, Val) + end, Str, [{"%u", Username}, {"%c", ClientId}]). + +feed_var(Str, _Var, undefined) -> + Str; +feed_var(Str, Var, Val) -> + re:replace(Str, Var, Val, [global, {return, binary}]). + +b2i(Bin) -> list_to_integer(binary_to_list(Bin)). + +description() -> "Redis ACL Module". + diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.app.src b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src new file mode 100644 index 000000000..1bd044e7f --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src @@ -0,0 +1,14 @@ +{application, emqx_auth_redis, + [{description, "EMQ X Authentication/ACL with Redis"}, + {vsn, "git"}, + {modules, []}, + {registered, [emqx_auth_redis_sup]}, + {applications, [kernel,stdlib,eredis,eredis_cluster,ecpool,emqx_passwd]}, + {mod, {emqx_auth_redis_app, []}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-auth-redis"} + ]} + ]}. diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.app.src.script b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src new file mode 100644 index 000000000..2e4a43be0 --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.appup.src @@ -0,0 +1,14 @@ +{VSN, + [ + {"4.2.0", [{load_module, emqx_auth_redis_cli, brutal_purge, soft_purge, []}, + {load_module, emqx_auth_redis_sup, brutal_purge, soft_purge, []}] + }, + {<<".*">>, []} + ], + [ + {"4.2.0", [{load_module, emqx_auth_redis_cli, brutal_purge, soft_purge, []}, + {load_module, emqx_auth_redis_sup, brutal_purge, soft_purge, []}] + }, + {<<".*">>, []} + ] +}. diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis.erl b/apps/emqx_auth_redis/src/emqx_auth_redis.erl new file mode 100644 index 000000000..65f4d9735 --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis.erl @@ -0,0 +1,85 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_redis). + +-include("emqx_auth_redis.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-export([ register_metrics/0 + , check/3 + , description/0 + ]). + +-spec(register_metrics() -> ok). +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, ?AUTH_METRICS). + +check(ClientInfo = #{password := Password}, AuthResult, + #{auth_cmd := AuthCmd, + super_cmd := SuperCmd, + hash_type := HashType, + timeout := Timeout, + type := Type, + pool := Pool}) -> + CheckPass = case emqx_auth_redis_cli:q(Pool, Type, AuthCmd, ClientInfo, Timeout) of + {ok, PassHash} when is_binary(PassHash) -> + check_pass({PassHash, Password}, HashType); + {ok, [undefined|_]} -> + {error, not_found}; + {ok, [PassHash]} -> + check_pass({PassHash, Password}, HashType); + {ok, [PassHash, Salt|_]} -> + check_pass({PassHash, Salt, Password}, HashType); + {error, Reason} -> + ?LOG(error, "[Redis] Command: ~p failed: ~p", [AuthCmd, Reason]), + {error, not_found} + end, + case CheckPass of + ok -> + ok = emqx_metrics:inc(?AUTH_METRICS(success)), + IsSuperuser = is_superuser(Pool, Type, SuperCmd, ClientInfo, Timeout), + {stop, AuthResult#{is_superuser => IsSuperuser, + anonymous => false, + auth_result => success}}; + {error, not_found} -> + ok = emqx_metrics:inc(?AUTH_METRICS(ignore)); + {error, ResultCode} -> + ok = emqx_metrics:inc(?AUTH_METRICS(failure)), + ?LOG(error, "[Redis] Auth from redis failed: ~p", [ResultCode]), + {stop, AuthResult#{auth_result => ResultCode, anonymous => false}} + end. + +description() -> "Authentication with Redis". + +-spec(is_superuser(atom(), atom(), undefined|list(), emqx_types:client(), timeout()) -> boolean()). +is_superuser(_Pool, _Type, undefined, _ClientInfo, _Timeout) -> false; +is_superuser(Pool, Type, SuperCmd, ClientInfo, Timeout) -> + case emqx_auth_redis_cli:q(Pool, Type, SuperCmd, ClientInfo, Timeout) of + {ok, undefined} -> false; + {ok, <<"1">>} -> true; + {ok, _Other} -> false; + {error, _Error} -> false + end. + +check_pass(Password, HashType) -> + case emqx_passwd:check_pass(Password, HashType) of + ok -> ok; + {error, _Reason} -> {error, not_authorized} + end. + diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis_app.erl b/apps/emqx_auth_redis/src/emqx_auth_redis_app.erl new file mode 100644 index 000000000..345f9f87d --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis_app.erl @@ -0,0 +1,70 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_redis_app). + +-behaviour(application). + +-emqx_plugin(auth). + +-include("emqx_auth_redis.hrl"). + +-export([ start/2 + , stop/1 + ]). + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_auth_redis_sup:start_link(), + if_cmd_enabled(auth_cmd, fun load_auth_hook/1), + if_cmd_enabled(acl_cmd, fun load_acl_hook/1), + {ok, Sup}. + +stop(_State) -> + emqx:unhook('client.authenticate', fun emqx_auth_redis:check/3), + emqx:unhook('client.check_acl', fun emqx_acl_redis:check_acl/5), + %% Ensure stop cluster pool if the server type is cluster + eredis_cluster:stop_pool(?APP). + +load_auth_hook(AuthCmd) -> + SuperCmd = application:get_env(?APP, super_cmd, undefined), + {ok, HashType} = application:get_env(?APP, password_hash), + {ok, Timeout} = application:get_env(?APP, query_timeout), + Type = proplists:get_value(type, application:get_env(?APP, server, [])), + Config = #{auth_cmd => AuthCmd, + super_cmd => SuperCmd, + hash_type => HashType, + timeout => Timeout, + type => Type, + pool => ?APP}, + ok = emqx_auth_redis:register_metrics(), + emqx:hook('client.authenticate', fun emqx_auth_redis:check/3, [Config]). + +load_acl_hook(AclCmd) -> + {ok, Timeout} = application:get_env(?APP, query_timeout), + Type = proplists:get_value(type, application:get_env(?APP, server, [])), + Config = #{acl_cmd => AclCmd, + timeout => Timeout, + type => Type, + pool => ?APP}, + ok = emqx_acl_redis:register_metrics(), + emqx:hook('client.check_acl', fun emqx_acl_redis:check_acl/5, [Config]). + +if_cmd_enabled(Par, Fun) -> + case application:get_env(?APP, Par) of + {ok, Cmd} -> Fun(Cmd); + undefined -> ok + end. + diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis_cli.erl b/apps/emqx_auth_redis/src/emqx_auth_redis_cli.erl new file mode 100644 index 000000000..31cb67505 --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis_cli.erl @@ -0,0 +1,89 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_redis_cli). + +-behaviour(ecpool_worker). + +-include("emqx_auth_redis.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-import(proplists, [get_value/2, get_value/3]). + +-export([ connect/1 + , q/5 + ]). + +%%-------------------------------------------------------------------- +%% Redis Connect/Query +%%-------------------------------------------------------------------- + +connect(Opts) -> + Sentinel = get_value(sentinel, Opts), + Host = case Sentinel =:= "" of + true -> get_value(host, Opts); + false -> + eredis_sentinel:start_link(get_value(servers, Opts)), + "sentinel:" ++ Sentinel + end, + case eredis:start_link(Host, + get_value(port, Opts, 6379), + get_value(database, Opts, 0), + get_value(password, Opts, ""), + 3000, + 5000, + get_value(options, Opts, [])) of + {ok, Pid} -> {ok, Pid}; + {error, Reason = {connection_error, _}} -> + ?LOG(error, "[Redis] Can't connect to Redis server: Connection refused."), + {error, Reason}; + {error, Reason = {authentication_error, _}} -> + ?LOG(error, "[Redis] Can't connect to Redis server: Authentication failed."), + {error, Reason}; + {error, Reason} -> + ?LOG(error, "[Redis] Can't connect to Redis server: ~p", [Reason]), + {error, Reason} + end. + +%% Redis Query. +-spec(q(atom(), atom(), string(), emqx_types:credentials(), timeout()) + -> {ok, undefined | binary() | list()} | {error, atom() | binary()}). +q(Pool, Type, CmdStr, Credentials, Timeout) -> + Cmd = string:tokens(replvar(CmdStr, Credentials), " "), + case Type of + cluster -> eredis_cluster:q(Pool, Cmd); + _ -> ecpool:with_client(Pool, fun(C) -> eredis:q(C, Cmd, Timeout) end) + end. + +replvar(Cmd, Credentials = #{cn := CN}) -> + replvar(repl(Cmd, "%C", CN), maps:remove(cn, Credentials)); +replvar(Cmd, Credentials = #{dn := DN}) -> + replvar(repl(Cmd, "%d", DN), maps:remove(dn, Credentials)); +replvar(Cmd, Credentials = #{clientid := ClientId}) -> + replvar(repl(Cmd, "%c", ClientId), maps:remove(clientid, Credentials)); +replvar(Cmd, Credentials = #{username := Username}) -> + replvar(repl(Cmd, "%u", Username), maps:remove(username, Credentials)); +replvar(Cmd, _) -> + Cmd. + +repl(S, _Var, undefined) -> + S; +repl(S, Var, Val) -> + NVal = re:replace(Val, "&", "\\\\&", [global, {return, list}]), + re:replace(S, Var, NVal, [{return, list}]). + diff --git a/apps/emqx_auth_redis/src/emqx_auth_redis_sup.erl b/apps/emqx_auth_redis/src/emqx_auth_redis_sup.erl new file mode 100644 index 000000000..6066a306a --- /dev/null +++ b/apps/emqx_auth_redis/src/emqx_auth_redis_sup.erl @@ -0,0 +1,43 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_redis_sup). + +-behaviour(supervisor). + +-include("emqx_auth_redis.hrl"). + +-export([start_link/0]). + +-export([init/1]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + {ok, Server} = application:get_env(?APP, server), + {ok, {{one_for_one, 10, 100}, pool_spec(Server)}}. + +pool_spec(Server) -> + Options = application:get_env(?APP, options, []), + case proplists:get_value(type, Server) of + cluster -> + eredis_cluster:start_pool(?APP, Server ++ Options), + []; + _ -> + [ecpool:pool_spec(?APP, ?APP, emqx_auth_redis_cli, Server ++ Options)] + end. + diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE.erl b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE.erl new file mode 100644 index 000000000..2160fd4e4 --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE.erl @@ -0,0 +1,173 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_auth_redis_SUITE). + +-compile(export_all). + +-include_lib("emqx/include/emqx.hrl"). + +-include_lib("common_test/include/ct.hrl"). + +-include_lib("eunit/include/eunit.hrl"). + +-define(APP, emqx_auth_redis). + +-define(POOL(App), ecpool_worker:client(gproc_pool:pick_worker({ecpool, App}))). + +-define(INIT_ACL, [{"mqtt_acl:test1", "topic1", "2"}, + {"mqtt_acl:test2", "topic2", "1"}, + {"mqtt_acl:test3", "topic3", "3"}]). + +-define(INIT_AUTH, [{"mqtt_user:plain", ["password", "plain", "salt", "salt", "is_superuser", "1"]}, + {"mqtt_user:special&symbol", ["password", "plain", "salt", "salt", "is_superuser", "0"]}, + {"mqtt_user:md5", ["password", "1bc29b36f623ba82aaf6724fd3b16718", "salt", "salt", "is_superuser", "0"]}, + {"mqtt_user:sha", ["password", "d8f4590320e1343a915b6394170650a8f35d6926", "salt", "salt", "is_superuser", "0"]}, + {"mqtt_user:sha256", ["password", "5d5b09f6dcb2d53a5fffc60c4ac0d55fabdf556069d6631545f42aa6e3500f2e", "salt", "salt", "is_superuser", "0"]}, + {"mqtt_user:pbkdf2_password", ["password", "cdedb5281bb2f801565a1122b2563515", "salt", "ATHENA.MIT.EDUraeburn", "is_superuser", "0"]}, + {"mqtt_user:bcrypt_foo", ["password", "$2a$12$sSS8Eg.ovVzaHzi1nUHYK.HbUIOdlQI0iS22Q5rd5z.JVVYH6sfm6", "salt", "$2a$12$sSS8Eg.ovVzaHzi1nUHYK.", "is_superuser", "0"]}, + {"mqtt_user:bcrypt", ["password", "$2y$16$rEVsDarhgHYB0TGnDFJzyu5f.T.Ha9iXMTk9J36NCMWWM7O16qyaK", "salt", "salt", "is_superuser", "0"]}]). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> + emqx_ct:all(?MODULE). + +init_per_suite(Cfg) -> + emqx_ct_helpers:start_apps([emqx_auth_redis], fun set_special_configs/1), + init_redis_rows(), + Cfg. + +end_per_suite(_Cfg) -> + deinit_redis_rows(), + emqx_ct_helpers:stop_apps([emqx_auth_redis]). + +set_special_configs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, acl_nomatch, deny), + application:set_env(emqx, acl_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/acl.conf")), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); +set_special_configs(_App) -> + ok. + +init_redis_rows() -> + {ok, Connection} = ?POOL(?APP), + %% Users + [eredis:q(Connection, ["HMSET", Key|FiledValue]) || {Key, FiledValue} <- ?INIT_AUTH], + + %% ACLs + Result = [eredis:q(Connection, ["HSET", Key, Filed, Value]) || {Key, Filed, Value} <- ?INIT_ACL], + ct:pal("redis init result: ~p~n", [Result]). + +deinit_redis_rows() -> + {ok, Connection} = ?POOL(?APP), + AuthKeys = [Key || {Key, _Filed, _Value} <- ?INIT_AUTH], + AclKeys = [Key || {Key, _Value} <- ?INIT_ACL], + eredis:q(Connection, ["DEL" | AuthKeys]), + eredis:q(Connection, ["DEL" | AclKeys]). + +%%-------------------------------------------------------------------- +%% Cases +%%-------------------------------------------------------------------- + +t_check_auth(_) -> + Plain = #{clientid => <<"client1">>, username => <<"plain">>, zone => external}, + SpecialSymbol = #{clientid => <<"special_symbol">>, username => <<"special&symbol">>, zone => external}, + Md5 = #{clientid => <<"md5">>, username => <<"md5">>, zone => external}, + Sha = #{clientid => <<"sha">>, username => <<"sha">>, zone => external}, + Sha256 = #{clientid => <<"sha256">>, username => <<"sha256">>, zone => external}, + Pbkdf2 = #{clientid => <<"pbkdf2_password">>, username => <<"pbkdf2_password">>, zone => external}, + BcryptFoo = #{clientid => <<"bcrypt_foo">>, username => <<"bcrypt_foo">>, zone => external}, + User1 = #{clientid => <<"bcrypt_foo">>, username => <<"user">>, zone => external}, + User3 = #{clientid => <<"client3">>, zone => external}, + Bcrypt = #{clientid => <<"bcrypt">>, username => <<"bcrypt">>, zone => external}, + {error, _} = emqx_access_control:authenticate(User3#{password => <<>>}), + reload([{password_hash, plain}]), + {ok, #{is_superuser := true}} = emqx_access_control:authenticate(Plain#{password => <<"plain">>}), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(SpecialSymbol#{password => <<"plain">>}), + reload([{password_hash, md5}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Md5#{password => <<"md5">>}), + reload([{password_hash, sha}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha#{password => <<"sha">>}), + reload([{password_hash, sha256}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Sha256#{password => <<"sha256">>}), + reload([{password_hash, bcrypt}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}), + %%pbkdf2 sha + reload([{password_hash, {pbkdf2, sha, 1, 16}}, {auth_cmd, "HMGET mqtt_user:%u password salt"}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(Pbkdf2#{password => <<"password">>}), + reload([{password_hash, {salt, bcrypt}}]), + {ok, #{is_superuser := false}} = emqx_access_control:authenticate(BcryptFoo#{password => <<"foo">>}), + {error,_} = emqx_access_control:authenticate(User1#{password => <<"foo">>}), + {error, _} = emqx_access_control:authenticate(Bcrypt#{password => <<"password">>}). + +t_check_auth_hget(_) -> + {ok, Connection} = ?POOL(?APP), + eredis:q(Connection, ["HSET", "mqtt_user:hset", "password", "hset"]), + eredis:q(Connection, ["HSET", "mqtt_user:hset", "is_superuser", "1"]), + reload([{password_hash, plain}, {auth_cmd, "HGET mqtt_user:%u password"}]), + Hset = #{clientid => <<"hset">>, username => <<"hset">>, zone => external}, + {ok, #{is_superuser := true}} = emqx_access_control:authenticate(Hset#{password => <<"hset">>}). + +t_check_acl(_) -> + User1 = #{zone => external, clientid => <<"client1">>, username => <<"test1">>}, + User2 = #{zone => external, clientid => <<"client2">>, username => <<"test2">>}, + User3 = #{zone => external, clientid => <<"client3">>, username => <<"test3">>}, + User4 = #{zone => external, clientid => <<"client4">>, username => <<"$$user4">>}, + deny = emqx_access_control:check_acl(User1, subscribe, <<"topic1">>), + allow = emqx_access_control:check_acl(User1, publish, <<"topic1">>), + + deny = emqx_access_control:check_acl(User2, publish, <<"topic2">>), + allow = emqx_access_control:check_acl(User2, subscribe, <<"topic2">>), + allow = emqx_access_control:check_acl(User3, publish, <<"topic3">>), + allow = emqx_access_control:check_acl(User3, subscribe, <<"topic3">>), + deny = emqx_access_control:check_acl(User4, publish, <<"a/b/c">>). + +t_acl_super(_) -> + reload([{password_hash, plain}]), + {ok, C} = emqtt:start_link([{host, "localhost"}, + {clientid, <<"simpleClient">>}, + {username, <<"plain">>}, + {password, <<"plain">>}]), + {ok, _} = emqtt:connect(C), + timer:sleep(10), + emqtt:subscribe(C, <<"TopicA">>, qos2), + timer:sleep(1000), + emqtt:publish(C, <<"TopicA">>, <<"Payload">>, qos2), + timer:sleep(1000), + receive + {publish, #{payload := Payload}} -> + ?assertEqual(<<"Payload">>, Payload) + after + 1000 -> + ct:fail({receive_timeout, <<"Payload">>}), + ok + end, + emqtt:disconnect(C). + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +reload(Config) when is_list(Config) -> + application:stop(?APP), + [application:set_env(?APP, K, V) || {K, V} <- Config], + application:start(?APP). diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt new file mode 100644 index 000000000..b46bef4e5 --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIE5jCCAs4CCQCc1DzEYETfKTANBgkqhkiG9w0BAQsFADA1MRMwEQYDVQQKDApS +ZWRpcyBUZXN0MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjAx +MDI5MDEzNDE2WhcNMzAxMDI3MDEzNDE2WjA1MRMwEQYDVQQKDApSZWRpcyBUZXN0 +MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEB +AQUAA4ICDwAwggIKAoICAQC/RxC/zQ6+ThI2l+LT5tpuvljE7CPca5erahTjv1Pq +mbmHYIVlige9jvZKR/AaaHuhNRT6C4PDpD98TgrhSLSgMMFImoFMSnmFEOVave3O +y1qV9vtoHLMB9hO+t7P98KRi1sCoMdPIE/o5uEGSd4YgWbk3NllAV6me108UniWU +yZMCSEKmV9OpfQ+YfHFolESV92ajdViDbtRBjfDNwD7qb8zgigxIJvBzEnWF4RZl +4+KIiyoJ55AQ3omdEi0QwiRRRONFtB6kRSqjGS8genGnycX1ZNPRB8JeG3ESuFj9 +1WQUD0EMBXFB5agHoZjvtFwxOkUkA4XbcnpKddHGKRt4BAbm+YcizJaT7mRytGWZ +UoTrDWz8/Cc0BlwAfPEk6ogU/sLSZpdxjxwprCNB89UOI+q7ng7CYiFnxY9HHZeg +GCJxYfvpKM/eOT9mSLUug8EGITd0j2cusflO4Q243clPyRbTSSr39Pcpy8rfKApF +HkUuGIpa/qgAbez+lPlIydzpbrTgrnHvL1P6fCYTnHkcgSn8glBIKv3vh4zQd6df +JvcLv3WEka9+lyoCvJ0QH+/ITqrToyWa8g9fR3ajTlyMANesKxQejo80zCwk/0ns +SFKRIJc6vfnUJ12Vdxpmm1LeoJZnCYODNUeeksL1ahHCBGq4M8UJ+ycUM6N4ndWE +6QIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQAg0BaIi7lzrNb7xC42c+GJVrBq8Qf8 +7CBzP8SXYGUavQIYNRrtH8UgTOwaju9vOn3zoY8L59N6e+Icyt+Oh1FENcQMCZ2l +SP79iaY9A/dRV56p6NqNd3VWH+EuRGbQVatLdhJf3l5+W1z3Dum1YXmIn26acawF +GZVqLalgvLqPzPHHWEqz9RnmcvTu3w9YVb4NgbmY4byCb6mB2avt0iWQrY/fZSMe +FvRXurr0jwyIXBncqnXu97sCeccNc+fo3qZC1xxH9iXOIzrRg0ud7VGMTKcNLTTc +GqnbjNT8BC96Qp2Bs8J+JGZa3mT/usKBq2TT/3q6oKevuc23u/a5s1rztnqZgIe5 +RzfevJ79xdva6DMSq/8Yyd3I8hrs3oZKJbAce6ux01RsrCcY2O7gi4dAMoEGumxW +CS9XLchNy7QxQ+J2AKBZXd6AZjvTvloDGz/yC5EbdK/MnLz8oApK5Z8U/huEilFa +AymVWQWpmlX2KxW0nkCperlb7lcbPS+ZuH0+Zd9HOvqr9cpYMrwpF54q4vnzUQkR +Hsxoapv/FBsVoxtcOqrcxwGpYWCsV0VBnv9+1fzzZ83aK7CHDIeGVuKPyjkhHzLy +v7Ljuqg400wH0WB9pyEdK+O3F+xO3zJgf4o0JptOKOFBVVSkZWTrqlDjjbcnXBmh +dwgj2xYeigqHJA== +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.key b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.key new file mode 100644 index 000000000..b615a8c1e --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.key @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.txt b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.txt new file mode 100644 index 000000000..cf4e2aba5 --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.txt @@ -0,0 +1 @@ +BFFAA2A065DFA6FC diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt new file mode 100644 index 000000000..5eefadf62 --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE----- +MIID1zCCAb8CCQC/+qKgZd+m/DANBgkqhkiG9w0BAQsFADA1MRMwEQYDVQQKDApS +ZWRpcyBUZXN0MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjAx +MDI5MDEzNDE2WhcNMjExMDI5MDEzNDE2WjAmMRMwEQYDVQQKDApSZWRpcyBUZXN0 +MQ8wDQYDVQQDDAZTZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDSs3bQ9sYi2AhFuHU75Ryk1HHSgfzA6pQAJilmJdTy0s5vyiWe1HQJaWkMcS5V +GVzGMK+c+OBqtXtDDninL3betg1YPMjSCOjPMOTC1H9K7+effwf7Iwpnw9Zro8mb +TEmMslIYhhcDedzT9Owli4QAgbgTn4l1BYuKX9CLrrKFtnr21miKu3ydViy9q7T1 +pib3eigvAyk7X2fadHFArGEttsXrD6cetPPkSF/1OLWNlqzUKXzhSyrBXzO44Kks +fwR/EpTiES9g4dNOL2wvKS/YE1fNKhiCENrNxTXQo1l0yOdm2+MeyOeHFzRuS0b/ ++uGDFOPPi04KXeO6dQ5olBCPAgMBAAEwDQYJKoZIhvcNAQELBQADggIBADn0E2vG +iQWe8/I7VbBdPhPNupVNcLvew10eIHxY2g5vSruCSVRQTgk8itVMRmDQxbb7gdDW +jnCRbxykxbLjM9iCRljnOCsIcTi7qO7JRl8niV8dtEpPOs9lZxEdNXjIV1iZoWf3 +arBbPQSyQZvTQHG6qbFnyCdMMyyXGGvEPGQDaBiKH+Ko1qeAbCi0zupChYvxmtZ8 +hSTPlMFezDT9bKoNY0pkJSELfokEPU/Pn6Lz/NVbdzmCMjVa/xmF3s31g+DGhz95 +4AyOnCr6o0aydPVVV3pB/BCezNXPUxpp53BG0w/K2f2DnKYCvGvJbqDAaJ8bG/J1 +EFSOmwobdwVxJz3KNubmo1qJ6xOl/YT7yyqPRQRM1SY8nZW+YcoJSZjOe8wJVlob +d0bOwN1C3HQwomyMWes187bEQP6Y36HuEbR1fK8yIOzGsGDKRFAFwQwMgw2M91lr +EJIP5NRD3OZRuiYDiVfVhDZDaNahrAMZUcPCgeCAwc4YG6Gp2sDtdorOl4kIJYWE +BbBZ0Jplq9+g6ciu5ChjAW8iFl0Ae5U24MxPGXnrxiRF4WWxLeZMVLXLDvlPqReD +CHII5ifyvGEt5+RhqtZC/L+HimL+5wQgOlntqhUdLb6yWRz7YW37PFMnUXU3MXe9 +uY7m73ZLluXiLojcZxU2+cx89u5FOJxrYtrj +-----END CERTIFICATE----- diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.dh b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.dh new file mode 100644 index 000000000..f7dd0569d --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.dh @@ -0,0 +1,8 @@ +-----BEGIN DH PARAMETERS----- +MIIBCAKCAQEAo2dgOzTnLK7c8AjkiTXxdmo2MJsyzTlNXUDxLfl2hgwic6benyQ3 +9iL95wKjYg2YpMhzbwux50D+9XeVkRatf1pRi/N9H911f90MO6penzUx/dxfOepN +qoGK/T9xO8e6aFCYOoQjJaZzQYC0HixJVadZd7wRlHkZ3siNKUU5QK68KaN3JE3J +R3yZ9A7MU/TVdwZyVIyoWF2+WJMQW+qaezoqiuVKZXXzzoqbj14ZrtPRmO26vMV/ +bmMuHwPsk9dL7tKnTWEOrs6NVHIQW+RxJuRE9wGa0qqzHAzysEQ8q9QYPRvGo5y+ +XRWosl1bHG4+EmvXsCCs35bcbKToi3NFWwIBAg== +-----END DH PARAMETERS----- diff --git a/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key new file mode 100644 index 000000000..b76303f14 --- /dev/null +++ b/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpgIBAAKCAQEA0rN20PbGItgIRbh1O+UcpNRx0oH8wOqUACYpZiXU8tLOb8ol +ntR0CWlpDHEuVRlcxjCvnPjgarV7Qw54py923rYNWDzI0gjozzDkwtR/Su/nn38H ++yMKZ8PWa6PJm0xJjLJSGIYXA3nc0/TsJYuEAIG4E5+JdQWLil/Qi66yhbZ69tZo +irt8nVYsvau09aYm93ooLwMpO19n2nRxQKxhLbbF6w+nHrTz5Ehf9Ti1jZas1Cl8 +4UsqwV8zuOCpLH8EfxKU4hEvYOHTTi9sLykv2BNXzSoYghDazcU10KNZdMjnZtvj +Hsjnhxc0bktG//rhgxTjz4tOCl3junUOaJQQjwIDAQABAoIBAQCP7CJ27nm9B0/v +P+ZkeUWtmaf+IOhjZlieGXMh4SmqjDCSz8QO0BRK8YPeCdmaK27huhPa521ztm9y +CIqFuLg7vKM06KBMR+Wu0TkRlFE3ANR4cC8lbnQHGRB4CjMGL3/16UCGm+FQcIdV +CPHdW4VZS0JPtSQRmS4N4RD0uOocxqGcVbCRqnJoNp1zyXhookgHfZsC3b3cgzC7 +qvI9F1oY4Yg4b9Lw5sNi3JXWtFth8JFOPyImRcE0ngcGZK4iWjiufNKWVeTmSmVy +njMZfj8xKSpfqO3sOTbJMdrH1v5pMrAR/Ed748HheXuL15Ur9n88683hMMATZInn +YzIqNSrBAoGBAO94YBB1hN+jSKw+2FbAhuuM0gWHREmLQuaF2vjeVXL3r6YofFmf ++oJNgoOWXsv4KO2MgKDv4qrz7RohhhQpOFm5PpapSH/di7u6KsbJLYSxv/TEqQFE +NPyGywwNDIkn1wPlnX3LXp26puj2Gtn21Z0trUrpgsDM99BaTBbqTR2xAoGBAOE+ +tw0GHD/6CRPfoBIgVilS/sUJ5VJYTTKo/y6ozovCAq4bt5LkYmAOy6q8paHb58Oc +J890+LEPhelM/ZJDDz9oQFfq5LvuzgNfzDRyIhgDSpghtFrdDxQZP1X1lSdh+MFW +gx0k9h8VuIPksBsIgcmUtyCYitxLFep/0tAA/GI/AoGBAMxexEVntjWSScROgh1P +hBXlAZycO4g0ZK0OEboRLYXHos1AghePM6Ee+0LIAzE6IdvR7DjtYVoagQCrGZ19 +LE1Ojf7QjEIr1kQpdrZeHQ3BERyY9c9R4ZKeiw1G2ar4KEV4Ifeop6AfGrF4z6Oz +R80znVBwhxl6FAhp98QaxCORAoGBAInkc/nEKN09u/rvpzYRl83aol+MDFjZ+ACw +lvBApZnHnw5pp3uE13jI9gRDUv8A+iS1X2XQzULQJwHJgV7eMOJ3dxSbl4Y5zuMf +7YqZ6KdctHjoAVqzBD0gq7Z7DuG6R6hMxx27d/VVvcz43preHV6D7YxF9pSgXv1d +XXi7ccbPAoGBAIeLzCYd+JGufHwbq7oNvSyXJjGMjsAQuErUQ0xXwo7VAyOere2P +Dwk67wq6vsmn38EAs7IkXDgIoTD9z69DNtcjr/3fARYfmDSWyHscRwyUaJ15WQcZ +TCXAPf70Vf0KGBpRkgD+Qnq+lMZ3dr1uINGdalI4AWsXje0dPKpd+W8U +-----END RSA PRIVATE KEY----- diff --git a/apps/emqx_bridge_mqtt/.github/workflows/run_test_cases.yaml b/apps/emqx_bridge_mqtt/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..3b4fa29ec --- /dev/null +++ b/apps/emqx_bridge_mqtt/.github/workflows/run_test_cases.yaml @@ -0,0 +1,28 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: run test cases + run: | + make eunit + make ct + make cover + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs + - uses: actions/upload-artifact@v1 + with: + name: cover + path: _build/test/cover + diff --git a/apps/emqx_bridge_mqtt/.gitignore b/apps/emqx_bridge_mqtt/.gitignore new file mode 100644 index 000000000..bf9523be5 --- /dev/null +++ b/apps/emqx_bridge_mqtt/.gitignore @@ -0,0 +1,21 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin/*.beam +rel +_build +.concrete/DEV_MODE +.rebar +.erlang.mk +data +ebin +emqx_bridge_mqtt.d +*.rendered +.rebar3/ +*.coverdata +rebar.lock +.DS_Store +Mnesia.*/ \ No newline at end of file diff --git a/apps/emqx_bridge_mqtt/LICENSE b/apps/emqx_bridge_mqtt/LICENSE new file mode 100644 index 000000000..70a976fe3 --- /dev/null +++ b/apps/emqx_bridge_mqtt/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2019, GilbertWong . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/apps/emqx_bridge_mqtt/Makefile b/apps/emqx_bridge_mqtt/Makefile new file mode 100644 index 000000000..b2cc9cbed --- /dev/null +++ b/apps/emqx_bridge_mqtt/Makefile @@ -0,0 +1,43 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 + +CT_NODE_NAME = emqxct@127.0.0.1 + +all: compile + +compile: unlock + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v --readable=false --name $(CT_NODE_NAME) + +eunit: compile + $(REBAR) as test eunit + +unlock: + $(REBAR) unlock + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_bridge_mqtt.conf -i priv/emqx_bridge_mqtt.schema -d data diff --git a/apps/emqx_bridge_mqtt/README.md b/apps/emqx_bridge_mqtt/README.md new file mode 100644 index 000000000..6656aa36f --- /dev/null +++ b/apps/emqx_bridge_mqtt/README.md @@ -0,0 +1,265 @@ +# EMQ Bridge MQTT + +The concept of **Bridge** means that EMQ X supports forwarding messages +of one of its own topics to another MQTT Broker in some way. + +**Bridge** differs from **Cluster** in that the bridge does not +replicate the topic trie and routing tables and only forwards MQTT +messages based on bridging rules. + +At present, the bridging methods supported by EMQ X are as follows: + +- RPC bridge: RPC Bridge only supports message forwarding and does not + support subscribing to the topic of remote nodes to synchronize + data; +- MQTT Bridge: MQTT Bridge supports both forwarding and data + synchronization through subscription topic. + +These concepts are shown below: + +![bridge](docs/images/bridge.png) + +In addition, the EMQ X message broker supports multi-node bridge mode interconnection + +``` + --------- --------- --------- +Publisher --> | Node1 | --Bridge Forward--> | Node2 | --Bridge Forward--> | Node3 | --> Subscriber + --------- --------- --------- +``` + +In EMQ X, bridge is configured by modifying `etc/emqx.conf`. EMQ X distinguishes between different bridges based on different names. E.g + +``` +## Bridge address: node name for local bridge, host:port for remote. +bridge.mqtt.aws.address = 127.0.0.1:1883 +``` + +This configuration declares a bridge named `aws` and specifies that it is bridged to the MQTT broker of 127.0.0.1:1883 by MQTT mode. + +In case of creating multiple bridges, it is convenient to replicate all configuration items of the first bridge, and modify the bridge name and other configuration items if necessary (such as bridge.$name.address, where $name refers to the name of bridge) + +The next two sections describe how to create a bridge in RPC and MQTT mode respectively and create a forwarding rule that forwards the messages from sensors. Assuming that two EMQ X nodes are running on two hosts: + + +| Name | Node | MQTT Port | +|------|-------------------|-----------| +| emqx1| emqx1@192.168.1.1.| 1883 | +| emqx2| emqx2@192.168.1.2 | 1883 | + + +## EMQ X RPC Bridge Configuration + +The following is the basic configuration of RPC bridging. A simplest RPC bridging only requires the following three items + +``` +## Bridge Address: Use node name (nodename@host) for rpc bridging, and host:port for mqtt connection +bridge.mqtt.emqx2.address = emqx2@192.168.1.2 + +## Forwarding topics of the message +bridge.mqtt.emqx2.forwards = sensor1/#,sensor2/# + +## bridged mountpoint +bridge.mqtt.emqx2.mountpoint = bridge/emqx2/${node}/ +``` + +If the messages received by the local node emqx1 matches the topic `sersor1/#` or `sensor2/#`, these messages will be forwarded to the `sensor1/#` or `sensor2/#` topic of the remote node emqx2. + +`forwards` is used to specify topics. Messages of the in `forwards` specified topics on local node are forwarded to the remote node. + +`mountpoint` is used to add a topic prefix when forwarding a message. To use `mountpoint`, the `forwards` directive must be set. In the above example, a message with the topic `sensor1/hello` received by the local node will be forwarded to the remote node with the topic `bridge/emqx2/emqx1@192.168.1.1/sensor1/hello`. + +Limitations of RPC bridging: + +1. The RPC bridge of emqx can only forward local messages to the remote node, and cannot synchronize the messages of the remote node to the local node; + +2. RPC bridge can only bridge two EMQ X broker together and cannot bridge EMQ X broker to other MQTT brokers. + +## EMQ X MQTT Bridge Configuration + +EMQ X 3.0 officially introduced MQTT bridge, so that EMQ X can bridge any MQTT broker. Because of the characteristics of the MQTT protocol, EMQ X can subscribe to the remote mqtt broker's topic through MQTT bridge, and then synchronize the remote MQTT broker's message to the local. + +EMQ X MQTT bridging principle: Create an MQTT client on the EMQ X broker, and connect this MQTT client to the remote MQTT broker. Therefore, in the MQTT bridge configuration, following fields may be set for the EMQ X to connect to the remote broker as an mqtt client + +``` +## Bridge Address: Use node name for rpc bridging, use host:port for mqtt connection +bridge.mqtt.emqx2.address = 192.168.1.2:1883 + +## Bridged Protocol Version +## Enumeration value: mqttv3 | mqttv4 | mqttv5 +bridge.mqtt.emqx2.proto_ver = mqttv4 + +## mqtt client's clientid +bridge.mqtt.emqx2.clientid = bridge_emq + +## mqtt client's clean_start field +## Note: Some MQTT Brokers need to set the clean_start value as `true` +bridge.mqtt.emqx2.clean_start = true + +## mqtt client's username field +bridge.mqtt.emqx2.username = user + +## mqtt client's password field +bridge.mqtt.emqx2.password = passwd + +## Whether the mqtt client uses ssl to connect to a remote serve or not +bridge.mqtt.emqx2.ssl = off + +## CA Certificate of Client SSL Connection (PEM format) +bridge.mqtt.emqx2.cacertfile = etc/certs/cacert.pem + +## SSL certificate of Client SSL connection +bridge.mqtt.emqx2.certfile = etc/certs/client-cert.pem + +## Key file of Client SSL connection +bridge.mqtt.emqx2.keyfile = etc/certs/client-key.pem + +## SSL encryption +bridge.mqtt.emqx2.ciphers = ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384 + +## TTLS PSK password +## Note 'listener.ssl.external.ciphers' and 'listener.ssl.external.psk_ciphers' cannot be configured at the same time +## +## See 'https://tools.ietf.org/html/rfc4279#section-2'. +## bridge.mqtt.emqx2.psk_ciphers = PSK-AES128-CBC-SHA,PSK-AES256-CBC-SHA,PSK-3DES-EDE-CBC-SHA,PSK-RC4-SHA + +## Client's heartbeat interval +bridge.mqtt.emqx2.keepalive = 60s + +## Supported TLS version +bridge.mqtt.emqx2.tls_versions = tlsv1.2,tlsv1.1,tlsv1 + +## Forwarding topics of the message +bridge.mqtt.emqx2.forwards = sensor1/#,sensor2/# + +## Bridged mountpoint +bridge.mqtt.emqx2.mountpoint = bridge/emqx2/${node}/ + +## Subscription topic for bridging +bridge.mqtt.emqx2.subscription.1.topic = cmd/topic1 + +## Subscription qos for bridging +bridge.mqtt.emqx2.subscription.1.qos = 1 + +## Subscription topic for bridging +bridge.mqtt.emqx2.subscription.2.topic = cmd/topic2 + +## Subscription qos for bridging +bridge.mqtt.emqx2.subscription.2.qos = 1 + +## Bridging reconnection interval +## Default: 30s +bridge.mqtt.emqx2.reconnect_interval = 30s + +## QoS1 message retransmission interval +bridge.mqtt.emqx2.retry_interval = 20s + +## Inflight Size. +bridge.mqtt.emqx2.max_inflight_batches = 32 +``` + +## Bridge Cache Configuration + +The bridge of EMQ X has a message caching mechanism. The caching mechanism is applicable to both RPC bridging and MQTT bridging. When the bridge is disconnected (such as when the network connection is unstable), the messages with a topic specified in `forwards` can be cached to the local message queue. Until the bridge is restored, these messages are re-forwarded to the remote node. The configuration of the cache queue is as follows + +``` +## emqx_bridge internal number of messages used for batch +bridge.mqtt.emqx2.queue.batch_count_limit = 32 + +## emqx_bridge internal number of message bytes used for batch +bridge.mqtt.emqx2.queue.batch_bytes_limit = 1000MB + +## The path for placing replayq queue. If it is not specified, then replayq will run in `mem-only` mode and messages will not be cached on disk. +bridge.mqtt.emqx2.queue.replayq_dir = data/emqx_emqx2_bridge/ + +## Replayq data segment size +bridge.mqtt.emqx2.queue.replayq_seg_bytes = 10MB +``` + +`bridge.mqtt.emqx2.queue.replayq_dir` is a configuration parameter for specifying the path of the bridge storage queue. + +`bridge.mqtt.emqx2.queue.replayq_seg_bytes` is used to specify the size of the largest single file of the message queue that is cached on disk. If the message queue size exceeds the specified value, a new file is created to store the message queue. + +## CLI for EMQ X Bridge MQTT + +CLI for EMQ X Bridge MQTT: + +``` bash +$ cd emqx1/ && ./bin/emqx_ctl bridges +bridges list # List bridges +bridges start # Start a bridge +bridges stop # Stop a bridge +bridges forwards # Show a bridge forward topic +bridges add-forward # Add bridge forward topic +bridges del-forward # Delete bridge forward topic +bridges subscriptions # Show a bridge subscriptions topic +bridges add-subscription # Add bridge subscriptions topic +``` + +List all bridge states + +``` bash +$ ./bin/emqx_ctl bridges list +name: emqx status: Stopped $ ./bin/emqx_ctl bridges list +name: emqx status: Stopped +``` + +Start the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges start emqx +Start bridge successfully. +``` + +Stop the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges stop emqx +Stop bridge successfully. +``` +List the forwarding topics for the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges forwards emqx +topic: topic1/# +topic: topic2/# +``` + +Add a forwarding topic for the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges add-forwards emqx topic3/# +Add-forward topic successfully. +``` + +Delete the forwarding topic for the specified bridge + + +``` bash +$ ./bin/emqx_ctl bridges del-forwards emqx topic3/# +Del-forward topic successfully. +``` + +List subscriptions for the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges subscriptions emqx +topic: cmd/topic1, qos: 1 +topic: cmd/topic2, qos: 1 +``` + +Add a subscription topic for the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges add-subscription emqx cmd/topic3 1 +Add-subscription topic successfully. +``` + +Delete the subscription topic for the specified bridge + +``` bash +$ ./bin/emqx_ctl bridges del-subscription emqx cmd/topic3 +Del-subscription topic successfully. +``` + +Note: In case of creating multiple bridges, it is convenient to replicate all configuration items of the first bridge, and modify the bridge name and other configuration items if necessary. + diff --git a/apps/emqx_bridge_mqtt/docs/guide.rst b/apps/emqx_bridge_mqtt/docs/guide.rst new file mode 100644 index 000000000..73350ca1f --- /dev/null +++ b/apps/emqx_bridge_mqtt/docs/guide.rst @@ -0,0 +1,286 @@ + +EMQ Bridge MQTT +=============== + +The concept of **Bridge** means that EMQ X supports forwarding messages +of one of its own topics to another MQTT Broker in some way. + +**Bridge** differs from **Cluster** in that the bridge does not +replicate the topic trie and routing tables and only forwards MQTT +messages based on bridging rules. + +At present, the bridging methods supported by EMQ X are as follows: + + +* RPC bridge: RPC Bridge only supports message forwarding and does not + support subscribing to the topic of remote nodes to synchronize + data; +* MQTT Bridge: MQTT Bridge supports both forwarding and data + synchronization through subscription topic. + +These concepts are shown below: + + +.. image:: images/bridge.png + :target: images/bridge.png + :alt: bridge + + +In addition, the EMQ X message broker supports multi-node bridge mode interconnection + +.. code-block:: + + --------- --------- --------- + Publisher --> | Node1 | --Bridge Forward--> | Node2 | --Bridge Forward--> | Node3 | --> Subscriber + --------- --------- --------- + +In EMQ X, bridge is configured by modifying ``etc/emqx.conf``. EMQ X distinguishes between different bridges based on different names. E.g + +.. code-block:: + + ## Bridge address: node name for local bridge, host:port for remote. + bridge.mqtt.aws.address = 127.0.0.1:1883 + +This configuration declares a bridge named ``aws`` and specifies that it is bridged to the MQTT broker of 127.0.0.1:1883 by MQTT mode. + +In case of creating multiple bridges, it is convenient to replicate all configuration items of the first bridge, and modify the bridge name and other configuration items if necessary (such as bridge.$name.address, where $name refers to the name of bridge) + +The next two sections describe how to create a bridge in RPC and MQTT mode respectively and create a forwarding rule that forwards the messages from sensors. Assuming that two EMQ X nodes are running on two hosts: + +.. list-table:: + :header-rows: 1 + + * - Name + - Node + - MQTT Port + * - emqx1 + - emqx1@192.168.1.1. + - 1883 + * - emqx2 + - emqx2@192.168.1.2 + - 1883 + + +EMQ X RPC Bridge Configuration +------------------------------ + +The following is the basic configuration of RPC bridging. A simplest RPC bridging only requires the following three items + +.. code-block:: + + ## Bridge Address: Use node name (nodename@host) for rpc bridging, and host:port for mqtt connection + bridge.mqtt.emqx2.address = emqx2@192.168.1.2 + + ## Forwarding topics of the message + bridge.mqtt.emqx2.forwards = sensor1/#,sensor2/# + + ## bridged mountpoint + bridge.mqtt.emqx2.mountpoint = bridge/emqx2/${node}/ + +If the messages received by the local node emqx1 matches the topic ``sersor1/#`` or ``sensor2/#``\ , these messages will be forwarded to the ``sensor1/#`` or ``sensor2/#`` topic of the remote node emqx2. + +``forwards`` is used to specify topics. Messages of the in ``forwards`` specified topics on local node are forwarded to the remote node. + +``mountpoint`` is used to add a topic prefix when forwarding a message. To use ``mountpoint``\ , the ``forwards`` directive must be set. In the above example, a message with the topic ``sensor1/hello`` received by the local node will be forwarded to the remote node with the topic ``bridge/emqx2/emqx1@192.168.1.1/sensor1/hello``. + +Limitations of RPC bridging: + + +#. + The RPC bridge of emqx can only forward local messages to the remote node, and cannot synchronize the messages of the remote node to the local node; + +#. + RPC bridge can only bridge two EMQ X broker together and cannot bridge EMQ X broker to other MQTT brokers. + +EMQ X MQTT Bridge Configuration +------------------------------- + +EMQ X 3.0 officially introduced MQTT bridge, so that EMQ X can bridge any MQTT broker. Because of the characteristics of the MQTT protocol, EMQ X can subscribe to the remote mqtt broker's topic through MQTT bridge, and then synchronize the remote MQTT broker's message to the local. + +EMQ X MQTT bridging principle: Create an MQTT client on the EMQ X broker, and connect this MQTT client to the remote MQTT broker. Therefore, in the MQTT bridge configuration, following fields may be set for the EMQ X to connect to the remote broker as an mqtt client + +.. code-block:: + + ## Bridge Address: Use node name for rpc bridging, use host:port for mqtt connection + bridge.mqtt.emqx2.address = 192.168.1.2:1883 + + ## Bridged Protocol Version + ## Enumeration value: mqttv3 | mqttv4 | mqttv5 + bridge.mqtt.emqx2.proto_ver = mqttv4 + + ## mqtt client's clientid + bridge.mqtt.emqx2.clientid = bridge_emq + + ## mqtt client's clean_start field + ## Note: Some MQTT Brokers need to set the clean_start value as `true` + bridge.mqtt.emqx2.clean_start = true + + ## mqtt client's username field + bridge.mqtt.emqx2.username = user + + ## mqtt client's password field + bridge.mqtt.emqx2.password = passwd + + ## Whether the mqtt client uses ssl to connect to a remote serve or not + bridge.mqtt.emqx2.ssl = off + + ## CA Certificate of Client SSL Connection (PEM format) + bridge.mqtt.emqx2.cacertfile = etc/certs/cacert.pem + + ## SSL certificate of Client SSL connection + bridge.mqtt.emqx2.certfile = etc/certs/client-cert.pem + + ## Key file of Client SSL connection + bridge.mqtt.emqx2.keyfile = etc/certs/client-key.pem + + ## SSL encryption + bridge.mqtt.emqx2.ciphers = ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384 + + ## TTLS PSK password + ## Note 'listener.ssl.external.ciphers' and 'listener.ssl.external.psk_ciphers' cannot be configured at the same time + ## + ## See 'https://tools.ietf.org/html/rfc4279#section-2'. + ## bridge.mqtt.emqx2.psk_ciphers = PSK-AES128-CBC-SHA,PSK-AES256-CBC-SHA,PSK-3DES-EDE-CBC-SHA,PSK-RC4-SHA + + ## Client's heartbeat interval + bridge.mqtt.emqx2.keepalive = 60s + + ## Supported TLS version + bridge.mqtt.emqx2.tls_versions = tlsv1.2,tlsv1.1,tlsv1 + + ## Forwarding topics of the message + bridge.mqtt.emqx2.forwards = sensor1/#,sensor2/# + + ## Bridged mountpoint + bridge.mqtt.emqx2.mountpoint = bridge/emqx2/${node}/ + + ## Subscription topic for bridging + bridge.mqtt.emqx2.subscription.1.topic = cmd/topic1 + + ## Subscription qos for bridging + bridge.mqtt.emqx2.subscription.1.qos = 1 + + ## Subscription topic for bridging + bridge.mqtt.emqx2.subscription.2.topic = cmd/topic2 + + ## Subscription qos for bridging + bridge.mqtt.emqx2.subscription.2.qos = 1 + + ## Bridging reconnection interval + ## Default: 30s + bridge.mqtt.emqx2.reconnect_interval = 30s + + ## QoS1 message retransmission interval + bridge.mqtt.emqx2.retry_interval = 20s + + ## Inflight Size. + bridge.mqtt.emqx2.max_inflight_batches = 32 + +Bridge Cache Configuration +-------------------------- + +The bridge of EMQ X has a message caching mechanism. The caching mechanism is applicable to both RPC bridging and MQTT bridging. When the bridge is disconnected (such as when the network connection is unstable), the messages with a topic specified in ``forwards`` can be cached to the local message queue. Until the bridge is restored, these messages are re-forwarded to the remote node. The configuration of the cache queue is as follows + +.. code-block:: + + ## emqx_bridge internal number of messages used for batch + bridge.mqtt.emqx2.queue.batch_count_limit = 32 + + ## emqx_bridge internal number of message bytes used for batch + bridge.mqtt.emqx2.queue.batch_bytes_limit = 1000MB + + ## The path for placing replayq queue. If it is not specified, then replayq will run in `mem-only` mode and messages will not be cached on disk. + bridge.mqtt.emqx2.queue.replayq_dir = data/emqx_emqx2_bridge/ + + ## Replayq data segment size + bridge.mqtt.emqx2.queue.replayq_seg_bytes = 10MB + +``bridge.mqtt.emqx2.queue.replayq_dir`` is a configuration parameter for specifying the path of the bridge storage queue. + +``bridge.mqtt.emqx2.queue.replayq_seg_bytes`` is used to specify the size of the largest single file of the message queue that is cached on disk. If the message queue size exceeds the specified value, a new file is created to store the message queue. + +CLI for EMQ X Bridge MQTT +------------------------- + +CLI for EMQ X Bridge MQTT: + +.. code-block:: bash + + $ cd emqx1/ && ./bin/emqx_ctl bridges + bridges list # List bridges + bridges start # Start a bridge + bridges stop # Stop a bridge + bridges forwards # Show a bridge forward topic + bridges add-forward # Add bridge forward topic + bridges del-forward # Delete bridge forward topic + bridges subscriptions # Show a bridge subscriptions topic + bridges add-subscription # Add bridge subscriptions topic + +List all bridge states + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges list + name: emqx status: Stopped $ ./bin/emqx_ctl bridges list + name: emqx status: Stopped + +Start the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges start emqx + Start bridge successfully. + +Stop the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges stop emqx + Stop bridge successfully. + +List the forwarding topics for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges forwards emqx + topic: topic1/# + topic: topic2/# + +Add a forwarding topic for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges add-forwards emqx topic3/# + Add-forward topic successfully. + +Delete the forwarding topic for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges del-forwards emqx topic3/# + Del-forward topic successfully. + +List subscriptions for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges subscriptions emqx + topic: cmd/topic1, qos: 1 + topic: cmd/topic2, qos: 1 + +Add a subscription topic for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges add-subscription emqx cmd/topic3 1 + Add-subscription topic successfully. + +Delete the subscription topic for the specified bridge + +.. code-block:: bash + + $ ./bin/emqx_ctl bridges del-subscription emqx cmd/topic3 + Del-subscription topic successfully. + +Note: In case of creating multiple bridges, it is convenient to replicate all configuration items of the first bridge, and modify the bridge name and other configuration items if necessary. + diff --git a/apps/emqx_bridge_mqtt/docs/images/bridge.png b/apps/emqx_bridge_mqtt/docs/images/bridge.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb9c024c9b30600d194d30f0b763b90fcb04ec9 GIT binary patch literal 147486 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

    ()tPcaXYm%S-P)Pz0toF&0B;|4K0pXVlYp{fsTT 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 `~M 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 + + MapPSKCiphers = fun(PSKCiphers) -> + lists:map( + fun("PSK-AES128-CBC-SHA") -> {psk, aes_128_cbc, sha}; + ("PSK-AES256-CBC-SHA") -> {psk, aes_256_cbc, sha}; + ("PSK-3DES-EDE-CBC-SHA") -> {psk, '3des_ede_cbc', sha}; + ("PSK-RC4-SHA") -> {psk, rc4_128, sha} + end, PSKCiphers) + end, + + Split = fun(undefined) -> undefined; (S) -> string:tokens(S, ",") end, + + IsSsl = fun(cacertfile) -> true; + (certfile) -> true; + (keyfile) -> true; + (ciphers) -> true; + (psk_ciphers) -> true; + (tls_versions) -> true; + (_Opt) -> false + end, + + Parse = fun(tls_versions, Vers) -> + [{versions, [list_to_atom(S) || S <- Split(Vers)]}]; + (ciphers, Ciphers) -> + [{ciphers, Split(Ciphers)}]; + (psk_ciphers, Ciphers) -> + [{ciphers, MapPSKCiphers(Split(Ciphers))}, {user_lookup_fun, {fun emqx_psk:lookup/3, <<>>}}]; + (Opt, Val) -> + [{Opt, Val}] + end, + + Merge = fun(forwards, Val, Opts) -> + [{forwards, string:tokens(Val, ",")}|Opts]; + (Opt, Val, Opts) -> + case IsSsl(Opt) of + true -> + SslOpts = Parse(Opt, Val) ++ proplists:get_value(ssl_opts, Opts, []), + lists:ukeymerge(1, [{ssl_opts, SslOpts}], lists:usort(Opts)); + false -> + [{Opt, Val}|Opts] + end + end, + Queue = fun(Name) -> + Configs = cuttlefish_variable:filter_by_prefix("bridge.mqtt." ++ Name ++ ".queue", Conf), + + QOpts = [{list_to_atom(QOpt), QValue}|| {[_, _, _, "queue", QOpt], QValue} <- Configs], + maps:from_list(QOpts) + end, + Subscriptions = fun(Name) -> + Configs = cuttlefish_variable:filter_by_prefix("bridge.mqtt." ++ Name ++ ".subscription", Conf), + lists:zip([Topic || {_, Topic} <- lists:sort([{I, Topic} || {[_, _, _, "subscription", I, "topic"], Topic} <- Configs])], + [QoS || {_, QoS} <- lists:sort([{I, QoS} || {[_, _, _, "subscription", I, "qos"], QoS} <- Configs])]) + end, + IsNodeAddr = fun(Addr) -> + case string:tokens(Addr, "@") of + [_NodeName, _Hostname] -> true; + _ -> false + end + end, + ConnMod = fun(Name) -> + + [AddrConfig] = cuttlefish_variable:filter_by_prefix("bridge.mqtt." ++ Name ++ ".address", Conf), + {_, Addr} = AddrConfig, + + Subs = Subscriptions(Name), + case IsNodeAddr(Addr) of + true when Subs =/= [] -> + error({"subscriptions are not supported when bridging between emqx nodes", Name, Subs}); + true -> + emqx_bridge_rpc; + false -> + emqx_bridge_mqtt + end + end, + + %% to be backward compatible + Translate = + fun Tr(queue, Q, Cfg) -> + NewQ = maps:fold(Tr, #{}, Q), + Cfg#{queue => NewQ}; + Tr(address, Addr0, Cfg) -> + Addr = case IsNodeAddr(Addr0) of + true -> list_to_atom(Addr0); + false -> Addr0 + end, + Cfg#{address => Addr}; + Tr(reconnect_interval, Ms, Cfg) -> + Cfg#{reconnect_delay_ms => Ms}; + Tr(proto_ver, Ver, Cfg) -> + Cfg#{proto_ver => + case Ver of + mqttv3 -> v3; + mqttv4 -> v4; + mqttv5 -> v5; + _ -> v4 + end}; + Tr(max_inflight_size, Size, Cfg) -> + Cfg#{max_inflight => Size}; + Tr(Key, Value, Cfg) -> + Cfg#{Key => Value} + end, + C = lists:foldl( + fun({["bridge", "mqtt", Name, Opt], Val}, Acc) -> + %% e.g #{aws => [{OptKey, OptVal}]} + Init = [{list_to_atom(Opt), Val}, + {connect_module, ConnMod(Name)}, + {subscriptions, Subscriptions(Name)}, + {queue, Queue(Name)}], + maps:update_with(list_to_atom(Name), fun(Opts) -> Merge(list_to_atom(Opt), Val, Opts) end, Init, Acc); + (_, Acc) -> Acc + end, #{}, lists:usort(cuttlefish_variable:filter_by_prefix("bridge.mqtt", Conf))), + C1 = maps:map(fun(Bn, Bc) -> + maps:to_list(maps:fold(Translate, #{}, maps:from_list(Bc))) + end, C), + maps:to_list(C1) +end}. diff --git a/apps/emqx_bridge_mqtt/rebar.config b/apps/emqx_bridge_mqtt/rebar.config new file mode 100644 index 000000000..8440b2e33 --- /dev/null +++ b/apps/emqx_bridge_mqtt/rebar.config @@ -0,0 +1,32 @@ +{deps, + [{replayq, {git, "https://github.com/emqx/replayq", {tag, "v0.2.0"}}}, + {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.0"}}}, + {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.2.3"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{shell, [ + % {config, "config/sys.config"}, + {apps, [emqx, emqx_bridge_mqtt]} +]}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}}]} + ]} +]}. diff --git a/apps/emqx_bridge_mqtt/rebar.config.script b/apps/emqx_bridge_mqtt/rebar.config.script new file mode 100644 index 000000000..13e3db39c --- /dev/null +++ b/apps/emqx_bridge_mqtt/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +NewDeps = [{emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, + {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + {emqx_rule_engine, {git, UrlPrefix ++ "emqx-rule-engine", GitDescribe}} + | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_connect.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_connect.erl new file mode 100644 index 000000000..5086ca574 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_connect.erl @@ -0,0 +1,74 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_connect). + +-export([start/2]). + +-export_type([config/0, connection/0]). + +-optional_callbacks([ensure_subscribed/3, ensure_unsubscribed/2]). + +%% map fields depend on implementation +-type(config() :: map()). +-type(connection() :: term()). +-type(batch() :: emqx_protal:batch()). +-type(ack_ref() :: emqx_bridge_worker:ack_ref()). +-type(topic() :: emqx_topic:topic()). +-type(qos() :: emqx_mqtt_types:qos()). + +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[Bridge Connect]"). + +%% establish the connection to remote node/cluster +%% protal worker (the caller process) should be expecting +%% a message {disconnected, conn_ref()} when disconnected. +-callback start(config()) -> {ok, connection()} | {error, any()}. + +%% send to remote node/cluster +%% bridge worker (the caller process) should be expecting +%% a message {batch_ack, reference()} when batch is acknowledged by remote node/cluster +-callback send(connection(), batch()) -> {ok, ack_ref()} | {ok, integer()} | {error, any()}. + +%% called when owner is shutting down. +-callback stop(connection()) -> ok. + +-callback ensure_subscribed(connection(), topic(), qos()) -> ok. + +-callback ensure_unsubscribed(connection(), topic()) -> ok. + +start(Module, Config) -> + case Module:start(Config) of + {ok, Conn} -> + {ok, Conn}; + {error, Reason} -> + Config1 = obfuscate(Config), + ?LOG(error, "Failed to connect with module=~p\n" + "config=~p\nreason:~p", [Module, Config1, Reason]), + {error, Reason} + end. + +obfuscate(Map) -> + maps:fold(fun(K, V, Acc) -> + case is_sensitive(K) of + true -> [{K, '***'} | Acc]; + false -> [{K, V} | Acc] + end + end, [], Map). + +is_sensitive(password) -> true; +is_sensitive(_) -> false. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src new file mode 100644 index 000000000..24ac4eebd --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src @@ -0,0 +1,14 @@ +{application, emqx_bridge_mqtt, + [{description, "EMQ X Bridge to MQTT Broker"}, + {vsn, "git"}, + {modules, []}, + {registered, []}, + {applications, [kernel,stdlib,replayq,emqtt]}, + {mod, {emqx_bridge_mqtt_app, []}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-bridge-mqtt"} + ]} + ]}. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src.script b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src new file mode 100644 index 000000000..2e790bbc2 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.appup.src @@ -0,0 +1,26 @@ +%% -*-: erlang -*- + +{VSN, + [ + {<<"4.2.[23]">>, [ + {load_module, emqx_bridge_mqtt, brutal_purge, soft_purge, []}, + {load_module, emqx_bridge_mqtt_actions, brutal_purge, soft_purge, []}, + {load_module, emqx_bridge_worker, brutal_purge, soft_purge, []} + ]}, + {<<"4.2.[01]">>, [ + {restart_application, emqx_bridge_mqtt} + ]}, + {<<".*">>, []} + ], + [ + {<<"4.2.[23]">>, [ + {load_module, emqx_bridge_mqtt, brutal_purge, soft_purge, []}, + {load_module, emqx_bridge_mqtt_actions, brutal_purge, soft_purge, []}, + {load_module, emqx_bridge_worker, brutal_purge, soft_purge, []} + ]}, + {<<"4.2.[01]">>, [ + {restart_application, emqx_bridge_mqtt} + ]}, + {<<".*">>, []} + ] +}. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl new file mode 100644 index 000000000..d600ff551 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl @@ -0,0 +1,196 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% @doc This module implements EMQX Bridge transport layer on top of MQTT protocol + +-module(emqx_bridge_mqtt). + +-behaviour(emqx_bridge_connect). + +%% behaviour callbacks +-export([ start/1 + , send/2 + , stop/1 + ]). + +%% optional behaviour callbacks +-export([ ensure_subscribed/3 + , ensure_unsubscribed/2 + ]). + +%% callbacks for emqtt +-export([ handle_puback/2 + , handle_publish/2 + , handle_disconnected/2 + ]). + +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). + +-define(ACK_REF(ClientPid, PktId), {ClientPid, PktId}). + +%% Messages towards ack collector process +-define(REF_IDS(Ref, Ids), {Ref, Ids}). + +%%-------------------------------------------------------------------- +%% emqx_bridge_connect callbacks +%%-------------------------------------------------------------------- + +start(Config = #{address := Address}) -> + Parent = self(), + Mountpoint = maps:get(receive_mountpoint, Config, undefined), + Handlers = make_hdlr(Parent, Mountpoint), + {Host, Port} = case string:tokens(Address, ":") of + [H] -> {H, 1883}; + [H, P] -> {H, list_to_integer(P)} + end, + ClientConfig = Config#{msg_handler => Handlers, + host => Host, + port => Port, + force_ping => true + }, + case emqtt:start_link(replvar(ClientConfig)) of + {ok, Pid} -> + case emqtt:connect(Pid) of + {ok, _} -> + try + subscribe_remote_topics(Pid, maps:get(subscriptions, Config, [])), + {ok, #{client_pid => Pid}} + catch + throw : Reason -> + ok = stop(#{client_pid => Pid}), + {error, Reason} + end; + {error, Reason} -> + ok = stop(#{client_pid => Pid}), + {error, Reason} + end; + {error, Reason} -> + {error, Reason} + end. + +stop(#{client_pid := Pid}) -> + safe_stop(Pid, fun() -> emqtt:stop(Pid) end, 1000), + ok. + +ensure_subscribed(#{client_pid := Pid}, Topic, QoS) when is_pid(Pid) -> + case emqtt:subscribe(Pid, Topic, QoS) of + {ok, _, _} -> ok; + Error -> Error + end; +ensure_subscribed(_Conn, _Topic, _QoS) -> + %% return ok for now, next re-connect should should call start with new topic added to config + ok. + +ensure_unsubscribed(#{client_pid := Pid}, Topic) when is_pid(Pid) -> + case emqtt:unsubscribe(Pid, Topic) of + {ok, _, _} -> ok; + Error -> Error + end; +ensure_unsubscribed(_, _) -> + %% return ok for now, next re-connect should should call start with this topic deleted from config + ok. + +safe_stop(Pid, StopF, Timeout) -> + MRef = monitor(process, Pid), + unlink(Pid), + try + StopF() + catch + _ : _ -> + ok + end, + receive + {'DOWN', MRef, _, _, _} -> + ok + after + Timeout -> + exit(Pid, kill) + end. + +send(Conn, Msgs) -> + send(Conn, Msgs, undefined). +send(_Conn, [], PktId) -> + {ok, PktId}; +send(#{client_pid := ClientPid} = Conn, [Msg | Rest], _PktId) -> + case emqtt:publish(ClientPid, Msg) of + ok -> + Ref = make_ref(), + self() ! {batch_ack, Ref}, + send(Conn, Rest, Ref); + {ok, PktId} -> + send(Conn, Rest, PktId); + {error, Reason} -> + %% NOTE: There is no partial sucess of a batch and recover from the middle + %% only to retry all messages in one batch + {error, Reason} + end. + + +handle_puback(#{packet_id := PktId, reason_code := RC}, Parent) + when RC =:= ?RC_SUCCESS; + RC =:= ?RC_NO_MATCHING_SUBSCRIBERS -> + Parent ! {batch_ack, PktId}, ok; +handle_puback(#{packet_id := PktId, reason_code := RC}, _Parent) -> + ?LOG(warning, "Publish ~p to remote node falied, reason_code: ~p", [PktId, RC]). + +handle_publish(Msg, Mountpoint) -> + emqx_broker:publish(emqx_bridge_msg:to_broker_msg(Msg, Mountpoint)). + +handle_disconnected(Reason, Parent) -> + Parent ! {disconnected, self(), Reason}. + +make_hdlr(Parent, Mountpoint) -> + #{puback => {fun ?MODULE:handle_puback/2, [Parent]}, + publish => {fun ?MODULE:handle_publish/2, [Mountpoint]}, + disconnected => {fun ?MODULE:handle_disconnected/2, [Parent]} + }. + +subscribe_remote_topics(ClientPid, Subscriptions) -> + lists:foreach(fun({Topic, Qos}) -> + case emqtt:subscribe(ClientPid, Topic, Qos) of + {ok, _, _} -> ok; + Error -> throw(Error) + end + end, Subscriptions). + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +replvar(Options) -> + replvar([clientid, max_inflight], Options). + + +replvar([], Options) -> + Options; +replvar([Key|More], Options) -> + case maps:get(Key, Options, undefined) of + undefined -> + replvar(More, Options); + Val -> + replvar(More, maps:put(Key, feedvar(Key, Val, Options), Options)) + end. + +%% ${node} => node() +feedvar(clientid, ClientId, _) -> + iolist_to_binary(re:replace(ClientId, "\\${node}", atom_to_list(node()))); + +feedvar(max_inflight, 0, _) -> + infinity; + +feedvar(max_inflight, Size, _) -> + Size. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl new file mode 100644 index 000000000..e522f83a2 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_actions.erl @@ -0,0 +1,594 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% @doc This module implements EMQX Bridge transport layer on top of MQTT protocol + +-module(emqx_bridge_mqtt_actions). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx_rule_engine/include/rule_actions.hrl"). + +-import(emqx_rule_utils, [str/1]). + +-export([ on_resource_create/2 + , on_get_resource_status/2 + , on_resource_destroy/2 + ]). + +%% Callbacks of ecpool Worker +-export([connect/1]). + +-export([subscriptions/1]). + +-export([ on_action_create_data_to_mqtt_broker/2 + , on_action_data_to_mqtt_broker/2 + ]). + +-define(RESOURCE_TYPE_MQTT, 'bridge_mqtt'). +-define(RESOURCE_TYPE_RPC, 'bridge_rpc'). + +-define(RESOURCE_CONFIG_SPEC_MQTT, #{ + address => #{ + order => 1, + type => string, + required => true, + default => <<"127.0.0.1:1883">>, + title => #{en => <<" Broker Address">>, + zh => <<"远程 broker 地址"/utf8>>}, + description => #{en => <<"The MQTT Remote Address">>, + zh => <<"远程 MQTT Broker 的地址"/utf8>>} + }, + pool_size => #{ + order => 2, + type => number, + required => true, + default => 8, + title => #{en => <<"Pool Size">>, + zh => <<"连接池大小"/utf8>>}, + description => #{en => <<"MQTT Connection Pool Size">>, + zh => <<"连接池大小"/utf8>>} + }, + clientid => #{ + order => 3, + type => string, + required => true, + default => <<"client">>, + title => #{en => <<"ClientId">>, + zh => <<"客户端 Id"/utf8>>}, + description => #{en => <<"ClientId for connecting to remote MQTT broker">>, + zh => <<"连接远程 Broker 的 ClientId"/utf8>>} + }, + append => #{ + order => 4, + type => boolean, + required => false, + default => true, + title => #{en => <<"Append GUID">>, + zh => <<"附加 GUID"/utf8>>}, + description => #{en => <<"Append GUID to MQTT ClientId?">>, + zh => <<"是否将GUID附加到 MQTT ClientId 后"/utf8>>} + }, + username => #{ + order => 5, + type => string, + required => false, + default => <<"">>, + title => #{en => <<"Username">>, zh => <<"用户名"/utf8>>}, + description => #{en => <<"Username for connecting to remote MQTT Broker">>, + zh => <<"连接远程 Broker 的用户名"/utf8>>} + }, + password => #{ + order => 6, + type => string, + required => false, + default => <<"">>, + title => #{en => <<"Password">>, + zh => <<"密码"/utf8>>}, + description => #{en => <<"Password for connecting to remote MQTT Broker">>, + zh => <<"连接远程 Broker 的密码"/utf8>>} + }, + mountpoint => #{ + order => 7, + type => string, + required => false, + default => <<"bridge/aws/${node}/">>, + title => #{en => <<"Bridge MountPoint">>, + zh => <<"桥接挂载点"/utf8>>}, + description => #{ + en => <<"MountPoint for bridge topic:
    " + "Example: The topic of messages sent to `topic1` on local node" + "will be transformed to `bridge/aws/${node}/topic1`">>, + zh => <<"桥接主题的挂载点:
    " + "示例: 本地节点向 `topic1` 发消息,远程桥接节点的主题" + "会变换为 `bridge/aws/${node}/topic1`"/utf8>> + } + }, + disk_cache => #{ + order => 8, + type => string, + required => false, + default => <<"off">>, + enum => [<<"on">>, <<"off">>], + title => #{en => <<"Disk Cache">>, + zh => <<"磁盘缓存"/utf8>>}, + description => #{en => <<"The flag which determines whether messages" + "can be cached on local disk when bridge is" + "disconnected">>, + zh => <<"当桥接断开时用于控制是否将消息缓存到本地磁" + "盘队列上"/utf8>>} + }, + proto_ver => #{ + order => 9, + type => string, + required => false, + default => <<"mqttv4">>, + enum => [<<"mqttv3">>, <<"mqttv4">>, <<"mqttv5">>], + title => #{en => <<"Protocol Version">>, + zh => <<"协议版本"/utf8>>}, + description => #{en => <<"MQTTT Protocol version">>, + zh => <<"MQTT 协议版本"/utf8>>} + }, + keepalive => #{ + order => 10, + type => string, + required => false, + default => <<"60s">> , + title => #{en => <<"Keepalive">>, + zh => <<"心跳间隔"/utf8>>}, + description => #{en => <<"Keepalive">>, + zh => <<"心跳间隔"/utf8>>} + }, + reconnect_interval => #{ + order => 11, + type => string, + required => false, + default => <<"30s">>, + title => #{en => <<"Reconnect Interval">>, + zh => <<"重连间隔"/utf8>>}, + description => #{en => <<"Reconnect interval of bridge:
    ">>, + zh => <<"重连间隔"/utf8>>} + }, + retry_interval => #{ + order => 12, + type => string, + required => false, + default => <<"20s">>, + title => #{en => <<"Retry interval">>, + zh => <<"重传间隔"/utf8>>}, + description => #{en => <<"Retry interval for bridge QoS1 message delivering">>, + zh => <<"消息重传间隔"/utf8>>} + }, + bridge_mode => #{ + order => 13, + type => boolean, + required => false, + default => false, + title => #{en => <<"Bridge Mode">>, + zh => <<"桥接模式"/utf8>>}, + description => #{en => <<"Bridge mode for MQTT bridge connection">>, + zh => <<"MQTT 连接是否为桥接模式"/utf8>>} + }, + ssl => #{ + order => 14, + type => boolean, + default => false, + title => #{en => <<"Enable SSL">>, + zh => <<"开启SSL链接"/utf8>>}, + description => #{en => <<"If enable ssl">>, + zh => <<"是否开启 SSL"/utf8>>} + }, + cacertfile => #{ + order => 15, + type => file, + required => false, + default => <<"etc/certs/cacert.pem">>, + title => #{en => <<"CA certificates">>, + zh => <<"CA 证书"/utf8>>}, + description => #{en => <<"The file path of the CA certificates">>, + zh => <<"CA 证书路径"/utf8>>} + }, + certfile => #{ + order => 16, + type => file, + required => false, + default => <<"etc/certs/client-cert.pem">>, + title => #{en => <<"SSL Certfile">>, + zh => <<"SSL 客户端证书"/utf8>>}, + description => #{en => <<"The file path of the client certfile">>, + zh => <<"客户端证书路径"/utf8>>} + }, + keyfile => #{ + order => 17, + type => file, + required => false, + default => <<"etc/certs/client-key.pem">>, + title => #{en => <<"SSL Keyfile">>, + zh => <<"SSL 密钥文件"/utf8>>}, + description => #{en => <<"The file path of the client keyfile">>, + zh => <<"客户端密钥路径"/utf8>>} + }, + ciphers => #{ + order => 18, + type => string, + required => false, + default => <<"ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,", + "ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-DES-CBC3-SHA,", + "ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,", + "ECDH-RSA-AES256-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-DSS-AES256-SHA256,AES256-GCM-SHA384,", + "AES256-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,", + "ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-GCM-SHA256,", + "ECDH-RSA-AES128-GCM-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,", + "DHE-DSS-AES128-GCM-SHA256,DHE-DSS-AES128-SHA256,AES128-GCM-SHA256,AES128-SHA256,", + "ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,ECDH-ECDSA-AES256-SHA,", + "ECDH-RSA-AES256-SHA,AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,", + "DHE-DSS-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,AES128-SHA">>, + title => #{en => <<"SSL Ciphers">>, + zh => <<"SSL 加密算法"/utf8>>}, + description => #{en => <<"SSL Ciphers">>, + zh => <<"SSL 加密算法"/utf8>>} + } + }). + + + +-define(RESOURCE_CONFIG_SPEC_RPC, #{ + address => #{ + order => 1, + type => string, + required => true, + default => <<"emqx2@127.0.0.1">>, + title => #{en => <<"EMQ X Node Name">>, + zh => <<"EMQ X 节点名称"/utf8>>}, + description => #{en => <<"EMQ X Remote Node Name">>, + zh => <<"远程 EMQ X 节点名称 "/utf8>>} + }, + mountpoint => #{ + order => 2, + type => string, + required => false, + default => <<"bridge/emqx/${node}/">>, + title => #{en => <<"Bridge MountPoint">>, + zh => <<"桥接挂载点"/utf8>>}, + description => #{en => <<"MountPoint for bridge topic
    " + "Example: The topic of messages sent to `topic1` on local node" + "will be transformed to `bridge/aws/${node}/topic1`">>, + zh => <<"桥接主题的挂载点
    " + "示例: 本地节点向 `topic1` 发消息,远程桥接节点的主题" + "会变换为 `bridge/aws/${node}/topic1`"/utf8>>} + }, + pool_size => #{ + order => 3, + type => number, + required => true, + default => 8, + title => #{en => <<"Pool Size">>, + zh => <<"连接池大小"/utf8>>}, + description => #{en => <<"MQTT/RPC Connection Pool Size">>, + zh => <<"连接池大小"/utf8>>} + }, + reconnect_interval => #{ + order => 4, + type => string, + required => false, + default => <<"30s">>, + title => #{en => <<"Reconnect Interval">>, + zh => <<"重连间隔"/utf8>>}, + description => #{en => <<"Reconnect Interval of bridge">>, + zh => <<"重连间隔"/utf8>>} + }, + batch_size => #{ + order => 5, + type => number, + required => false, + default => 32, + title => #{en => <<"Batch Size">>, + zh => <<"批处理大小"/utf8>>}, + description => #{en => <<"Batch Size">>, + zh => <<"批处理大小"/utf8>>} + }, + disk_cache => #{ + order => 6, + type => string, + required => false, + default => <<"off">>, + enum => [<<"on">>, <<"off">>], + title => #{en => <<"Disk Cache">>, + zh => <<"磁盘缓存"/utf8>>}, + description => #{en => <<"The flag which determines whether messages" + "can be cached on local disk when bridge is" + "disconnected">>, + zh => <<"当桥接断开时用于控制是否将消息缓存到本地磁" + "盘队列上"/utf8>>} + } + }). + +-define(ACTION_PARAM_RESOURCE, #{ + type => string, + required => true, + title => #{en => <<"Resource ID">>, zh => <<"资源 ID"/utf8>>}, + description => #{en => <<"Bind a resource to this action">>, + zh => <<"给动作绑定一个资源"/utf8>>} + }). + +-resource_type(#{ + name => ?RESOURCE_TYPE_MQTT, + create => on_resource_create, + status => on_get_resource_status, + destroy => on_resource_destroy, + params => ?RESOURCE_CONFIG_SPEC_MQTT, + title => #{en => <<"MQTT Bridge">>, zh => <<"MQTT Bridge"/utf8>>}, + description => #{en => <<"MQTT Message Bridge">>, zh => <<"MQTT 消息桥接"/utf8>>} + }). + + +-resource_type(#{ + name => ?RESOURCE_TYPE_RPC, + create => on_resource_create, + status => on_get_resource_status, + destroy => on_resource_destroy, + params => ?RESOURCE_CONFIG_SPEC_RPC, + title => #{en => <<"EMQX Bridge">>, zh => <<"EMQX Bridge"/utf8>>}, + description => #{en => <<"EMQ X RPC Bridge">>, zh => <<"EMQ X RPC 消息桥接"/utf8>>} + }). + +-rule_action(#{ + name => data_to_mqtt_broker, + category => data_forward, + for => 'message.publish', + types => [?RESOURCE_TYPE_MQTT, ?RESOURCE_TYPE_RPC], + create => on_action_create_data_to_mqtt_broker, + params => #{'$resource' => ?ACTION_PARAM_RESOURCE, + forward_topic => #{ + order => 1, + type => string, + required => false, + default => <<"">>, + title => #{en => <<"Forward Topic">>, + zh => <<"转发消息主题"/utf8>>}, + description => #{en => <<"The topic used when forwarding the message. Defaults to the topic of the bridge message if not provided.">>, + zh => <<"转发消息时使用的主题。如果未提供,则默认为桥接消息的主题。"/utf8>>} + }, + payload_tmpl => #{ + order => 2, + type => string, + input => textarea, + required => false, + default => <<"">>, + title => #{en => <<"Payload Template">>, + zh => <<"消息内容模板"/utf8>>}, + description => #{en => <<"The payload template, variable interpolation is supported. If using empty template (default), then the payload will be all the available vars in JSON format">>, + zh => <<"消息内容模板,支持变量。若使用空模板(默认),消息内容为 JSON 格式的所有字段"/utf8>>} + } + }, + title => #{en => <<"Data bridge to MQTT Broker">>, + zh => <<"桥接数据到 MQTT Broker"/utf8>>}, + description => #{en => <<"Bridge Data to MQTT Broker">>, + zh => <<"桥接数据到 MQTT Broker"/utf8>>} + }). + +on_resource_create(ResId, Params) -> + ?LOG(info, "Initiating Resource ~p, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]), + {ok, _} = application:ensure_all_started(ecpool), + PoolName = pool_name(ResId), + Options = options(Params, PoolName, ResId), + start_resource(ResId, PoolName, Options), + case test_resource_status(PoolName) of + true -> ok; + false -> + on_resource_destroy(ResId, #{<<"pool">> => PoolName}), + error({{?RESOURCE_TYPE_MQTT, ResId}, connection_failed}) + end, + #{<<"pool">> => PoolName}. + +start_resource(ResId, PoolName, Options) -> + case ecpool:start_sup_pool(PoolName, ?MODULE, Options) of + {ok, _} -> + ?LOG(info, "Initiated Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]); + {error, {already_started, _Pid}} -> + on_resource_destroy(ResId, #{<<"pool">> => PoolName}), + start_resource(ResId, PoolName, Options); + {error, Reason} -> + ?LOG(error, "Initiate Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_MQTT, ResId, Reason]), + on_resource_destroy(ResId, #{<<"pool">> => PoolName}), + error({{?RESOURCE_TYPE_MQTT, ResId}, create_failed}) + end. + +test_resource_status(PoolName) -> + IsConnected = fun(Worker) -> + case ecpool_worker:client(Worker) of + {ok, Bridge} -> + try emqx_bridge_worker:status(Bridge) of + connected -> true; + _ -> false + catch _Error:_Reason -> + false + end; + {error, _} -> + false + end + end, + Status = [IsConnected(Worker) || {_WorkerName, Worker} <- ecpool:workers(PoolName)], + lists:any(fun(St) -> St =:= true end, Status). + +-spec(on_get_resource_status(ResId::binary(), Params::map()) -> Status::map()). +on_get_resource_status(_ResId, #{<<"pool">> := PoolName}) -> + IsAlive = test_resource_status(PoolName), + #{is_alive => IsAlive}. + +on_resource_destroy(ResId, #{<<"pool">> := PoolName}) -> + ?LOG(info, "Destroying Resource ~p, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]), + case ecpool:stop_sup_pool(PoolName) of + ok -> + ?LOG(info, "Destroyed Resource ~p Successfully, ResId: ~p", [?RESOURCE_TYPE_MQTT, ResId]); + {error, Reason} -> + ?LOG(error, "Destroy Resource ~p failed, ResId: ~p, ~p", [?RESOURCE_TYPE_MQTT, ResId, Reason]), + error({{?RESOURCE_TYPE_MQTT, ResId}, destroy_failed}) + end. + +on_action_create_data_to_mqtt_broker(ActId, Opts = #{<<"pool">> := PoolName, + <<"forward_topic">> := ForwardTopic, + <<"payload_tmpl">> := PayloadTmpl}) -> + ?LOG(info, "Initiating Action ~p.", [?FUNCTION_NAME]), + PayloadTks = emqx_rule_utils:preproc_tmpl(PayloadTmpl), + TopicTks = case ForwardTopic == <<"">> of + true -> undefined; + false -> emqx_rule_utils:preproc_tmpl(ForwardTopic) + end, + Opts. + +on_action_data_to_mqtt_broker(Msg, _Env = + #{id := Id, clientid := From, flags := Flags, + topic := Topic, timestamp := TimeStamp, qos := QoS, + ?BINDING_KEYS := #{ + 'ActId' := ActId, + 'PoolName' := PoolName, + 'TopicTks' := TopicTks, + 'PayloadTks' := PayloadTks + }}) -> + Topic1 = case TopicTks =:= undefined of + true -> Topic; + false -> emqx_rule_utils:proc_tmpl(TopicTks, Msg) + end, + BrokerMsg = #message{id = Id, + qos = QoS, + from = From, + flags = Flags, + topic = Topic1, + payload = format_data(PayloadTks, Msg), + timestamp = TimeStamp}, + ecpool:with_client(PoolName, + fun(BridgePid) -> + BridgePid ! {deliver, rule_engine, BrokerMsg} + end), + emqx_rule_metrics:inc_actions_success(ActId). + +format_data([], Msg) -> + emqx_json:encode(Msg); + +format_data(Tokens, Msg) -> + emqx_rule_utils:proc_tmpl(Tokens, Msg). + +tls_versions() -> + ['tlsv1.2','tlsv1.1', tlsv1]. + +ciphers(Ciphers) -> + string:tokens(str(Ciphers), ", "). + +subscriptions(Subscriptions) -> + scan_binary(<<"[", Subscriptions/binary, "].">>). + +is_node_addr(Addr0) -> + Addr = binary_to_list(Addr0), + case string:tokens(Addr, "@") of + [_NodeName, _Hostname] -> true; + _ -> false + end. + +scan_binary(Bin) -> + TermString = binary_to_list(Bin), + scan_string(TermString). + +scan_string(TermString) -> + {ok, Tokens, _} = erl_scan:string(TermString), + {ok, Term} = erl_parse:parse_term(Tokens), + Term. + +connect(Options) when is_list(Options) -> + connect(maps:from_list(Options)); +connect(Options = #{disk_cache := DiskCache, ecpool_worker_id := Id, pool_name := Pool}) -> + Options0 = case DiskCache of + true -> + DataDir = filename:join([emqx:get_env(data_dir), replayq, Pool, integer_to_list(Id)]), + QueueOption = #{replayq_dir => DataDir}, + Options#{queue => QueueOption}; + false -> + Options + end, + Options1 = case maps:is_key(append, Options0) of + false -> Options0; + true -> + case maps:get(append, Options0, false) of + true -> + ClientId = lists:concat([str(maps:get(clientid, Options0)), "_", str(emqx_guid:to_hexstr(emqx_guid:gen()))]), + Options0#{clientid => ClientId}; + false -> + Options0 + end + end, + Options2 = maps:without([ecpool_worker_id, pool_name, append], Options1), + emqx_bridge_worker:start_link(name(Pool, Id), Options2). +name(Pool, Id) -> + list_to_atom(atom_to_list(Pool) ++ ":" ++ integer_to_list(Id)). +pool_name(ResId) -> + list_to_atom("bridge_mqtt:" ++ str(ResId)). + +options(Options, PoolName, ResId) -> + GetD = fun(Key, Default) -> maps:get(Key, Options, Default) end, + Get = fun(Key) -> GetD(Key, undefined) end, + Address = Get(<<"address">>), + [{max_inflight_batches, 32}, + {forward_mountpoint, str(Get(<<"mountpoint">>))}, + {disk_cache, cuttlefish_flag:parse(str(GetD(<<"disk_cache">>, "off")))}, + {start_type, auto}, + {reconnect_delay_ms, cuttlefish_duration:parse(str(Get(<<"reconnect_interval">>)), ms)}, + {if_record_metrics, false}, + {pool_size, GetD(<<"pool_size">>, 1)}, + {pool_name, PoolName} + ] ++ case is_node_addr(Address) of + true -> + [{address, binary_to_atom(Get(<<"address">>), utf8)}, + {connect_module, emqx_bridge_rpc}, + {batch_size, Get(<<"batch_size">>)}]; + false -> + [{address, binary_to_list(Address)}, + {bridge_mode, GetD(<<"bridge_mode">>, true)}, + {clean_start, true}, + {clientid, str(Get(<<"clientid">>))}, + {append, Get(<<"append">>)}, + {connect_module, emqx_bridge_mqtt}, + {keepalive, cuttlefish_duration:parse(str(Get(<<"keepalive">>)), s)}, + {username, str(Get(<<"username">>))}, + {password, str(Get(<<"password">>))}, + {proto_ver, mqtt_ver(Get(<<"proto_ver">>))}, + {retry_interval, cuttlefish_duration:parse(str(GetD(<<"retry_interval">>, "30s")), s)} + ] ++ + case convert_key_name(<<"ssl">>, Options) of + true -> + [{ssl, true},{ssl_opts, [{versions, tls_versions()}, + {ciphers, ciphers(Get(<<"ciphers">>))}| + emqx_rule_actions_utils:get_ssl_opts(Options, ResId) + ]}]; + false -> + [] + end + end. + +convert_key_name(<<"ssl">>, Options) -> + SSL = maps:get(<<"ssl">>, Options, <<"off">>), + case is_binary(SSL) of + true -> cuttlefish_flag:parse(str(SSL)); + false -> SSL + end. + + +mqtt_ver(ProtoVer) -> + case ProtoVer of + <<"mqttv3">> -> v3; + <<"mqttv4">> -> v4; + <<"mqttv5">> -> v5; + _ -> v4 + end. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_app.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_app.erl new file mode 100644 index 000000000..2c0a0b9a9 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_app.erl @@ -0,0 +1,33 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_mqtt_app). + +-emqx_plugin(bridge). + +-behaviour(application). + +-export([start/2, stop/1]). + +start(_StartType, _StartArgs) -> + emqx_ctl:register_command(bridges, {emqx_bridge_mqtt_cli, cli}, []), + emqx_bridge_worker:register_metrics(), + emqx_bridge_mqtt_sup:start_link(). + +stop(_State) -> + emqx_ctl:unregister_command(bridges), + ok. + diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_cli.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_cli.erl new file mode 100644 index 000000000..1ee5a90c6 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_cli.erl @@ -0,0 +1,98 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_mqtt_cli). + +-include("emqx_bridge_mqtt.hrl"). + +-import(lists, [foreach/2]). + +-export([cli/1]). + +cli(["list"]) -> + foreach(fun({Name, State0}) -> + State = case State0 of + connected -> <<"Running">>; + _ -> <<"Stopped">> + end, + emqx_ctl:print("name: ~s status: ~s~n", [Name, State]) + end, emqx_bridge_mqtt_sup:bridges()); + +cli(["start", Name]) -> + emqx_ctl:print("~s.~n", [try emqx_bridge_worker:ensure_started(Name) of + ok -> <<"Start bridge successfully">>; + connected -> <<"Bridge already started">>; + _ -> <<"Start bridge failed">> + catch + _Error:_Reason -> + <<"Start bridge failed">> + end]); + +cli(["stop", Name]) -> + emqx_ctl:print("~s.~n", [try emqx_bridge_worker:ensure_stopped(Name) of + ok -> <<"Stop bridge successfully">>; + _ -> <<"Stop bridge failed">> + catch + _Error:_Reason -> + <<"Stop bridge failed">> + end]); + +cli(["forwards", Name]) -> + foreach(fun(Topic) -> + emqx_ctl:print("topic: ~s~n", [Topic]) + end, emqx_bridge_worker:get_forwards(Name)); + +cli(["add-forward", Name, Topic]) -> + case emqx_bridge_worker:ensure_forward_present(Name, iolist_to_binary(Topic)) of + ok -> emqx_ctl:print("Add-forward topic successfully.~n"); + {error, Reason} -> emqx_ctl:print("Add-forward failed reason: ~p.~n", [Reason]) + end; + +cli(["del-forward", Name, Topic]) -> + case emqx_bridge_worker:ensure_forward_absent(Name, iolist_to_binary(Topic)) of + ok -> emqx_ctl:print("Del-forward topic successfully.~n"); + {error, Reason} -> emqx_ctl:print("Del-forward failed reason: ~p.~n", [Reason]) + end; + +cli(["subscriptions", Name]) -> + foreach(fun({Topic, Qos}) -> + emqx_ctl:print("topic: ~s, qos: ~p~n", [Topic, Qos]) + end, emqx_bridge_worker:get_subscriptions(Name)); + +cli(["add-subscription", Name, Topic, Qos]) -> + case emqx_bridge_worker:ensure_subscription_present(Name, Topic, list_to_integer(Qos)) of + ok -> emqx_ctl:print("Add-subscription topic successfully.~n"); + {error, Reason} -> emqx_ctl:print("Add-subscription failed reason: ~p.~n", [Reason]) + end; + +cli(["del-subscription", Name, Topic]) -> + case emqx_bridge_worker:ensure_subscription_absent(Name, Topic) of + ok -> emqx_ctl:print("Del-subscription topic successfully.~n"); + {error, Reason} -> emqx_ctl:print("Del-subscription failed reason: ~p.~n", [Reason]) + end; + +cli(_) -> + emqx_ctl:usage([{"bridges list", "List bridges"}, + {"bridges start ", "Start a bridge"}, + {"bridges stop ", "Stop a bridge"}, + {"bridges forwards ", "Show a bridge forward topic"}, + {"bridges add-forward ", "Add bridge forward topic"}, + {"bridges del-forward ", "Delete bridge forward topic"}, + {"bridges subscriptions ", "Show a bridge subscriptions topic"}, + {"bridges add-subscription ", "Add bridge subscriptions topic"}, + {"bridges del-subscription ", "Delete bridge subscriptions topic"}]). + + diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_sup.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_sup.erl new file mode 100644 index 000000000..92d8e4083 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt_sup.erl @@ -0,0 +1,84 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_mqtt_sup). +-behaviour(supervisor). + +-include("emqx_bridge_mqtt.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[Bridge]"). + +%% APIs +-export([ start_link/0 + , start_link/1 + ]). + +-export([ create_bridge/2 + , drop_bridge/1 + , bridges/0 + , is_bridge_exist/1 + ]). + +%% supervisor callbacks +-export([init/1]). + +-define(SUP, ?MODULE). +-define(WORKER_SUP, emqx_bridge_worker_sup). + +start_link() -> start_link(?SUP). + +start_link(Name) -> + supervisor:start_link({local, Name}, ?MODULE, Name). + +init(?SUP) -> + BridgesConf = application:get_env(?APP, bridges, []), + BridgeSpec = lists:map(fun bridge_spec/1, BridgesConf), + SupFlag = #{strategy => one_for_one, + intensity => 100, + period => 10}, + {ok, {SupFlag, BridgeSpec}}. + +bridge_spec({Name, Config}) -> + #{id => Name, + start => {emqx_bridge_worker, start_link, [Name, Config]}, + restart => permanent, + shutdown => 5000, + type => worker, + modules => [emqx_bridge_worker]}. + +-spec(bridges() -> [{node(), map()}]). +bridges() -> + [{Name, emqx_bridge_worker:status(Pid)} || {Name, Pid, _, _} <- supervisor:which_children(?SUP)]. + +-spec(is_bridge_exist(atom() | pid()) -> boolean()). +is_bridge_exist(Id) -> + case supervisor:get_childspec(?SUP, Id) of + {ok, _ChildSpec} -> true; + {error, _Error} -> false + end. + +create_bridge(Id, Config) -> + supervisor:start_child(?SUP, bridge_spec({Id, Config})). + +drop_bridge(Id) -> + case supervisor:terminate_child(?SUP, Id) of + ok -> + supervisor:delete_child(?SUP, Id); + {error, Error} -> + ?LOG(error, "Delete bridge failed, error : ~p", [Error]), + {error, Error} + end. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_msg.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_msg.erl new file mode 100644 index 000000000..20600282e --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_msg.erl @@ -0,0 +1,98 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_msg). + +-export([ to_binary/1 + , from_binary/1 + , to_export/3 + , to_broker_msgs/1 + , to_broker_msg/1 + , to_broker_msg/2 + , estimate_size/1 + ]). + +-export_type([msg/0]). + +-include_lib("emqx/include/emqx.hrl"). + +-include_lib("emqx_bridge_mqtt/include/emqx_bridge_mqtt.hrl"). +-include_lib("emqtt/include/emqtt.hrl"). + + +-type msg() :: emqx_types:message(). +-type exp_msg() :: emqx_types:message() | #mqtt_msg{}. + +%% @doc Make export format: +%% 1. Mount topic to a prefix +%% 2. Fix QoS to 1 +%% @end +%% Shame that we have to know the callback module here +%% would be great if we can get rid of #mqtt_msg{} record +%% and use #message{} in all places. +-spec to_export(emqx_bridge_rpc | emqx_bridge_worker, + undefined | binary(), msg()) -> exp_msg(). +to_export(emqx_bridge_mqtt, Mountpoint, + #message{topic = Topic, + payload = Payload, + flags = Flags, + qos = QoS + }) -> + Retain = maps:get(retain, Flags, false), + #mqtt_msg{qos = QoS, + retain = Retain, + topic = topic(Mountpoint, Topic), + payload = Payload}; +to_export(_Module, Mountpoint, + #message{topic = Topic} = Msg) -> + Msg#message{topic = topic(Mountpoint, Topic)}. + +%% @doc Make `binary()' in order to make iodata to be persisted on disk. +-spec to_binary(msg()) -> binary(). +to_binary(Msg) -> term_to_binary(Msg). + +%% @doc Unmarshal binary into `msg()'. +-spec from_binary(binary()) -> msg(). +from_binary(Bin) -> binary_to_term(Bin). + +%% @doc Estimate the size of a message. +%% Count only the topic length + payload size +-spec estimate_size(msg()) -> integer(). +estimate_size(#message{topic = Topic, payload = Payload}) -> + size(Topic) + size(Payload). + +%% @doc By message/batch receiver, transform received batch into +%% messages to deliver to local brokers. +to_broker_msgs(Batch) -> lists:map(fun to_broker_msg/1, Batch). + +to_broker_msg(#message{} = Msg) -> + %% internal format from another EMQX node via rpc + Msg; +to_broker_msg(Msg) -> + to_broker_msg(Msg, undefined). +to_broker_msg(#{qos := QoS, dup := Dup, retain := Retain, topic := Topic, + properties := Props, payload := Payload}, Mountpoint) -> + %% published from remote node over a MQTT connection + set_headers(Props, + emqx_message:set_flags(#{dup => Dup, retain => Retain}, + emqx_message:make(bridge, QoS, topic(Mountpoint, Topic), Payload))). + +set_headers(undefined, Msg) -> + Msg; +set_headers(Val, Msg) -> + emqx_message:set_headers(Val, Msg). +topic(undefined, Topic) -> Topic; +topic(Prefix, Topic) -> emqx_topic:prepend(Prefix, Topic). diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_rpc.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_rpc.erl new file mode 100644 index 000000000..92ef0c60a --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_rpc.erl @@ -0,0 +1,99 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% @doc This module implements EMQX Bridge transport layer based on gen_rpc. + +-module(emqx_bridge_rpc). + +-behaviour(emqx_bridge_connect). + +%% behaviour callbacks +-export([ start/1 + , send/2 + , stop/1 + ]). + +%% Internal exports +-export([ handle_send/1 + , heartbeat/2 + ]). + +-type ack_ref() :: emqx_bridge_worker:ack_ref(). +-type batch() :: emqx_bridge_worker:batch(). + +-define(HEARTBEAT_INTERVAL, timer:seconds(1)). + +-define(RPC, emqx_rpc). + +start(#{address := Remote}) -> + case poke(Remote) of + ok -> + Pid = proc_lib:spawn_link(?MODULE, heartbeat, [self(), Remote]), + {ok, #{client_pid => Pid, address => Remote}}; + Error -> + Error + end. + +stop(#{client_pid := Pid}) when is_pid(Pid) -> + Ref = erlang:monitor(process, Pid), + unlink(Pid), + Pid ! stop, + receive + {'DOWN', Ref, process, Pid, _Reason} -> + ok + after + 1000 -> + exit(Pid, kill) + end, + ok. + +%% @doc Callback for `emqx_bridge_connect' behaviour +-spec send(node(), batch()) -> {ok, ack_ref()} | {error, any()}. +send(#{address := Remote}, Batch) -> + case ?RPC:call(Remote, ?MODULE, handle_send, [Batch]) of + ok -> + Ref = make_ref(), + self() ! {batch_ack, Ref}, + {ok, Ref}; + {badrpc, Reason} -> {error, Reason} + end. + +%% @doc Handle send on receiver side. +-spec handle_send(batch()) -> ok. +handle_send(Batch) -> + lists:foreach(fun(Msg) -> emqx_broker:publish(Msg) end, Batch). + +%% @hidden Heartbeat loop +heartbeat(Parent, RemoteNode) -> + Interval = ?HEARTBEAT_INTERVAL, + receive + stop -> exit(normal) + after + Interval -> + case poke(RemoteNode) of + ok -> + ?MODULE:heartbeat(Parent, RemoteNode); + {error, Reason} -> + Parent ! {disconnected, self(), Reason}, + exit(normal) + end + end. + +poke(Node) -> + case ?RPC:call(Node, erlang, node, []) of + Node -> ok; + {badrpc, Reason} -> {error, Reason} + end. diff --git a/apps/emqx_bridge_mqtt/src/emqx_bridge_worker.erl b/apps/emqx_bridge_mqtt/src/emqx_bridge_worker.erl new file mode 100644 index 000000000..b8e57c4a6 --- /dev/null +++ b/apps/emqx_bridge_mqtt/src/emqx_bridge_worker.erl @@ -0,0 +1,602 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +%% @doc Bridge works in two layers (1) batching layer (2) transport layer +%% The `bridge' batching layer collects local messages in batches and sends over +%% to remote MQTT node/cluster via `connection' transport layer. +%% In case `REMOTE' is also an EMQX node, `connection' is recommended to be +%% the `gen_rpc' based implementation `emqx_bridge_rpc'. Otherwise `connection' +%% has to be `emqx_bridge_mqtt'. +%% +%% ``` +%% +------+ +--------+ +%% | EMQX | | REMOTE | +%% | | | | +%% | (bridge) <==(connection)==> | | +%% | | | | +%% | | | | +%% +------+ +--------+ +%% ''' +%% +%% +%% This module implements 2 kinds of APIs with regards to batching and +%% messaging protocol. (1) A `gen_statem' based local batch collector; +%% (2) APIs for incoming remote batches/messages. +%% +%% Batch collector state diagram +%% +%% [idle] --(0) --> [connecting] --(2)--> [connected] +%% | ^ | +%% | | | +%% '--(1)---'--------(3)------' +%% +%% (0): auto or manual start +%% (1): retry timeout +%% (2): successfuly connected to remote node/cluster +%% (3): received {disconnected, Reason} OR +%% failed to send to remote node/cluster. +%% +%% NOTE: A bridge worker may subscribe to multiple (including wildcard) +%% local topics, and the underlying `emqx_bridge_connect' may subscribe to +%% multiple remote topics, however, worker/connections are not designed +%% to support automatic load-balancing, i.e. in case it can not keep up +%% with the amount of messages comming in, administrator should split and +%% balance topics between worker/connections manually. +%% +%% NOTES: +%% * Local messages are all normalised to QoS-1 when exporting to remote + +-module(emqx_bridge_worker). +-behaviour(gen_statem). + +%% APIs +-export([ start_link/1 + , start_link/2 + , register_metrics/0 + , stop/1 + ]). + +%% gen_statem callbacks +-export([ terminate/3 + , code_change/4 + , init/1 + , callback_mode/0 + ]). + +%% state functions +-export([ idle/3 + , connected/3 + ]). + +%% management APIs +-export([ ensure_started/1 + , ensure_stopped/1 + , ensure_stopped/2 + , status/1 + ]). + +-export([ get_forwards/1 + , ensure_forward_present/2 + , ensure_forward_absent/2 + ]). + +-export([ get_subscriptions/1 + , ensure_subscription_present/3 + , ensure_subscription_absent/2 + ]). + +%% Internal +-export([msg_marshaller/1]). + +-export_type([ config/0 + , batch/0 + , ack_ref/0 + ]). + +-type id() :: atom() | string() | pid(). +-type qos() :: emqx_mqtt_types:qos(). +-type config() :: map(). +-type batch() :: [emqx_bridge_msg:exp_msg()]. +-type ack_ref() :: term(). +-type topic() :: emqx_topic:topic(). + +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). + +-logger_header("[Bridge]"). + +%% same as default in-flight limit for emqtt +-define(DEFAULT_BATCH_SIZE, 32). +-define(DEFAULT_RECONNECT_DELAY_MS, timer:seconds(5)). +-define(DEFAULT_SEG_BYTES, (1 bsl 20)). +-define(DEFAULT_MAX_TOTAL_SIZE, (1 bsl 31)). +-define(NO_BRIDGE_HANDLER, undefined). + +%% @doc Start a bridge worker. Supported configs: +%% start_type: 'manual' (default) or 'auto', when manual, bridge will stay +%% at 'idle' state until a manual call to start it. +%% connect_module: The module which implements emqx_bridge_connect behaviour +%% and work as message batch transport layer +%% reconnect_delay_ms: Delay in milli-seconds for the bridge worker to retry +%% in case of transportation failure. +%% max_inflight: Max number of batches allowed to send-ahead before +%% receiving confirmation from remote node/cluster +%% mountpoint: The topic mount point for messages sent to remote node/cluster +%% `undefined', `<<>>' or `""' to disable +%% forwards: Local topics to subscribe. +%% queue.batch_bytes_limit: Max number of bytes to collect in a batch for each +%% send call towards emqx_bridge_connect +%% queue.batch_count_limit: Max number of messages to collect in a batch for +%% each send call towards emqx_bridge_connect +%% queue.replayq_dir: Directory where replayq should persist messages +%% queue.replayq_seg_bytes: Size in bytes for each replayq segment file +%% +%% Find more connection specific configs in the callback modules +%% of emqx_bridge_connect behaviour. +start_link(Config) when is_list(Config) -> + start_link(maps:from_list(Config)); +start_link(Config) -> + gen_statem:start_link(?MODULE, Config, []). + +start_link(Name, Config) when is_list(Config) -> + start_link(Name, maps:from_list(Config)); +start_link(Name, Config) -> + Name1 = name(Name), + gen_statem:start_link({local, Name1}, ?MODULE, Config#{name => Name1}, []). + +ensure_started(Name) -> + gen_statem:call(name(Name), ensure_started). + +%% @doc Manually stop bridge worker. State idempotency ensured. +ensure_stopped(Id) -> + ensure_stopped(Id, 1000). + +ensure_stopped(Id, Timeout) -> + Pid = case id(Id) of + P when is_pid(P) -> P; + N -> whereis(N) + end, + case Pid of + undefined -> + ok; + _ -> + MRef = monitor(process, Pid), + unlink(Pid), + _ = gen_statem:call(id(Id), ensure_stopped, Timeout), + receive + {'DOWN', MRef, _, _, _} -> + ok + after + Timeout -> + exit(Pid, kill) + end + end. + +stop(Pid) -> gen_statem:stop(Pid). + +status(Pid) when is_pid(Pid) -> + gen_statem:call(Pid, status); +status(Id) -> + gen_statem:call(name(Id), status). + +%% @doc Return all forwards (local subscriptions). +-spec get_forwards(id()) -> [topic()]. +get_forwards(Id) -> gen_statem:call(id(Id), get_forwards, timer:seconds(1000)). + +%% @doc Return all subscriptions (subscription over mqtt connection to remote broker). +-spec get_subscriptions(id()) -> [{emqx_topic:topic(), qos()}]. +get_subscriptions(Id) -> gen_statem:call(id(Id), get_subscriptions). + +%% @doc Add a new forward (local topic subscription). +-spec ensure_forward_present(id(), topic()) -> ok. +ensure_forward_present(Id, Topic) -> + gen_statem:call(id(Id), {ensure_present, forwards, topic(Topic)}). + +%% @doc Ensure a forward topic is deleted. +-spec ensure_forward_absent(id(), topic()) -> ok. +ensure_forward_absent(Id, Topic) -> + gen_statem:call(id(Id), {ensure_absent, forwards, topic(Topic)}). + +%% @doc Ensure subscribed to remote topic. +%% NOTE: only applicable when connection module is emqx_bridge_mqtt +%% return `{error, no_remote_subscription_support}' otherwise. +-spec ensure_subscription_present(id(), topic(), qos()) -> ok | {error, any()}. +ensure_subscription_present(Id, Topic, QoS) -> + gen_statem:call(id(Id), {ensure_present, subscriptions, {topic(Topic), QoS}}). + +%% @doc Ensure unsubscribed from remote topic. +%% NOTE: only applicable when connection module is emqx_bridge_mqtt +-spec ensure_subscription_absent(id(), topic()) -> ok. +ensure_subscription_absent(Id, Topic) -> + gen_statem:call(id(Id), {ensure_absent, subscriptions, topic(Topic)}). + +callback_mode() -> [state_functions]. + +%% @doc Config should be a map(). +init(Config) -> + erlang:process_flag(trap_exit, true), + ConnectModule = maps:get(connect_module, Config), + Subscriptions = maps:get(subscriptions, Config, []), + Forwards = maps:get(forwards, Config, []), + Queue = open_replayq(Config), + State = init_opts(Config), + Topics = [iolist_to_binary(T) || T <- Forwards], + Subs = check_subscriptions(Subscriptions), + ConnectCfg = get_conn_cfg(Config), + self() ! idle, + {ok, idle, State#{connect_module => ConnectModule, + connect_cfg => ConnectCfg, + forwards => Topics, + subscriptions => Subs, + replayq => Queue + }}. + +init_opts(Config) -> + IfRecordMetrics = maps:get(if_record_metrics, Config, true), + ReconnDelayMs = maps:get(reconnect_delay_ms, Config, ?DEFAULT_RECONNECT_DELAY_MS), + StartType = maps:get(start_type, Config, manual), + BridgeHandler = maps:get(bridge_handler, Config, ?NO_BRIDGE_HANDLER), + Mountpoint = maps:get(forward_mountpoint, Config, undefined), + ReceiveMountpoint = maps:get(receive_mountpoint, Config, undefined), + MaxInflightSize = maps:get(max_inflight, Config, ?DEFAULT_BATCH_SIZE), + BatchSize = maps:get(batch_size, Config, ?DEFAULT_BATCH_SIZE), + Name = maps:get(name, Config, undefined), + #{start_type => StartType, + reconnect_delay_ms => ReconnDelayMs, + batch_size => BatchSize, + mountpoint => format_mountpoint(Mountpoint), + receive_mountpoint => ReceiveMountpoint, + inflight => [], + max_inflight => MaxInflightSize, + connection => undefined, + bridge_handler => BridgeHandler, + if_record_metrics => IfRecordMetrics, + name => Name}. + +open_replayq(Config) -> + QCfg = maps:get(queue, Config, #{}), + Dir = maps:get(replayq_dir, QCfg, undefined), + SegBytes = maps:get(replayq_seg_bytes, QCfg, ?DEFAULT_SEG_BYTES), + MaxTotalSize = maps:get(max_total_size, QCfg, ?DEFAULT_MAX_TOTAL_SIZE), + QueueConfig = case Dir =:= undefined orelse Dir =:= "" of + true -> #{mem_only => true}; + false -> #{dir => Dir, seg_bytes => SegBytes, max_total_size => MaxTotalSize} + end, + replayq:open(QueueConfig#{sizer => fun emqx_bridge_msg:estimate_size/1, + marshaller => fun ?MODULE:msg_marshaller/1}). + +check_subscriptions(Subscriptions) -> + lists:map(fun({Topic, QoS}) -> + Topic1 = iolist_to_binary(Topic), + true = emqx_topic:validate({filter, Topic1}), + {Topic1, QoS} + end, Subscriptions). + +get_conn_cfg(Config) -> + maps:without([connect_module, + queue, + reconnect_delay_ms, + forwards, + mountpoint, + name + ], Config). + +code_change(_Vsn, State, Data, _Extra) -> + {ok, State, Data}. + +terminate(_Reason, _StateName, #{replayq := Q} = State) -> + _ = disconnect(State), + _ = replayq:close(Q), + ok. + +%% ensure_started will be deprecated in the future +idle({call, From}, ensure_started, State) -> + case do_connect(State) of + {ok, State1} -> + {next_state, connected, State1, [{reply, From, ok}, {state_timeout, 0, connected}]}; + {error, Reason} -> + {keep_state_and_data, [{reply, From, {error, Reason}}]} + end; +%% @doc Standing by for manual start. +idle(info, idle, #{start_type := manual}) -> + keep_state_and_data; +%% @doc Standing by for auto start. +idle(info, idle, #{start_type := auto} = State) -> + connecting(State); +idle(state_timeout, reconnect, State) -> + connecting(State); + +idle(info, {batch_ack, Ref}, State) -> + case do_ack(State, Ref) of + {ok, NewState} -> + {keep_state, NewState}; + _ -> + keep_state_and_data + end; + +idle(Type, Content, State) -> + common(idle, Type, Content, State). + +connecting(#{reconnect_delay_ms := ReconnectDelayMs} = State) -> + case do_connect(State) of + {ok, State1} -> + {next_state, connected, State1, {state_timeout, 0, connected}}; + _ -> + {keep_state_and_data, {state_timeout, ReconnectDelayMs, reconnect}} + end. + +connected(state_timeout, connected, #{inflight := Inflight} = State) -> + case retry_inflight(State, Inflight) of + {ok, NewState} -> + {keep_state, NewState, {next_event, internal, maybe_send}}; + {error, NewState} -> + {keep_state, NewState} + end; +connected(internal, maybe_send, State) -> + {_, NewState} = pop_and_send(State), + {keep_state, NewState}; + +connected(info, {disconnected, Conn, Reason}, + #{connection := Connection, name := Name, reconnect_delay_ms := ReconnectDelayMs} = State) -> + case Conn =:= maps:get(client_pid, Connection, undefined) of + true -> + ?LOG(info, "Bridge ~p diconnected~nreason=~p", [Name, Reason]), + {next_state, idle, State#{connection => undefined}, {state_timeout, ReconnectDelayMs, reconnect}}; + false -> + keep_state_and_data + end; +connected(info, {batch_ack, Ref}, State) -> + case do_ack(State, Ref) of + {ok, NewState} -> + {keep_state, NewState, {next_event, internal, maybe_send}}; + _ -> + keep_state_and_data + end; +connected(Type, Content, State) -> + common(connected, Type, Content, State). + +%% Common handlers +common(StateName, {call, From}, status, _State) -> + {keep_state_and_data, [{reply, From, StateName}]}; +common(_StateName, {call, From}, ensure_started, _State) -> + {keep_state_and_data, [{reply, From, connected}]}; +common(_StateName, {call, From}, ensure_stopped, _State) -> + {stop_and_reply, {shutdown, manual}, [{reply, From, ok}]}; +common(_StateName, {call, From}, get_forwards, #{forwards := Forwards}) -> + {keep_state_and_data, [{reply, From, Forwards}]}; +common(_StateName, {call, From}, get_subscriptions, #{subscriptions := Subs}) -> + {keep_state_and_data, [{reply, From, Subs}]}; +common(_StateName, {call, From}, {ensure_present, What, Topic}, State) -> + {Result, NewState} = ensure_present(What, Topic, State), + {keep_state, NewState, [{reply, From, Result}]}; +common(_StateName, {call, From}, {ensure_absent, What, Topic}, State) -> + {Result, NewState} = ensure_absent(What, Topic, State), + {keep_state, NewState, [{reply, From, Result}]}; +common(_StateName, info, {deliver, _, Msg}, #{replayq := Q, if_record_metrics := IfRecordMetric} = State) -> + Msgs = collect([Msg]), + bridges_metrics_inc(IfRecordMetric, 'bridge.mqtt.message_received', length(Msgs)), + NewQ = replayq:append(Q, Msgs), + {keep_state, State#{replayq => NewQ}, {next_event, internal, maybe_send}}; +common(_StateName, info, {'EXIT', _, _}, State) -> + {keep_state, State}; +common(StateName, Type, Content, #{name := Name} = State) -> + ?LOG(notice, "Bridge ~p discarded ~p type event at state ~p:~p", + [Name, Type, StateName, Content]), + {keep_state, State}. + +eval_bridge_handler(State = #{bridge_handler := ?NO_BRIDGE_HANDLER}, _Msg) -> + State; +eval_bridge_handler(State = #{bridge_handler := Handler}, Msg) -> + Handler(Msg), + State. + +ensure_present(Key, Topic, State) -> + Topics = maps:get(Key, State), + case is_topic_present(Topic, Topics) of + true -> + {ok, State}; + false -> + R = do_ensure_present(Key, Topic, State), + {R, State#{Key := lists:usort([Topic | Topics])}} + end. + +ensure_absent(Key, Topic, State) -> + Topics = maps:get(Key, State), + case is_topic_present(Topic, Topics) of + true -> + R = do_ensure_absent(Key, Topic, State), + {R, State#{Key := ensure_topic_absent(Topic, Topics)}}; + false -> + {ok, State} + end. + +ensure_topic_absent(_Topic, []) -> []; +ensure_topic_absent(Topic, [{_, _} | _] = L) -> lists:keydelete(Topic, 1, L); +ensure_topic_absent(Topic, L) -> lists:delete(Topic, L). + +is_topic_present({Topic, _QoS}, Topics) -> + is_topic_present(Topic, Topics); +is_topic_present(Topic, Topics) -> + lists:member(Topic, Topics) orelse false =/= lists:keyfind(Topic, 1, Topics). + +do_connect(#{forwards := Forwards, + subscriptions := Subs, + connect_module := ConnectModule, + connect_cfg := ConnectCfg, + name := Name} = State) -> + ok = subscribe_local_topics(Forwards, Name), + case emqx_bridge_connect:start(ConnectModule, ConnectCfg#{subscriptions => Subs}) of + {ok, Conn} -> + ?LOG(info, "Bridge ~p is connecting......", [Name]), + {ok, eval_bridge_handler(State#{connection => Conn}, connected)}; + {error, Reason} -> + {error, Reason, State} + end. + +do_ensure_present(forwards, Topic, #{name := Name}) -> + subscribe_local_topic(Topic, Name); +do_ensure_present(subscriptions, _Topic, #{connection := undefined}) -> + {error, no_connection}; +do_ensure_present(subscriptions, _Topic, #{connect_module := emqx_bridge_rpc}) -> + {error, no_remote_subscription_support}; +do_ensure_present(subscriptions, {Topic, QoS}, #{connect_module := ConnectModule, + connection := Conn}) -> + ConnectModule:ensure_subscribed(Conn, Topic, QoS). + +do_ensure_absent(forwards, Topic, _) -> + do_unsubscribe(Topic); +do_ensure_absent(subscriptions, _Topic, #{connection := undefined}) -> + {error, no_connection}; +do_ensure_absent(subscriptions, _Topic, #{connect_module := emqx_bridge_rpc}) -> + {error, no_remote_subscription_support}; +do_ensure_absent(subscriptions, Topic, #{connect_module := ConnectModule, + connection := Conn}) -> + ConnectModule:ensure_unsubscribed(Conn, Topic). + +collect(Acc) -> + receive + {deliver, _, Msg} -> + collect([Msg | Acc]) + after + 0 -> + lists:reverse(Acc) + end. + +%% Retry all inflight (previously sent but not acked) batches. +retry_inflight(State, []) -> {ok, State}; +retry_inflight(State, [#{q_ack_ref := QAckRef, batch := Batch} | Inflight]) -> + case do_send(State#{inflight := Inflight}, QAckRef, Batch) of + {ok, State1} -> retry_inflight(State1, Inflight); + {error, State1} -> {error, State1} + end. + +pop_and_send(#{inflight := Inflight, max_inflight := Max } = State) when length(Inflight) >= Max -> + {ok, State}; +pop_and_send(#{replayq := Q, connect_module := Module} = State) -> + case replayq:is_empty(Q) of + true -> + {ok, State}; + false -> + BatchSize = case Module of + emqx_bridge_rpc -> maps:get(batch_size, State); + _ -> 1 + end, + Opts = #{count_limit => BatchSize, bytes_limit => 999999999}, + {Q1, QAckRef, Batch} = replayq:pop(Q, Opts), + do_send(State#{replayq := Q1}, QAckRef, Batch) + end. + +%% Assert non-empty batch because we have a is_empty check earlier. +do_send(#{inflight := Inflight, + connect_module := Module, + connection := Connection, + mountpoint := Mountpoint, + if_record_metrics := IfRecordMetrics} = State, QAckRef, Batch) -> + ExportMsg = fun(Message) -> + bridges_metrics_inc(IfRecordMetrics, 'bridge.mqtt.message_sent'), + emqx_bridge_msg:to_export(Module, Mountpoint, Message) + end, + case Module:send(Connection, [ExportMsg(M) || M <- Batch]) of + {ok, Ref} -> + {ok, State#{inflight := Inflight ++ [#{q_ack_ref => QAckRef, + send_ack_ref => Ref, + batch => Batch}]}}; + {error, Reason} -> + ?LOG(info, "Batch produce failed~p", [Reason]), + {error, State} + end. + + +do_ack(#{inflight := []} = State, Ref) -> + ?LOG(error, "Can't be found from the inflight:~p", [Ref]), + {ok, State}; + +do_ack(#{inflight := [#{send_ack_ref := Ref, + q_ack_ref := QAckRef}| Rest], replayq := Q} = State, Ref) -> + ok = replayq:ack(Q, QAckRef), + {ok, State#{inflight => Rest}}; + +do_ack(#{inflight := [#{q_ack_ref := QAckRef, + batch := Batch}| Rest], replayq := Q} = State, Ref) -> + ok = replayq:ack(Q, QAckRef), + NewQ = replayq:append(Q, Batch), + do_ack(State#{replayq => NewQ, inflight => Rest}, Ref). + +subscribe_local_topics(Topics, Name) -> + lists:foreach(fun(Topic) -> subscribe_local_topic(Topic, Name) end, Topics). + +subscribe_local_topic(Topic, Name) -> + do_subscribe(Topic, Name). + +topic(T) -> iolist_to_binary(T). + +validate(RawTopic) -> + Topic = topic(RawTopic), + try emqx_topic:validate(Topic) of + _Success -> Topic + catch + error:Reason -> + error({bad_topic, Topic, Reason}) + end. + +do_subscribe(RawTopic, Name) -> + TopicFilter = validate(RawTopic), + {Topic, SubOpts} = emqx_topic:parse(TopicFilter, #{qos => ?QOS_1}), + emqx_broker:subscribe(Topic, Name, SubOpts). + +do_unsubscribe(RawTopic) -> + TopicFilter = validate(RawTopic), + {Topic, _SubOpts} = emqx_topic:parse(TopicFilter), + emqx_broker:unsubscribe(Topic). + +disconnect(#{connection := Conn, + connect_module := Module + } = State) when Conn =/= undefined -> + Module:stop(Conn), + State0 = State#{connection => undefined}, + eval_bridge_handler(State0, disconnected); +disconnect(State) -> + eval_bridge_handler(State, disconnected). + +%% Called only when replayq needs to dump it to disk. +msg_marshaller(Bin) when is_binary(Bin) -> emqx_bridge_msg:from_binary(Bin); +msg_marshaller(Msg) -> emqx_bridge_msg:to_binary(Msg). + +format_mountpoint(undefined) -> + undefined; +format_mountpoint(Prefix) -> + binary:replace(iolist_to_binary(Prefix), <<"${node}">>, atom_to_binary(node(), utf8)). + +name(Id) -> list_to_atom(lists:concat([?MODULE, "_", Id])). + +id(Pid) when is_pid(Pid) -> Pid; +id(Name) -> name(Name). + +register_metrics() -> + lists:foreach(fun emqx_metrics:ensure/1, + ['bridge.mqtt.message_sent', + 'bridge.mqtt.message_received' + ]). + +bridges_metrics_inc(true, Metric) -> + emqx_metrics:inc(Metric); +bridges_metrics_inc(_IsRecordMetric, _Metric) -> + ok. + +bridges_metrics_inc(true, Metric, Value) -> + emqx_metrics:inc(Metric, Value); +bridges_metrics_inc(_IsRecordMetric, _Metric, _Value) -> + ok. diff --git a/apps/emqx_bridge_mqtt/test/emqx_bridge_mqtt_tests.erl b/apps/emqx_bridge_mqtt/test/emqx_bridge_mqtt_tests.erl new file mode 100644 index 000000000..392fa8e17 --- /dev/null +++ b/apps/emqx_bridge_mqtt/test/emqx_bridge_mqtt_tests.erl @@ -0,0 +1,47 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_mqtt_tests). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). + +send_and_ack_test() -> + %% delegate from gen_rpc to rpc for unit test + meck:new(emqtt, [passthrough, no_history]), + meck:expect(emqtt, start_link, 1, + fun(_) -> + {ok, spawn_link(fun() -> ok end)} + end), + meck:expect(emqtt, connect, 1, {ok, dummy}), + meck:expect(emqtt, stop, 1, + fun(Pid) -> Pid ! stop end), + meck:expect(emqtt, publish, 2, + fun(Client, Msg) -> + Client ! {publish, Msg}, + {ok, Msg} %% as packet id + end), + try + Max = 1, + Batch = lists:seq(1, Max), + {ok, Conn} = emqx_bridge_mqtt:start(#{address => "127.0.0.1:1883"}), + % %% return last packet id as batch reference + {ok, _AckRef} = emqx_bridge_mqtt:send(Conn, Batch), + + ok = emqx_bridge_mqtt:stop(Conn) + after + meck:unload(emqtt) + end. \ No newline at end of file diff --git a/apps/emqx_bridge_mqtt/test/emqx_bridge_rpc_tests.erl b/apps/emqx_bridge_mqtt/test/emqx_bridge_rpc_tests.erl new file mode 100644 index 000000000..f79d12dfb --- /dev/null +++ b/apps/emqx_bridge_mqtt/test/emqx_bridge_rpc_tests.erl @@ -0,0 +1,42 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_rpc_tests). +-include_lib("eunit/include/eunit.hrl"). + +send_and_ack_test() -> + %% delegate from emqx_rpc to rpc for unit test + meck:new(emqx_rpc, [passthrough, no_history]), + meck:expect(emqx_rpc, call, 4, + fun(Node, Module, Fun, Args) -> + rpc:call(Node, Module, Fun, Args) + end), + meck:expect(emqx_rpc, cast, 4, + fun(Node, Module, Fun, Args) -> + rpc:cast(Node, Module, Fun, Args) + end), + meck:new(emqx_bridge_worker, [passthrough, no_history]), + try + {ok, #{client_pid := Pid, address := Node}} = emqx_bridge_rpc:start(#{address => node()}), + {ok, Ref} = emqx_bridge_rpc:send(#{address => Node}, []), + receive + {batch_ack, Ref} -> + ok + end, + ok = emqx_bridge_rpc:stop( #{client_pid => Pid}) + after + meck:unload(emqx_rpc) + end. diff --git a/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_SUITE.erl b/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_SUITE.erl new file mode 100644 index 000000000..7cbf0987c --- /dev/null +++ b/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_SUITE.erl @@ -0,0 +1,176 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_worker_SUITE). + +-export([ all/0 + , init_per_suite/1 + , end_per_suite/1]). +-export([ t_rpc/1 + , t_mqtt/1 + , t_mngr/1]). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("emqx/include/emqx.hrl"). + +-define(wait(For, Timeout), emqx_ct_helpers:wait_for(?FUNCTION_NAME, ?LINE, fun() -> For end, Timeout)). + +receive_messages(Count) -> + receive_messages(Count, []). + +receive_messages(0, Msgs) -> + Msgs; +receive_messages(Count, Msgs) -> + receive + {publish, Msg} -> + receive_messages(Count-1, [Msg|Msgs]); + _Other -> + receive_messages(Count, Msgs) + after 1000 -> + Msgs + end. + +all() -> [ t_rpc + , t_mqtt + , t_mngr + ]. + +init_per_suite(Config) -> + case node() of + nonode@nohost -> net_kernel:start(['emqx@127.0.0.1', longnames]); + _ -> ok + end, + ok = application:set_env(gen_rpc, tcp_client_num, 1), + emqx_ct_helpers:start_apps([emqx_bridge_mqtt]), + emqx_logger:set_log_level(error), + [{log_level, error} | Config]. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_bridge_mqtt]). + +t_mngr(Config) when is_list(Config) -> + Subs = [{<<"a">>, 1}, {<<"b">>, 2}], + Cfg = #{address => node(), + forwards => [<<"mngr">>], + connect_module => emqx_bridge_rpc, + mountpoint => <<"forwarded">>, + subscriptions => Subs, + start_type => auto}, + Name = ?FUNCTION_NAME, + {ok, Pid} = emqx_bridge_worker:start_link(Name, Cfg), + try + ?assertEqual([<<"mngr">>], emqx_bridge_worker:get_forwards(Name)), + ?assertEqual(ok, emqx_bridge_worker:ensure_forward_present(Name, "mngr")), + ?assertEqual(ok, emqx_bridge_worker:ensure_forward_present(Name, "mngr2")), + ?assertEqual([<<"mngr">>, <<"mngr2">>], emqx_bridge_worker:get_forwards(Pid)), + ?assertEqual(ok, emqx_bridge_worker:ensure_forward_absent(Name, "mngr2")), + ?assertEqual(ok, emqx_bridge_worker:ensure_forward_absent(Name, "mngr3")), + ?assertEqual([<<"mngr">>], emqx_bridge_worker:get_forwards(Pid)), + ?assertEqual({error, no_remote_subscription_support}, + emqx_bridge_worker:ensure_subscription_present(Pid, <<"t">>, 0)), + ?assertEqual({error, no_remote_subscription_support}, + emqx_bridge_worker:ensure_subscription_absent(Pid, <<"t">>)), + ?assertEqual(Subs, emqx_bridge_worker:get_subscriptions(Pid)) + after + ok = emqx_bridge_worker:stop(Pid) + end. + +%% A loopback RPC to local node +t_rpc(Config) when is_list(Config) -> + Cfg = #{address => node(), + forwards => [<<"t_rpc/#">>], + connect_module => emqx_bridge_rpc, + forward_mountpoint => <<"forwarded">>, + start_type => auto}, + {ok, Pid} = emqx_bridge_worker:start_link(?FUNCTION_NAME, Cfg), + ClientId = <<"ClientId">>, + try + {ok, ConnPid} = emqtt:start_link([{clientid, ClientId}]), + {ok, _Props} = emqtt:connect(ConnPid), + {ok, _Props, [1]} = emqtt:subscribe(ConnPid, {<<"forwarded/t_rpc/one">>, ?QOS_1}), + timer:sleep(100), + {ok, _PacketId} = emqtt:publish(ConnPid, <<"t_rpc/one">>, <<"hello">>, ?QOS_1), + timer:sleep(100), + ?assertEqual(1, length(receive_messages(1))), + emqtt:disconnect(ConnPid) + after + ok = emqx_bridge_worker:stop(Pid) + end. + +%% Full data loopback flow explained: +%% mqtt-client ----> local-broker ---(local-subscription)---> +%% bridge(export) --- (mqtt-connection)--> local-broker ---(remote-subscription) --> +%% bridge(import) --> mqtt-client +t_mqtt(Config) when is_list(Config) -> + SendToTopic = <<"t_mqtt/one">>, + SendToTopic2 = <<"t_mqtt/two">>, + SendToTopic3 = <<"t_mqtt/three">>, + Mountpoint = <<"forwarded/${node}/">>, + Cfg = #{address => "127.0.0.1:1883", + forwards => [SendToTopic], + connect_module => emqx_bridge_mqtt, + forward_mountpoint => Mountpoint, + username => "user", + clean_start => true, + clientid => "bridge_aws", + keepalive => 60000, + password => "passwd", + proto_ver => mqttv4, + queue => #{replayq_dir => "data/t_mqtt/", + replayq_seg_bytes => 10000, + batch_bytes_limit => 1000, + batch_count_limit => 10 + }, + reconnect_delay_ms => 1000, + ssl => false, + %% Consume back to forwarded message for verification + %% NOTE: this is a indefenite loopback without mocking emqx_bridge_worker:import_batch/1 + subscriptions => [{SendToTopic2, _QoS = 1}], + receive_mountpoint => <<"receive/aws/">>, + start_type => auto}, + {ok, Pid} = emqx_bridge_worker:start_link(?FUNCTION_NAME, Cfg), + ClientId = <<"client-1">>, + try + ?assertEqual([{SendToTopic2, 1}], emqx_bridge_worker:get_subscriptions(Pid)), + ok = emqx_bridge_worker:ensure_subscription_present(Pid, SendToTopic3, _QoS = 1), + ?assertEqual([{SendToTopic3, 1},{SendToTopic2, 1}], + emqx_bridge_worker:get_subscriptions(Pid)), + {ok, ConnPid} = emqtt:start_link([{clientid, ClientId}]), + {ok, _Props} = emqtt:connect(ConnPid), + emqtt:subscribe(ConnPid, <<"forwarded/+/t_mqtt/one">>, 1), + %% message from a different client, to avoid getting terminated by no-local + Max = 10, + Msgs = lists:seq(1, Max), + lists:foreach(fun(I) -> + {ok, _PacketId} = emqtt:publish(ConnPid, SendToTopic, integer_to_binary(I), ?QOS_1) + end, Msgs), + ?assertEqual(10, length(receive_messages(200))), + + emqtt:subscribe(ConnPid, <<"receive/aws/t_mqtt/two">>, 1), + %% message from a different client, to avoid getting terminated by no-local + Max = 10, + Msgs = lists:seq(1, Max), + lists:foreach(fun(I) -> + {ok, _PacketId} = emqtt:publish(ConnPid, SendToTopic2, integer_to_binary(I), ?QOS_1) + end, Msgs), + ?assertEqual(10, length(receive_messages(200))), + + emqtt:disconnect(ConnPid) + after + ok = emqx_bridge_worker:stop(Pid) + end. diff --git a/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_tests.erl b/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_tests.erl new file mode 100644 index 000000000..1d2ed1b82 --- /dev/null +++ b/apps/emqx_bridge_mqtt/test/emqx_bridge_worker_tests.erl @@ -0,0 +1,172 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_bridge_worker_tests). +-behaviour(emqx_bridge_connect). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). + +-define(BRIDGE_NAME, test). +-define(BRIDGE_REG_NAME, emqx_bridge_worker_test). +-define(WAIT(PATTERN, TIMEOUT), + receive + PATTERN -> + ok + after + TIMEOUT -> + error(timeout) + end). + +%% stub callbacks +-export([start/1, send/2, stop/1]). + +start(#{connect_result := Result, test_pid := Pid, test_ref := Ref}) -> + case is_pid(Pid) of + true -> Pid ! {connection_start_attempt, Ref}; + false -> ok + end, + Result. + +send(SendFun, Batch) when is_function(SendFun, 2) -> + SendFun(Batch). + +stop(_Pid) -> ok. + +%% bridge worker should retry connecting remote node indefinitely +% reconnect_test() -> +% emqx_metrics:start_link(), +% emqx_bridge_worker:register_metrics(), +% Ref = make_ref(), +% Config = make_config(Ref, self(), {error, test}), +% {ok, Pid} = emqx_bridge_worker:start_link(?BRIDGE_NAME, Config), +% %% assert name registered +% ?assertEqual(Pid, whereis(?BRIDGE_REG_NAME)), +% ?WAIT({connection_start_attempt, Ref}, 1000), +% %% expect same message again +% ?WAIT({connection_start_attempt, Ref}, 1000), +% ok = emqx_bridge_worker:stop(?BRIDGE_REG_NAME), +% emqx_metrics:stop(), +% ok. + +%% connect first, disconnect, then connect again +disturbance_test() -> + emqx_metrics:start_link(), + emqx_bridge_worker:register_metrics(), + Ref = make_ref(), + TestPid = self(), + Config = make_config(Ref, TestPid, {ok, #{client_pid => TestPid}}), + {ok, Pid} = emqx_bridge_worker:start_link(?BRIDGE_NAME, Config), + ?assertEqual(Pid, whereis(?BRIDGE_REG_NAME)), + ?WAIT({connection_start_attempt, Ref}, 1000), + Pid ! {disconnected, TestPid, test}, + ?WAIT({connection_start_attempt, Ref}, 1000), + emqx_metrics:stop(), + ok = emqx_bridge_worker:stop(?BRIDGE_REG_NAME). + +% % %% buffer should continue taking in messages when disconnected +% buffer_when_disconnected_test_() -> +% {timeout, 10000, fun test_buffer_when_disconnected/0}. + +% test_buffer_when_disconnected() -> +% Ref = make_ref(), +% Nums = lists:seq(1, 100), +% Sender = spawn_link(fun() -> receive {bridge, Pid} -> sender_loop(Pid, Nums, _Interval = 5) end end), +% SenderMref = monitor(process, Sender), +% Receiver = spawn_link(fun() -> receive {bridge, Pid} -> receiver_loop(Pid, Nums, _Interval = 1) end end), +% ReceiverMref = monitor(process, Receiver), +% SendFun = fun(Batch) -> +% BatchRef = make_ref(), +% Receiver ! {batch, BatchRef, Batch}, +% {ok, BatchRef} +% end, +% Config0 = make_config(Ref, false, {ok, #{client_pid => undefined}}), +% Config = Config0#{reconnect_delay_ms => 100}, +% emqx_metrics:start_link(), +% emqx_bridge_worker:register_metrics(), +% {ok, Pid} = emqx_bridge_worker:start_link(?BRIDGE_NAME, Config), +% Sender ! {bridge, Pid}, +% Receiver ! {bridge, Pid}, +% ?assertEqual(Pid, whereis(?BRIDGE_REG_NAME)), +% Pid ! {disconnected, Ref, test}, +% ?WAIT({'DOWN', SenderMref, process, Sender, normal}, 5000), +% ?WAIT({'DOWN', ReceiverMref, process, Receiver, normal}, 1000), +% ok = emqx_bridge_worker:stop(?BRIDGE_REG_NAME), +% emqx_metrics:stop(). + +manual_start_stop_test() -> + emqx_metrics:start_link(), + emqx_bridge_worker:register_metrics(), + Ref = make_ref(), + TestPid = self(), + Config0 = make_config(Ref, TestPid, {ok, #{client_pid => TestPid}}), + Config = Config0#{start_type := manual}, + {ok, Pid} = emqx_bridge_worker:start_link(?BRIDGE_NAME, Config), + %% call ensure_started again should yeld the same result + ok = emqx_bridge_worker:ensure_started(?BRIDGE_NAME), + ?assertEqual(Pid, whereis(?BRIDGE_REG_NAME)), + emqx_bridge_worker:ensure_stopped(unknown), + emqx_bridge_worker:ensure_stopped(Pid), + emqx_bridge_worker:ensure_stopped(?BRIDGE_REG_NAME), + emqx_metrics:stop(). + +%% Feed messages to bridge +sender_loop(_Pid, [], _) -> exit(normal); +sender_loop(Pid, [Num | Rest], Interval) -> + random_sleep(Interval), + Pid ! {deliver, dummy, make_msg(Num)}, + sender_loop(Pid, Rest, Interval). + +%% Feed acknowledgments to bridge +receiver_loop(_Pid, [], _) -> ok; +receiver_loop(Pid, Nums, Interval) -> + receive + {batch, BatchRef, Batch} -> + Rest = match_nums(Batch, Nums), + random_sleep(Interval), + emqx_bridge_worker:handle_ack(Pid, BatchRef), + receiver_loop(Pid, Rest, Interval) + end. + +random_sleep(MaxInterval) -> + case rand:uniform(MaxInterval) - 1 of + 0 -> ok; + T -> timer:sleep(T) + end. + +match_nums([], Rest) -> Rest; +match_nums([#message{payload = P} | Rest], Nums) -> + I = binary_to_integer(P), + case Nums of + [I | NumsLeft] -> match_nums(Rest, NumsLeft); + [J | _] when J > I -> match_nums(Rest, Nums); %% allow retry + _ -> error([{received, I}, {expecting, Nums}]) + end. + +make_config(Ref, TestPid, Result) -> + #{test_pid => TestPid, + test_ref => Ref, + connect_module => ?MODULE, + reconnect_delay_ms => 50, + connect_result => Result, + start_type => auto + }. + +make_msg(I) -> + Payload = integer_to_binary(I), + emqx_message:make(<<"test/topic">>, Payload). + diff --git a/apps/emqx_coap/.github/workflows/run_test_cases.yaml b/apps/emqx_coap/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..b8e722570 --- /dev/null +++ b/apps/emqx_coap/.github/workflows/run_test_cases.yaml @@ -0,0 +1,29 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: run test cases + run: | + make xref + make eunit + make ct + make cover + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs + - uses: actions/upload-artifact@v1 + with: + name: cover + path: _build/test/cover + diff --git a/apps/emqx_coap/.gitignore b/apps/emqx_coap/.gitignore new file mode 100644 index 000000000..67eaa0145 --- /dev/null +++ b/apps/emqx_coap/.gitignore @@ -0,0 +1,25 @@ +deps/ +ebin/ +_rel/ +.erlang.mk/ +*.d +*.o +*.exe +data/ +*.iml +.idea/ +logs/ +*.beam +emqx_coap.d +intergration_test/emqx-rel/ +intergration_test/libcoap/ +intergration_test/case*.txt +.DS_Store +_build/ +rebar.lock +rebar3.crashdump +*.swp +erlang.mk +.rebar3/ +etc/emqx_coap.conf.rendered +.tags* diff --git a/apps/emqx_coap/LICENSE b/apps/emqx_coap/LICENSE new file mode 100644 index 000000000..8dada3eda --- /dev/null +++ b/apps/emqx_coap/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/apps/emqx_coap/Makefile b/apps/emqx_coap/Makefile new file mode 100644 index 000000000..621b51d07 --- /dev/null +++ b/apps/emqx_coap/Makefile @@ -0,0 +1,37 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: compile + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_coap.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_coap.conf -i priv/emqx_coap.schema -d data diff --git a/apps/emqx_coap/README.md b/apps/emqx_coap/README.md new file mode 100644 index 000000000..2da7b9fca --- /dev/null +++ b/apps/emqx_coap/README.md @@ -0,0 +1,254 @@ + +# emqx-coap + +emqx-coap is a CoAP Gateway for EMQ X Broker. It translates CoAP messages into MQTT messages and make it possible to communiate between CoAP clients and MQTT clients. + +### Client Usage Example +libcoap is an excellent coap library which has a simple client tool. It is recommended to use libcoap as a coap client. + +To compile libcoap, do following steps: + +``` +git clone http://github.com/obgm/libcoap +cd libcoap +./autogen.sh +./configure --enable-documentation=no --enable-tests=no +make +``` + +### Publish example: +``` +libcoap/examples/coap-client -m put -e 1234 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" +``` +- topic name is "topic1", NOT "/topic1" +- client id is client1 +- username is tom +- password is secret +- payload is a text string "1234" + +A mqtt message with topic="topic1", payload="1234" has been published. Any mqtt client or coap client, who has subscribed this topic could receive this message immediately. + +### Subscribe example: + +``` +libcoap/examples/coap-client -m get -s 10 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" +``` +- topic name is "topic1", NOT "/topic1" +- client id is client1 +- username is tom +- password is secret +- subscribe time is 10 seconds + +And you will get following result if any mqtt client or coap client sent message with text "1234567" to "topic1": + +``` +v:1 t:CON c:GET i:31ae {} [ ] +1234567v:1 t:CON c:GET i:31af {} [ Observe:1, Uri-Path:mqtt, Uri-Path:topic1, Uri-Query:c=client1, Uri-Query:u=tom, Uri-Query:p=secret ] +``` +The output message is not well formatted which hide "1234567" at the head of the 2nd line. + +### Configure + +#### Common + +File: etc/emqx_coap.conf + +```properties + +## The UDP port that CoAP is listening on. +## +## Value: Port +coap.port = 5683 + +## Interval for keepalive, specified in seconds. +## +## Value: Duration +## -s: seconds +## -m: minutes +## -h: hours +coap.keepalive = 120s + +## Whether to enable statistics for CoAP clients. +## +## Value: on | off +coap.enable_stats = off + +``` + +#### DTLS + +emqx_coap enable one-way authentication by default. + +If you want to disable it, comment these lines. + +File: etc/emqx_coap.conf + +```properties + +## The DTLS port that CoAP is listening on. +## +## Value: Port +coap.dtls.port = 5684 + +## Private key file for DTLS +## +## Value: File +coap.dtls.keyfile = {{ platform_etc_dir }}/certs/key.pem + +## Server certificate for DTLS. +## +## Value: File +coap.dtls.certfile = {{ platform_etc_dir }}/certs/cert.pem + +``` + +##### Enable two-way autentication + +For two-way autentication: + +```properties + +## A server only does x509-path validation in mode verify_peer, +## as it then sends a certificate request to the client (this +## message is not sent if the verify option is verify_none). +## You can then also want to specify option fail_if_no_peer_cert. +## More information at: http://erlang.org/doc/man/ssl.html +## +## Value: verify_peer | verify_none +## coap.dtls.verify = verify_peer + +## PEM-encoded CA certificates for DTLS +## +## Value: File +## coap.dtls.cacertfile = {{ platform_etc_dir }}/certs/cacert.pem + +## Used together with {verify, verify_peer} by an SSL server. If set to true, +## the server fails if the client does not have a certificate to send, that is, +## sends an empty certificate. +## +## Value: true | false +## coap.dtls.fail_if_no_peer_cert = false + +``` + +### Load emqx-coap + +```bash +./bin/emqx_ctl plugins load emqx_coap +``` + +CoAP Client Observe Operation (subscribe topic) +----------------------------------------------- +To subscribe any topic, issue following command: + +``` + GET coap://localhost/mqtt/{topicname}?c={clientid}&u={username}&p={password} with OBSERVE=0 +``` + +- "mqtt" in the path is mandatory. +- replace {topicname}, {clientid}, {username} and {password} with your true values. +- {topicname} and {clientid} is mandatory. +- if clientid is absent, a "bad_request" will be returned. +- {topicname} in URI should be percent-encoded to prevent special characters, such as + and #. +- {username} and {password} are optional. +- if {username} and {password} are not correct, an uauthorized error will be returned. +- topic is subscribed with qos1. + +CoAP Client Unobserve Operation (unsubscribe topic) +--------------------------------------------------- +To cancel observation, issue following command: + +``` + GET coap://localhost/mqtt/{topicname}?c={clientid}&u={username}&p={password} with OBSERVE=1 +``` + +- "mqtt" in the path is mandatory. +- replace {topicname}, {clientid}, {username} and {password} with your true values. +- {topicname} and {clientid} is mandatory. +- if clientid is absent, a "bad_request" will be returned. +- {topicname} in URI should be percent-encoded to prevent special characters, such as + and #. +- {username} and {password} are optional. +- if {username} and {password} are not correct, an uauthorized error will be returned. + +CoAP Client Notification Operation (subscribed Message) +------------------------------------------------------- +Server will issue an observe-notification as a subscribed message. + +- Its payload is exactly the mqtt payload. +- payload data type is "application/octet-stream". + +CoAP Client Publish Operation +----------------------------- +Issue a coap put command to do publishment. For example: + +``` + PUT coap://localhost/mqtt/{topicname}?c={clientid}&u={username}&p={password} +``` + +- "mqtt" in the path is mandatory. +- replace {topicname}, {clientid}, {username} and {password} with your true values. +- {topicname} and {clientid} is mandatory. +- if clientid is absent, a "bad_request" will be returned. +- {topicname} in URI should be percent-encoded to prevent special characters, such as + and #. +- {username} and {password} are optional. +- if {username} and {password} are not correct, an uauthorized error will be returned. +- payload could be any binary data. +- payload data type is "application/octet-stream". +- publish message will be sent with qos0. + +CoAP Client Keep Alive +---------------------- +Device should issue a get command periodically, serve as a ping to keep mqtt session online. + +``` + GET coap://localhost/mqtt/{any_topicname}?c={clientid}&u={username}&p={password} +``` + +- "mqtt" in the path is mandatory. +- replace {any_topicname}, {clientid}, {username} and {password} with your true values. +- {any_topicname} is optional, and should be percent-encoded to prevent special characters. +- {clientid} is mandatory. If clientid is absent, a "bad_request" will be returned. +- {username} and {password} are optional. +- if {username} and {password} are not correct, an uauthorized error will be returned. +- coap client should do keepalive work periodically to keep mqtt session online, especially those devices in a NAT network. + + +CoAP Client NOTES +----------------- +emqx-coap gateway does not accept POST and DELETE requests. + +Topics in URI should be percent-encoded, but corresponding uri_path option has percent-encoding converted. Please refer to RFC 7252 section 6.4, "Decomposing URIs into Options": + +> Note that these rules completely resolve any percent-encoding. + +That implies coap client is responsible to convert any percert-encoding into true character while assembling coap packet. + + +ClientId, Username, Password and Topic +-------------------------------------- +ClientId/username/password/topic in the coap URI are the concepts in mqtt. That is to say, emqx-coap is trying to fit coap message into mqtt system, by borrowing the client/username/password/topic from mqtt. + +The Auth/ACL/Hook features in mqtt also applies on coap stuff. For example: +- If username/password is not authorized, coap client will get an uauthorized error. +- If username or clientid is not allowed to published specific topic, coap message will be dropped in fact, although coap client will get an acknoledgement from emqx-coap. +- If a coap message is published, a 'message.publish' hook is able to capture this message as well. + +well-known locations +-------------------- +Discovery always return "," + +For example +``` +libcoap/examples/coap-client -m get "coap://127.0.0.1/.well-known/core" +``` + +License +------- + +Apache License Version 2.0 + +Author +------ + +EMQ X Team. + diff --git a/apps/emqx_coap/TODO b/apps/emqx_coap/TODO new file mode 100644 index 000000000..2af129d6c --- /dev/null +++ b/apps/emqx_coap/TODO @@ -0,0 +1,13 @@ +1. Remove the test/test_mqtt_broker and use emqx-ct-helpers -> Done! + - Enhance all test case + +2. Remove the mqtt adaptor +3. Remove the emqx_coap_ps_topics.erl + + +### Problems + +1. The coap-client of libcoap does not support Fragment DTLS handshake frame + * So, the connection will be established failed, if the 'Server Hello' frame is too big + * Why is the 'Server Hello' too big when enable the 'coap.dtls.cacertfile' option? +2. diff --git a/apps/emqx_coap/docs/rfc7049.pdf b/apps/emqx_coap/docs/rfc7049.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a16db36ef75fada5d370bef3e70df56b733547df GIT binary patch literal 157813 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

    ",u+='
    ';var p=this._decodeMetadata(t.tokens2[1+(a<<1)]);u+='',u+='",u+='",u+='",u+='",u+='",u+="",u+='
    ',n'+Object(r["o"])(t.tokens1[n].type)+""),this._domNode.innerHTML=u,this._editor.layoutContentWidget(this)},t.prototype._decodeMetadata=function(e){var t=a["y"].getColorMap(),n=a["x"].getLanguageId(e),i=a["x"].getTokenType(e),o=a["x"].getFontStyle(e),r=a["x"].getForeground(e),s=a["x"].getBackground(e);return{languageIdentifier:this._modeService.getLanguageIdentifier(n),tokenType:i,fontStyle:o,foreground:t[r],background:t[s]}},t.prototype._tokenTypeToString=function(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 4:return"RegEx"}return"??"},t.prototype._fontStyleToString=function(e){var t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),0===t.length&&(t="---"),t},t.prototype._getTokensAtLine=function(e){var t=this._getStateBeforeLine(e),n=this._tokenizationSupport.tokenize(this._model.getLineContent(e),t,0),i=this._tokenizationSupport.tokenize2(this._model.getLineContent(e),t,0);return{startState:t,tokens1:n.tokens,tokens2:i.tokens,endState:n.endState}},t.prototype._getStateBeforeLine=function(e){for(var t=this._tokenizationSupport.getInitialState(),n=1;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},C=function(e,t){return function(n,i){t(n,i,e)}},S=function(){function e(e,t,n){var i=this;this.textModelResolverService=t,this.modeService=n,this.toUnhook=new h["b"],this.decorations=[],this.currentWordUnderMouse=null,this.previousPromise=null,this.editor=e;var o=new _["a"](e);this.toUnhook.add(o),this.toUnhook.add(o.onMouseMoveOrRelevantKeyDown(function(e){var t=e[0],n=e[1];i.startFindDefinition(t,Object(y["m"])(n))})),this.toUnhook.add(o.onExecute(function(e){i.isEnabled(e)&&i.gotoDefinition(e.target,e.hasSideBySideModifier).then(function(){i.removeDecorations()},function(e){i.removeDecorations(),Object(r["e"])(e)})})),this.toUnhook.add(o.onCancel(function(){i.removeDecorations(),i.currentWordUnderMouse=null}))}return e.prototype.startFindDefinition=function(e,t){var n=this;if(!(9===e.target.type&&this.decorations.length>0)){if(!this.editor.hasModel()||!this.isEnabled(e,t))return this.currentWordUnderMouse=null,void this.removeDecorations();var a=e.target.position?this.editor.getModel().getWordAtPosition(e.target.position):null;if(!a)return this.currentWordUnderMouse=null,void this.removeDecorations();var l=e.target.position;if(!this.currentWordUnderMouse||this.currentWordUnderMouse.startColumn!==a.startColumn||this.currentWordUnderMouse.endColumn!==a.endColumn||this.currentWordUnderMouse.word!==a.word){this.currentWordUnderMouse=a;var c=new m["a"](this.editor,15);this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=Object(o["f"])(function(t){return n.findDefinition(e.target,t)}),this.previousPromise.then(function(e){if(e&&e.length&&c.validate(n.editor))if(e.length>1)n.addDecoration(new u["a"](l.lineNumber,a.startColumn,l.lineNumber,a.endColumn),(new s["a"]).appendText(i["a"]("multipleResults","Click to show {0} definitions.",e.length)));else{var t=e[0];if(!t.uri)return;n.textModelResolverService.createModelReference(t.uri).then(function(e){if(e.object&&e.object.textEditorModel){var i=e.object.textEditorModel,o=t.range.startLineNumber;if(o<1||o>i.getLineCount())e.dispose();else{var r,c=n.getPreviewValue(i,o,t);r=t.originSelectionRange?u["a"].lift(t.originSelectionRange):new u["a"](l.lineNumber,a.startColumn,l.lineNumber,a.endColumn);var d=n.modeService.getModeIdByFilepathOrFirstLine(i.uri);n.addDecoration(r,(new s["a"]).appendCodeblock(d||"",c)),e.dispose()}}else e.dispose()})}else n.removeDecorations()}).then(void 0,r["e"])}}},e.prototype.getPreviewValue=function(t,n,i){var o=i.targetSelectionRange?i.range:this.getPreviewRangeBasedOnBrackets(t,n),r=o.endLineNumber-o.startLineNumber;r>=e.MAX_SOURCE_PREVIEW_LINES&&(o=this.getPreviewRangeBasedOnIndentation(t,n));var s=this.stripIndentationFromPreviewRange(t,n,o);return s},e.prototype.stripIndentationFromPreviewRange=function(e,t,n){for(var i=e.getLineFirstNonWhitespaceColumn(t),o=i,r=t+1;ri)return new u["a"](n,1,i+1,1);s=t.findNextBracket(new b["a"](c,d))}return new u["a"](n,1,i+1,1)},e.prototype.addDecoration=function(e,t){var n={range:e,options:{inlineClassName:"goto-definition-link",hoverMessage:t}};this.decorations=this.editor.deltaDecorations(this.decorations,[n])},e.prototype.removeDecorations=function(){this.decorations.length>0&&(this.decorations=this.editor.deltaDecorations(this.decorations,[]))},e.prototype.isEnabled=function(e,t){return this.editor.hasModel()&&e.isNoneOrSingleMouseDown&&6===e.target.type&&(e.hasTriggerModifier||!!t&&t.keyCodeIsTriggerKey)&&l["f"].has(this.editor.getModel())},e.prototype.findDefinition=function(e,t){var n=this.editor.getModel();return n?Object(d["b"])(n,e.position,t):Promise.resolve(null)},e.prototype.gotoDefinition=function(e,t){var n=this;this.editor.setPosition(e.position);var i=new v["DefinitionAction"](new v["DefinitionActionConfig"](t,!1,!0,!1),{alias:"",label:"",id:"",precondition:void 0});return this.editor.invokeWithinContext(function(e){return i.run(e,n.editor)})},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this.toUnhook.dispose()},e.ID="editor.contrib.gotodefinitionwithmouse",e.MAX_SOURCE_PREVIEW_LINES=8,e=w([C(1,p["a"]),C(2,a["a"])],e),e}();Object(c["h"])(S),Object(f["f"])(function(e,t){var n=e.getColor(g["n"]);n&&t.addRule(".monaco-editor .goto-definition-link { color: "+n+" !important; }")})},"82c9":function(e,t,n){"use strict";n.d(t,"c",function(){return d}),n.d(t,"e",function(){return p}),n.d(t,"b",function(){return f}),n.d(t,"d",function(){return g}),n.d(t,"f",function(){return m}),n.d(t,"g",function(){return v}),n.d(t,"h",function(){return b}),n.d(t,"a",function(){return i});var i,o=n("3d37"),r=n("32b8"),s=n("6d8e"),a=n("3742"),u=n("b589"),l=n("30db");function c(e){return!e||e.scheme!==u["b"].file||!l["c"]}function d(e){return f(e)||e.authority}function h(e,t){return e===t||Object(a["n"])(e,t)}function p(e,t,n){if(void 0===n&&(n=c(e)),e===t)return!0;if(!e||!t)return!1;if(e.scheme!==t.scheme||!h(e.authority,t.authority))return!1;var i=e.path||"/",o=t.path||"/";return i===o||n&&Object(a["n"])(i||"/",o||"/")}function f(e){return r["posix"].basename(e.path)}function g(e){if(0===e.path.length)return e;if(e.scheme===u["b"].file)return s["a"].file(r["dirname"](_(e)));var t=r["posix"].dirname(e.path);return e.authority&&t.length&&47!==t.charCodeAt(0)&&(console.error('dirname("'+e.toString+")) resulted in a relative path"),t="/"),e.with({path:t})}function m(e){for(var t,n,i=[],o=1;o1&&e.scheme===u["b"].file?"//"+e.authority+n:l["g"]&&47===n.charCodeAt(0)&&o["b"](n.charCodeAt(1))&&58===n.charCodeAt(2)?n.substr(1):n,l["g"]&&(t=t.replace(/\//g,"\\")),t}function b(e,t,n){if(void 0===n&&(n=c(e)),e.scheme===t.scheme&&h(e.authority,t.authority)){if(e.scheme===u["b"].file){var i=r["relative"](e.path,t.path);return l["g"]?o["c"](i):i}var s=e.path||"/",a=t.path||"/";if(n){for(var d=0,p=Math.min(s.length,a.length);d0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1] console.log` because `log` has been completed recently."),i["a"]("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],default:"recentlyUsed",description:i["a"]("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")},"editor.suggestFontSize":{type:"integer",default:0,minimum:0,markdownDescription:i["a"]("suggestFontSize","Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.")},"editor.suggestLineHeight":{type:"integer",default:0,minimum:0,markdownDescription:i["a"]("suggestLineHeight","Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used.")},"editor.tabCompletion":{type:"string",default:"off",enum:["on","off","onlySnippets"],enumDescriptions:[i["a"]("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),i["a"]("tabCompletion.off","Disable tab completions."),i["a"]("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:i["a"]("tabCompletion","Enables tab completions.")},"editor.suggest.filterGraceful":{type:"boolean",default:!0,description:i["a"]("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:!1,description:i["a"]("suggest.localityBonus","Controls whether sorting favours words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:!1,markdownDescription:i["a"]("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:!0,description:i["a"]("suggest.snippetsPreventQuickSuggestions","Control whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:f.contribInfo.suggest.showIcons,description:i["a"]("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.maxVisibleSuggestions":{type:"number",default:f.contribInfo.suggest.maxVisibleSuggestions,minimum:1,maximum:15,description:i["a"]("suggest.maxVisibleSuggestions","Controls how many suggestions IntelliSense will show before showing a scrollbar (maximum 15).")},"editor.suggest.filteredTypes":{type:"object",default:{keyword:!0,snippet:!0},markdownDescription:i["a"]("suggest.filtered","Controls whether some suggestion types should be filtered from IntelliSense. A list of suggestion types can be found here: https://code.visualstudio.com/docs/editor/intellisense#_types-of-completions."),properties:{method:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.method","When set to `false` IntelliSense never shows `method` suggestions.")},function:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.function","When set to `false` IntelliSense never shows `function` suggestions.")},constructor:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.constructor","When set to `false` IntelliSense never shows `constructor` suggestions.")},field:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.field","When set to `false` IntelliSense never shows `field` suggestions.")},variable:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.variable","When set to `false` IntelliSense never shows `variable` suggestions.")},class:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.class","When set to `false` IntelliSense never shows `class` suggestions.")},struct:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.struct","When set to `false` IntelliSense never shows `struct` suggestions.")},interface:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.interface","When set to `false` IntelliSense never shows `interface` suggestions.")},module:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.module","When set to `false` IntelliSense never shows `module` suggestions.")},property:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.property","When set to `false` IntelliSense never shows `property` suggestions.")},event:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.event","When set to `false` IntelliSense never shows `event` suggestions.")},operator:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.operator","When set to `false` IntelliSense never shows `operator` suggestions.")},unit:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.unit","When set to `false` IntelliSense never shows `unit` suggestions.")},value:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.value","When set to `false` IntelliSense never shows `value` suggestions.")},constant:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.constant","When set to `false` IntelliSense never shows `constant` suggestions.")},enum:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.enum","When set to `false` IntelliSense never shows `enum` suggestions.")},enumMember:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.enumMember","When set to `false` IntelliSense never shows `enumMember` suggestions.")},keyword:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.keyword","When set to `false` IntelliSense never shows `keyword` suggestions.")},text:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.text","When set to `false` IntelliSense never shows `text` suggestions.")},color:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.color","When set to `false` IntelliSense never shows `color` suggestions.")},file:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.file","When set to `false` IntelliSense never shows `file` suggestions.")},reference:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.reference","When set to `false` IntelliSense never shows `reference` suggestions.")},customcolor:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.customcolor","When set to `false` IntelliSense never shows `customcolor` suggestions.")},folder:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.folder","When set to `false` IntelliSense never shows `folder` suggestions.")},typeParameter:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.typeParameter","When set to `false` IntelliSense never shows `typeParameter` suggestions.")},snippet:{type:"boolean",default:!0,markdownDescription:i["a"]("suggest.filtered.snippet","When set to `false` IntelliSense never shows `snippet` suggestions.")}}},"editor.gotoLocation.multiple":{description:i["a"]("editor.gotoLocation.multiple","Controls the behavior of 'Go To' commands, like Go To Definition, when multiple target locations exist."),type:"string",enum:["peek","gotoAndPeek","goto"],default:f.contribInfo.gotoLocation.multiple,enumDescriptions:[i["a"]("editor.gotoLocation.multiple.peek","Show peek view of the results (default)"),i["a"]("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a peek view"),i["a"]("editor.gotoLocation.multiple.goto","Go to the primary result and enable peek-less navigation to others")]},"editor.selectionHighlight":{type:"boolean",default:f.contribInfo.selectionHighlight,description:i["a"]("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")},"editor.occurrencesHighlight":{type:"boolean",default:f.contribInfo.occurrencesHighlight,description:i["a"]("occurrencesHighlight","Controls whether the editor should highlight semantic symbol occurrences.")},"editor.overviewRulerLanes":{type:"integer",default:3,description:i["a"]("overviewRulerLanes","Controls the number of decorations that can show up at the same position in the overview ruler.")},"editor.overviewRulerBorder":{type:"boolean",default:f.viewInfo.overviewRulerBorder,description:i["a"]("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")},"editor.cursorBlinking":{type:"string",enum:["blink","smooth","phase","expand","solid"],default:u["h"](f.viewInfo.cursorBlinking),description:i["a"]("cursorBlinking","Control the cursor animation style.")},"editor.mouseWheelZoom":{type:"boolean",default:f.viewInfo.mouseWheelZoom,markdownDescription:i["a"]("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")},"editor.cursorSmoothCaretAnimation":{type:"boolean",default:f.viewInfo.cursorSmoothCaretAnimation,description:i["a"]("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")},"editor.cursorStyle":{type:"string",enum:["block","block-outline","line","line-thin","underline","underline-thin"],default:u["i"](f.viewInfo.cursorStyle),description:i["a"]("cursorStyle","Controls the cursor style.")},"editor.cursorWidth":{type:"integer",default:f.viewInfo.cursorWidth,markdownDescription:i["a"]("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")},"editor.fontLigatures":{type:"boolean",default:f.viewInfo.fontLigatures,description:i["a"]("fontLigatures","Enables/Disables font ligatures.")},"editor.hideCursorInOverviewRuler":{type:"boolean",default:f.viewInfo.hideCursorInOverviewRuler,description:i["a"]("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")},"editor.renderWhitespace":{type:"string",enum:["none","boundary","selection","all"],enumDescriptions:["",i["a"]("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),i["a"]("renderWhitespace.selection","Render whitespace characters only on selected text."),""],default:f.viewInfo.renderWhitespace,description:i["a"]("renderWhitespace","Controls how the editor should render whitespace characters.")},"editor.renderControlCharacters":{type:"boolean",default:f.viewInfo.renderControlCharacters,description:i["a"]("renderControlCharacters","Controls whether the editor should render control characters.")},"editor.renderIndentGuides":{type:"boolean",default:f.viewInfo.renderIndentGuides,description:i["a"]("renderIndentGuides","Controls whether the editor should render indent guides.")},"editor.highlightActiveIndentGuide":{type:"boolean",default:f.viewInfo.highlightActiveIndentGuide,description:i["a"]("highlightActiveIndentGuide","Controls whether the editor should highlight the active indent guide.")},"editor.renderLineHighlight":{type:"string",enum:["none","gutter","line","all"],enumDescriptions:["","","",i["a"]("renderLineHighlight.all","Highlights both the gutter and the current line.")],default:f.viewInfo.renderLineHighlight,description:i["a"]("renderLineHighlight","Controls how the editor should render the current line highlight.")},"editor.codeLens":{type:"boolean",default:f.contribInfo.codeLens,description:i["a"]("codeLens","Controls whether the editor shows CodeLens.")},"editor.folding":{type:"boolean",default:f.contribInfo.folding,description:i["a"]("folding","Controls whether the editor has code folding enabled.")},"editor.foldingStrategy":{type:"string",enum:["auto","indentation"],default:f.contribInfo.foldingStrategy,markdownDescription:i["a"]("foldingStrategy","Controls the strategy for computing folding ranges. `auto` uses a language specific folding strategy, if available. `indentation` uses the indentation based folding strategy.")},"editor.showFoldingControls":{type:"string",enum:["always","mouseover"],default:f.contribInfo.showFoldingControls,description:i["a"]("showFoldingControls","Controls whether the fold controls on the gutter are automatically hidden.")},"editor.matchBrackets":{type:"boolean",default:f.contribInfo.matchBrackets,description:i["a"]("matchBrackets","Highlight matching brackets when one of them is selected.")},"editor.glyphMargin":{type:"boolean",default:f.viewInfo.glyphMargin,description:i["a"]("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")},"editor.useTabStops":{type:"boolean",default:f.useTabStops,description:i["a"]("useTabStops","Inserting and deleting whitespace follows tab stops.")},"editor.trimAutoWhitespace":{type:"boolean",default:m.trimAutoWhitespace,description:i["a"]("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:i["a"]("stablePeek","Keep peek editors open even when double clicking their content or when hitting `Escape`.")},"editor.dragAndDrop":{type:"boolean",default:f.dragAndDrop,description:i["a"]("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")},"editor.accessibilitySupport":{type:"string",enum:["auto","on","off"],enumDescriptions:[i["a"]("accessibilitySupport.auto","The editor will use platform APIs to detect when a Screen Reader is attached."),i["a"]("accessibilitySupport.on","The editor will be permanently optimized for usage with a Screen Reader."),i["a"]("accessibilitySupport.off","The editor will never be optimized for usage with a Screen Reader.")],default:f.accessibilitySupport,description:i["a"]("accessibilitySupport","Controls whether the editor should run in a mode where it is optimized for screen readers.")},"editor.showUnused":{type:"boolean",default:f.showUnused,description:i["a"]("showUnused","Controls fading out of unused code.")},"editor.links":{type:"boolean",default:f.contribInfo.links,description:i["a"]("links","Controls whether the editor should detect links and make them clickable.")},"editor.colorDecorators":{type:"boolean",default:f.contribInfo.colorDecorators,description:i["a"]("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")},"editor.lightbulb.enabled":{type:"boolean",default:f.contribInfo.lightbulbEnabled,description:i["a"]("codeActions","Enables the code action lightbulb in the editor.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:i["a"]("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"editor.codeActionsOnSave":{type:"object",properties:{"source.organizeImports":{type:"boolean",description:i["a"]("codeActionsOnSave.organizeImports","Controls whether organize imports action should be run on file save.")},"source.fixAll":{type:"boolean",description:i["a"]("codeActionsOnSave.fixAll","Controls whether auto fix action should be run on file save.")}},additionalProperties:{type:"boolean"},default:f.contribInfo.codeActionsOnSave,description:i["a"]("codeActionsOnSave","Code action kinds to be run on save.")},"editor.codeActionsOnSaveTimeout":{type:"number",default:f.contribInfo.codeActionsOnSaveTimeout,description:i["a"]("codeActionsOnSaveTimeout","Timeout in milliseconds after which the code actions that are run on save are cancelled.")},"editor.selectionClipboard":{type:"boolean",default:f.contribInfo.selectionClipboard,description:i["a"]("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:a["c"]},"diffEditor.renderSideBySide":{type:"boolean",default:!0,description:i["a"]("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:!0,description:i["a"]("ignoreTrimWhitespace","Controls whether the diff editor shows changes in leading or trailing whitespace as diffs.")},"editor.largeFileOptimizations":{type:"boolean",default:m.largeFileOptimizations,description:i["a"]("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"diffEditor.renderIndicators":{type:"boolean",default:!0,description:i["a"]("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")}}},C=null;function S(){return null===C&&(C=Object.create(null),Object.keys(w.properties).forEach(function(e){C[e]=!0})),C}function L(e){var t=S();return t["editor."+e]||!1}function O(e){var t=S();return t["diffEditor."+e]||!1}y.registerConfiguration(w)},8899:function(e,t,n){},"89cd":function(e,t,n){"use strict";n.d(t,"a",function(){return s});var i=n("ef8e"),o=n("1569"),r=function(){function e(){this.data=new Map}return e.prototype.add=function(e,t){o["a"](i["i"](e)),o["a"](i["h"](t)),o["a"](!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)},e.prototype.as=function(e){return this.data.get(e)||null},e}(),s=new r},"8ad2":function(e,t,n){"use strict";var i=n("55f3"),o=n.n(i);o.a},"8ae8":function(e,t,n){"use strict";function i(e){return e&&"string"===typeof e.id}n.d(t,"c",function(){return i}),n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var o={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"},r={ExecuteCommand:"executeCommand",ExecuteCommands:"executeCommands",Type:"type",ReplacePreviousChar:"replacePreviousChar",CompositionStart:"compositionStart",CompositionEnd:"compositionEnd",Paste:"paste",Cut:"cut",Undo:"undo",Redo:"redo"}},"8b4e":function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return s});var i=n("dff7"),o=function(){function e(e,t,n){void 0===n&&(n=t),this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=n}return e.prototype.toLabel=function(e,t,n){if(0===t.length)return null;for(var i=[],o=0,r=t.length;o>>0,new i["c"](r,null===n?s:n)}},"8bf4":function(e,t,n){},"8c02":function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"d",function(){return h}),n.d(t,"c",function(){return f}),n.d(t,"e",function(){return v}),n.d(t,"b",function(){return _});var i=n("3742"),o=n("e6ff"),r=n("7061"),s=n("6a89"),a=n("3352"),u=999,l=function(){function e(e,t,n,i){this.searchString=e,this.isRegex=t,this.matchCase=n,this.wordSeparators=i}return e.prototype.parseSearchRequest=function(){if(""===this.searchString)return null;var e;e=this.isRegex?c(this.searchString):this.searchString.indexOf("\n")>=0;var t=null;try{t=i["k"](this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0})}catch(r){return null}if(!t)return null;var n=!this.isRegex&&!e;return n&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(n=this.matchCase),new d(t,this.wordSeparators?Object(o["a"])(this.wordSeparators):null,n?this.searchString:null)},e}();function c(e){if(!e||0===e.length)return!1;for(var t=0,n=e.length;t=n)break;var o=e.charCodeAt(t);if(110===o||114===o||87===o)return!0}}return!1}var d=function(){function e(e,t,n){this.regex=e,this.wordSeparators=t,this.simpleSearch=n}return e}();function h(e,t,n){if(!n)return new a["b"](e,null);for(var i=[],o=0,r=t.length;o>0);t[o]>=e?i=o-1:t[o+1]>=e?(n=o,i=o):n=o+1}return n+1},e}(),f=function(){function e(){}return e.findMatches=function(e,t,n,i,o){var r=t.parseSearchRequest();return r?r.regex.multiline?this._doFindMatchesMultiline(e,n,new _(r.wordSeparators,r.regex),i,o):this._doFindMatchesLineByLine(e,n,r,i,o):[]},e._getMultilineMatchRange=function(e,t,n,i,o,r){var a,u,l=0;if(i?(l=i.findLineFeedCountBeforeOffset(o),a=t+o+l):a=t+o,i){var c=i.findLineFeedCountBeforeOffset(o+r.length),d=c-l;u=a+r.length+d}else u=a+r.length;var h=e.getPositionAt(a),p=e.getPositionAt(u);return new s["a"](h.lineNumber,h.column,p.lineNumber,p.column)},e._doFindMatchesMultiline=function(e,t,n,i,o){var r,s=e.getOffsetAt(t.getStartPosition()),a=e.getValueInRange(t,1),u="\r\n"===e.getEOL()?new p(a):null,l=[],c=0;n.reset(0);while(r=n.next(a))if(l[c++]=h(this._getMultilineMatchRange(e,s,a,u,r.index,r[0]),r,i),c>=o)return l;return l},e._doFindMatchesLineByLine=function(e,t,n,i,o){var r=[],s=0;if(t.startLineNumber===t.endLineNumber){var a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return s=this._findMatchesInLine(n,a,t.startLineNumber,t.startColumn-1,s,r,i,o),r}var u=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);s=this._findMatchesInLine(n,u,t.startLineNumber,t.startColumn-1,s,r,i,o);for(var l=t.startLineNumber+1;l=l))return o;return o}var m,b=new _(e.wordSeparators,e.regex);b.reset(0);do{if(m=b.next(t),m&&(r[o++]=h(new s["a"](n,m.index+1+i,n,m.index+1+m[0].length+i),m,u),o>=l))return o}while(m);return o},e.findNextMatch=function(e,t,n,i){var o=t.parseSearchRequest();if(!o)return null;var r=new _(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindNextMatchMultiline(e,n,r,i):this._doFindNextMatchLineByLine(e,n,r,i)},e._doFindNextMatchMultiline=function(e,t,n,i){var o=new r["a"](t.lineNumber,1),a=e.getOffsetAt(o),u=e.getLineCount(),l=e.getValueInRange(new s["a"](o.lineNumber,o.column,u,e.getLineMaxColumn(u)),1),c="\r\n"===e.getEOL()?new p(l):null;n.reset(t.column-1);var d=n.next(l);return d?h(this._getMultilineMatchRange(e,a,l,c,d.index,d[0]),d,i):1!==t.lineNumber||1!==t.column?this._doFindNextMatchMultiline(e,new r["a"](1,1),n,i):null},e._doFindNextMatchLineByLine=function(e,t,n,i){var o=e.getLineCount(),r=t.lineNumber,s=e.getLineContent(r),a=this._findFirstMatchInLine(n,s,r,t.column,i);if(a)return a;for(var u=1;u<=o;u++){var l=(r+u-1)%o,c=e.getLineContent(l+1),d=this._findFirstMatchInLine(n,c,l+1,1,i);if(d)return d}return null},e._findFirstMatchInLine=function(e,t,n,i,o){e.reset(i-1);var r=e.next(t);return r?h(new s["a"](n,r.index+1,n,r.index+1+r[0].length),r,o):null},e.findPreviousMatch=function(e,t,n,i){var o=t.parseSearchRequest();if(!o)return null;var r=new _(o.wordSeparators,o.regex);return o.regex.multiline?this._doFindPreviousMatchMultiline(e,n,r,i):this._doFindPreviousMatchLineByLine(e,n,r,i)},e._doFindPreviousMatchMultiline=function(e,t,n,i){var o=this._doFindMatchesMultiline(e,new s["a"](1,1,t.lineNumber,t.column),n,i,10*u);if(o.length>0)return o[o.length-1];var a=e.getLineCount();return t.lineNumber!==a||t.column!==e.getLineMaxColumn(a)?this._doFindPreviousMatchMultiline(e,new r["a"](a,e.getLineMaxColumn(a)),n,i):null},e._doFindPreviousMatchLineByLine=function(e,t,n,i){var o=e.getLineCount(),r=t.lineNumber,s=e.getLineContent(r).substring(0,t.column-1),a=this._findLastMatchInLine(n,s,r,i);if(a)return a;for(var u=1;u<=o;u++){var l=(o+r-u-1)%o,c=e.getLineContent(l+1),d=this._findLastMatchInLine(n,c,l+1,i);if(d)return d}return null},e._findLastMatchInLine=function(e,t,n,i){var o,r=null;e.reset(0);while(o=e.next(t))r=h(new s["a"](n,o.index+1,n,o.index+1+o[0].length),o,i);return r},e}();function g(e,t,n,i,o){if(0===i)return!0;var r=t.charCodeAt(i-1);if(0!==e.get(r))return!0;if(13===r||10===r)return!0;if(o>0){var s=t.charCodeAt(i);if(0!==e.get(s))return!0}return!1}function m(e,t,n,i,o){if(i+o===n)return!0;var r=t.charCodeAt(i+o);if(0!==e.get(r))return!0;if(13===r||10===r)return!0;if(o>0){var s=t.charCodeAt(i+o-1);if(0!==e.get(s))return!0}return!1}function v(e,t,n,i,o){return g(e,t,n,i,o)&&m(e,t,n,i,o)}var _=function(){function e(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}return e.prototype.reset=function(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0},e.prototype.next=function(e){var t,n=e.length;do{if(this._prevMatchStartIndex+this._prevMatchLength===n)return null;if(t=this._searchRegex.exec(e),!t)return null;var i=t.index,o=t[0].length;if(i===this._prevMatchStartIndex&&o===this._prevMatchLength){if(0===o){this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=i,this._prevMatchLength=o,!this._wordSeparators||v(this._wordSeparators,e,n,i,o))return t}while(t);return null},e}()},9146:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"monaco-view",attrs:{id:"monaco-"+e.id}})},o=[],r=n("75fc"),s=n("33f9");n("28a5"),n("a481"),n("4917"),n("ac6a"),n("7f7f");function a(e,t){return e}function u(e,t,n){var i=n.word,o=[];return e.length&&(o=e.map(function(e){return{label:e.name,kind:e.type?s["languages"].CompletionItemKind[e.type]:s["languages"].CompletionItemKind.Function,documentation:e.documentation,insertText:a(e.name,i),detail:e.detail||"EMQX",range:t}})),o}function l(e){var t=e.name,n=e.default,i=e.valueType;return i&&(t="".concat(t,": ").concat(i)),n?"".concat(t,", value: ").concat(n):t}function c(e,t){var n=[];return t.forEach(function(t){var i=t.name;t.name.match(/\$events\//)&&(i=t.name.split("/")[1].replace('"',"")),e===i&&n.push({value:l(t)},{value:t.documentation})}),n}var d={name:"Monaco",props:{id:{type:String,required:!0},value:{type:String,required:!0},lang:{type:String,required:!0},disabled:{type:Boolean,default:!1},warp:{type:Boolean,default:!1},provider:{type:Array,default:function(){return[]}}},data:function(){return{editor:null,providerDisposeID:null,hoverDisposeID:null,sqlHints:[{name:"SELECT",type:"Keyword",detail:"SQL",documentation:"SQL selector."},{name:"FROM",type:"Keyword",detail:"SQL",documentation:"What event."},{name:"WHERE",type:"Keyword",detail:"SQL",documentation:"Filters a result set to include only records that fulfill a specified condition. "},{name:"and",type:"Keyword",detail:"SQL",documentation:"Operator."},{name:"or",type:"Keyword",detail:"SQL",documentation:"Operator."}]}},watch:{value:function(e){this.editor&&e!==this.editor.getValue()&&this.editor.setValue(e)},lang:function(){this.editor&&(this.editor.dispose(),this.initEditor())}},created:function(){var e=this;window.onresize=function(){e.editor&&e.editor.layout()},this.provider.length&&(this.registerCustomHintsProvider(),this.registerCustomHoverProvider())},mounted:function(){this.initEditor()},beforeDestroy:function(){this.editor&&(this.editor.getModel().dispose(),this.editor.dispose(),this.editor=null),this.providerDisposeID&&this.providerDisposeID.dispose(),this.hoverDisposeID&&this.hoverDisposeID.dispose()},methods:{initEditor:function(){var e=this,t="monaco-".concat(this.id),n={value:this.value,language:this.lang,readOnly:this.disabled,fontSize:14,automaticLayout:!0,scrollBeyondLastLine:!1,lineNumbersMinChars:2,theme:"vs",minimap:{enabled:!1},hover:{delay:500,enabled:!0}},i=this.beforeMonacoCreate(n);this.editor=s["editor"].create(document.getElementById(t),i),this.editor.onDidChangeModelContent(function(t){var n=e.editor.getValue();n!==e.value&&(e.$emit("input",n,t),e.$emit("change",n,t))}),this.editor.addCommand(s["KeyMod"].CtrlCmd|s["KeyCode"].KEY_S,function(){e.$emit("qucik-save",e.value)}),this.editor.getModel().updateOptions({tabSize:2})},beforeMonacoCreate:function(e){if(this.warp){var t={wordWrap:"on",wrappingIndent:"indent"};Object.assign(e,t)}return e},getHints:function(){var e=Object(r["a"])(this.provider);return"sql"===this.lang&&e.push.apply(e,Object(r["a"])(this.sqlHints)),e},registerCustomHintsProvider:function(){var e=this;this.providerDisposeID=s["languages"].registerCompletionItemProvider(this.lang,{provideCompletionItems:function(t,n){var i=t.getWordUntilPosition(n),o=e.getHints(i),r={startLineNumber:n.lineNumber,endLineNumber:n.lineNumber,startColumn:i.startColumn,endColumn:i.endColumn};return{suggestions:u(o,r,i)}},triggerCharacters:[" "]})},registerCustomHoverProvider:function(){var e=this;s["languages"].register({id:this.lang}),this.hoverDisposeID=s["languages"].registerHoverProvider(this.lang,{provideHover:function(t,n){if(!t.getWordAtPosition(n))return{};var i=t.getWordAtPosition(n),o=i.word;return{contents:c(o,e.provider)}}})}}},h=d,p=(n("8ad2"),n("2877")),f=Object(p["a"])(h,i,o,!1,null,null,null);t["a"]=f.exports},"918c":function(e,t,n){"use strict";n.d(t,"i",function(){return a}),n.d(t,"j",function(){return u}),n.d(t,"g",function(){return d}),n.d(t,"f",function(){return h}),n.d(t,"h",function(){return f}),n.d(t,"a",function(){return g}),n.d(t,"k",function(){return m}),n.d(t,"b",function(){return _}),n.d(t,"m",function(){return b}),n.d(t,"e",function(){return y}),n.d(t,"c",function(){return w}),n.d(t,"d",function(){return C}),n.d(t,"l",function(){return S}),n.d(t,"n",function(){return O}),n.d(t,"o",function(){return x}),n.d(t,"p",function(){return N}),n.d(t,"r",function(){return D}),n.d(t,"q",function(){return k});var i=n("dff7"),o=n("ceb8"),r=n("303e"),s=n("b7d0"),a=Object(r["Kb"])("editor.lineHighlightBackground",{dark:null,light:null,hc:null},i["a"]("lineHighlight","Background color for the highlight of line at the cursor position.")),u=Object(r["Kb"])("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hc:"#f38518"},i["a"]("lineHighlightBorderBox","Background color for the border around the line at the cursor position.")),l=Object(r["Kb"])("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hc:null},i["a"]("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0),c=Object(r["Kb"])("editor.rangeHighlightBorder",{dark:null,light:null,hc:r["b"]},i["a"]("rangeHighlightBorder","Background color of the border around highlighted ranges."),!0),d=Object(r["Kb"])("editorCursor.foreground",{dark:"#AEAFAD",light:o["a"].black,hc:o["a"].white},i["a"]("caret","Color of the editor cursor.")),h=Object(r["Kb"])("editorCursor.background",null,i["a"]("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),p=Object(r["Kb"])("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hc:"#e3e4e229"},i["a"]("editorWhitespaces","Color of whitespace characters in the editor.")),f=Object(r["Kb"])("editorIndentGuide.background",{dark:p,light:p,hc:p},i["a"]("editorIndentGuides","Color of the editor indentation guides.")),g=Object(r["Kb"])("editorIndentGuide.activeBackground",{dark:p,light:p,hc:p},i["a"]("editorActiveIndentGuide","Color of the active editor indentation guides.")),m=Object(r["Kb"])("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hc:o["a"].white},i["a"]("editorLineNumbers","Color of editor line numbers.")),v=Object(r["Kb"])("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hc:r["b"]},i["a"]("editorActiveLineNumber","Color of editor active line number"),!1,i["a"]("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.")),_=Object(r["Kb"])("editorLineNumber.activeForeground",{dark:v,light:v,hc:v},i["a"]("editorActiveLineNumber","Color of editor active line number")),b=Object(r["Kb"])("editorRuler.foreground",{dark:"#5A5A5A",light:o["a"].lightgrey,hc:o["a"].white},i["a"]("editorRuler","Color of the editor rulers.")),y=Object(r["Kb"])("editorCodeLens.foreground",{dark:"#999999",light:"#999999",hc:"#999999"},i["a"]("editorCodeLensForeground","Foreground color of editor code lenses")),w=Object(r["Kb"])("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hc:"#0064001a"},i["a"]("editorBracketMatchBackground","Background color behind matching brackets")),C=Object(r["Kb"])("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hc:r["e"]},i["a"]("editorBracketMatchBorder","Color for matching brackets boxes")),S=Object(r["Kb"])("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hc:"#7f7f7f4d"},i["a"]("editorOverviewRulerBorder","Color of the overview ruler border.")),L=Object(r["Kb"])("editorGutter.background",{dark:r["o"],light:r["o"],hc:r["o"]},i["a"]("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.")),O=Object(r["Kb"])("editorUnnecessaryCode.border",{dark:null,light:null,hc:o["a"].fromHex("#fff").transparent(.8)},i["a"]("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor.")),x=Object(r["Kb"])("editorUnnecessaryCode.opacity",{dark:o["a"].fromHex("#000a"),light:o["a"].fromHex("#0007"),hc:null},i["a"]("unnecessaryCodeOpacity","Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.")),N=Object(r["Kb"])("editorOverviewRuler.errorForeground",{dark:new o["a"](new o["c"](255,18,18,.7)),light:new o["a"](new o["c"](255,18,18,.7)),hc:new o["a"](new o["c"](255,50,50,1))},i["a"]("overviewRuleError","Overview ruler marker color for errors.")),D=Object(r["Kb"])("editorOverviewRuler.warningForeground",{dark:r["M"],light:r["M"],hc:r["L"]},i["a"]("overviewRuleWarning","Overview ruler marker color for warnings.")),k=Object(r["Kb"])("editorOverviewRuler.infoForeground",{dark:r["G"],light:r["G"],hc:r["F"]},i["a"]("overviewRuleInfo","Overview ruler marker color for infos."));Object(s["f"])(function(e,t){var n=e.getColor(r["o"]);n&&t.addRule(".monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: "+n+"; }");var i=e.getColor(r["x"]);i&&t.addRule(".monaco-editor, .monaco-editor .inputarea.ime-input { color: "+i+"; }");var o=e.getColor(L);o&&t.addRule(".monaco-editor .margin { background-color: "+o+"; }");var s=e.getColor(l);s&&t.addRule(".monaco-editor .rangeHighlight { background-color: "+s+"; }");var a=e.getColor(c);a&&t.addRule(".monaco-editor .rangeHighlight { border: 1px "+("hc"===e.type?"dotted":"solid")+" "+a+"; }");var u=e.getColor(p);u&&t.addRule(".vs-whitespace { color: "+u+" !important; }")})},"92a6":function(e,t,n){"use strict";n.r(t);var i=n("5fe7"),o=n("ceb8"),r=n("fdcc");function s(e,t){switch(void 0===t&&(t=0),typeof e){case"object":return null===e?a(349,t):Array.isArray(e)?c(e,t):d(e,t);case"string":return l(e,t);case"boolean":return u(e,t);case"number":return a(e,t);case"undefined":return a(0,937);default:return a(0,617)}}function a(e,t){return(t<<5)-t+e|0}function u(e,t){return a(e?433:863,t)}function l(e,t){t=a(149417,t);for(var n=0,i=e.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},C=function(e,t){return function(n,i){t(n,i,e)}},S=500,L=function(e){function t(t,n,i){var o=e.call(this)||this;return o._editor=t,o._codeEditorService=n,o._configurationService=i,o._localToDispose=o._register(new h["b"]),o._decorationsIds=[],o._colorDatas=new Map,o._colorDecoratorIds=[],o._decorationsTypes=new Set,o._register(t.onDidChangeModel(function(e){o._isEnabled=o.isEnabled(),o.onModelChanged()})),o._register(t.onDidChangeModelLanguage(function(e){return o.onModelChanged()})),o._register(v["c"].onDidChange(function(e){return o.onModelChanged()})),o._register(t.onDidChangeConfiguration(function(e){var t=o._isEnabled;o._isEnabled=o.isEnabled(),t!==o._isEnabled&&(o._isEnabled?o.onModelChanged():o.removeAllDecorations())})),o._timeoutTimer=null,o._computePromise=null,o._isEnabled=o.isEnabled(),o.onModelChanged(),o}return y(t,e),t.prototype.isEnabled=function(){var e=this._editor.getModel();if(!e)return!1;var t=e.getLanguageIdentifier(),n=this._configurationService.getValue(t.language);if(n){var i=n["colorDecorators"];if(i&&void 0!==i["enable"]&&!i["enable"])return i["enable"]}return this._editor.getConfiguration().contribInfo.colorDecorators},t.prototype.getId=function(){return t.ID},t.get=function(e){return e.getContribution(this.ID)},t.prototype.dispose=function(){this.stop(),this.removeAllDecorations(),e.prototype.dispose.call(this)},t.prototype.onModelChanged=function(){var e=this;if(this.stop(),this._isEnabled){var n=this._editor.getModel();n&&v["c"].has(n)&&(this._localToDispose.add(this._editor.onDidChangeModelContent(function(n){e._timeoutTimer||(e._timeoutTimer=new i["e"],e._timeoutTimer.cancelAndSet(function(){e._timeoutTimer=null,e.beginCompute()},t.RECOMPUTE_TIME))})),this.beginCompute())}},t.prototype.beginCompute=function(){var e=this;this._computePromise=Object(i["f"])(function(t){var n=e._editor.getModel();return n?Object(_["b"])(n,t):Promise.resolve([])}),this._computePromise.then(function(t){e.updateDecorations(t),e.updateColorDecorators(t),e._computePromise=null},r["e"])},t.prototype.stop=function(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()},t.prototype.updateDecorations=function(e){var t=this,n=e.map(function(e){return{range:{startLineNumber:e.colorInfo.range.startLineNumber,startColumn:e.colorInfo.range.startColumn,endLineNumber:e.colorInfo.range.endLineNumber,endColumn:e.colorInfo.range.endColumn},options:m["a"].EMPTY}});this._decorationsIds=this._editor.deltaDecorations(this._decorationsIds,n),this._colorDatas=new Map,this._decorationsIds.forEach(function(n,i){return t._colorDatas.set(n,e[i])})},t.prototype.updateColorDecorators=function(e){for(var t=this,n=[],i={},r=0;r=0&&m0&&o){var D=function(e){o(e),e.children.forEach(D)};w.forEach(D)}var k=C["d"].map(C["d"].fromArray(w),O);return this._onDidSplice.fire({insertedNodes:_,deletedNodes:w}),k},e.prototype.rerender=function(e){if(0===e.length)throw new Error("Invalid tree location");var t=this.getTreeNodeWithListIndex(e),n=t.node,i=t.listIndex,o=t.revealed;o&&this.list.splice(i,1,[n])},e.prototype.getListIndex=function(e){var t=this.getTreeNodeWithListIndex(e),n=t.listIndex,i=t.visible,o=t.revealed;return i&&o?n:-1},e.prototype.getListRenderCount=function(e){return this.getTreeNode(e).renderNodeCount},e.prototype.isCollapsed=function(e){return this.getTreeNode(e).collapsed},e.prototype.setCollapsed=function(e,t,n){var i=this,o=this.getTreeNode(e);return"undefined"===typeof t&&(t=!o.collapsed),this.eventBufferer.bufferEvents(function(){return i._setCollapsed(e,t,n)})},e.prototype._setCollapsed=function(e,t,n){var i=this.getTreeNodeWithListIndex(e),o=i.node,r=i.listIndex,s=i.revealed,a=this._setListNodeCollapsed(o,r,s,t,n||!1);if(o!==this.root&&this.autoExpandSingleChildren&&!t&&!n){for(var u=-1,l=0;l-1){u=-1;break}u=l}}u>-1&&this._setCollapsed(e.concat([u]),!1,!1)}return a},e.prototype._setListNodeCollapsed=function(e,t,n,i,o){var r=this._setNodeCollapsed(e,i,o,!1);if(!n||!e.visible)return r;var s=e.renderNodeCount,a=this.updateNodeAfterCollapseChange(e),u=s-(-1===t?0:1);return this.list.splice(t+1,u,a.slice(1)),r},e.prototype._setNodeCollapsed=function(e,t,n,i){var o=e.collapsible&&e.collapsed!==t;if(e.collapsible&&(e.collapsed=t,o&&this._onDidChangeCollapseState.fire({node:e,deep:i})),n)for(var r=0,s=e.children;r0,a.visibleChildrenCount=h,a.visible=2===u?h>0:1===u,a.visible?a.collapsed||(a.renderNodeCount=p):(a.renderNodeCount=0,i&&o.pop()),r&&r(a),a},e.prototype.updateNodeAfterCollapseChange=function(e){var t=e.renderNodeCount,n=[];return this._updateNodeAfterCollapseChange(e,n),this._updateAncestorsRenderNodeCount(e.parent,n.length-t),n},e.prototype._updateNodeAfterCollapseChange=function(e,t){if(!1===e.visible)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(var n=0,i=e.children;nt.children.length)throw new Error("Invalid tree location");return this.getTreeNode(i,t.children[n])},e.prototype.getTreeNodeWithListIndex=function(e){if(0===e.length)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};var t=this.getParentNodeWithListIndex(e),n=t.parentNode,i=t.listIndex,o=t.revealed,r=t.visible,s=e[e.length-1];if(s<0||s>n.children.length)throw new Error("Invalid tree location");var a=n.children[s];return{node:a,listIndex:i,revealed:o,visible:r&&a.visible}},e.prototype.getParentNodeWithListIndex=function(e,t,n,i,o){void 0===t&&(t=this.root),void 0===n&&(n=0),void 0===i&&(i=!0),void 0===o&&(o=!0);var r=e[0],s=e.slice(1);if(r<0||r>t.children.length)throw new Error("Invalid tree location");for(var a=0;a0&&!e.collapsed?n.add(e):e.parent&&n.add(e.parent)}),this.activeIndentNodes.forEach(function(e){n.has(e)||t.renderedIndentGuides.forEach(e,function(e){return Object(i["I"])(e,"active")})}),n.forEach(function(e){t.activeIndentNodes.has(e)||t.renderedIndentGuides.forEach(e,function(e){return Object(i["f"])(e,"active")})}),this.activeIndentNodes=n}},e.prototype.dispose=function(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),this.disposables=Object(r["f"])(this.disposables)},e.DefaultIndent=8,e}(),B=function(){function e(e,t,n){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=n,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=[],e.onWillRefilter(this.reset,this,this.disposables)}return Object.defineProperty(e.prototype,"totalCount",{get:function(){return this._totalCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"matchCount",{get:function(){return this._matchCount},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{set:function(e){this._pattern=e,this._lowercasePattern=e.toLowerCase()},enumerable:!0,configurable:!0}),e.prototype.filter=function(e,t){if(this._filter){var n=this._filter.filter(e,t);if(this.tree.options.simpleKeyboardNavigation)return n;var i=void 0;if(i="boolean"===typeof n?n?1:0:S(n)?L(n.visibility):n,0===i)return!1}if(this._totalCount++,this.tree.options.simpleKeyboardNavigation||!this._pattern)return this._matchCount++,{data:w["a"].Default,visibility:!0};var o=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),r=o&&o.toString();if("undefined"===typeof r)return{data:w["a"].Default,visibility:!0};var s=Object(w["d"])(this._pattern,this._lowercasePattern,0,r,r.toLowerCase(),0,!0);return s?(this._matchCount++,{data:s,visibility:!0}):this.tree.options.filterOnType?2:{data:w["a"].Default,visibility:!0}},e.prototype.reset=function(){this._totalCount=0,this._matchCount=0},e.prototype.dispose=function(){this.disposables=Object(r["f"])(this.disposables)},e}(),H=function(){function e(e,t,n,o,r){this.tree=e,this.view=n,this.filter=o,this.keyboardNavigationLabelProvider=r,this._enabled=!1,this._pattern="",this._empty=!1,this._onDidChangeEmptyState=new g["a"],this.positionClassName="ne",this.automaticKeyboardNavigation=!0,this.triggered=!1,this._onDidChangePattern=new g["a"],this.enabledDisposables=[],this.disposables=[],this.domNode=Object(i["a"])(".monaco-list-type-filter."+this.positionClassName),this.domNode.draggable=!0,Object(y["a"])(this.domNode,"dragstart")(this.onDragStart,this,this.disposables),this.messageDomNode=Object(i["m"])(n.getHTMLElement(),Object(i["a"])(".monaco-list-type-filter-message")),this.labelDomNode=Object(i["m"])(this.domNode,Object(i["a"])("span.label"));var a=Object(i["m"])(this.domNode,Object(i["a"])(".controls"));this._filterOnType=!!e.options.filterOnType,this.filterOnTypeDomNode=Object(i["m"])(a,Object(i["a"])("input.filter")),this.filterOnTypeDomNode.type="checkbox",this.filterOnTypeDomNode.checked=this._filterOnType,this.filterOnTypeDomNode.tabIndex=-1,this.updateFilterOnTypeTitle(),Object(y["a"])(this.filterOnTypeDomNode,"input")(this.onDidChangeFilterOnType,this,this.disposables),this.clearDomNode=Object(i["m"])(a,Object(i["a"])("button.clear")),this.clearDomNode.tabIndex=-1,this.clearDomNode.title=Object(s["a"])("clear","Clear"),this.keyboardNavigationEventFilter=e.options.keyboardNavigationEventFilter,t.onDidSplice(this.onDidSpliceModel,this,this.disposables),this.updateOptions(e.options)}return Object.defineProperty(e.prototype,"enabled",{get:function(){return this._enabled},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pattern",{get:function(){return this._pattern},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"filterOnType",{get:function(){return this._filterOnType},enumerable:!0,configurable:!0}),e.prototype.updateOptions=function(e){e.simpleKeyboardNavigation?this.disable():this.enable(),"undefined"!==typeof e.filterOnType&&(this._filterOnType=!!e.filterOnType,this.filterOnTypeDomNode.checked=this._filterOnType),"undefined"!==typeof e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation),this.tree.refilter(),this.render(),this.automaticKeyboardNavigation||this.onEventOrInput("")},e.prototype.enable=function(){var e=this;if(!this._enabled){var t=this.keyboardNavigationLabelProvider.mightProducePrintableCharacter?function(t){return e.keyboardNavigationLabelProvider.mightProducePrintableCharacter(t)}:function(e){return Object(o["f"])(e)},n=g["b"].chain(Object(y["a"])(this.view.getHTMLElement(),"keydown")).filter(function(t){return!z(t.target)||t.target===e.filterOnTypeDomNode}).map(function(e){return new m["a"](e)}).filter(this.keyboardNavigationEventFilter||function(){return!0}).filter(function(){return e.automaticKeyboardNavigation||e.triggered}).filter(function(n){return t(n)||(e.pattern.length>0||e.triggered)&&(9===n.keyCode||1===n.keyCode)&&!n.altKey&&!n.ctrlKey&&!n.metaKey||1===n.keyCode&&(D["d"]?n.altKey&&!n.metaKey:n.ctrlKey)&&!n.shiftKey}).forEach(function(e){e.stopPropagation(),e.preventDefault()}).event,i=Object(y["a"])(this.clearDomNode,"click");g["b"].chain(g["b"].any(n,i)).event(this.onEventOrInput,this,this.enabledDisposables),this.filter.pattern="",this.tree.refilter(),this.render(),this._enabled=!0,this.triggered=!1}},e.prototype.disable=function(){this._enabled&&(this.domNode.remove(),this.enabledDisposables=Object(r["f"])(this.enabledDisposables),this.tree.refilter(),this.render(),this._enabled=!1,this.triggered=!1)},e.prototype.onEventOrInput=function(e){"string"===typeof e?this.onInput(e):e instanceof MouseEvent||9===e.keyCode||1===e.keyCode&&(D["d"]?e.altKey:e.ctrlKey)?this.onInput(""):1===e.keyCode?this.onInput(0===this.pattern.length?"":this.pattern.substr(0,this.pattern.length-1)):this.onInput(this.pattern+e.browserEvent.key)},e.prototype.onInput=function(e){var t=this.view.getHTMLElement();e&&!this.domNode.parentElement?t.append(this.domNode):!e&&this.domNode.parentElement&&(this.domNode.remove(),this.tree.domFocus()),this._pattern=e,this._onDidChangePattern.fire(e),this.filter.pattern=e,this.tree.refilter(),e&&this.tree.focusNext(0,!0,void 0,function(e){return!w["a"].isDefault(e.filterData)});var n=this.tree.getFocus();if(n.length>0){var i=n[0];null===this.tree.getRelativeTop(i)&&this.tree.reveal(i,.5)}this.render(),e||(this.triggered=!1)},e.prototype.onDragStart=function(){var e=this,t=this.view.getHTMLElement(),n=Object(i["x"])(t).left,o=t.clientWidth,s=o/2,a=this.domNode.clientWidth,u=[],l=this.positionClassName,c=function(){switch(l){case"nw":e.domNode.style.top="4px",e.domNode.style.left="4px";break;case"ne":e.domNode.style.top="4px",e.domNode.style.left=o-a-6+"px";break}},d=function(e){e.preventDefault();var t=e.screenX-n;e.dataTransfer&&(e.dataTransfer.dropEffect="none"),l=t0&&0===this.filter.matchCount;this.pattern&&this.tree.options.filterOnType&&e?(this.messageDomNode.textContent=Object(s["a"])("empty","No elements found"),this._empty=!0):(this.messageDomNode.innerHTML="",this._empty=!1),Object(i["R"])(this.domNode,"no-matches",e),this.domNode.title=Object(s["a"])("found","Matched {0} out of {1} elements",this.filter.matchCount,this.filter.totalCount),this.labelDomNode.textContent=this.pattern.length>16?"…"+this.pattern.substr(this.pattern.length-16):this.pattern,this._onDidChangeEmptyState.fire(this._empty)},e.prototype.shouldAllowFocus=function(e){return!(this.enabled&&this.pattern&&!this.filterOnType)||(this.filter.totalCount>0&&this.filter.matchCount<=1||!w["a"].isDefault(e.filterData))},e.prototype.dispose=function(){this.disable(),this._onDidChangePattern.dispose(),this.disposables=Object(r["f"])(this.disposables)},e}();function z(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName}function U(e){return{elements:e.elements.map(function(e){return e.element}),browserEvent:e.browserEvent}}function K(e,t){t(e),e.children.forEach(function(e){return K(e,t)})}var q=function(){function e(e){this.identityProvider=e,this.nodes=[],this._onDidChange=new g["a"],this.onDidChange=this._onDidChange.event}return Object.defineProperty(e.prototype,"nodeSet",{get:function(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet},enumerable:!0,configurable:!0}),e.prototype.set=function(e,t){Object(_["g"])(this.nodes,e)||this._set(e,!1,t)},e.prototype._set=function(e,t,n){if(this.nodes=e.slice(),this.elements=void 0,this._nodeSet=void 0,!t){var i=this;this._onDidChange.fire({get elements(){return i.get()},browserEvent:n})}},e.prototype.get=function(){return this.elements||(this.elements=this.nodes.map(function(e){return e.element})),this.elements.slice()},e.prototype.getNodes=function(){return this.nodes},e.prototype.has=function(e){return this.nodeSet.has(e)},e.prototype.onDidModelSplice=function(e){var t=this,n=e.insertedNodes,i=e.deletedNodes;if(!this.identityProvider){var o=this.createNodeSet(),r=function(e){return o.delete(e)};return i.forEach(function(e){return K(e,r)}),void this.set(Object(k["e"])(o))}var s=new Set,a=function(e){return s.add(t.identityProvider.getId(e.element).toString())};i.forEach(function(e){return K(e,a)});var u=new Map,l=function(e){return u.set(t.identityProvider.getId(e.element).toString(),e)};n.forEach(function(e){return K(e,l)});for(var c=[],d=!0,h=0,p=this.nodes;h0&&e.prototype.setFocus.call(this,Object(_["f"])(e.prototype.getFocus.call(this).concat(r))),s.length>0&&e.prototype.setSelection.call(this,Object(_["f"])(e.prototype.getSelection.call(this).concat(s)))}},t.prototype.setFocus=function(t,n,i){var o=this;void 0===i&&(i=!1),e.prototype.setFocus.call(this,t,n),i||this.focusTrait.set(t.map(function(e){return o.element(e)}),n)},t.prototype.setSelection=function(t,n,i){var o=this;void 0===i&&(i=!1),e.prototype.setSelection.call(this,t,n),i||this.selectionTrait.set(t.map(function(e){return o.element(e)}),n)},t}(o["b"]),Y=function(){function e(e,t,n,o){var r,s=this;void 0===o&&(o={}),this._options=o,this.eventBufferer=new g["c"],this.disposables=[],this._onWillRefilter=new g["a"],this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new g["a"];var a,u=new j(t),l=new g["f"],c=new g["f"],d=new W(c.event);if(this.disposables.push(d),this.renderers=n.map(function(e){return new V(e,l.event,d,o)}),(r=this.disposables).push.apply(r,this.renderers),o.keyboardNavigationLabelProvider&&(a=new B(this,o.keyboardNavigationLabelProvider,o.filter),o=T({},o,{filter:a}),this.disposables.push(a)),this.focus=new q(o.identityProvider),this.selection=new q(o.identityProvider),this.view=new Z(e,u,this.renderers,this.focus,this.selection,T({},A(function(){return s.model},o),{tree:this})),this.model=this.createModel(this.view,o),l.input=this.model.onDidChangeCollapseState,this.model.onDidSplice(function(e){s.focus.onDidModelSplice(e),s.selection.onDidModelSplice(e)},null,this.disposables),c.input=g["b"].map(g["b"].any(this.focus.onDidChange,this.selection.onDidChange,this.model.onDidSplice),function(){return s.focus.getNodes().concat(s.selection.getNodes())}),!1!==o.keyboardSupport){var h=g["b"].chain(this.view.onKeyDown).filter(function(e){return!z(e.target)}).map(function(e){return new m["a"](e)});h.filter(function(e){return 15===e.keyCode}).on(this.onLeftArrow,this,this.disposables),h.filter(function(e){return 17===e.keyCode}).on(this.onRightArrow,this,this.disposables),h.filter(function(e){return 10===e.keyCode}).on(this.onSpace,this,this.disposables)}o.keyboardNavigationLabelProvider&&(this.typeFilterController=new H(this,this.model,this.view,a,o.keyboardNavigationLabelProvider),this.focusNavigationFilter=function(e){return s.typeFilterController.shouldAllowFocus(e)},this.disposables.push(this.typeFilterController)),this.styleElement=Object(i["s"])(this.view.getHTMLElement()),Object(i["R"])(this.getHTMLElement(),"always",this._options.renderIndentGuides===F.Always)}return Object.defineProperty(e.prototype,"onDidChangeFocus",{get:function(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidChangeSelection",{get:function(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidOpen",{get:function(){return g["b"].map(this.view.onDidOpen,U)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidFocus",{get:function(){return this.view.onDidFocus},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidChangeCollapseState",{get:function(){return this.model.onDidChangeCollapseState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openOnSingleClick",{get:function(){return"undefined"===typeof this._options.openOnSingleClick||this._options.openOnSingleClick},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"expandOnlyOnTwistieClick",{get:function(){return"undefined"!==typeof this._options.expandOnlyOnTwistieClick&&this._options.expandOnlyOnTwistieClick},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidDispose",{get:function(){return this.view.onDidDispose},enumerable:!0,configurable:!0}),e.prototype.updateOptions=function(e){void 0===e&&(e={}),this._options=T({},this._options,e);for(var t=0,n=this.renderers;t .indent-guide, .monaco-list"+t+".always .monaco-tl-indent > .indent-guide { border-color: "+e.treeIndentGuidesStroke.transparent(.4)+"; }"),n.push(".monaco-list"+t+" .monaco-tl-indent > .indent-guide.active { border-color: "+e.treeIndentGuidesStroke+"; }"));var i=n.join("\n");i!==this.styleElement.innerHTML&&(this.styleElement.innerHTML=i),this.view.style(e)},e.prototype.getNode=function(e){return this.model.getNode(e)},e.prototype.collapse=function(e,t){return void 0===t&&(t=!1),this.model.setCollapsed(e,!0,t)},e.prototype.expand=function(e,t){return void 0===t&&(t=!1),this.model.setCollapsed(e,!1,t)},e.prototype.isCollapsed=function(e){return this.model.isCollapsed(e)},e.prototype.refilter=function(){this._onWillRefilter.fire(void 0),this.model.refilter()},e.prototype.setSelection=function(e,t){var n=this,i=e.map(function(e){return n.model.getNode(e)});this.selection.set(i,t);var o=e.map(function(e){return n.model.getListIndex(e)}).filter(function(e){return e>-1});this.view.setSelection(o,t,!0)},e.prototype.getSelection=function(){return this.selection.get()},e.prototype.setFocus=function(e,t){var n=this,i=e.map(function(e){return n.model.getNode(e)});this.focus.set(i,t);var o=e.map(function(e){return n.model.getListIndex(e)}).filter(function(e){return e>-1});this.view.setFocus(o,t,!0)},e.prototype.focusNext=function(e,t,n,i){void 0===e&&(e=1),void 0===t&&(t=!1),void 0===i&&(i=this.focusNavigationFilter),this.view.focusNext(e,t,n,i)},e.prototype.getFocus=function(){return this.focus.get()},e.prototype.reveal=function(e,t){this.model.expandTo(e);var n=this.model.getListIndex(e);-1!==n&&this.view.reveal(n,t)},e.prototype.getRelativeTop=function(e){var t=this.model.getListIndex(e);return-1===t?null:this.view.getRelativeTop(t)},e.prototype.onLeftArrow=function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n),o=this.model.setCollapsed(i,!0);if(!o){var r=this.model.getParentNodeLocation(i);if(null===r)return;var s=this.model.getListIndex(r);this.view.reveal(s),this.view.setFocus([s])}}},e.prototype.onRightArrow=function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n),o=this.model.setCollapsed(i,!1);if(!o){if(!n.children.some(function(e){return e.visible}))return;var r=this.view.getFocus()[0],s=r+1;this.view.reveal(s),this.view.setFocus([s])}}},e.prototype.onSpace=function(e){e.preventDefault(),e.stopPropagation();var t=this.view.getFocusedElements();if(0!==t.length){var n=t[0],i=this.model.getNodeLocation(n),o=e.browserEvent.altKey;this.model.setCollapsed(i,void 0,o)}},e.prototype.dispose=function(){this.disposables=Object(r["f"])(this.disposables),this.view.dispose()},e}(),X=function(){return X=Object.assign||function(e){for(var t,n=1,i=arguments.length;n0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]-1)&&e.collapsedByDefault,e.collapsedByDefault=void 0,{element:e,children:e.hasChildren?C["d"].map(C["d"].fromArray(e.children),function(e){return fe(e,t)}):[],collapsible:e.hasChildren,collapsed:n}}function ge(e,t){t(e),e.children.forEach(function(e){return ge(e,t)})}var me=function(){function e(e,t,n,i,o){var r=this;void 0===o&&(o={}),this.dataSource=i,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new g["a"],this._onDidChangeNodeSlowState=new g["a"],this.disposables=[],this.identityProvider=o.identityProvider,this.autoExpandSingleChildren="undefined"!==typeof o.autoExpandSingleChildren&&o.autoExpandSingleChildren,this.sorter=o.sorter,this.collapseByDefault=o.collapseByDefault;var s=new j(t),a=n.map(function(e){return new le(e,r._onDidChangeNodeSlowState.event)}),u=pe(o)||{};this.tree=new J(e,s,a,u),this.root=oe({element:void 0,parent:null,hasChildren:!0}),this.identityProvider&&(this.root=te({},this.root,{id:null})),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}return Object.defineProperty(e.prototype,"onDidChangeFocus",{get:function(){return g["b"].map(this.tree.onDidChangeFocus,ce)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidChangeSelection",{get:function(){return g["b"].map(this.tree.onDidChangeSelection,ce)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidOpen",{get:function(){return g["b"].map(this.tree.onDidOpen,ce)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidFocus",{get:function(){return this.tree.onDidFocus},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onDidDispose",{get:function(){return this.tree.onDidDispose},enumerable:!0,configurable:!0}),e.prototype.updateOptions=function(e){void 0===e&&(e={}),this.tree.updateOptions(e)},e.prototype.getHTMLElement=function(){return this.tree.getHTMLElement()},Object.defineProperty(e.prototype,"scrollTop",{get:function(){return this.tree.scrollTop},set:function(e){this.tree.scrollTop=e},enumerable:!0,configurable:!0}),e.prototype.domFocus=function(){this.tree.domFocus()},e.prototype.layout=function(e,t){this.tree.layout(e,t)},e.prototype.style=function(e){this.tree.style(e)},e.prototype.getInput=function(){return this.root.element},e.prototype.setInput=function(e,t){return ne(this,void 0,void 0,function(){var n;return ie(this,function(i){switch(i.label){case 0:return this.refreshPromises.forEach(function(e){return e.cancel()}),this.refreshPromises.clear(),this.root.element=e,n=t&&{viewState:t,focus:[],selection:[]},[4,this.updateChildren(e,!0,n)];case 1:return i.sent(),n&&(this.tree.setFocus(n.focus),this.tree.setSelection(n.selection)),t&&"number"===typeof t.scrollTop&&(this.scrollTop=t.scrollTop),[2]}})})},e.prototype.updateChildren=function(e,t,n){return void 0===e&&(e=this.root.element),void 0===t&&(t=!0),ne(this,void 0,void 0,function(){return ie(this,function(i){switch(i.label){case 0:if("undefined"===typeof this.root.element)throw new Error("Tree input not set");return this.root.loading?[4,this.subTreeRefreshPromises.get(this.root)]:[3,3];case 1:return i.sent(),[4,g["b"].toPromise(this._onDidRender.event)];case 2:i.sent(),i.label=3;case 3:return[4,this.refreshAndRenderNode(this.getDataNode(e),t,ae.Refresh,n)];case 4:return i.sent(),[2]}})})},e.prototype.rerender=function(e){if(void 0!==e&&e!==this.root.element){var t=this.getDataNode(e);this.tree.rerender(t)}else this.tree.rerender()},e.prototype.collapse=function(e,t){void 0===t&&(t=!1);var n=this.getDataNode(e);return this.tree.collapse(n===this.root?null:n,t)},e.prototype.expand=function(e,t){return void 0===t&&(t=!1),ne(this,void 0,void 0,function(){var n,i;return ie(this,function(o){switch(o.label){case 0:if("undefined"===typeof this.root.element)throw new Error("Tree input not set");return this.root.loading?[4,this.subTreeRefreshPromises.get(this.root)]:[3,3];case 1:return o.sent(),[4,g["b"].toPromise(this._onDidRender.event)];case 2:o.sent(),o.label=3;case 3:return n=this.getDataNode(e),n===this.root||n.loading||this.tree.isCollapsed(n)?(i=this.tree.expand(n===this.root?null:n,t),n.loading?[4,this.subTreeRefreshPromises.get(n)]:[3,6]):[2,!1];case 4:return o.sent(),[4,g["b"].toPromise(this._onDidRender.event)];case 5:o.sent(),o.label=6;case 6:return[2,i]}})})},e.prototype.setSelection=function(e,t){var n=this,i=e.map(function(e){return n.getDataNode(e)});this.tree.setSelection(i,t)},e.prototype.getSelection=function(){var e=this.tree.getSelection();return e.map(function(e){return e.element})},e.prototype.setFocus=function(e,t){var n=this,i=e.map(function(e){return n.getDataNode(e)});this.tree.setFocus(i,t)},e.prototype.getFocus=function(){var e=this.tree.getFocus();return e.map(function(e){return e.element})},e.prototype.reveal=function(e,t){this.tree.reveal(this.getDataNode(e),t)},e.prototype.getDataNode=function(e){var t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new Error("Data tree node not found: "+e);return t},e.prototype.refreshAndRenderNode=function(e,t,n,i){return ne(this,void 0,void 0,function(){var o,r;return ie(this,function(s){switch(s.label){case 0:return[4,this.refreshNode(e,t,i)];case 1:return s.sent(),this.render(e,i),e!==this.root&&this.autoExpandSingleChildren&&n===ae.Expand?(o=this.tree.getNode(e),r=o.children.filter(function(e){return e.visible}),1!==r.length?[3,3]:[4,this.tree.expand(r[0].element,!1)]):[3,3];case 2:s.sent(),s.label=3;case 3:return[2]}})})},e.prototype.refreshNode=function(e,t,n){return ne(this,void 0,void 0,function(){var i,o=this;return ie(this,function(r){switch(r.label){case 0:if(this.subTreeRefreshPromises.forEach(function(r,s){!i&&se(s,e)&&(i=r.then(function(){return o.refreshNode(e,t,n)}))}),i)return[2,i];i=this.doRefreshSubTree(e,t,n),this.subTreeRefreshPromises.set(e,i),r.label=1;case 1:return r.trys.push([1,,3,4]),[4,i];case 2:return r.sent(),[3,4];case 3:return this.subTreeRefreshPromises.delete(e),[7];case 4:return[2]}})})},e.prototype.doRefreshSubTree=function(e,t,n){return ne(this,void 0,void 0,function(){var i,o=this;return ie(this,function(r){switch(r.label){case 0:e.loading=!0,r.label=1;case 1:return r.trys.push([1,,4,5]),[4,this.doRefreshNode(e,t,n)];case 2:return i=r.sent(),e.stale=!1,[4,Promise.all(i.map(function(e){return o.doRefreshSubTree(e,t,n)}))];case 3:return r.sent(),[3,5];case 4:return e.loading=!1,[7];case 5:return[2]}})})},e.prototype.doRefreshNode=function(e,t,n){return ne(this,void 0,void 0,function(){var i,o,r,s,a=this;return ie(this,function(u){switch(u.label){case 0:e.hasChildren=!!this.dataSource.hasChildren(e.element),e.hasChildren?(o=Object(N["l"])(800),o.then(function(){e.slow=!0,a._onDidChangeNodeSlowState.fire(e)},function(e){return null}),i=this.doGetChildren(e).finally(function(){return o.cancel()})):i=Promise.resolve([]),u.label=1;case 1:return u.trys.push([1,3,4,5]),[4,i];case 2:return r=u.sent(),[2,this.setChildren(e,r,t,n)];case 3:if(s=u.sent(),e!==this.root&&this.tree.collapse(e===this.root?null:e),Object(ee["d"])(s))return[2,[]];throw s;case 4:return e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e)),[7];case 5:return[2]}})})},e.prototype.doGetChildren=function(e){var t=this,n=this.refreshPromises.get(e);return n||(n=Object(N["f"])(function(){return ne(t,void 0,void 0,function(){var t;return ie(this,function(n){switch(n.label){case 0:return[4,this.dataSource.getChildren(e.element)];case 1:return t=n.sent(),this.sorter&&t.sort(this.sorter.compare.bind(this.sorter)),[2,t]}})})}),this.refreshPromises.set(e,n),n.finally(function(){return t.refreshPromises.delete(e)}))},e.prototype._onDidChangeCollapseState=function(e){var t=e.node,n=e.deep;!t.collapsed&&t.element.stale&&(n?this.collapse(t.element.element):this.refreshAndRenderNode(t.element,!1,ae.Expand).catch(ee["e"]))},e.prototype.setChildren=function(e,t,n,i){var o,r=this;if(0===e.children.length&&0===t.length)return[];for(var s=new Map,a=new Map,u=0,l=e.children;u-1&&i.focus.push(h),i&&i.viewState.selection&&i.viewState.selection.indexOf(l)>-1&&i.selection.push(h),i&&i.viewState.expanded&&i.viewState.expanded.indexOf(l)>-1?d.push(h):o&&r.collapseByDefault&&!r.collapseByDefault(t)&&(h.collapsedByDefault=!1,d.push(h)),h}),p=0,f=Object(k["e"])(s);p=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Le=function(e,t){return function(n,i){t(n,i,e)}},Oe=Object(c["c"])("listService"),xe=function(){function e(e){this.lists=[],this._lastFocusedWidget=void 0}return Object.defineProperty(e.prototype,"lastFocusedList",{get:function(){return this._lastFocusedWidget},enumerable:!0,configurable:!0}),e.prototype.register=function(e,t){var n=this;if(this.lists.some(function(t){return t.widget===e}))throw new Error("Cannot register the same widget multiple times");var i={widget:e,extraContextKeys:t};return this.lists.push(i),e.getHTMLElement()===document.activeElement&&(this._lastFocusedWidget=e),Object(r["e"])(e.onDidFocus(function(){return n._lastFocusedWidget=e}),Object(r["h"])(function(){return n.lists.splice(n.lists.indexOf(i),1)}),e.onDidDispose(function(){n.lists=n.lists.filter(function(e){return e!==i}),n._lastFocusedWidget===e&&(n._lastFocusedWidget=void 0)}))},e=Se([Le(0,l["c"])],e),e}(),Ne=new l["d"]("listFocus",!0),De=new l["d"]("listSupportsMultiselect",!0),ke=new l["d"]("listHasSelectionOrFocus",!1),Ie=new l["d"]("listDoubleSelection",!1),Ee=new l["d"]("listMultiSelection",!1),Me=new l["d"]("listSupportsKeyboardNavigation",!0),Te="listAutomaticKeyboardNavigation",Pe=new l["d"](Te,!0),Re=!1;function Ae(e,t){var n=e.createScoped(t.getHTMLElement());return Ne.bindTo(n),n}var Fe="workbench.list.multiSelectModifier",je="workbench.list.openMode",We="workbench.list.horizontalScrolling",Ve="workbench.list.keyboardNavigation",Be="workbench.list.automaticKeyboardNavigation",He="workbench.tree.indent",ze="workbench.tree.renderIndentGuides";function Ue(e){return Object(a["f"])(e,We,"workbench.tree.horizontalScrolling")}function Ke(e){return"alt"===e.getValue(Fe)}function qe(e){return"doubleClick"!==e.getValue(je)}var Ge,Ze=function(e){function t(t){var n=e.call(this)||this;return n.configurationService=t,n.useAltAsMultipleSelectionModifier=Ke(t),n.registerListeners(),n}return we(t,e),t.prototype.registerListeners=function(){var e=this;this._register(this.configurationService.onDidChangeConfiguration(function(t){t.affectsConfiguration(Fe)&&(e.useAltAsMultipleSelectionModifier=Ke(e.configurationService))}))},t.prototype.isSelectionSingleChangeEvent=function(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:Object(o["e"])(e)},t.prototype.isSelectionRangeChangeEvent=function(e){return Object(o["d"])(e)},t}(r["a"]),Ye=function(e){function t(t,n){var i=e.call(this)||this;return i.configurationService=t,i.existingOpenController=n,i.openOnSingleClick=qe(t),i.registerListeners(),i}return we(t,e),t.prototype.registerListeners=function(){var e=this;this._register(this.configurationService.onDidChangeConfiguration(function(t){t.affectsConfiguration(je)&&(e.openOnSingleClick=qe(e.configurationService))}))},t.prototype.shouldOpen=function(e){if(e instanceof MouseEvent){var t=0===e.button,n=2===e.detail;return!(t&&!this.openOnSingleClick&&!n)&&(!(!t&&1!==e.button)&&(!this.existingOpenController||this.existingOpenController.shouldOpen(e)))}return!this.existingOpenController||this.existingOpenController.shouldOpen(e)},t}(r["a"]);function Xe(e,t,n){var i=new r["b"],o=Ce({},e);if(!1!==e.multipleSelectionSupport&&!e.multipleSelectionController){var s=new Ze(t);o.multipleSelectionController=s,i.add(s)}var a=new Ye(t,e.openController);if(o.openController=a,i.add(a),e.keyboardNavigationLabelProvider){var u=e.keyboardNavigationLabelProvider;o.keyboardNavigationLabelProvider={getKeyboardNavigationLabel:function(e){return u.getKeyboardNavigationLabel(e)},mightProducePrintableCharacter:function(e){return n.mightProducePrintableCharacter(e)}}}return[o,i]}function $e(){return Ge||(Ge=Object(i["s"])()),Ge}function Qe(e,t){var n=!1;return function(i){if(n)return n=!1,!1;var o=t.softDispatch(i,e);return o&&o.enterChord?(n=!0,!1):(n=!1,!0)}}(function(e){function t(t,n,i,o,r,s,a,u,l,c){var d=this,h=et(t,o,r,a,u,l,c),p=h.options,f=h.getAutomaticKeyboardNavigation,g=h.disposable;return d=e.call(this,t,n,i,p)||this,d.disposables.push(g),d.internals=new tt(d,p,f,r,s,a,u,c),d.disposables.push(d.internals),d}we(t,e),t=Se([Le(4,l["c"]),Le(5,Oe),Le(6,f["c"]),Le(7,a["a"]),Le(8,d["a"]),Le(9,be["b"])],t)})(J),function(e){function t(t,n,i,o,r,s,a,u,l,c,d){var h=this,p=et(t,r,s,u,l,c,d),f=p.options,g=p.getAutomaticKeyboardNavigation,m=p.disposable;return h=e.call(this,t,n,i,o,f)||this,h.disposables.push(m),h.internals=new tt(h,f,g,s,a,u,l,d),h.disposables.push(h.internals),h}we(t,e),t=Se([Le(5,l["c"]),Le(6,Oe),Le(7,f["c"]),Le(8,a["a"]),Le(9,d["a"]),Le(10,be["b"])],t)}(_e);var Je=function(e){function t(t,n,i,o,r,s,a,u,l,c,d){var h=this,p=et(t,r,s,u,l,c,d),f=p.options,g=p.getAutomaticKeyboardNavigation,m=p.disposable;return h=e.call(this,t,n,i,o,f)||this,h.disposables.push(m),h.internals=new tt(h,f,g,s,a,u,l,d),h.disposables.push(h.internals),h}return we(t,e),Object.defineProperty(t.prototype,"contextKeyService",{get:function(){return this.internals.contextKeyService},enumerable:!0,configurable:!0}),t=Se([Le(5,l["c"]),Le(6,Oe),Le(7,f["c"]),Le(8,a["a"]),Le(9,d["a"]),Le(10,be["b"])],t),t}(me);function et(e,t,n,i,r,s,a){Me.bindTo(n),Re||(Pe.bindTo(n),Re=!0);var u=function(){var e=n.getContextKeyValue(Te);return e&&(e=r.getValue(Be)),e},l=2===a.getAccessibilitySupport(),c=l?"simple":r.getValue(Ve),d="undefined"!==typeof t.horizontalScrolling?t.horizontalScrolling:Ue(r),h=qe(r),f=Xe(t,r,s),g=f[0],m=f[1],v=t.additionalScrollHeight;return{getAutomaticKeyboardNavigation:u,disposable:m,options:Ce({keyboardSupport:!1,styleController:new o["a"]($e())},Object(p["e"])(i.getTheme(),p["f"]),g,{indent:r.getValue(He),renderIndentGuides:r.getValue(ze),automaticKeyboardNavigation:u(),simpleKeyboardNavigation:"simple"===c,filterOnType:"filter"===c,horizontalScrolling:d,openOnSingleClick:h,keyboardNavigationEventFilter:Qe(e,s),additionalScrollHeight:v})}}var tt=function(){function e(e,t,n,i,o,r,s,a){var u=this;this.disposables=[],this.contextKeyService=Ae(i,e);var l=De.bindTo(this.contextKeyService);l.set(!(!1===t.multipleSelectionSupport)),this.hasSelectionOrFocus=ke.bindTo(this.contextKeyService),this.hasDoubleSelection=Ie.bindTo(this.contextKeyService),this.hasMultiSelection=Ee.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=Ke(s);var c=new Set;c.add(Te);var d=function(){var t=2===a.getAccessibilitySupport(),n=t?"simple":s.getValue(Ve);e.updateOptions({simpleKeyboardNavigation:"simple"===n,filterOnType:"filter"===n})};this.disposables.push(this.contextKeyService,o.register(e),Object(p["b"])(e,r),e.onDidChangeSelection(function(){var t=e.getSelection(),n=e.getFocus();u.hasSelectionOrFocus.set(t.length>0||n.length>0),u.hasMultiSelection.set(t.length>1),u.hasDoubleSelection.set(2===t.length)}),e.onDidChangeFocus(function(){var t=e.getSelection(),n=e.getFocus();u.hasSelectionOrFocus.set(t.length>0||n.length>0)}),s.onDidChangeConfiguration(function(t){if(t.affectsConfiguration(je)&&e.updateOptions({openOnSingleClick:qe(s)}),t.affectsConfiguration(Fe)&&(u._useAltAsMultipleSelectionModifier=Ke(s)),t.affectsConfiguration(He)){var i=s.getValue(He);e.updateOptions({indent:i})}if(t.affectsConfiguration(ze)){var o=s.getValue(ze);e.updateOptions({renderIndentGuides:o})}t.affectsConfiguration(Ve)&&d(),t.affectsConfiguration(Be)&&e.updateOptions({automaticKeyboardNavigation:n()})}),this.contextKeyService.onDidChangeContext(function(t){t.affectsSome(c)&&e.updateOptions({automaticKeyboardNavigation:n()})}),a.onDidChangeAccessibilitySupport(function(){return d()}))}return e.prototype.dispose=function(){this.disposables=Object(r["f"])(this.disposables)},e=Se([Le(3,l["c"]),Le(4,Oe),Le(5,f["c"]),Le(6,a["a"]),Le(7,be["b"])],e),e}(),nt=h["a"].as(u["a"].Configuration);nt.registerConfiguration({id:"workbench",order:7,title:Object(s["a"])("workbenchConfigurationTitle","Workbench"),type:"object",properties:(ye={},ye[Fe]={type:"string",enum:["ctrlCmd","alt"],enumDescriptions:[Object(s["a"])("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),Object(s["a"])("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:Object(s["a"])({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},ye[je]={type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:Object(s["a"])({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). For parents with children in trees, this setting will control if a single click expands the parent or a double click. Note that some trees and lists might choose to ignore this setting if it is not applicable. ")},ye[We]={type:"boolean",default:!1,description:Object(s["a"])("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench.")},ye["workbench.tree.horizontalScrolling"]={type:"boolean",default:!1,description:Object(s["a"])("tree horizontalScrolling setting","Controls whether trees support horizontal scrolling in the workbench."),deprecationMessage:Object(s["a"])("deprecated","This setting is deprecated, please use '{0}' instead.",We)},ye[He]={type:"number",default:8,minimum:0,maximum:40,description:Object(s["a"])("tree indent setting","Controls tree indentation in pixels.")},ye[ze]={type:"string",enum:["none","onHover","always"],default:"onHover",description:Object(s["a"])("render tree indent guides","Controls whether the tree should render indent guides.")},ye[Ve]={type:"string",enum:["simple","highlight","filter"],enumDescriptions:[Object(s["a"])("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),Object(s["a"])("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),Object(s["a"])("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:Object(s["a"])("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.")},ye[Be]={type:"boolean",default:!0,markdownDescription:Object(s["a"])("automatic keyboard navigation setting","Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.")},ye)})},"94a7":function(e,t,n){},"958f":function(e,t,n){"use strict";n.r(t);var i,o=n("dff7"),r=n("308f"),s=n("a666"),a=n("4fc3"),u=n("b400"),l=n("6a89"),c=n("b2cc"),d=n("b7d0"),h=n("c101"),p=(n("fe86"),n("11f7")),f=n("303e"),g=n("ceb8"),m=n("1898"),v=n("debc"),_=n("e8e3"),b=n("e5aa"),y=n("82c9"),w=n("7121"),C=n("4b76"),S=encodeURIComponent(''),O=encodeURIComponent(''),N=encodeURIComponent(''),k=encodeURIComponent(''),E=encodeURIComponent(''),T=encodeURIComponent('');function R(e,t){return"."+i.className(e).split(" ").join(".")+' { background: url("data:image/svg+xml,'+i.getSVGData(e,t)+'") center center no-repeat; height: 16px; width: 16px; }'}(function(e){function t(e,t){switch(e){case C["a"].Ignore:var n=t.type===d["d"]?g["a"].fromHex("#75BEFF"):g["a"].fromHex("#007ACC");return t.type===d["d"]?E+encodeURIComponent(n.toString())+M:T+encodeURIComponent(n.toString())+P;case C["a"].Info:var i=t.type===d["d"]?g["a"].fromHex("#007ACC"):g["a"].fromHex("#75BEFF");return t.type===d["d"]?E+encodeURIComponent(i.toString())+M:T+encodeURIComponent(i.toString())+P;case C["a"].Warning:var o=t.type===d["d"]?g["a"].fromHex("#DDB100"):g["a"].fromHex("#fc0");return t.type===d["d"]?N+encodeURIComponent(o.toString())+D:k+encodeURIComponent(o.toString())+I;case C["a"].Error:var r=t.type===d["d"]?g["a"].fromHex("#A1260D"):g["a"].fromHex("#F48771");return t.type===d["d"]?S+encodeURIComponent(r.toString())+L:O+encodeURIComponent(r.toString())+x}return""}function n(e){switch(e){case C["a"].Ignore:return"severity-icon severity-ignore";case C["a"].Info:return"severity-icon severity-info";case C["a"].Warning:return"severity-icon severity-warning";case C["a"].Error:return"severity-icon severity-error"}return""}e.getSVGData=t,e.className=n})(i||(i={})),Object(d["f"])(function(e,t){t.addRule(R(C["a"].Error,e)),t.addRule(R(C["a"].Warning,e)),t.addRule(R(C["a"].Info,e)),t.addRule(R(C["a"].Ignore,e))});var A=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),F=function(){function e(e,t,n){var i=this;this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=[],this._editor=t;var o=document.createElement("div");o.className="descriptioncontainer",o.setAttribute("aria-live","assertive"),o.setAttribute("role","alert"),this._messageBlock=document.createElement("div"),p["f"](this._messageBlock,"message"),o.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),o.appendChild(this._relatedBlock),this._disposables.push(p["k"](this._relatedBlock,"click",function(e){e.preventDefault();var t=i._relatedDiagnostics.get(e.target);t&&n(t)})),this._scrollable=new m["b"](o,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:3,verticalScrollbarSize:3}),e.appendChild(this._scrollable.getDomNode()),this._disposables.push(this._scrollable.onScroll(function(e){o.style.left="-"+e.scrollLeft+"px",o.style.top="-"+e.scrollTop+"px"})),this._disposables.push(this._scrollable)}return e.prototype.dispose=function(){Object(s["f"])(this._disposables)},e.prototype.update=function(e){var t=e.source,n=e.message,i=e.relatedInformation,o=e.code,r=n.split(/\r\n|\r|\n/g);this._lines=r.length,this._longestLineLength=0;for(var s=0,a=r;s1?o["a"]("problems","{0} of {1} problems",n,r):o["a"]("change","{0} of {1} problem",n,r);this.setTitle(Object(y["b"])(d.uri),h)}this._icon.className=i.className(u["c"].toSeverity(this._severity)),this.editor.revealPositionInCenter(c,0)},t.prototype.updateMarker=function(e){this._container.classList.remove("stale"),this._message.update(e)},t.prototype.showStale=function(){this._container.classList.add("stale"),this._relayout()},t.prototype._doLayoutBody=function(t,n){e.prototype._doLayoutBody.call(this,t,n),this._heightInPixel=t,this._message.layout(t,n),this._container.style.height=t+"px"},t.prototype._onWidth=function(e){this._message.layout(this._heightInPixel,e)},t.prototype._relayout=function(){e.prototype._relayout.call(this,this.computeRequiredHeight())},t.prototype.computeRequiredHeight=function(){return 3+this._message.getHeightInLines()},t}(b["c"]),W=Object(f["Eb"])(f["q"],f["p"]),V=Object(f["Eb"])(f["M"],f["L"]),B=Object(f["Eb"])(f["G"],f["F"]),H=Object(f["Kb"])("editorMarkerNavigationError.background",{dark:W,light:W,hc:W},o["a"]("editorMarkerNavigationError","Editor marker navigation widget error color.")),z=Object(f["Kb"])("editorMarkerNavigationWarning.background",{dark:V,light:V,hc:V},o["a"]("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),U=Object(f["Kb"])("editorMarkerNavigationInfo.background",{dark:B,light:B,hc:B},o["a"]("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),K=Object(f["Kb"])("editorMarkerNavigation.background",{dark:"#2D2D30",light:g["a"].white,hc:"#0C141F"},o["a"]("editorMarkerNavigationBackground","Editor marker navigation widget background."));Object(d["f"])(function(e,t){var n=e.getColor(f["Ub"]);n&&t.addRule(".monaco-editor .marker-widget a { color: "+n+"; }")});var q=n("3742"),G=n("5717"),Z=n("fdcc"),Y=n("7e32"),X=n("f070"),$=n("6dec");n.d(t,"MarkerController",function(){return oe}),n.d(t,"NextMarkerAction",function(){return se});var Q=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),J=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},ee=function(e,t){return function(n,i){t(n,i,e)}},te=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},ne=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0?this._markers[this._nextIdx]:void 0;this._markers=e||[],this._markers.sort(re.compareMarker),this._nextIdx=t?Math.max(-1,Object(_["c"])(this._markers,t,re.compareMarker)):-1,this._onMarkerSetChanged.fire(this)},e.prototype.withoutWatchingEditorPosition=function(e){this._ignoreSelectionChange=!0;try{e()}finally{this._ignoreSelectionChange=!1}},e.prototype._initIdx=function(e){for(var t=!1,n=this._editor.getPosition(),i=0;i0?this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length:i=!0),n!==this._nextIdx){var o=this._markers[this._nextIdx];this._onCurrentMarkerChanged.fire(o)}return i},e.prototype.canNavigate=function(){return this._markers.length>0},e.prototype.findMarkerAtPosition=function(e){for(var t=0,n=this._markers;t0;n--){var r=e.charCodeAt(n-1);if(47===r||92===r)break}t=e.substr(n)}var s=o.indexOf(t);return-1!==s?i[s]:null};a.basenames=o,a.patterns=i,a.allBasenames=o;var u=e.filter(function(e){return!e.basenames});return u.push(a),u}},"9c1d":function(e,t,n){"use strict";n("96b9"),n("b768");var i=n("dff7"),o=n("11f7"),r=n("fdcc"),s=n("308f"),a=n("a666"),u=n("b589"),l=n("1ddc"),c=n("b2cc"),d=n("5717"),h=n("6653"),p=n("a60f"),f=n("0f70"),g=n("5d28"),m=n("5fe7"),v=n("30db"),_=n("00a3"),b=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),y=function(){function e(e,t){this.x=e,this.y=t}return e.prototype.toClientCoordinates=function(){return new w(this.x-o["e"].scrollX,this.y-o["e"].scrollY)},e}(),w=function(){function e(e,t){this.clientX=e,this.clientY=t}return e.prototype.toPageCoordinates=function(){return new y(this.clientX+o["e"].scrollX,this.clientY+o["e"].scrollY)},e}(),C=function(){function e(e,t,n,i){this.x=e,this.y=t,this.width=n,this.height=i}return e}();function S(e){var t=o["x"](e);return new C(t.left,t.top,t.width,t.height)}var L=function(e){function t(t,n){var i=e.call(this,t)||this;return i.pos=new y(i.posx,i.posy),i.editorPos=S(n),i}return b(t,e),t}(g["b"]),O=function(){function e(e){this._editorViewDomNode=e}return e.prototype._create=function(e){return new L(e,this._editorViewDomNode)},e.prototype.onContextMenu=function(e,t){var n=this;return o["h"](e,"contextmenu",function(e){t(n._create(e))})},e.prototype.onMouseUp=function(e,t){var n=this;return o["h"](e,"mouseup",function(e){t(n._create(e))})},e.prototype.onMouseDown=function(e,t){var n=this;return o["h"](e,"mousedown",function(e){t(n._create(e))})},e.prototype.onMouseLeave=function(e,t){var n=this;return o["i"](e,function(e){t(n._create(e))})},e.prototype.onMouseMoveThrottled=function(e,t,n,i){var r=this,s=function(e,t){return n(e,r._create(t))};return o["j"](e,"mousemove",t,s,i)},e}(),x=function(e){function t(t){var n=e.call(this)||this;return n._editorViewDomNode=t,n._globalMouseMoveMonitor=n._register(new _["a"]),n._keydownListener=null,n}return b(t,e),t.prototype.startMonitoring=function(e,t,n){var i=this;this._keydownListener=o["k"](document,"keydown",function(e){var t=e.toKeybinding();t.isModifierKey()||i._globalMouseMoveMonitor.stopMonitoring(!0)},!0);var r=function(t,n){return e(t,new L(n,i._editorViewDomNode))};this._globalMouseMoveMonitor.startMonitoring(r,t,function(){i._keydownListener.dispose(),n()})},t}(a["a"]),N=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),D=function(e){function t(){var t=e.call(this)||this;return t._shouldRender=!0,t}return N(t,e),t.prototype.shouldRender=function(){return this._shouldRender},t.prototype.forceShouldRender=function(){this._shouldRender=!0},t.prototype.setShouldRender=function(){this._shouldRender=!0},t.prototype.onDidRender=function(){this._shouldRender=!1},t.prototype.onConfigurationChanged=function(e){return!1},t.prototype.onCursorStateChanged=function(e){return!1},t.prototype.onDecorationsChanged=function(e){return!1},t.prototype.onFlushed=function(e){return!1},t.prototype.onFocusChanged=function(e){return!1},t.prototype.onLanguageConfigurationChanged=function(e){return!1},t.prototype.onLineMappingChanged=function(e){return!1},t.prototype.onLinesChanged=function(e){return!1},t.prototype.onLinesDeleted=function(e){return!1},t.prototype.onLinesInserted=function(e){return!1},t.prototype.onRevealRangeRequest=function(e){return!1},t.prototype.onScrollChanged=function(e){return!1},t.prototype.onTokensChanged=function(e){return!1},t.prototype.onTokensColorsChanged=function(e){return!1},t.prototype.onZonesChanged=function(e){return!1},t.prototype.onThemeChanged=function(e){return!1},t.prototype.handleEvents=function(e){for(var t=!1,n=0,i=e.length;n=u?o=Math.max(o,u+l-i):(t[n++]=new A(i,o),i=u,o=l)}return t[n++]=new A(i,o),t},e._createHorizontalRangesFromClientRects=function(e,t){if(!e||0===e.length)return null;for(var n=[],i=0,o=e.length;iu)return null;t=Math.min(u,Math.max(a,t)),i=Math.min(u,Math.max(a,i)),t!==i&&i>0&&0===o&&(i--,o=1073741824);var l=e.children[t].firstChild,c=e.children[i].firstChild;if(l&&c||(!l&&0===n&&t>0&&(l=e.children[t-1].firstChild,n=1073741824),!c&&0===o&&i>0&&(c=e.children[i-1].firstChild,o=1073741824)),!l||!c)return null;n=Math.min(l.textContent.length,Math.max(0,n)),o=Math.min(c.textContent.length,Math.max(0,o));var d=this._readClientRects(l,n,c,o,s);return this._createHorizontalRangesFromClientRects(d,r)},e}(),W=n("7416"),V=n("6da2"),B=n("b7d0"),H=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),z=function(){return!!v["e"]||!(v["c"]||f["i"]||f["l"])}(),U=f["g"],K=function(){function e(e,t){this._domNode=e,this._clientRectDeltaLeft=0,this._clientRectDeltaLeftRead=!1,this.endNode=t}return Object.defineProperty(e.prototype,"clientRectDeltaLeft",{get:function(){return this._clientRectDeltaLeftRead||(this._clientRectDeltaLeftRead=!0,this._clientRectDeltaLeft=this._domNode.getBoundingClientRect().left),this._clientRectDeltaLeft},enumerable:!0,configurable:!0}),e}(),q=function(){function e(e,t){this.themeType=t,this.renderWhitespace=e.editor.viewInfo.renderWhitespace,this.renderControlCharacters=e.editor.viewInfo.renderControlCharacters,this.spaceWidth=e.editor.fontInfo.spaceWidth,this.useMonospaceOptimizations=e.editor.fontInfo.isMonospace&&!e.editor.viewInfo.disableMonospaceOptimizations,this.canUseHalfwidthRightwardsArrow=e.editor.fontInfo.canUseHalfwidthRightwardsArrow,this.lineHeight=e.editor.lineHeight,this.stopRenderingLineAfter=e.editor.viewInfo.stopRenderingLineAfter,this.fontLigatures=e.editor.viewInfo.fontLigatures}return e.prototype.equals=function(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures},e}(),G=function(){function e(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}return e.prototype.getDomNode=function(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null},e.prototype.setDomNode=function(e){if(!this._renderedViewLine)throw new Error("I have no rendered view line to set the dom node to...");this._renderedViewLine.domNode=Object(h["b"])(e)},e.prototype.onContentChanged=function(){this._isMaybeInvalid=!0},e.prototype.onTokensChanged=function(){this._isMaybeInvalid=!0},e.prototype.onDecorationsChanged=function(){this._isMaybeInvalid=!0},e.prototype.onOptionsChanged=function(e){this._isMaybeInvalid=!0,this._options=e},e.prototype.onSelectionChanged=function(){return!(!U&&this._options.themeType!==B["b"]&&"selection"!==this._options.renderWhitespace)&&(this._isMaybeInvalid=!0,!0)},e.prototype.renderLine=function(t,n,i,o){if(!1===this._isMaybeInvalid)return!1;this._isMaybeInvalid=!1;var r=i.getViewLineRenderingData(t),s=this._options,a=W["a"].filter(r.inlineDecorations,t,r.minColumn,r.maxColumn),u=null;if(U||s.themeType===B["b"]||"selection"===this._options.renderWhitespace)for(var l=i.selections,c=0,d=l;ct)){var p=h.startLineNumber===t?h.startColumn:r.minColumn,f=h.endLineNumber===t?h.endColumn:r.maxColumn;p');var m=Object(V["d"])(g,o);o.appendASCIIString("");var v=null;return z&&r.isBasicASCII&&s.useMonospaceOptimizations&&0===m.containsForeignElements&&r.content.length<300&&g.lineTokens.getCount()<100&&(v=new Z(this._renderedViewLine?this._renderedViewLine.domNode:null,g,m.characterMapping)),v||(v=$(this._renderedViewLine?this._renderedViewLine.domNode:null,g,m.characterMapping,m.containsRTL,m.containsForeignElements)),this._renderedViewLine=v,!0},e.prototype.layoutLine=function(e,t){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))},e.prototype.getWidth=function(){return this._renderedViewLine?this._renderedViewLine.getWidth():0},e.prototype.getWidthIsFast=function(){return!this._renderedViewLine||this._renderedViewLine.getWidthIsFast()},e.prototype.getVisibleRangesForRange=function(e,t,n){if(!this._renderedViewLine)return null;e|=0,t|=0,e=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,e)),t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t));var i=0|this._renderedViewLine.input.stopRenderingLineAfter;return-1!==i&&e>i&&t>i?null:(-1!==i&&e>i&&(e=i),-1!==i&&t>i&&(t=i),this._renderedViewLine.getVisibleRangesForRange(e,t,n))},e.prototype.getColumnOfNodeOffset=function(e,t,n){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t,n):1},e.CLASS_NAME="view-line",e}(),Z=function(){function e(e,t,n){this.domNode=e,this.input=t,this._characterMapping=n,this._charWidth=t.spaceWidth}return e.prototype.getWidth=function(){return this._getCharPosition(this._characterMapping.length)},e.prototype.getWidthIsFast=function(){return!0},e.prototype.getVisibleRangesForRange=function(e,t,n){var i=this._getCharPosition(e),o=this._getCharPosition(t);return[new A(i,o-i)]},e.prototype._getCharPosition=function(e){var t=this._characterMapping.getAbsoluteOffsets();return 0===t.length?0:Math.round(this._charWidth*t[e-1])},e.prototype.getColumnOfNodeOffset=function(e,t,n){var i=t.textContent.length,o=-1;while(t)t=t.previousSibling,o++;var r=this._characterMapping.partDataToCharOffset(o,i,n);return r+1},e}(),Y=function(){function e(e,t,n,i,o){if(this.domNode=e,this.input=t,this._characterMapping=n,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=o,this._cachedWidth=-1,this._pixelOffsetCache=null,!i||0===this._characterMapping.length){this._pixelOffsetCache=new Int32Array(Math.max(2,this._characterMapping.length+1));for(var r=0,s=this._characterMapping.length;r<=s;r++)this._pixelOffsetCache[r]=-1}}return e.prototype._getReadingTarget=function(){return this.domNode.domNode.firstChild},e.prototype.getWidth=function(){return-1===this._cachedWidth&&(this._cachedWidth=this._getReadingTarget().offsetWidth),this._cachedWidth},e.prototype.getWidthIsFast=function(){return-1!==this._cachedWidth},e.prototype.getVisibleRangesForRange=function(e,t,n){if(null!==this._pixelOffsetCache){var i=this._readPixelOffset(e,n);if(-1===i)return null;var o=this._readPixelOffset(t,n);return-1===o?null:[new A(i,o-i)]}return this._readVisibleRangesForRange(e,t,n)},e.prototype._readVisibleRangesForRange=function(e,t,n){if(e===t){var i=this._readPixelOffset(e,n);return-1===i?null:[new A(i,0)]}return this._readRawVisibleRangesForRange(e,t,n)},e.prototype._readPixelOffset=function(e,t){if(0===this._characterMapping.length){if(0===this._containsForeignElements)return 0;if(2===this._containsForeignElements)return 0;if(1===this._containsForeignElements)return this.getWidth()}if(null!==this._pixelOffsetCache){var n=this._pixelOffsetCache[e];if(-1!==n)return n;var i=this._actualReadPixelOffset(e,t);return this._pixelOffsetCache[e]=i,i}return this._actualReadPixelOffset(e,t)},e.prototype._actualReadPixelOffset=function(e,t){if(0===this._characterMapping.length){var n=j.readHorizontalRanges(this._getReadingTarget(),0,0,0,0,t.clientRectDeltaLeft,t.endNode);return n&&0!==n.length?n[0].left:-1}if(e===this._characterMapping.length&&this._isWhitespaceOnly&&0===this._containsForeignElements)return this.getWidth();var i=this._characterMapping.charOffsetToPartData(e-1),o=V["a"].getPartIndex(i),r=V["a"].getCharIndex(i),s=j.readHorizontalRanges(this._getReadingTarget(),o,r,o,r,t.clientRectDeltaLeft,t.endNode);return s&&0!==s.length?s[0].left:-1},e.prototype._readRawVisibleRangesForRange=function(e,t,n){if(1===e&&t===this._characterMapping.length)return[new A(0,this.getWidth())];var i=this._characterMapping.charOffsetToPartData(e-1),o=V["a"].getPartIndex(i),r=V["a"].getCharIndex(i),s=this._characterMapping.charOffsetToPartData(t-1),a=V["a"].getPartIndex(s),u=V["a"].getCharIndex(s);return j.readHorizontalRanges(this._getReadingTarget(),o,r,a,u,n.clientRectDeltaLeft,n.endNode)},e.prototype.getColumnOfNodeOffset=function(e,t,n){var i=t.textContent.length,o=-1;while(t)t=t.previousSibling,o++;var r=this._characterMapping.partDataToCharOffset(o,i,n);return r+1},e}(),X=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return H(t,e),t.prototype._readVisibleRangesForRange=function(t,n,i){var o=e.prototype._readVisibleRangesForRange.call(this,t,n,i);if(!o||0===o.length||t===n||1===t&&n===this._characterMapping.length)return o;if(!this.input.containsRTL){var r=this._readPixelOffset(n,i);if(-1!==r){var s=o[o.length-1];s.left=4&&3===e[0]&&7===e[3]},e.isStrictChildOfViewLines=function(e){return e.length>4&&3===e[0]&&7===e[3]},e.isChildOfScrollableElement=function(e){return e.length>=2&&3===e[0]&&5===e[1]},e.isChildOfMinimap=function(e){return e.length>=2&&3===e[0]&&8===e[1]},e.isChildOfContentWidgets=function(e){return e.length>=4&&3===e[0]&&1===e[3]},e.isChildOfOverflowingContentWidgets=function(e){return e.length>=1&&2===e[0]},e.isChildOfOverlayWidgets=function(e){return e.length>=2&&3===e[0]&&4===e[1]},e}(),se=function(){function e(e,t,n){this.model=e.model,this.layoutInfo=e.configuration.editor.layoutInfo,this.viewDomNode=t.viewDomNode,this.lineHeight=e.configuration.editor.lineHeight,this.typicalHalfwidthCharacterWidth=e.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,this.lastViewCursorsRenderData=n,this._context=e,this._viewHelper=t}return e.prototype.getZoneAtCoord=function(t){return e.getZoneAtCoord(this._context,t)},e.getZoneAtCoord=function(e,t){var n=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(n){var i=n.verticalOffset+n.height/2,o=e.model.getLineCount(),r=null,s=void 0,a=null;return n.afterLineNumber!==o&&(a=new ee["a"](n.afterLineNumber+1,1)),n.afterLineNumber>0&&(r=new ee["a"](n.afterLineNumber,e.model.getLineMaxColumn(n.afterLineNumber))),s=null===a?r:null===r?a:t=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,de._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}return e}(),ue=function(e){function t(t,n,i,o){var r=e.call(this,t,n,i)||this;return r._ctx=t,o?(r.target=o,r.targetPath=E.collect(o,t.viewDomNode)):(r.target=null,r.targetPath=new Uint8Array(0)),r}return ie(t,e),t.prototype.toString=function(){return"pos("+this.pos.x+","+this.pos.y+"), editorPos("+this.editorPos.x+","+this.editorPos.y+"), mouseVerticalOffset: "+this.mouseVerticalOffset+", mouseContentHorizontalOffset: "+this.mouseContentHorizontalOffset+"\n\ttarget: "+(this.target?this.target.outerHTML:null)},t.prototype.fulfill=function(e,t,n,i){void 0===t&&(t=null),void 0===n&&(n=null),void 0===i&&(i=null);var o=this.mouseColumn;return t&&t.columnr.contentLeft+r.width)){var c=e.getVerticalOffsetForLineNumber(r.position.lineNumber);if(c<=a&&a<=c+r.height)return t.fulfill(6,r.position)}}}return null},e._hitTestViewZone=function(e,t){var n=e.getZoneAtCoord(t.mouseVerticalOffset);if(n){var i=t.isInContentArea?8:5;return t.fulfill(i,n.position,null,n)}return null},e._hitTestTextArea=function(e,t){return re.isTextArea(t.targetPath)?t.fulfill(1):null},e._hitTestMargin=function(e,t){if(t.isInMarginArea){var n=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),i=n.range.getStartPosition(),o=Math.abs(t.pos.x-t.editorPos.x),r={isAfterLines:n.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:o};return o-=e.layoutInfo.glyphMarginLeft,o<=e.layoutInfo.glyphMarginWidth?t.fulfill(2,i,n.range,r):(o-=e.layoutInfo.glyphMarginWidth,o<=e.layoutInfo.lineNumbersWidth?t.fulfill(3,i,n.range,r):(o-=e.layoutInfo.lineNumbersWidth,t.fulfill(4,i,n.range,r)))}return null},e._hitTestViewLines=function(t,n,i){if(!re.isChildOfViewLines(n.targetPath))return null;if(t.isAfterLines(n.mouseVerticalOffset)){var o=t.model.getLineCount(),r=t.model.getLineMaxColumn(o);return n.fulfill(7,new ee["a"](o,r),void 0,le)}if(i){if(re.isStrictChildOfViewLines(n.targetPath)){var s=t.getLineNumberAtVerticalOffset(n.mouseVerticalOffset);if(0===t.model.getLineLength(s)){var a=t.getLineWidth(s),u=ce(n.mouseContentHorizontalOffset-a);return n.fulfill(7,new ee["a"](s,1),void 0,u)}}return n.fulfill(0)}var l=e._doHitTest(t,n);return l.position?e.createMouseTargetFromHitTestPosition(t,n,l.position.lineNumber,l.position.column):this._createMouseTarget(t,n.withTarget(l.hitTarget),!0)},e._hitTestMinimap=function(e,t){if(re.isChildOfMinimap(t.targetPath)){var n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),i=e.model.getLineMaxColumn(n);return t.fulfill(11,new ee["a"](n,i))}return null},e._hitTestScrollbarSlider=function(e,t){if(re.isChildOfScrollableElement(t.targetPath)&&t.target&&1===t.target.nodeType){var n=t.target.className;if(n&&/\b(slider|scrollbar)\b/.test(n)){var i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),o=e.model.getLineMaxColumn(i);return t.fulfill(11,new ee["a"](i,o))}}return null},e._hitTestScrollbar=function(e,t){if(re.isChildOfScrollableElement(t.targetPath)){var n=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),i=e.model.getLineMaxColumn(n);return t.fulfill(11,new ee["a"](n,i))}return null},e.prototype.getMouseColumn=function(t,n){var i=this._context.configuration.editor.layoutInfo,o=this._context.viewLayout.getCurrentScrollLeft()+n.x-t.x-i.contentLeft;return e._getMouseColumn(o,this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth)},e._getMouseColumn=function(e,t){if(e<0)return 1;var n=Math.round(e/t);return n+1},e.createMouseTargetFromHitTestPosition=function(e,t,n,i){var o=new ee["a"](n,i),r=e.getLineWidth(n);if(t.mouseContentHorizontalOffset>r){if(f["f"]&&1===o.column){var s=ce(t.mouseContentHorizontalOffset-r);return t.fulfill(7,new ee["a"](n,e.model.getLineMaxColumn(n)),void 0,s)}var a=ce(t.mouseContentHorizontalOffset-r);return t.fulfill(7,o,void 0,a)}var u=e.visibleRangeForPosition2(n,i);if(!u)return t.fulfill(0,o);var l=u.left;if(t.mouseContentHorizontalOffset===l)return t.fulfill(6,o);var c=[];if(c.push({offset:u.left,column:i}),i>1){var d=e.visibleRangeForPosition2(n,i-1);d&&c.push({offset:d.left,column:i-1})}var h=e.model.getLineMaxColumn(n);if(i=t.editorPos.y+e.layoutInfo.height&&(r=t.editorPos.y+e.layoutInfo.height-1);var s=new y(t.pos.x,r),a=this._actualDoHitTestWithCaretRangeFromPoint(e,s.toClientCoordinates());return a.position?a:this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates())},e._actualDoHitTestWithCaretRangeFromPoint=function(e,t){var n=document.caretRangeFromPoint(t.clientX,t.clientY);if(!n||!n.startContainer)return{position:null,hitTarget:null};var i=n.startContainer,o=null;if(i.nodeType===i.TEXT_NODE){var r=i.parentNode,s=r?r.parentNode:null,a=s?s.parentNode:null,u=a&&a.nodeType===a.ELEMENT_NODE?a.className:null;if(u===G.CLASS_NAME){var l=e.getPositionFromDOMInfo(r,n.startOffset);return{position:l,hitTarget:null}}o=i.parentNode}else if(i.nodeType===i.ELEMENT_NODE){r=i.parentNode,s=r?r.parentNode:null;var c=s&&s.nodeType===s.ELEMENT_NODE?s.className:null;if(c===G.CLASS_NAME){l=e.getPositionFromDOMInfo(i,i.textContent.length);return{position:l,hitTarget:null}}o=i}return{position:null,hitTarget:o}},e._doHitTestWithCaretPositionFromPoint=function(e,t){var n=document.caretPositionFromPoint(t.clientX,t.clientY);if(n.offsetNode.nodeType===n.offsetNode.TEXT_NODE){var i=n.offsetNode.parentNode,o=i?i.parentNode:null,r=o?o.parentNode:null,s=r&&r.nodeType===r.ELEMENT_NODE?r.className:null;if(s===G.CLASS_NAME){var a=e.getPositionFromDOMInfo(n.offsetNode.parentNode,n.offset);return{position:a,hitTarget:null}}return{position:null,hitTarget:n.offsetNode.parentNode}}return{position:null,hitTarget:n.offsetNode}},e._doHitTestWithMoveToPoint=function(e,t){var n=null,i=null,o=document.body.createTextRange();try{o.moveToPoint(t.clientX,t.clientY)}catch(c){return{position:null,hitTarget:null}}o.collapse(!0);var r=o?o.parentElement():null,s=r?r.parentNode:null,a=s?s.parentNode:null,u=a&&a.nodeType===a.ELEMENT_NODE?a.className:"";if(u===G.CLASS_NAME){var l=o.duplicate();l.moveToElementText(r),l.setEndPoint("EndToStart",o),n=e.getPositionFromDOMInfo(r,l.text.length),l.moveToElementText(e.viewDomNode)}else i=r;return o.moveToElementText(e.viewDomNode),{position:n,hitTarget:i}},e._doHitTest=function(e,t){return document.caretRangeFromPoint?this._doHitTestWithCaretRangeFromPoint(e,t):document.caretPositionFromPoint?this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates()):document.body.createTextRange?this._doHitTestWithMoveToPoint(e,t.pos.toClientCoordinates()):{position:null,hitTarget:null}},e}(),he=n("62bd"),pe=n("8025"),fe=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function ge(e){return function(t,n){var i=!1;return e&&(i=e.mouseTargetIsWidget(n)),i||n.preventDefault(),n}}var me=function(e){function t(n,i,r){var s=e.call(this)||this;s._isFocused=!1,s._context=n,s.viewController=i,s.viewHelper=r,s.mouseTargetFactory=new de(s._context,r),s._mouseDownOperation=s._register(new ve(s._context,s.viewController,s.viewHelper,function(e,t){return s._createMouseTarget(e,t)},function(e){return s._getMouseColumn(e)})),s._asyncFocus=s._register(new m["d"](function(){return s.viewHelper.focusTextArea()},0)),s.lastMouseLeaveTime=-1;var a=new O(s.viewHelper.viewDomNode);s._register(a.onContextMenu(s.viewHelper.viewDomNode,function(e){return s._onContextMenu(e,!0)})),s._register(a.onMouseMoveThrottled(s.viewHelper.viewDomNode,function(e){return s._onMouseMove(e)},ge(s.mouseTargetFactory),t.MOUSE_MOVE_MINIMUM_TIME)),s._register(a.onMouseUp(s.viewHelper.viewDomNode,function(e){return s._onMouseUp(e)})),s._register(a.onMouseLeave(s.viewHelper.viewDomNode,function(e){return s._onMouseLeave(e)})),s._register(a.onMouseDown(s.viewHelper.viewDomNode,function(e){return s._onMouseDown(e)}));var u=function(e){if(s.viewController.emitMouseWheel(e),s._context.configuration.editor.viewInfo.mouseWheelZoom){var t=new g["c"](e);if(t.browserEvent.ctrlKey||t.browserEvent.metaKey){var n=he["a"].getZoomLevel(),i=t.deltaY>0?1:-1;he["a"].setZoomLevel(n+i),t.preventDefault(),t.stopPropagation()}}};return s._register(o["h"](s.viewHelper.viewDomNode,f["g"]?"mousewheel":"wheel",u,!0)),s._context.addEventHandler(s),s}return fe(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),e.prototype.dispose.call(this)},t.prototype.onCursorStateChanged=function(e){return this._mouseDownOperation.onCursorStateChanged(e),!1},t.prototype.onFocusChanged=function(e){return this._isFocused=e.isFocused,!1},t.prototype.onScrollChanged=function(e){return this._mouseDownOperation.onScrollChanged(),!1},t.prototype.getTargetAtClientPoint=function(e,t){var n=new w(e,t),i=n.toPageCoordinates(),o=S(this.viewHelper.viewDomNode);if(i.yo.y+o.height||i.xo.x+o.width)return null;var r=this.viewHelper.getLastViewCursorsRenderData();return this.mouseTargetFactory.createMouseTarget(r,o,i,null)},t.prototype._createMouseTarget=function(e,t){var n=this.viewHelper.getLastViewCursorsRenderData();return this.mouseTargetFactory.createMouseTarget(n,e.editorPos,e.pos,t?e.target:null)},t.prototype._getMouseColumn=function(e){return this.mouseTargetFactory.getMouseColumn(e.editorPos,e.pos)},t.prototype._onContextMenu=function(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})},t.prototype._onMouseMove=function(e){if(!this._mouseDownOperation.isActive()){var t=e.timestamp;tt.y+t.height){r=i.getCurrentScrollTop()+(e.posy-t.y),s=se.getZoneAtCoord(this._context,r);if(s){a=this._helpPositionJumpOverViewZone(s);if(a)return new oe(null,13,o,a)}var l=i.getLineNumberAtVerticalOffset(r);return new oe(null,13,o,new ee["a"](l,n.getLineMaxColumn(l)))}var c=i.getLineNumberAtVerticalOffset(i.getCurrentScrollTop()+(e.posy-t.y));return e.posxt.x+t.width?new oe(null,13,o,new ee["a"](c,n.getLineMaxColumn(c))):null},t.prototype._findMousePosition=function(e,t){var n=this._getPositionOutsideEditor(e);if(n)return n;var i=this._createMouseTarget(e,t),o=i.position;if(!o)return null;if(8===i.type||5===i.type){var r=this._helpPositionJumpOverViewZone(i.detail);if(r)return new oe(i.element,i.type,i.mouseColumn,r,null,i.detail)}return i},t.prototype._helpPositionJumpOverViewZone=function(e){var t=new ee["a"](this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),n=e.positionBefore,i=e.positionAfter;return n&&i?n.isBefore(t)?n:i:null},t.prototype._dispatchMouse=function(e,t){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton})},t}(a["a"]),_e=function(){function e(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}return Object.defineProperty(e.prototype,"altKey",{get:function(){return this._altKey},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ctrlKey",{get:function(){return this._ctrlKey},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"metaKey",{get:function(){return this._metaKey},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shiftKey",{get:function(){return this._shiftKey},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"leftButton",{get:function(){return this._leftButton},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"middleButton",{get:function(){return this._middleButton},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startedOnLineNumbers",{get:function(){return this._startedOnLineNumbers},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"count",{get:function(){return this._lastMouseDownCount},enumerable:!0,configurable:!0}),e.prototype.setModifiers=function(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey},e.prototype.setStartButtons=function(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton},e.prototype.setStartedOnLineNumbers=function(e){this._startedOnLineNumbers=e},e.prototype.trySetCount=function(t,n){var i=(new Date).getTime();i-this._lastSetMouseDownCountTime>e.CLEAR_MOUSE_DOWN_COUNT_TIME&&(t=1),this._lastSetMouseDownCountTime=i,t>this._lastMouseDownCount+1&&(t=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(n)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=n,this._lastMouseDownCount=Math.min(t,this._lastMouseDownPositionEqualCount)},e.CLEAR_MOUSE_DOWN_COUNT_TIME=400,e}(),be=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function ye(e,t){var n={translationY:t.translationY,translationX:t.translationX};return e&&(n.translationY+=e.translationY,n.translationX+=e.translationX),n}var we=function(e){function t(t,n,i){var r=e.call(this,t,n,i)||this;return r.viewHelper.linesContentDomNode.style.msTouchAction="none",r.viewHelper.linesContentDomNode.style.msContentZooming="none",r._installGestureHandlerTimeout=window.setTimeout(function(){if(r._installGestureHandlerTimeout=-1,window.MSGesture){var e=new MSGesture,t=new MSGesture;e.target=r.viewHelper.linesContentDomNode,t.target=r.viewHelper.linesContentDomNode,r.viewHelper.linesContentDomNode.addEventListener("MSPointerDown",function(n){var i=n.pointerType;i!==(n.MSPOINTER_TYPE_MOUSE||"mouse")?i===(n.MSPOINTER_TYPE_TOUCH||"touch")?(r._lastPointerType="touch",e.addPointer(n.pointerId)):(r._lastPointerType="pen",t.addPointer(n.pointerId)):r._lastPointerType="mouse"}),r._register(o["j"](r.viewHelper.linesContentDomNode,"MSGestureChange",function(e){return r._onGestureChange(e)},ye)),r._register(o["h"](r.viewHelper.linesContentDomNode,"MSGestureTap",function(e){return r._onCaptureGestureTap(e)},!0))}},100),r._lastPointerType="mouse",r}return be(t,e),t.prototype._onMouseDown=function(t){"mouse"===this._lastPointerType&&e.prototype._onMouseDown.call(this,t)},t.prototype._onCaptureGestureTap=function(e){var t=this,n=new L(e,this.viewHelper.viewDomNode),i=this._createMouseTarget(n,!1);i.position&&this.viewController.moveTo(i.position),n.browserEvent.fromElement?(n.preventDefault(),this.viewHelper.focusTextArea()):setTimeout(function(){t.viewHelper.focusTextArea()})},t.prototype._onGestureChange=function(e){this._context.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)},t.prototype.dispose=function(){window.clearTimeout(this._installGestureHandlerTimeout),e.prototype.dispose.call(this)},t}(me),Ce=function(e){function t(t,n,i){var r=e.call(this,t,n,i)||this;return r.viewHelper.linesContentDomNode.style.touchAction="none",r._installGestureHandlerTimeout=window.setTimeout(function(){if(r._installGestureHandlerTimeout=-1,window.MSGesture){var e=new MSGesture,t=new MSGesture;e.target=r.viewHelper.linesContentDomNode,t.target=r.viewHelper.linesContentDomNode,r.viewHelper.linesContentDomNode.addEventListener("pointerdown",function(n){var i=n.pointerType;"mouse"!==i?"touch"===i?(r._lastPointerType="touch",e.addPointer(n.pointerId)):(r._lastPointerType="pen",t.addPointer(n.pointerId)):r._lastPointerType="mouse"}),r._register(o["j"](r.viewHelper.linesContentDomNode,"MSGestureChange",function(e){return r._onGestureChange(e)},ye)),r._register(o["h"](r.viewHelper.linesContentDomNode,"MSGestureTap",function(e){return r._onCaptureGestureTap(e)},!0))}},100),r._lastPointerType="mouse",r}return be(t,e),t.prototype._onMouseDown=function(t){"mouse"===this._lastPointerType&&e.prototype._onMouseDown.call(this,t)},t.prototype._onCaptureGestureTap=function(e){var t=this,n=new L(e,this.viewHelper.viewDomNode),i=this._createMouseTarget(n,!1);i.position&&this.viewController.moveTo(i.position),n.browserEvent.fromElement?(n.preventDefault(),this.viewHelper.focusTextArea()):setTimeout(function(){t.viewHelper.focusTextArea()})},t.prototype._onGestureChange=function(e){this._context.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)},t.prototype.dispose=function(){window.clearTimeout(this._installGestureHandlerTimeout),e.prototype.dispose.call(this)},t}(me),Se=function(e){function t(t,n,i){var r=e.call(this,t,n,i)||this;return p["b"].addTarget(r.viewHelper.linesContentDomNode),r._register(o["h"](r.viewHelper.linesContentDomNode,p["a"].Tap,function(e){return r.onTap(e)})),r._register(o["h"](r.viewHelper.linesContentDomNode,p["a"].Change,function(e){return r.onChange(e)})),r._register(o["h"](r.viewHelper.linesContentDomNode,p["a"].Contextmenu,function(e){return r._onContextMenu(new L(e,r.viewHelper.viewDomNode),!1)})),r}return be(t,e),t.prototype.onTap=function(e){e.preventDefault(),this.viewHelper.focusTextArea();var t=this._createMouseTarget(new L(e,this.viewHelper.viewDomNode),!1);t.position&&this.viewController.moveTo(t.position)},t.prototype.onChange=function(e){this._context.viewLayout.deltaScrollNow(-e.translationX,-e.translationY)},t}(me),Le=function(e){function t(t,n,i){var o=e.call(this)||this;return window.navigator.msPointerEnabled?o.handler=o._register(new we(t,n,i)):window.TouchEvent?o.handler=o._register(new Se(t,n,i)):window.navigator.pointerEnabled||window.PointerEvent?o.handler=o._register(new Ce(t,n,i)):o.handler=o._register(new me(t,n,i)),o}return be(t,e),t.prototype.getTargetAtClientPoint=function(e,t){return this.handler.getTargetAtClientPoint(e,t)},t}(a["a"]),Oe=(n("56f3"),n("3742")),xe=n("e53c"),Ne=n("0a89"),De=(n("2ab7"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return De(t,e),t}(D),Ie=n("918c"),Ee=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Me=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._readConfig(),n._lastCursorModelPosition=new ee["a"](1,1),n._renderResult=null,n._context.addEventHandler(n),n}return Ee(t,e),t.prototype._readConfig=function(){var e=this._context.configuration.editor;this._lineHeight=e.lineHeight,this._renderLineNumbers=e.viewInfo.renderLineNumbers,this._renderCustomLineNumbers=e.viewInfo.renderCustomLineNumbers,this._renderFinalNewline=e.viewInfo.renderFinalNewline,this._lineNumbersLeft=e.layoutInfo.lineNumbersLeft,this._lineNumbersWidth=e.layoutInfo.lineNumbersWidth},t.prototype.dispose=function(){this._context.removeEventHandler(this),this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return this._readConfig(),!0},t.prototype.onCursorStateChanged=function(e){var t=e.selections[0].getPosition();return this._lastCursorModelPosition=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(t),2===this._renderLineNumbers||3===this._renderLineNumbers},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype._getLineRenderLineNumber=function(e){var t=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new ee["a"](e,1));if(1!==t.column)return"";var n=t.lineNumber;if(!this._renderFinalNewline){var i=this._context.model.getLineCount(),o=this._context.model.getLineContent(n);if(n===i&&""===o)return""}if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(n);if(2===this._renderLineNumbers){var r=Math.abs(this._lastCursorModelPosition.lineNumber-n);return 0===r?''+n+"":String(r)}return 3===this._renderLineNumbers?this._lastCursorModelPosition.lineNumber===n?String(n):n%10===0?String(n):"":String(n)},t.prototype.prepareRender=function(e){if(0!==this._renderLineNumbers){for(var n=v["c"]?this._lineHeight%2===0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,o=e.visibleRange.endLineNumber,r='
    ',s=[],a=i;a<=o;a++){var u=a-i,l=this._getLineRenderLineNumber(a);s[u]=l?r+l+"
    ":""}this._renderResult=s}else this._renderResult=null},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t.CLASS_NAME="line-numbers",t}(ke);Object(B["f"])(function(e,t){var n=e.getColor(Ie["k"]);n&&t.addRule(".monaco-editor .line-numbers { color: "+n+"; }");var i=e.getColor(Ie["b"]);i&&t.addRule(".monaco-editor .current-line ~ .line-numbers { color: "+i+"; }")});var Te=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Pe=function(e){function t(n){var i=e.call(this,n)||this;return i._canUseLayerHinting=i._context.configuration.editor.canUseLayerHinting,i._contentLeft=i._context.configuration.editor.layoutInfo.contentLeft,i._glyphMarginLeft=i._context.configuration.editor.layoutInfo.glyphMarginLeft,i._glyphMarginWidth=i._context.configuration.editor.layoutInfo.glyphMarginWidth,i._domNode=Object(h["b"])(document.createElement("div")),i._domNode.setClassName(t.OUTER_CLASS_NAME),i._domNode.setPosition("absolute"),i._domNode.setAttribute("role","presentation"),i._domNode.setAttribute("aria-hidden","true"),i._glyphMarginBackgroundDomNode=Object(h["b"])(document.createElement("div")),i._glyphMarginBackgroundDomNode.setClassName(t.CLASS_NAME),i._domNode.appendChild(i._glyphMarginBackgroundDomNode),i}return Te(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.getDomNode=function(){return this._domNode},t.prototype.onConfigurationChanged=function(e){return e.canUseLayerHinting&&(this._canUseLayerHinting=this._context.configuration.editor.canUseLayerHinting),e.layoutInfo&&(this._contentLeft=this._context.configuration.editor.layoutInfo.contentLeft,this._glyphMarginLeft=this._context.configuration.editor.layoutInfo.glyphMarginLeft,this._glyphMarginWidth=this._context.configuration.editor.layoutInfo.glyphMarginWidth),!0},t.prototype.onScrollChanged=function(t){return e.prototype.onScrollChanged.call(this,t)||t.scrollTopChanged},t.prototype.prepareRender=function(e){},t.prototype.render=function(e){this._domNode.setLayerHinting(this._canUseLayerHinting);var t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);var n=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(n),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(n)},t.CLASS_NAME="glyph-margin",t.OUTER_CLASS_NAME="margin",t}(I),Re=n("e6ff"),Ae=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Fe=function(){function e(e){this.type=1,this.canUseLayerHinting=e.canUseLayerHinting,this.pixelRatio=e.pixelRatio,this.editorClassName=e.editorClassName,this.lineHeight=e.lineHeight,this.readOnly=e.readOnly,this.accessibilitySupport=e.accessibilitySupport,this.emptySelectionClipboard=e.emptySelectionClipboard,this.copyWithSyntaxHighlighting=e.copyWithSyntaxHighlighting,this.layoutInfo=e.layoutInfo,this.fontInfo=e.fontInfo,this.viewInfo=e.viewInfo,this.wrappingInfo=e.wrappingInfo}return e}(),je=function(){function e(e){this.type=2,this.selections=e}return e}(),We=function(){function e(){this.type=3}return e}(),Ve=function(){function e(){this.type=4}return e}(),Be=function(){function e(e){this.type=5,this.isFocused=e}return e}(),He=function(){function e(){this.type=6}return e}(),ze=function(){function e(e,t){this.type=7,this.fromLineNumber=e,this.toLineNumber=t}return e}(),Ue=function(){function e(e,t){this.type=8,this.fromLineNumber=e,this.toLineNumber=t}return e}(),Ke=function(){function e(e,t){this.type=9,this.fromLineNumber=e,this.toLineNumber=t}return e}(),qe=function(){function e(e,t,n,i){this.type=10,this.range=e,this.verticalType=t,this.revealHorizontal=n,this.scrollType=i}return e}(),Ge=function(){function e(e){this.type=11,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}return e}(),Ze=function(){function e(e){this.type=12,this.ranges=e}return e}(),Ye=function(){function e(){this.type=15}return e}(),Xe=function(){function e(){this.type=13}return e}(),$e=function(){function e(){this.type=14}return e}(),Qe=function(){function e(){this.type=16}return e}(),Je=function(e){function t(){var t=e.call(this)||this;return t._listeners=[],t._collector=null,t._collectorCnt=0,t}return Ae(t,e),t.prototype.dispose=function(){this._listeners=[],e.prototype.dispose.call(this)},t.prototype._beginEmit=function(){return this._collectorCnt++,1===this._collectorCnt&&(this._collector=new et),this._collector},t.prototype._endEmit=function(){if(this._collectorCnt--,0===this._collectorCnt){var e=this._collector.finalize();this._collector=null,e.length>0&&this._emit(e)}},t.prototype._emit=function(e){for(var t=this._listeners.slice(0),n=0,i=t.length;n0)return new Ne["b"](i,i.length,i.length,n,n)}}return Ne["b"].EMPTY}return Ne["a"].fromEditorSelection(e,s,o._selections[0],0===o._accessibilitySupport)},deduceModelPosition:function(e,t,n){return o._context.model.deduceModelPositionRelativeToViewPosition(e,t,n)}};return o._textAreaInput=o._register(new xe["b"](a,o.textArea)),o._register(o._textAreaInput.onKeyDown(function(e){o._viewController.emitKeyDown(e)})),o._register(o._textAreaInput.onKeyUp(function(e){o._viewController.emitKeyUp(e)})),o._register(o._textAreaInput.onPaste(function(e){var t=rt.INSTANCE.get(e.text),n=!1,i=null;t&&(n=o._emptySelectionClipboard&&t.isFromEmptySelection,i=t.multicursorText),o._viewController.paste("keyboard",e.text,n,i)})),o._register(o._textAreaInput.onCut(function(){o._viewController.cut("keyboard")})),o._register(o._textAreaInput.onType(function(e){e.replaceCharCnt?o._viewController.replacePreviousChar("keyboard",e.text,e.replaceCharCnt):o._viewController.type("keyboard",e.text)})),o._register(o._textAreaInput.onSelectionChangeRequest(function(e){o._viewController.setSelection("keyboard",e)})),o._register(o._textAreaInput.onCompositionStart(function(){var e=o._selections[0].startLineNumber,t=o._selections[0].startColumn;o._context.privateViewEventBus.emit(new qe(new te["a"](e,t,e,t),0,!0,1));var n=o._viewHelper.visibleRangeForPositionRelativeToEditor(e,t);n&&(o._visibleTextArea=new it(o._context.viewLayout.getVerticalOffsetForLineNumber(e),n.left,ot?0:1),o._render()),o.textArea.setClassName("inputarea ime-input"),o._viewController.compositionStart("keyboard")})),o._register(o._textAreaInput.onCompositionUpdate(function(e){f["g"]?o._visibleTextArea=o._visibleTextArea.setWidth(0):o._visibleTextArea=o._visibleTextArea.setWidth(at(e.data,o._fontInfo)),o._render()})),o._register(o._textAreaInput.onCompositionEnd(function(){o._visibleTextArea=null,o._render(),o.textArea.setClassName("inputarea"),o._viewController.compositionEnd("keyboard")})),o._register(o._textAreaInput.onFocus(function(){o._context.privateViewEventBus.emit(new Be(!0))})),o._register(o._textAreaInput.onBlur(function(){o._context.privateViewEventBus.emit(new Be(!1))})),o}return nt(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._getWordBeforePosition=function(e){var t=this._context.model.getLineContent(e.lineNumber),n=Object(Re["a"])(this._context.configuration.editor.wordSeparators),i=e.column,o=0;while(i>1){var r=t.charCodeAt(i-2),s=n.get(r);if(0!==s||o>50)return t.substring(i-1,e.column-1);o++,i--}return t.substring(0,e.column-1)},t.prototype._getCharacterBeforePosition=function(e){if(e.column>1){var t=this._context.model.getLineContent(e.lineNumber),n=t.charAt(e.column-2);if(!Oe["w"](n.charCodeAt(0)))return n}return""},t.prototype.onConfigurationChanged=function(e){var t=this._context.configuration.editor;return e.fontInfo&&(this._fontInfo=t.fontInfo),e.viewInfo&&this.textArea.setAttribute("aria-label",t.viewInfo.ariaLabel),e.layoutInfo&&(this._contentLeft=t.layoutInfo.contentLeft,this._contentWidth=t.layoutInfo.contentWidth,this._contentHeight=t.layoutInfo.contentHeight),e.lineHeight&&(this._lineHeight=t.lineHeight),e.accessibilitySupport&&(this._accessibilitySupport=t.accessibilitySupport,this._textAreaInput.writeScreenReaderContent("strategy changed")),e.emptySelectionClipboard&&(this._emptySelectionClipboard=t.emptySelectionClipboard),e.copyWithSyntaxHighlighting&&(this._copyWithSyntaxHighlighting=t.copyWithSyntaxHighlighting),!0},t.prototype.onCursorStateChanged=function(e){return this._selections=e.selections.slice(0),this._textAreaInput.writeScreenReaderContent("selection changed"),!0},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0},t.prototype.onZonesChanged=function(e){return!0},t.prototype.isFocused=function(){return this._textAreaInput.isFocused()},t.prototype.focusTextArea=function(){this._textAreaInput.focusTextArea()},t.prototype.prepareRender=function(e){var t=new ee["a"](this._selections[0].positionLineNumber,this._selections[0].positionColumn);this._primaryCursorVisibleRange=e.visibleRangeForPosition(t)},t.prototype.render=function(e){this._textAreaInput.writeScreenReaderContent("render"),this._render()},t.prototype._render=function(){if(this._visibleTextArea)this._renderInsideEditor(this._visibleTextArea.top-this._scrollTop,this._contentLeft+this._visibleTextArea.left-this._scrollLeft,this._visibleTextArea.width,this._lineHeight,!0);else if(this._primaryCursorVisibleRange){var e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(ethis._contentLeft+this._contentWidth)this._renderAtTopLeft();else{var t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;t<0||t>this._contentHeight?this._renderAtTopLeft():this._renderInsideEditor(t,e,ot?0:1,ot?0:1,!1)}}else this._renderAtTopLeft()},t.prototype._renderInsideEditor=function(e,t,n,i,o){var r=this.textArea,s=this.textAreaCover;o?l["a"].applyFontInfo(r,this._fontInfo):(r.setFontSize(1),r.setLineHeight(this._fontInfo.lineHeight)),r.setTop(e),r.setLeft(t),r.setWidth(n),r.setHeight(i),s.setTop(0),s.setLeft(0),s.setWidth(0),s.setHeight(0)},t.prototype._renderAtTopLeft=function(){var e=this.textArea,t=this.textAreaCover;if(l["a"].applyFontInfo(e,this._fontInfo),e.setTop(0),e.setLeft(0),t.setTop(0),t.setLeft(0),ot)return e.setWidth(0),e.setHeight(0),t.setWidth(0),void t.setHeight(0);e.setWidth(1),e.setHeight(1),t.setWidth(1),t.setHeight(1),this._context.configuration.editor.viewInfo.glyphMargin?t.setClassName("monaco-editor-background textAreaCover "+Pe.OUTER_CLASS_NAME):0!==this._context.configuration.editor.viewInfo.renderLineNumbers?t.setClassName("monaco-editor-background textAreaCover "+Me.CLASS_NAME):t.setClassName("monaco-editor-background textAreaCover")},t}(I);function at(e,t){var n=document.createElement("canvas"),i=n.getContext("2d");i.font=ut(t);var o=i.measureText(e);return f["i"]?o.width+2:o.width}function ut(e){return lt("normal",e.fontWeight,e.fontSize,e.lineHeight,e.fontFamily)}function lt(e,t,n,i,o){return e+" normal "+t+" "+n+"px / "+i+"px "+o}var ct=n("d585"),dt=function(){function e(e,t,n,i){this.configuration=e,this.viewModel=t,this.outgoingEvents=n,this.commandDelegate=i}return e.prototype._execMouseCommand=function(e,t){t.source="mouse",this.commandDelegate.executeEditorCommand(e,t)},e.prototype.paste=function(e,t,n,i){this.commandDelegate.paste(e,t,n,i)},e.prototype.type=function(e,t){this.commandDelegate.type(e,t)},e.prototype.replacePreviousChar=function(e,t,n){this.commandDelegate.replacePreviousChar(e,t,n)},e.prototype.compositionStart=function(e){this.commandDelegate.compositionStart(e)},e.prototype.compositionEnd=function(e){this.commandDelegate.compositionEnd(e)},e.prototype.cut=function(e){this.commandDelegate.cut(e)},e.prototype.setSelection=function(e,t){this.commandDelegate.executeEditorCommand(ct["CoreNavigationCommands"].SetSelection,{source:e,selection:t})},e.prototype._validateViewColumn=function(e){var t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column=4?this._selectAll():3===e.mouseDownCount?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position):this._lastCursorLineSelect(e.position):e.inSelectionMode?this._lineSelectDrag(e.position):this._lineSelect(e.position):2===e.mouseDownCount?this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position):e.inSelectionMode?this._wordSelectDrag(e.position):this._wordSelect(e.position):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!1):e.inSelectionMode?this._lastCursorMoveToSelect(e.position):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position):this.moveTo(e.position)},e.prototype._usualArgs=function(e){return e=this._validateViewColumn(e),{position:this._convertViewToModelPosition(e),viewPosition:e}},e.prototype.moveTo=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].MoveTo,this._usualArgs(e))},e.prototype._moveToSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].MoveToSelect,this._usualArgs(e))},e.prototype._columnSelect=function(e,t,n){e=this._validateViewColumn(e),this._execMouseCommand(ct["CoreNavigationCommands"].ColumnSelect,{position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,setAnchorIfNotSet:n})},e.prototype._createCursor=function(e,t){e=this._validateViewColumn(e),this._execMouseCommand(ct["CoreNavigationCommands"].CreateCursor,{position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})},e.prototype._lastCursorMoveToSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LastCursorMoveToSelect,this._usualArgs(e))},e.prototype._wordSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].WordSelect,this._usualArgs(e))},e.prototype._wordSelectDrag=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].WordSelectDrag,this._usualArgs(e))},e.prototype._lastCursorWordSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LastCursorWordSelect,this._usualArgs(e))},e.prototype._lineSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LineSelect,this._usualArgs(e))},e.prototype._lineSelectDrag=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LineSelectDrag,this._usualArgs(e))},e.prototype._lastCursorLineSelect=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LastCursorLineSelect,this._usualArgs(e))},e.prototype._lastCursorLineSelectDrag=function(e){this._execMouseCommand(ct["CoreNavigationCommands"].LastCursorLineSelectDrag,this._usualArgs(e))},e.prototype._selectAll=function(){this._execMouseCommand(ct["CoreNavigationCommands"].SelectAll,{})},e.prototype._convertViewToModelPosition=function(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)},e.prototype.emitKeyDown=function(e){this.outgoingEvents.emitKeyDown(e)},e.prototype.emitKeyUp=function(e){this.outgoingEvents.emitKeyUp(e)},e.prototype.emitContextMenu=function(e){this.outgoingEvents.emitContextMenu(e)},e.prototype.emitMouseMove=function(e){this.outgoingEvents.emitMouseMove(e)},e.prototype.emitMouseLeave=function(e){this.outgoingEvents.emitMouseLeave(e)},e.prototype.emitMouseUp=function(e){this.outgoingEvents.emitMouseUp(e)},e.prototype.emitMouseDown=function(e){this.outgoingEvents.emitMouseDown(e)},e.prototype.emitMouseDrag=function(e){this.outgoingEvents.emitMouseDrag(e)},e.prototype.emitMouseDrop=function(e){this.outgoingEvents.emitMouseDrop(e)},e.prototype.emitMouseWheel=function(e){this.outgoingEvents.emitMouseWheel(e)},e}(),ht=n("7ab3"),pt=function(){function e(e){this._createLine=e,this._set(1,[])}return e.prototype.flush=function(){this._set(1,[])},e.prototype._set=function(e,t){this._lines=t,this._rendLineNumberStart=e},e.prototype._get=function(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}},e.prototype.getStartLineNumber=function(){return this._rendLineNumberStart},e.prototype.getEndLineNumber=function(){return this._rendLineNumberStart+this._lines.length-1},e.prototype.getCount=function(){return this._lines.length},e.prototype.getLine=function(e){var t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new Error("Illegal value for lineNumber");return this._lines[t]},e.prototype.onLinesDeleted=function(e,t){if(0===this.getCount())return null;var n=this.getStartLineNumber(),i=this.getEndLineNumber();if(ti)return null;for(var r=0,s=0,a=n;a<=i;a++){var u=a-this._rendLineNumberStart;e<=a&&a<=t&&(0===s?(r=u,s=1):s++)}if(e=n&&r<=i&&(this._lines[r-this._rendLineNumberStart].onContentChanged(),o=!0);return o},e.prototype.onLinesInserted=function(e,t){if(0===this.getCount())return null;var n=t-e+1,i=this.getStartLineNumber(),o=this.getEndLineNumber();if(e<=i)return this._rendLineNumberStart+=n,null;if(e>o)return null;if(n+e>o){var r=this._lines.splice(e-this._rendLineNumberStart,o-e+1);return r}for(var s=[],a=0;an))for(var a=Math.max(t,s.fromLineNumber),u=Math.min(n,s.toLineNumber),l=a;l<=u;l++){var c=l-this._rendLineNumberStart;this._lines[c].onTokensChanged(),i=!0}}return i},e}(),ft=function(){function e(e){var t=this;this._host=e,this.domNode=this._createDomNode(),this._linesCollection=new pt(function(){return t._host.createVisibleLine()})}return e.prototype._createDomNode=function(){var e=Object(h["b"])(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e},e.prototype.onConfigurationChanged=function(e){return e.layoutInfo},e.prototype.onFlushed=function(e){return this._linesCollection.flush(),!0},e.prototype.onLinesChanged=function(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.toLineNumber)},e.prototype.onLinesDeleted=function(e){var t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(var n=0,i=t.length;nt){var s=t,a=Math.min(n,o.rendLineNumberStart-1);s<=a&&(this._insertLinesBefore(o,s,a,i,t),o.linesLength+=a-s+1)}else if(o.rendLineNumberStart0&&(this._removeLinesBefore(o,u),o.linesLength-=u)}if(o.rendLineNumberStart=t,o.rendLineNumberStart+o.linesLength-1n){s=Math.max(0,n-o.rendLineNumberStart+1),a=o.linesLength-1,u=a-s+1;u>0&&(this._removeLinesAfter(o,u),o.linesLength-=u)}return this._finishRendering(o,!1,i),o},e.prototype._renderUntouchedLines=function(e,t,n,i,o){for(var r=e.rendLineNumberStart,s=e.lines,a=t;a<=n;a++){var u=r+a;s[a].layoutLine(u,i[u-o])}},e.prototype._insertLinesBefore=function(e,t,n,i,o){for(var r=[],s=0,a=t;a<=n;a++)r[s++]=this.host.createVisibleLine();e.lines=r.concat(e.lines)},e.prototype._removeLinesBefore=function(e,t){for(var n=0;n=0;s--){var a=e.lines[s];i[s]&&(a.setDomNode(r),r=r.previousSibling)}},e.prototype._finishRenderingInvalidLines=function(e,t,n){var i=document.createElement("div");i.innerHTML=t;for(var o=0;o'),i.appendASCIIString(o),i.appendASCIIString(""),!0)},e.prototype.layoutLine=function(e,t){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(this._lineHeight))},e}(),bt=function(e){function t(t){var n=e.call(this,t)||this;return n._contentWidth=n._context.configuration.editor.layoutInfo.contentWidth,n.domNode.setHeight(0),n}return mt(t,e),t.prototype.onConfigurationChanged=function(t){return t.layoutInfo&&(this._contentWidth=this._context.configuration.editor.layoutInfo.contentWidth),e.prototype.onConfigurationChanged.call(this,t)},t.prototype.onScrollChanged=function(t){return e.prototype.onScrollChanged.call(this,t)||t.scrollWidthChanged},t.prototype._viewOverlaysRender=function(t){e.prototype._viewOverlaysRender.call(this,t),this.domNode.setWidth(Math.max(t.scrollWidth,this._contentWidth))},t}(vt),yt=function(e){function t(t){var n=e.call(this,t)||this;return n._contentLeft=n._context.configuration.editor.layoutInfo.contentLeft,n.domNode.setClassName("margin-view-overlays"),n.domNode.setWidth(1),l["a"].applyFontInfo(n.domNode,n._context.configuration.editor.fontInfo),n}return mt(t,e),t.prototype.onConfigurationChanged=function(t){var n=!1;return t.fontInfo&&(l["a"].applyFontInfo(this.domNode,this._context.configuration.editor.fontInfo),n=!0),t.layoutInfo&&(this._contentLeft=this._context.configuration.editor.layoutInfo.contentLeft,n=!0),e.prototype.onConfigurationChanged.call(this,t)||n},t.prototype.onScrollChanged=function(t){return e.prototype.onScrollChanged.call(this,t)||t.scrollHeightChanged},t.prototype._viewOverlaysRender=function(t){e.prototype._viewOverlaysRender.call(this,t);var n=Math.min(t.scrollHeight,1e6);this.domNode.setHeight(n),this.domNode.setWidth(this._contentLeft)},t}(vt),wt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ct=function(){function e(e,t){this.top=e,this.left=t}return e}(),St=function(e){function t(t,n){var i=e.call(this,t)||this;return i._viewDomNode=n,i._widgets={},i.domNode=Object(h["b"])(document.createElement("div")),E.write(i.domNode,1),i.domNode.setClassName("contentWidgets"),i.domNode.setPosition("absolute"),i.domNode.setTop(0),i.overflowingContentWidgetsDomNode=Object(h["b"])(document.createElement("div")),E.write(i.overflowingContentWidgetsDomNode,2),i.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets"),i}return wt(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._widgets={}},t.prototype.onConfigurationChanged=function(e){for(var t=Object.keys(this._widgets),n=0,i=t;n=i,d=a,h=u>=i,p=e.left,f=t.left;return p+n>o.scrollLeft+o.viewportWidth&&(p=o.scrollLeft+o.viewportWidth-n),f+n>o.scrollLeft+o.viewportWidth&&(f=o.scrollLeft+o.viewportWidth-n),p=b,C=f+i<=_-y;if(g+n+20>v){var S=g-(v-n-20);g-=S,c-=S}if(m+n+20>v){S=m-(v-n-20);m-=S,d-=S}if(g<0){S=g;g-=S,c-=S}if(m<0){S=m;m-=S,d-=S}return this._fixedOverflowWidgets&&(u=p,l=f,c=g,d=m),{fitsAbove:w,aboveTop:u,aboveLeft:c,fitsBelow:C,belowTop:l,belowLeft:d}},e.prototype._prepareRenderWidgetAtExactPositionOverflowing=function(e){return new Ct(e.top,e.left+this._contentLeft)},e.prototype._getTopAndBottomLeft=function(e){if(!this._viewPosition)return[null,null];var t=e.visibleRangeForPosition(this._viewPosition);if(!t)return[null,null];var n=e.getVerticalOffsetForLineNumber(this._viewPosition.lineNumber)-e.scrollTop,i=new Ct(n,t.left),o=this._viewPosition.lineNumber,r=t.left;if(this._viewRange){var s=e.linesVisibleRangesForRange(this._viewRange,!1);if(s&&s.length>0)for(var a=s.length-1;a>=0;a--){var u=s[a];if(u.lineNumber>=o){u.lineNumber>o&&(o=u.lineNumber,r=1073741824);for(var l=0,c=u.ranges.length;le.endLineNumber||this.domNode.setMaxWidth(this._maxWidth))},e.prototype.prepareRender=function(e){this._renderData=this._prepareRenderWidget(e)},e.prototype.render=function(e){this._renderData?(this.allowEditorOverflow?(this.domNode.setTop(this._renderData.top),this.domNode.setLeft(this._renderData.left)):(this.domNode.setTop(this._renderData.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0)):this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden"))},e}(),Ot=(n("930f"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),xt=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._lineHeight=n._context.configuration.editor.lineHeight,n._renderLineHighlight=n._context.configuration.editor.viewInfo.renderLineHighlight,n._selectionIsEmpty=!0,n._primaryCursorLineNumber=1,n._scrollWidth=0,n._contentWidth=n._context.configuration.editor.layoutInfo.contentWidth,n._context.addEventHandler(n),n}return Ot(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.viewInfo&&(this._renderLineHighlight=this._context.configuration.editor.viewInfo.renderLineHighlight),e.layoutInfo&&(this._contentWidth=this._context.configuration.editor.layoutInfo.contentWidth),!0},t.prototype.onCursorStateChanged=function(e){var t=!1,n=e.selections[0].positionLineNumber;this._primaryCursorLineNumber!==n&&(this._primaryCursorLineNumber=n,t=!0);var i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i?(this._selectionIsEmpty=i,!0):t},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollWidthChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype.prepareRender=function(e){this._scrollWidth=e.scrollWidth},t.prototype.render=function(e,t){if(t===this._primaryCursorLineNumber){if(this._shouldShowCurrentLine()){var n=this._willRenderMarginCurrentLine(),i="current-line"+(n?" current-line-both":"");return'
    '}return""}return""},t.prototype._shouldShowCurrentLine=function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty},t.prototype._willRenderMarginCurrentLine=function(){return"gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight},t}(ke);Object(B["f"])(function(e,t){var n=e.getColor(Ie["i"]);if(n&&t.addRule(".monaco-editor .view-overlays .current-line { background-color: "+n+"; }"),!n||n.isTransparent()||e.defines(Ie["j"])){var i=e.getColor(Ie["j"]);i&&(t.addRule(".monaco-editor .view-overlays .current-line { border: 2px solid "+i+"; }"),"hc"===e.type&&t.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"))}});n("4e7d");var Nt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Dt=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._lineHeight=n._context.configuration.editor.lineHeight,n._renderLineHighlight=n._context.configuration.editor.viewInfo.renderLineHighlight,n._selectionIsEmpty=!0,n._primaryCursorLineNumber=1,n._contentLeft=n._context.configuration.editor.layoutInfo.contentLeft,n._context.addEventHandler(n),n}return Nt(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.viewInfo&&(this._renderLineHighlight=this._context.configuration.editor.viewInfo.renderLineHighlight),e.layoutInfo&&(this._contentLeft=this._context.configuration.editor.layoutInfo.contentLeft),!0},t.prototype.onCursorStateChanged=function(e){var t=!1,n=e.selections[0].positionLineNumber;this._primaryCursorLineNumber!==n&&(this._primaryCursorLineNumber=n,t=!0);var i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i?(this._selectionIsEmpty=i,!0):t},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onZonesChanged=function(e){return!0},t.prototype.prepareRender=function(e){},t.prototype.render=function(e,t){if(t===this._primaryCursorLineNumber){var n="current-line";if(this._shouldShowCurrentLine()){var i=this._willRenderContentCurrentLine();n="current-line current-line-margin"+(i?" current-line-margin-both":"")}return'
    '}return""},t.prototype._shouldShowCurrentLine=function(){return"gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight},t.prototype._willRenderContentCurrentLine=function(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty},t}(ke);Object(B["f"])(function(e,t){var n=e.getColor(Ie["i"]);if(n)t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { background-color: "+n+"; border: none; }");else{var i=e.getColor(Ie["j"]);i&&t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid "+i+"; }"),"hc"===e.type&&t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")}});n("56dc");var kt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),It=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._lineHeight=n._context.configuration.editor.lineHeight,n._typicalHalfwidthCharacterWidth=n._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,n._renderResult=null,n._context.addEventHandler(n),n}return kt(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.fontInfo&&(this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth),!0},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged||e.scrollWidthChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype.prepareRender=function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,o=0,r=t.length;ot.options.zIndex)return 1;var n=e.options.className,i=t.options.className;return ni?1:te["a"].compareRangesUsingStarts(e.range,t.range)});for(var a=e.visibleRange.startLineNumber,u=e.visibleRange.endLineNumber,l=[],c=a;c<=u;c++){var d=c-a;l[d]=""}this._renderWholeLineDecorations(e,n,l),this._renderNormalDecorations(e,n,l),this._renderResult=l},t.prototype._renderWholeLineDecorations=function(e,t,n){for(var i=String(this._lineHeight),o=e.visibleRange.startLineNumber,r=e.visibleRange.endLineNumber,s=0,a=t.length;s',c=Math.max(u.range.startLineNumber,o),d=Math.min(u.range.endLineNumber,r),h=c;h<=d;h++){var p=h-o;n[p]+=l}}},t.prototype._renderNormalDecorations=function(e,t,n){for(var i=String(this._lineHeight),o=e.visibleRange.startLineNumber,r=null,s=!1,a=null,u=0,l=t.length;u';s[d]+=m}}},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t}(ke),Et=n("1898"),Mt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Tt=function(e){function t(t,n,i,r){var s=e.call(this,t)||this,a=s._context.configuration.editor,u=a.viewInfo.scrollbar,l={listenOnDomNode:i.domNode,className:"editor-scrollable "+Object(B["e"])(t.theme.type),useShadows:!1,lazyRender:!0,vertical:u.vertical,horizontal:u.horizontal,verticalHasArrows:u.verticalHasArrows,horizontalHasArrows:u.horizontalHasArrows,verticalScrollbarSize:u.verticalScrollbarSize,verticalSliderSize:u.verticalSliderSize,horizontalScrollbarSize:u.horizontalScrollbarSize,horizontalSliderSize:u.horizontalSliderSize,handleMouseWheel:u.handleMouseWheel,arrowSize:u.arrowSize,mouseWheelScrollSensitivity:u.mouseWheelScrollSensitivity,fastScrollSensitivity:u.fastScrollSensitivity};s.scrollbar=s._register(new Et["c"](n.domNode,l,s._context.viewLayout.scrollable)),E.write(s.scrollbar.getDomNode(),5),s.scrollbarDomNode=Object(h["b"])(s.scrollbar.getDomNode()),s.scrollbarDomNode.setPosition("absolute"),s._setLayout();var c=function(e,t,n){var i={};if(t){var o=e.scrollTop;o&&(i.scrollTop=s._context.viewLayout.getCurrentScrollTop()+o,e.scrollTop=0)}if(n){var r=e.scrollLeft;r&&(i.scrollLeft=s._context.viewLayout.getCurrentScrollLeft()+r,e.scrollLeft=0)}s._context.viewLayout.setScrollPositionNow(i)};return s._register(o["h"](i.domNode,"scroll",function(e){return c(i.domNode,!0,!0)})),s._register(o["h"](n.domNode,"scroll",function(e){return c(n.domNode,!0,!1)})),s._register(o["h"](r.domNode,"scroll",function(e){return c(r.domNode,!0,!1)})),s._register(o["h"](s.scrollbarDomNode.domNode,"scroll",function(e){return c(s.scrollbarDomNode.domNode,!0,!1)})),s}return Mt(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._setLayout=function(){var e=this._context.configuration.editor.layoutInfo;this.scrollbarDomNode.setLeft(e.contentLeft);var t=this._context.configuration.editor.viewInfo.minimap.side;"right"===t?this.scrollbarDomNode.setWidth(e.contentWidth+e.minimapWidth):this.scrollbarDomNode.setWidth(e.contentWidth),this.scrollbarDomNode.setHeight(e.contentHeight)},t.prototype.getOverviewRulerLayoutInfo=function(){return this.scrollbar.getOverviewRulerLayoutInfo()},t.prototype.getDomNode=function(){return this.scrollbarDomNode},t.prototype.delegateVerticalScrollbarMouseDown=function(e){this.scrollbar.delegateVerticalScrollbarMouseDown(e)},t.prototype.onConfigurationChanged=function(e){if(e.viewInfo){var t=this._context.configuration.editor,n={handleMouseWheel:t.viewInfo.scrollbar.handleMouseWheel,mouseWheelScrollSensitivity:t.viewInfo.scrollbar.mouseWheelScrollSensitivity,fastScrollSensitivity:t.viewInfo.scrollbar.fastScrollSensitivity};this.scrollbar.updateOptions(n)}return e.layoutInfo&&this._setLayout(),!0},t.prototype.onScrollChanged=function(e){return!0},t.prototype.onThemeChanged=function(e){return this.scrollbar.updateClassName("editor-scrollable "+Object(B["e"])(this._context.theme.type)),!0},t.prototype.prepareRender=function(e){},t.prototype.render=function(e){this.scrollbar.renderNow()},t}(I),Pt=(n("8478d"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),Rt=function(){function e(e,t,n){this.startLineNumber=+e,this.endLineNumber=+t,this.className=String(n)}return e}(),At=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Pt(t,e),t.prototype._render=function(e,t,n){for(var i=[],o=e;o<=t;o++){var r=o-e;i[r]=[]}if(0===n.length)return i;n.sort(function(e,t){return e.className===t.className?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.className',u=[],l=t;l<=n;l++){var c=l-t,d=i[c];0===d.length?u[c]="":u[c]='
    =this._renderResult.length?"":this._renderResult[n]},t}(At),jt=(n("0baa"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),Wt=function(e){function t(t){var n=e.call(this)||this;n._context=t,n._primaryLineNumber=0,n._lineHeight=n._context.configuration.editor.lineHeight,n._spaceWidth=n._context.configuration.editor.fontInfo.spaceWidth,n._enabled=n._context.configuration.editor.viewInfo.renderIndentGuides,n._activeIndentEnabled=n._context.configuration.editor.viewInfo.highlightActiveIndentGuide;var i=n._context.configuration.editor.wrappingInfo.wrappingColumn;return n._maxIndentLeft=-1===i?-1:i*n._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,n._renderResult=null,n._context.addEventHandler(n),n}return jt(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){if(e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.fontInfo&&(this._spaceWidth=this._context.configuration.editor.fontInfo.spaceWidth),e.viewInfo&&(this._enabled=this._context.configuration.editor.viewInfo.renderIndentGuides,this._activeIndentEnabled=this._context.configuration.editor.viewInfo.highlightActiveIndentGuide),e.wrappingInfo||e.fontInfo){var t=this._context.configuration.editor.wrappingInfo.wrappingColumn;this._maxIndentLeft=-1===t?-1:t*this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth}return!0},t.prototype.onCursorStateChanged=function(e){var t=e.selections[0],n=t.isEmpty()?t.positionLineNumber:0;return this._primaryLineNumber!==n&&(this._primaryLineNumber=n,!0)},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype.onLanguageConfigurationChanged=function(e){return!0},t.prototype.prepareRender=function(e){if(this._enabled){var t=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,i=this._context.model.getOptions().indentSize,o=i*this._spaceWidth,r=e.scrollWidth,s=this._lineHeight,a=this._context.model.getLinesIndentGuides(t,n),u=0,l=0,c=0;if(this._activeIndentEnabled&&this._primaryLineNumber){var d=this._context.model.getActiveIndentGuide(this._primaryLineNumber,t,n);u=d.startLineNumber,l=d.endLineNumber,c=d.indent}for(var h=[],p=t;p<=n;p++){for(var f=u<=p&&p<=l,g=p-t,m=a[g],v="",_=e.visibleRangeForPosition(new ee["a"](p,1)),b=_?_.left:0,y=1;y<=m;y++){var w=f&&y===c?"cigra":"cigr";if(v+='
    ',b+=o,b>r||this._maxIndentLeft>0&&b>this._maxIndentLeft)break}h[g]=v}this._renderResult=h}else this._renderResult=null},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t}(ke);Object(B["f"])(function(e,t){var n=e.getColor(Ie["h"]);n&&t.addRule(".monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 "+n+" inset; }");var i=e.getColor(Ie["a"])||n;i&&t.addRule(".monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 "+i+" inset; }")});n("38a2b");var Vt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Bt=function(){function e(){this._currentVisibleRange=new te["a"](1,1,1,1)}return e.prototype.getCurrentVisibleRange=function(){return this._currentVisibleRange},e.prototype.setCurrentVisibleRange=function(e){this._currentVisibleRange=e},e}(),Ht=function(){function e(e,t,n,i,o,r){this.lineNumber=e,this.startColumn=t,this.endColumn=n,this.startScrollTop=i,this.stopScrollTop=o,this.scrollType=r}return e}(),zt=function(e){function t(t,n){var i=e.call(this,t)||this;i._linesContent=n,i._textRangeRestingSpot=document.createElement("div"),i._visibleLines=new ft(i),i.domNode=i._visibleLines.domNode;var o=i._context.configuration;return i._lineHeight=o.editor.lineHeight,i._typicalHalfwidthCharacterWidth=o.editor.fontInfo.typicalHalfwidthCharacterWidth,i._isViewportWrapping=o.editor.wrappingInfo.isViewportWrapping,i._revealHorizontalRightPadding=o.editor.viewInfo.revealHorizontalRightPadding,i._scrollOff=o.editor.viewInfo.cursorSurroundingLines,i._canUseLayerHinting=o.editor.canUseLayerHinting,i._viewLineOptions=new q(o,i._context.theme.type),E.write(i.domNode,7),i.domNode.setClassName("view-lines"),l["a"].applyFontInfo(i.domNode,o.editor.fontInfo),i._maxLineWidth=0,i._asyncUpdateLineWidths=new m["d"](function(){i._updateLineWidthsSlow()},200),i._lastRenderedData=new Bt,i._horizontalRevealRequest=null,i}return Vt(t,e),t.prototype.dispose=function(){this._asyncUpdateLineWidths.dispose(),e.prototype.dispose.call(this)},t.prototype.getDomNode=function(){return this.domNode},t.prototype.createVisibleLine=function(){return new G(this._viewLineOptions)},t.prototype.onConfigurationChanged=function(e){this._visibleLines.onConfigurationChanged(e),e.wrappingInfo&&(this._maxLineWidth=0);var t=this._context.configuration;return e.lineHeight&&(this._lineHeight=t.editor.lineHeight),e.fontInfo&&(this._typicalHalfwidthCharacterWidth=t.editor.fontInfo.typicalHalfwidthCharacterWidth),e.wrappingInfo&&(this._isViewportWrapping=t.editor.wrappingInfo.isViewportWrapping),e.viewInfo&&(this._revealHorizontalRightPadding=t.editor.viewInfo.revealHorizontalRightPadding,this._scrollOff=t.editor.viewInfo.cursorSurroundingLines),e.canUseLayerHinting&&(this._canUseLayerHinting=t.editor.canUseLayerHinting),e.fontInfo&&l["a"].applyFontInfo(this.domNode,t.editor.fontInfo),this._onOptionsMaybeChanged(),e.layoutInfo&&(this._maxLineWidth=0),!0},t.prototype._onOptionsMaybeChanged=function(){var e=this._context.configuration,t=new q(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;for(var n=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber(),o=n;o<=i;o++){var r=this._visibleLines.getVisibleLine(o);r.onOptionsChanged(this._viewLineOptions)}return!0}return!1},t.prototype.onCursorStateChanged=function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=!1,o=t;o<=n;o++)i=this._visibleLines.getVisibleLine(o).onSelectionChanged()||i;return i},t.prototype.onDecorationsChanged=function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=t;i<=n;i++)this._visibleLines.getVisibleLine(i).onDecorationsChanged();return!0},t.prototype.onFlushed=function(e){var t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t},t.prototype.onLinesChanged=function(e){return this._visibleLines.onLinesChanged(e)},t.prototype.onLinesDeleted=function(e){return this._visibleLines.onLinesDeleted(e)},t.prototype.onLinesInserted=function(e){return this._visibleLines.onLinesInserted(e)},t.prototype.onRevealRangeRequest=function(e){var t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.range,e.verticalType),n=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range.startLineNumber!==e.range.endLineNumber?n={scrollTop:n.scrollTop,scrollLeft:0}:this._horizontalRevealRequest=new Ht(e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),n.scrollTop,e.scrollType):this._horizontalRevealRequest=null;var i=Math.abs(this._context.viewLayout.getCurrentScrollTop()-n.scrollTop);return 0===e.scrollType&&i>this._lineHeight?this._context.viewLayout.setScrollPositionSmooth(n):this._context.viewLayout.setScrollPositionNow(n),!0},t.prototype.onScrollChanged=function(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){var t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),n=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTopn)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0},t.prototype.onTokensChanged=function(e){return this._visibleLines.onTokensChanged(e)},t.prototype.onZonesChanged=function(e){return this._context.viewLayout.onMaxLineWidthChanged(this._maxLineWidth),this._visibleLines.onZonesChanged(e)},t.prototype.onThemeChanged=function(e){return this._onOptionsMaybeChanged()},t.prototype.getPositionFromDOMInfo=function(e,t){var n=this._getViewLineDomNode(e);if(null===n)return null;var i=this._getLineNumberFor(n);if(-1===i)return null;if(i<1||i>this._context.model.getLineCount())return null;if(1===this._context.model.getLineMaxColumn(i))return new ee["a"](i,1);var o=this._visibleLines.getStartLineNumber(),r=this._visibleLines.getEndLineNumber();if(ir)return null;var s=this._visibleLines.getVisibleLine(i).getColumnOfNodeOffset(i,e,t),a=this._context.model.getLineMinColumn(i);return sn?-1:this._visibleLines.getVisibleLine(e).getWidth()},t.prototype.linesVisibleRangesForRange=function(e,t){if(this.shouldRender())return null;var n=e.endLineNumber,i=te["a"].intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!i)return null;var o=[],r=0,s=new K(this.domNode.domNode,this._textRangeRestingSpot),a=0;t&&(a=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new ee["a"](i.startLineNumber,1)).lineNumber);for(var u=this._visibleLines.getStartLineNumber(),l=this._visibleLines.getEndLineNumber(),c=i.startLineNumber;c<=i.endLineNumber;c++)if(!(cl)){var d=c===i.startLineNumber?i.startColumn:1,h=c===i.endLineNumber?i.endColumn:this._context.model.getLineMaxColumn(c),p=this._visibleLines.getVisibleLine(c).getVisibleRangesForRange(d,h,s);if(p&&0!==p.length){if(t&&cr)){var a=s===t.startLineNumber?t.startColumn:1,u=s===t.endLineNumber?t.endColumn:this._context.model.getLineMaxColumn(s),l=this._visibleLines.getVisibleLine(s).getVisibleRangesForRange(a,u,i);l&&0!==l.length&&(n=n.concat(l))}return 0===n.length?null:n},t.prototype.visibleRangeForPosition=function(e){var t=this.visibleRangesForRange2(new te["a"](e.lineNumber,e.column,e.lineNumber,e.column));return t?t[0]:null},t.prototype.updateLineWidths=function(){this._updateLineWidths(!1)},t.prototype._updateLineWidthsFast=function(){return this._updateLineWidths(!0)},t.prototype._updateLineWidthsSlow=function(){this._updateLineWidths(!1)},t.prototype._updateLineWidths=function(e){for(var t=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber(),i=1,o=!0,r=t;r<=n;r++){var s=this._visibleLines.getVisibleLine(r);!e||s.getWidthIsFast()?i=Math.max(i,s.getWidth()):o=!1}return o&&1===t&&n===this._context.model.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(i),o},t.prototype.prepareRender=function(){throw new Error("Not supported")},t.prototype.render=function(){throw new Error("Not supported")},t.prototype.renderText=function(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){var t=this._horizontalRevealRequest.lineNumber,n=this._horizontalRevealRequest.startColumn,i=this._horizontalRevealRequest.endColumn,o=this._horizontalRevealRequest.scrollType;if(e.startLineNumber<=t&&t<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();var r=this._computeScrollLeftToRevealRange(t,n,i),s=this._isViewportWrapping;s||this._ensureMaxLineWidth(r.maxHorizontalOffset),0===o?this._context.viewLayout.setScrollPositionSmooth({scrollLeft:r.scrollLeft}):this._context.viewLayout.setScrollPositionNow({scrollLeft:r.scrollLeft})}}this._updateLineWidthsFast()||this._asyncUpdateLineWidths.schedule(),this._linesContent.setLayerHinting(this._canUseLayerHinting);var a=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-a),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())},t.prototype._ensureMaxLineWidth=function(e){var t=Math.ceil(e);this._maxLineWidthc&&(c=p.left+p.width)}o=c,l=Math.max(0,l-t.HORIZONTAL_EXTRA_PX),c+=this._revealHorizontalRightPadding;var f=this._computeMinimumScrolling(s,a,l,c);return{scrollLeft:f,maxHorizontalOffset:o}},t.prototype._computeMinimumScrolling=function(e,t,n,i,o,r){e|=0,t|=0,n|=0,i|=0,o=!!o,r=!!r;var s=t-e,a=i-n;return at?Math.max(0,i-s):e:n},t.HORIZONTAL_EXTRA_PX=30,t}(I),Ut=(n("27e6"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),Kt=function(e){function t(t){var n=e.call(this)||this;return n._context=t,n._decorationsLeft=n._context.configuration.editor.layoutInfo.decorationsLeft,n._decorationsWidth=n._context.configuration.editor.layoutInfo.decorationsWidth,n._renderResult=null,n._context.addEventHandler(n),n}return Ut(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.layoutInfo&&(this._decorationsLeft=this._context.configuration.editor.layoutInfo.decorationsLeft,this._decorationsWidth=this._context.configuration.editor.layoutInfo.decorationsWidth),!0},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype._getDecorations=function(e){for(var t=e.getDecorationsInViewport(),n=[],i=0,o=0,r=t.length;o
    ',a=[],u=t;u<=n;u++){for(var l=u-t,c=i[l],d="",h=0,p=c.length;h';o[s]=u}this._renderResult=o},t.prototype.render=function(e,t){return this._renderResult?this._renderResult[t-e]:""},t}(At),Zt=(n("f20b"),function(){function e(t,n,i,o){this.r=e._clamp(t),this.g=e._clamp(n),this.b=e._clamp(i),this.a=e._clamp(o)}return e._clamp=function(e){return e<0?0:e>255?255:0|e},e.Empty=new e(0,0,0,0),e}()),Yt=n("b707"),Xt=function(){function e(){var e=this;this._onDidChange=new s["a"],this.onDidChange=this._onDidChange.event,this._updateColorMap(),Yt["y"].onDidChange(function(t){t.changedColorMap&&e._updateColorMap()})}return e.getInstance=function(){return this._INSTANCE||(this._INSTANCE=new e),this._INSTANCE},e.prototype._updateColorMap=function(){var e=Yt["y"].getColorMap();if(!e)return this._colors=[Zt.Empty],void(this._backgroundIsLight=!0);this._colors=[Zt.Empty];for(var t=1;t=.5,this._onDidChange.fire(void 0)},e.prototype.getColor=function(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]},e.prototype.backgroundIsLight=function(){return this._backgroundIsLight},e._INSTANCE=null,e}(),$t=function(){function e(t,n){var i=760;if(t.length!==i)throw new Error("Invalid x2CharData");var o=190;if(n.length!==o)throw new Error("Invalid x1CharData");this.x2charData=t,this.x1charData=n,this.x2charDataLight=e.soften(t,.8),this.x1charDataLight=e.soften(n,50/60)}return e.soften=function(e,t){for(var n=new Uint8ClampedArray(e.length),i=0,o=e.length;it.width||i+4>t.height)console.warn("bad render request outside image data");else{var u=a?this.x2charDataLight:this.x2charData,l=e._getChIndex(o),c=4*t.width,d=s.r,h=s.g,p=s.b,f=r.r-d,g=r.g-h,m=r.b-p,v=t.data,_=4*l*2,b=i*c+4*n,y=u[_]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y;y=u[_+1]/255;v[b+4]=d+f*y,v[b+5]=h+g*y,v[b+6]=p+m*y,b+=c;y=u[_+2]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y;y=u[_+3]/255;v[b+4]=d+f*y,v[b+5]=h+g*y,v[b+6]=p+m*y,b+=c;y=u[_+4]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y;y=u[_+5]/255;v[b+4]=d+f*y,v[b+5]=h+g*y,v[b+6]=p+m*y,b+=c;y=u[_+6]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y;y=u[_+7]/255;v[b+4]=d+f*y,v[b+5]=h+g*y,v[b+6]=p+m*y}},e.prototype.x1RenderChar=function(t,n,i,o,r,s,a){if(n+1>t.width||i+2>t.height)console.warn("bad render request outside image data");else{var u=a?this.x1charDataLight:this.x1charData,l=e._getChIndex(o),c=4*t.width,d=s.r,h=s.g,p=s.b,f=r.r-d,g=r.g-h,m=r.b-p,v=t.data,_=2*l*1,b=i*c+4*n,y=u[_]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y,b+=c;y=u[_+1]/255;v[b+0]=d+f*y,v[b+1]=h+g*y,v[b+2]=p+m*y}},e.prototype.x2BlockRenderChar=function(e,t,n,i,o,r){if(t+2>e.width||n+4>e.height)console.warn("bad render request outside image data");else{var s=4*e.width,a=.5,u=o.r,l=o.g,c=o.b,d=i.r-u,h=i.g-l,p=i.b-c,f=u+d*a,g=l+h*a,m=c+p*a,v=e.data,_=n*s+4*t;v[_+0]=f,v[_+1]=g,v[_+2]=m,v[_+4]=f,v[_+5]=g,v[_+6]=m,_+=s,v[_+0]=f,v[_+1]=g,v[_+2]=m,v[_+4]=f,v[_+5]=g,v[_+6]=m,_+=s,v[_+0]=f,v[_+1]=g,v[_+2]=m,v[_+4]=f,v[_+5]=g,v[_+6]=m,_+=s,v[_+0]=f,v[_+1]=g,v[_+2]=m,v[_+4]=f,v[_+5]=g,v[_+6]=m}},e.prototype.x1BlockRenderChar=function(e,t,n,i,o,r){if(t+1>e.width||n+2>e.height)console.warn("bad render request outside image data");else{var s=4*e.width,a=.5,u=o.r,l=o.g,c=o.b,d=i.r-u,h=i.g-l,p=i.b-c,f=u+d*a,g=l+h*a,m=c+p*a,v=e.data,_=n*s+4*t;v[_+0]=f,v[_+1]=g,v[_+2]=m,_+=s,v[_+0]=f,v[_+1]=g,v[_+2]=m}},e}();function Qt(e){for(var t=new Uint8ClampedArray(e.length),n=0,i=e.length;n=s+y){var w=1,C=s;return new e(a,u,_,b,c,w,C)}w=Math.max(1,Math.floor(n-b*h/p));l&&l.scrollHeight===u&&(l.scrollTop>a&&(w=Math.min(w,l.startLineNumber)),l.scrollTopun)n._context.viewLayout.setScrollPositionNow({scrollTop:o.scrollTop});else{var s=e.posy-t;n._context.viewLayout.setScrollPositionNow({scrollTop:o.getDesiredScrollTopFromDelta(s)})}},function(){n._slider.toggleClassName("active",!1)})}}),n}return rn(t,e),t.prototype.dispose=function(){this._mouseDownListener.dispose(),this._sliderMouseMoveMonitor.dispose(),this._sliderMouseDownListener.dispose(),e.prototype.dispose.call(this)},t.prototype._getMinimapDomNodeClassName=function(){return"always"===this._options.showSlider?"minimap slider-always":"minimap slider-mouseover"},t.prototype.getDomNode=function(){return this._domNode},t.prototype._applyLayout=function(){this._domNode.setLeft(this._options.minimapLeft),this._domNode.setWidth(this._options.minimapWidth),this._domNode.setHeight(this._options.minimapHeight),this._shadow.setHeight(this._options.minimapHeight),this._canvas.setWidth(this._options.canvasOuterWidth),this._canvas.setHeight(this._options.canvasOuterHeight),this._canvas.domNode.width=this._options.canvasInnerWidth,this._canvas.domNode.height=this._options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._options.canvasInnerHeight,this._slider.setWidth(this._options.minimapWidth)},t.prototype._getBuffer=function(){return this._buffers||(this._buffers=new pn(this._canvas.domNode.getContext("2d"),this._options.canvasInnerWidth,this._options.canvasInnerHeight,this._tokensColorTracker.getColor(2))),this._buffers.getBuffer()},t.prototype._onOptionsMaybeChanged=function(){var e=new ln(this._context.configuration);return!this._options.equals(e)&&(this._options=e,this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName()),!0)},t.prototype.onConfigurationChanged=function(e){return this._onOptionsMaybeChanged()},t.prototype.onFlushed=function(e){return this._lastRenderData=null,!0},t.prototype.onLinesChanged=function(e){return!!this._lastRenderData&&this._lastRenderData.onLinesChanged(e)},t.prototype.onLinesDeleted=function(e){return this._lastRenderData&&this._lastRenderData.onLinesDeleted(e),!0},t.prototype.onLinesInserted=function(e){return this._lastRenderData&&this._lastRenderData.onLinesInserted(e),!0},t.prototype.onScrollChanged=function(e){return this._renderDecorations=!0,!0},t.prototype.onTokensChanged=function(e){return!!this._lastRenderData&&this._lastRenderData.onTokensChanged(e)},t.prototype.onTokensColorsChanged=function(e){return this._lastRenderData=null,this._buffers=null,!0},t.prototype.onZonesChanged=function(e){return this._lastRenderData=null,!0},t.prototype.onDecorationsChanged=function(e){return this._renderDecorations=!0,!0},t.prototype.onThemeChanged=function(e){return this._context.model.invalidateMinimapColorCache(),this._renderDecorations=!!this._lastDecorations,!!this._lastDecorations},t.prototype.prepareRender=function(e){},t.prototype.render=function(e){var t=this._options.renderMinimap;if(0===t)return this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),void this._sliderHorizontal.setHeight(0);e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");var n=cn.create(this._options,e.visibleRange.startLineNumber,e.visibleRange.endLineNumber,e.viewportHeight,e.viewportData.whitespaceViewportData.length>0,this._context.model.getLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setTop(n.sliderTop),this._slider.setHeight(n.sliderHeight);var i=e.scrollLeft/this._options.typicalHalfwidthCharacterWidth,o=Math.min(this._options.minimapWidth,Math.round(i*an(this._options.renderMinimap)/this._options.pixelRatio));this._sliderHorizontal.setLeft(o),this._sliderHorizontal.setWidth(this._options.minimapWidth-o),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(n.sliderHeight),this.renderDecorations(n),this._lastRenderData=this.renderLines(n)},t.prototype.renderDecorations=function(e){if(this._renderDecorations){this._renderDecorations=!1;var t=this._context.model.getDecorationsInViewport(new te["a"](e.startLineNumber,1,e.endLineNumber,this._context.model.getLineMaxColumn(e.endLineNumber))),n=this._options,i=n.renderMinimap,o=n.canvasInnerWidth,r=n.canvasInnerHeight,s=sn(i),a=an(i),u=this._context.model.getOptions().tabSize,l=this._decorationsCanvas.domNode.getContext("2d");l.clearRect(0,0,o,r);for(var c=new Map,d=0;do?c.length-1:_-1;if(C>0){var S=c[C]-w||2;this.renderDecoration(e,n.options.minimap,w,l,S,r)}d&&this.renderLineHighlight(e,n.options.minimap,l,r)},t.prototype.renderLineHighlight=function(e,t,n,i){var o=t.getColor(this._context.theme);e.fillStyle=o&&o.transparent(.5).toString()||"",e.fillRect(0,n,e.canvas.width,i)},t.prototype.renderDecoration=function(e,t,n,i,o,r){var s=t.getColor(this._context.theme);e.fillStyle=s&&s.toString()||"",e.fillRect(n,i,o,r)},t.prototype.renderLines=function(e){var n=this._options.renderMinimap,i=e.startLineNumber,o=e.endLineNumber,r=sn(n);if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){var s=this._lastRenderData._get();return new hn(e,s.imageData,s.lines)}for(var a=this._getBuffer(),u=t._renderUntouchedLines(a,i,o,r,this._lastRenderData),l=u[0],c=u[1],d=u[2],h=this._context.model.getMinimapLinesRenderingData(i,o,d),p=h.tabSize,f=this._tokensColorTracker.getColor(2),g=this._tokensColorTracker.backgroundIsLight(),m=0,v=[],_=0,b=o-i+1;_=0&&Oh)return;var w=l.charCodeAt(f);if(9===w){var C=a-(f+g)%a;g+=C-1,p+=C*d}else if(32===w)p+=d;else for(var S=Oe["v"](w)?2:1,L=0;Lh)return}},t}(I);Object(B["f"])(function(e,t){var n=e.getColor(on["Nb"]);if(n){var i=n.transparent(.5);t.addRule(".monaco-editor .minimap-slider, .monaco-editor .minimap-slider .minimap-slider-horizontal { background: "+i+"; }")}var o=e.getColor(on["Ob"]);if(o){var r=o.transparent(.5);t.addRule(".monaco-editor .minimap-slider:hover, .monaco-editor .minimap-slider:hover .minimap-slider-horizontal { background: "+r+"; }")}var s=e.getColor(on["Mb"]);if(s){var a=s.transparent(.5);t.addRule(".monaco-editor .minimap-slider.active, .monaco-editor .minimap-slider.active .minimap-slider-horizontal { background: "+a+"; }")}var u=e.getColor(on["Lb"]);u&&t.addRule(".monaco-editor .minimap-shadow-visible { box-shadow: "+u+" -6px 0 6px -6px inset; }")});n("725e");var gn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),mn=function(e){function t(t){var n=e.call(this,t)||this;return n._widgets={},n._verticalScrollbarWidth=n._context.configuration.editor.layoutInfo.verticalScrollbarWidth,n._minimapWidth=n._context.configuration.editor.layoutInfo.minimapWidth,n._horizontalScrollbarHeight=n._context.configuration.editor.layoutInfo.horizontalScrollbarHeight,n._editorHeight=n._context.configuration.editor.layoutInfo.height,n._editorWidth=n._context.configuration.editor.layoutInfo.width,n._domNode=Object(h["b"])(document.createElement("div")),E.write(n._domNode,4),n._domNode.setClassName("overlayWidgets"),n}return gn(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._widgets={}},t.prototype.getDomNode=function(){return this._domNode},t.prototype.onConfigurationChanged=function(e){return!!e.layoutInfo&&(this._verticalScrollbarWidth=this._context.configuration.editor.layoutInfo.verticalScrollbarWidth,this._minimapWidth=this._context.configuration.editor.layoutInfo.minimapWidth,this._horizontalScrollbarHeight=this._context.configuration.editor.layoutInfo.horizontalScrollbarHeight,this._editorHeight=this._context.configuration.editor.layoutInfo.height,this._editorWidth=this._context.configuration.editor.layoutInfo.width,!0)},t.prototype.addWidget=function(e){var t=Object(h["b"])(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),this._domNode.appendChild(t),this.setShouldRender()},t.prototype.setWidgetPosition=function(e,t){var n=this._widgets[e.getId()];return n.preference!==t&&(n.preference=t,this.setShouldRender(),!0)},t.prototype.removeWidget=function(e){var t=e.getId();if(this._widgets.hasOwnProperty(t)){var n=this._widgets[t],i=n.domNode.domNode;delete this._widgets[t],i.parentNode.removeChild(i),this.setShouldRender()}},t.prototype._renderWidget=function(e){var t=e.domNode;if(null!==e.preference)if(0===e.preference)t.setTop(0),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth);else if(1===e.preference){var n=t.domNode.clientHeight;t.setTop(this._editorHeight-n-2*this._horizontalScrollbarHeight),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth)}else 2===e.preference&&(t.setTop(0),t.domNode.style.right="50%");else t.unsetTop()},t.prototype.prepareRender=function(e){},t.prototype.render=function(e){this._domNode.setWidth(this._editorWidth);for(var t=Object.keys(this._widgets),n=0,i=t.length;n=3){var o=Math.floor(i/3),r=Math.floor(i/3),s=i-o-r,a=e,u=a+o,l=a+o+s;return[[0,a,u,a,l,a,u,a],[0,o,s,o+s,r,o+s+r,s+r,o+s+r]]}if(2===n){o=Math.floor(i/2),r=i-o,a=e,l=a+o;return[[0,a,a,a,l,a,a,a],[0,o,o,o,r,o+r,o+r,o+r]]}var c=e,d=i;return[[0,c,c,c,c,c,c,c],[0,d,d,d,d,d,d,d]]},e.prototype.equals=function(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColor===e.cursorColor&&this.themeType===e.themeType&&this.backgroundColor===e.backgroundColor&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight},e}(),yn=function(e){function t(t){var n=e.call(this,t)||this;return n._domNode=Object(h["b"])(document.createElement("canvas")),n._domNode.setClassName("decorationsOverviewRuler"),n._domNode.setPosition("absolute"),n._domNode.setLayerHinting(!0),n._domNode.setAttribute("aria-hidden","true"),n._updateSettings(!1),n._tokensColorTrackerListener=Yt["y"].onDidChange(function(e){e.changedColorMap&&n._updateSettings(!0)}),n._cursorPositions=[],n}return _n(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._tokensColorTrackerListener.dispose()},t.prototype._updateSettings=function(e){var t=new bn(this._context.configuration,this._context.theme);return(!this._settings||!this._settings.equals(t))&&(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),!0)},t.prototype.onConfigurationChanged=function(e){return this._updateSettings(!1)},t.prototype.onCursorStateChanged=function(e){this._cursorPositions=[];for(var t=0,n=e.selections.length;tt&&(D=t-u),O=D-u,x=D+u}O>b+1||C!==v?(0!==y&&l.fillRect(c[v],_,d[v],b-_),v=C,_=O,b=x):x>b&&(b=x)}l.fillRect(c[v],_,d[v],b-_)}if(!this._settings.hideCursor&&this._settings.cursorColor){var k=2*this._settings.pixelRatio|0,I=k/2|0,E=this._settings.x[7],M=this._settings.w[7];l.fillStyle=this._settings.cursorColor;for(_=-100,b=-100,y=0,w=this._cursorPositions.length;yt&&(D=t-I);O=D-I,x=O+k;O>b+1?(0!==y&&l.fillRect(E,_,M,b-_),_=O,b=x):x>b&&(b=x)}l.fillRect(E,_,M,b-_)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(l.beginPath(),l.lineWidth=1,l.strokeStyle=this._settings.borderColor,l.moveTo(0,0),l.lineTo(0,t),l.stroke(),l.moveTo(0,0),l.lineTo(e,0),l.stroke())},t}(I),wn=n("32f2"),Cn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Sn=function(e){function t(t,n){var i=e.call(this)||this;return i._context=t,i._domNode=Object(h["b"])(document.createElement("canvas")),i._domNode.setClassName(n),i._domNode.setPosition("absolute"),i._domNode.setLayerHinting(!0),i._zoneManager=new wn["b"](function(e){return i._context.viewLayout.getVerticalOffsetForLineNumber(e)}),i._zoneManager.setDOMWidth(0),i._zoneManager.setDOMHeight(0),i._zoneManager.setOuterHeight(i._context.viewLayout.getScrollHeight()),i._zoneManager.setLineHeight(i._context.configuration.editor.lineHeight),i._zoneManager.setPixelRatio(i._context.configuration.editor.pixelRatio),i._context.addEventHandler(i),i}return Cn(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._zoneManager.setLineHeight(this._context.configuration.editor.lineHeight),this._render()),e.pixelRatio&&(this._zoneManager.setPixelRatio(this._context.configuration.editor.pixelRatio),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0},t.prototype.onFlushed=function(e){return this._render(),!0},t.prototype.onScrollChanged=function(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0},t.prototype.onZonesChanged=function(e){return this._render(),!0},t.prototype.getDomNode=function(){return this._domNode.domNode},t.prototype.setLayout=function(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);var t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())},t.prototype.setZones=function(e){this._zoneManager.setZones(e),this._render()},t.prototype._render=function(){if(0===this._zoneManager.getOuterHeight())return!1;var e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),n=this._zoneManager.resolveColorZones(),i=this._zoneManager.getId2Color(),o=this._domNode.domNode.getContext("2d");return o.clearRect(0,0,e,t),n.length>0&&this._renderOneLane(o,n,i,e),!0},t.prototype._renderOneLane=function(e,t,n,i){for(var o=0,r=0,s=0,a=0,u=t;a=d?s=Math.max(s,h):(e.fillRect(0,r,i,s-r),r=d,s=h)}e.fillRect(0,r,i,s-r)},t}(D),Ln=(n("ef37"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),On=function(e){function t(t){var n=e.call(this,t)||this;return n.domNode=Object(h["b"])(document.createElement("div")),n.domNode.setAttribute("role","presentation"),n.domNode.setAttribute("aria-hidden","true"),n.domNode.setClassName("view-rulers"),n._renderedRulers=[],n._rulers=n._context.configuration.editor.viewInfo.rulers,n._typicalHalfwidthCharacterWidth=n._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,n}return Ln(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return!!(e.viewInfo||e.layoutInfo||e.fontInfo)&&(this._rulers=this._context.configuration.editor.viewInfo.rulers,this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,!0)},t.prototype.onScrollChanged=function(e){return e.scrollHeightChanged},t.prototype.prepareRender=function(e){},t.prototype._ensureRulersCount=function(){var e=this._renderedRulers.length,t=this._rulers.length;if(e!==t)if(e0){var r=Object(h["b"])(document.createElement("div"));r.setClassName("view-ruler"),r.setWidth(i),this.domNode.appendChild(r),this._renderedRulers.push(r),o--}}else{var s=e-t;while(s>0){r=this._renderedRulers.pop();this.domNode.removeChild(r),s--}}},t.prototype.render=function(e){this._ensureRulersCount();for(var t=0,n=this._rulers.length;t0;return this._shouldShow!==e&&(this._shouldShow=e,!0)},t.prototype.getDomNode=function(){return this._domNode},t.prototype._updateWidth=function(){var e=this._context.configuration.editor.layoutInfo,t=0;return t=0===e.renderMinimap||e.minimapWidth>0&&0===e.minimapLeft?e.width:e.width-e.minimapWidth-e.verticalScrollbarWidth,this._width!==t&&(this._width=t,!0)},t.prototype.onConfigurationChanged=function(e){var t=!1;return e.viewInfo&&(this._useShadows=this._context.configuration.editor.viewInfo.scrollbar.useShadows),e.layoutInfo&&(t=this._updateWidth()),this._updateShouldShow()||t},t.prototype.onScrollChanged=function(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()},t.prototype.prepareRender=function(e){},t.prototype.render=function(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")},t}(I);Object(B["f"])(function(e,t){var n=e.getColor(on["Lb"]);n&&t.addRule(".monaco-editor .scroll-decoration { box-shadow: "+n+" 0 6px 6px -6px inset; }")});n("782d");var Dn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),kn=function(){function e(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}return e}(),In=function(){function e(e,t){this.lineNumber=e,this.ranges=t}return e}();function En(e){return new kn(e)}function Mn(e){return new In(e.lineNumber,e.ranges.map(En))}var Tn=f["g"],Pn=function(e){function t(t){var n=e.call(this)||this;return n._previousFrameVisibleRangesWithStyle=[],n._context=t,n._lineHeight=n._context.configuration.editor.lineHeight,n._roundedSelection=n._context.configuration.editor.viewInfo.roundedSelection,n._typicalHalfwidthCharacterWidth=n._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,n._selections=[],n._renderResult=null,n._context.addEventHandler(n),n}return Dn(t,e),t.prototype.dispose=function(){this._context.removeEventHandler(this),this._renderResult=null,e.prototype.dispose.call(this)},t.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.viewInfo&&(this._roundedSelection=this._context.configuration.editor.viewInfo.roundedSelection),e.fontInfo&&(this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth),!0},t.prototype.onCursorStateChanged=function(e){return this._selections=e.selections.slice(0),!0},t.prototype.onDecorationsChanged=function(e){return!0},t.prototype.onFlushed=function(e){return!0},t.prototype.onLinesChanged=function(e){return!0},t.prototype.onLinesDeleted=function(e){return!0},t.prototype.onLinesInserted=function(e){return!0},t.prototype.onScrollChanged=function(e){return e.scrollTopChanged},t.prototype.onZonesChanged=function(e){return!0},t.prototype._visibleRangesHaveGaps=function(e){for(var t=0,n=e.length;t1)return!0}return!1},t.prototype._enrichVisibleRangesWithStyle=function(e,t,n){var i=this._typicalHalfwidthCharacterWidth/4,o=null,r=null;if(n&&n.length>0&&t.length>0){var s=t[0].lineNumber;if(s===e.startLineNumber)for(var a=0;!o&&a=0;a--)n[a].lineNumber===u&&(r=n[a].ranges[0]);o&&!o.startStyle&&(o=null),r&&!r.startStyle&&(r=null)}a=0;for(var l=t.length;a0){var g=t[a-1].ranges[0].left,m=t[a-1].ranges[0].left+t[a-1].ranges[0].width;Rn(d-g)g&&(p.top=1),Rn(h-m)'},t.prototype._actualRenderOneSelection=function(e,n,i,o){for(var r=o.length>0&&o[0].ranges[0].startStyle,s=this._lineHeight.toString(),a=(this._lineHeight-1).toString(),u=o.length>0?o[0].lineNumber:0,l=o.length>0?o[o.length-1].lineNumber:0,c=0,d=o.length;c1,c)}}this._previousFrameVisibleRangesWithStyle=s,this._renderResult=t},t.prototype.render=function(e,t){if(!this._renderResult)return"";var n=t-e;return n<0||n>=this._renderResult.length?"":this._renderResult[n]},t.SELECTION_CLASS_NAME="selected-text",t.SELECTION_TOP_LEFT="top-left-radius",t.SELECTION_BOTTOM_LEFT="bottom-left-radius",t.SELECTION_TOP_RIGHT="top-right-radius",t.SELECTION_BOTTOM_RIGHT="bottom-right-radius",t.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",t.ROUNDED_PIECE_WIDTH=10,t}(ke);function Rn(e){return e<0?-e:e}Object(B["f"])(function(e,t){var n=e.getColor(on["H"]);n&&t.addRule(".monaco-editor .focused .selected-text { background-color: "+n+"; }");var i=e.getColor(on["E"]);i&&t.addRule(".monaco-editor .selected-text { background-color: "+i+"; }");var o=e.getColor(on["I"]);o&&t.addRule(".monaco-editor .view-line span.inline-selected-text { color: "+o+"; }")});n("d93b");var An=n("fd49"),Fn=function(){function e(e,t,n,i,o,r){this.top=e,this.left=t,this.width=n,this.height=i,this.textContent=o,this.textContentClassName=r}return e}(),jn=function(){function e(e){this._context=e,this._cursorStyle=this._context.configuration.editor.viewInfo.cursorStyle,this._lineHeight=this._context.configuration.editor.lineHeight,this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(this._context.configuration.editor.viewInfo.cursorWidth,this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=Object(h["b"])(document.createElement("div")),this._domNode.setClassName("cursor"),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),l["a"].applyFontInfo(this._domNode,this._context.configuration.editor.fontInfo),this._domNode.setDisplay("none"),this._position=new ee["a"](1,1),this._lastRenderedContent="",this._renderData=null}return e.prototype.getDomNode=function(){return this._domNode},e.prototype.getPosition=function(){return this._position},e.prototype.show=function(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)},e.prototype.hide=function(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)},e.prototype.onConfigurationChanged=function(e){return e.lineHeight&&(this._lineHeight=this._context.configuration.editor.lineHeight),e.fontInfo&&(l["a"].applyFontInfo(this._domNode,this._context.configuration.editor.fontInfo),this._typicalHalfwidthCharacterWidth=this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth),e.viewInfo&&(this._cursorStyle=this._context.configuration.editor.viewInfo.cursorStyle,this._lineCursorWidth=Math.min(this._context.configuration.editor.viewInfo.cursorWidth,this._typicalHalfwidthCharacterWidth)),!0},e.prototype.onCursorPositionChanged=function(e){return this._position=e,!0},e.prototype._prepareRender=function(e){var t="",n="";if(this._cursorStyle===An["g"].Line||this._cursorStyle===An["g"].LineThin){var i,r=e.visibleRangeForPosition(this._position);if(!r)return null;if(this._cursorStyle===An["g"].Line){if(i=o["q"](this._lineCursorWidth>0?this._lineCursorWidth:2),i>2){var s=this._context.model.getLineContent(this._position.lineNumber);t=s.charAt(this._position.column-1)}}else i=o["q"](1);var a=r.left;i>=2&&a>=1&&(a-=1);var u=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta;return new Fn(u,a,i,this._lineHeight,t,n)}var l=e.linesVisibleRangesForRange(new te["a"](this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column+1),!1);if(!l||0===l.length||0===l[0].ranges.length)return null;var c=l[0].ranges[0],d=c.width<1?this._typicalHalfwidthCharacterWidth:c.width;if(this._cursorStyle===An["g"].Block){var h=this._context.model.getViewLineData(this._position.lineNumber);t=h.content.charAt(this._position.column-1),Oe["w"](h.content.charCodeAt(this._position.column-1))&&(t+=h.content.charAt(this._position.column));var p=h.tokens.findTokenIndexAtOffset(this._position.column-1);n=h.tokens.getClassName(p)}var f=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta,g=this._lineHeight;return this._cursorStyle!==An["g"].Underline&&this._cursorStyle!==An["g"].UnderlineThin||(f+=this._lineHeight-2,g=2),new Fn(f,c.left,d,g,t,n)},e.prototype.prepareRender=function(e){this._renderData=this._prepareRender(e)},e.prototype.render=function(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName("cursor "+this._renderData.textContentClassName),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)},e}(),Wn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Vn=function(e){function t(t){var n=e.call(this,t)||this;return n._readOnly=n._context.configuration.editor.readOnly,n._cursorBlinking=n._context.configuration.editor.viewInfo.cursorBlinking,n._cursorStyle=n._context.configuration.editor.viewInfo.cursorStyle,n._cursorSmoothCaretAnimation=n._context.configuration.editor.viewInfo.cursorSmoothCaretAnimation,n._selectionIsEmpty=!0,n._isVisible=!1,n._primaryCursor=new jn(n._context),n._secondaryCursors=[],n._renderData=[],n._domNode=Object(h["b"])(document.createElement("div")),n._domNode.setAttribute("role","presentation"),n._domNode.setAttribute("aria-hidden","true"),n._updateDomClassName(),n._domNode.appendChild(n._primaryCursor.getDomNode()),n._startCursorBlinkAnimation=new m["e"],n._cursorFlatBlinkInterval=new m["c"],n._blinkingEnabled=!1,n._editorHasFocus=!1,n._updateBlinking(),n}return Wn(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()},t.prototype.getDomNode=function(){return this._domNode},t.prototype.onConfigurationChanged=function(e){e.readOnly&&(this._readOnly=this._context.configuration.editor.readOnly),e.viewInfo&&(this._cursorBlinking=this._context.configuration.editor.viewInfo.cursorBlinking,this._cursorStyle=this._context.configuration.editor.viewInfo.cursorStyle,this._cursorSmoothCaretAnimation=this._context.configuration.editor.viewInfo.cursorSmoothCaretAnimation),this._primaryCursor.onConfigurationChanged(e),this._updateBlinking(),e.viewInfo&&this._updateDomClassName();for(var t=0,n=this._secondaryCursors.length;tt.length){var r=this._secondaryCursors.length-t.length;for(i=0;in){var r=t-n;for(o=0;o=e+1&&this.lastAddedCursorIndex--,this.secondaryCursors[e].dispose(this.context),this.secondaryCursors.splice(e,1)},e.prototype._getAll=function(){var e=[];e[0]=this.primaryCursor;for(var t=0,n=this.secondaryCursors.length;th&&L.index--}e.splice(h,1),t.splice(d,1),this._removeSecondaryCursor(h-1),o--}}}}},e}(),ni=n("b272"),ii=n("191f"),oi=n("8ae8"),ri=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function si(e){for(var t=0,n=e.length;t=t.length)return!1;if(!t[n].strictContainsRange(e[n]))return!1}return!0},e}(),ci=function(e){function t(t,n,i){var o=e.call(this)||this;o._onDidReachMaxCursorCount=o._register(new s["a"]),o.onDidReachMaxCursorCount=o._onDidReachMaxCursorCount.event,o._onDidAttemptReadOnlyEdit=o._register(new s["a"]),o.onDidAttemptReadOnlyEdit=o._onDidAttemptReadOnlyEdit.event,o._onDidChange=o._register(new s["a"]),o.onDidChange=o._onDidChange.event,o._configuration=t,o._model=n,o._knownModelVersionId=o._model.getVersionId(),o._viewModel=i,o.context=new ne["c"](o._configuration,o._model,o._viewModel),o._cursors=new ti(o.context),o._isHandling=!1,o._isDoingComposition=!1,o._columnSelectData=null,o._autoClosedActions=[],o._prevEditOperationType=0,o._register(o._model.onDidChangeRawContent(function(e){if(o._knownModelVersionId=e.versionId,!o._isHandling){var t=e.containsEvent(1);o._onModelContentChanged(t)}})),o._register(i.addEventListener(function(e){si(e)&&o._knownModelVersionId===o._model.getVersionId()&&o.setStates("viewModel",0,o.getAll())}));var r=function(){o.context=new ne["c"](o._configuration,o._model,o._viewModel),o._cursors.updateContext(o.context)};return o._register(o._model.onDidChangeLanguage(function(e){r()})),o._register(o._model.onDidChangeLanguageConfiguration(function(){r()})),o._register(o._model.onDidChangeOptions(function(){r()})),o._register(o._configuration.onDidChange(function(e){ne["b"].shouldRecreate(e)&&r()})),o}return ri(t,e),t.prototype.dispose=function(){this._cursors.dispose(),this._autoClosedActions=Object(a["f"])(this._autoClosedActions),e.prototype.dispose.call(this)},t.prototype._validateAutoClosedActions=function(){if(this._autoClosedActions.length>0)for(var e=this._cursors.getSelections(),t=0;tt.MAX_CURSOR_COUNT&&(i=i.slice(0,t.MAX_CURSOR_COUNT),this._onDidReachMaxCursorCount.fire(void 0));var o=new ui(this._model,this);this._cursors.setStates(i),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,n,o)},t.prototype.setColumnSelectData=function(e){this._columnSelectData=e},t.prototype.reveal=function(e,t,n){this._revealRange(t,0,e,n)},t.prototype.revealRange=function(e,t,n,i){this.emitCursorRevealRange(t,n,e,i)},t.prototype.scrollTo=function(e){this._viewModel.viewLayout.setScrollPositionSmooth({scrollTop:e})},t.prototype.saveState=function(){for(var e=[],t=this._cursors.getSelections(),n=0,i=t.length;n0&&this._pushAutoClosedAction(n,i),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}},t.prototype._interpretCommandResult=function(e){e&&0!==e.length||(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()},t.prototype._emitStateChangedIfNecessary=function(e,t,n){var i=new ui(this._model,this);if(i.equals(n))return!1;var o=this._cursors.getSelections(),r=this._cursors.getViewSelections();try{var s=this._beginEmit();s.emit(new je(r))}finally{this._endEmit()}return n&&n.cursorState.length===i.cursorState.length&&!i.cursorState.some(function(e,t){return!e.modelState.equals(n.cursorState[t].modelState)})||this._onDidChange.fire(new ai(o,e||"keyboard",t)),!0},t.prototype._revealRange=function(e,t,n,i){var o=this._cursors.getViewPositions(),r=o[0];if(1===e)for(var s=1;s1)return;var a=new te["a"](r.lineNumber,r.column,r.lineNumber,r.column);this.emitCursorRevealRange(a,t,n,i)},t.prototype.emitCursorRevealRange=function(e,t,n,i){try{var o=this._beginEmit();o.emit(new qe(e,t,n,i))}finally{this._endEmit()}},t.prototype._findAutoClosingPairs=function(e){if(!e.length)return null;for(var t=[],n=0,i=e.length;n=0)return null;var r=o.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!r)return null;var s=r[1],a=this.context.config.autoClosingPairsClose2.get(s);if(!a||1!==a.length)return null;var u=a[0].open,l=o.text.length-r[2].length-1,c=o.text.lastIndexOf(u,l-1);if(-1===c)return null;t.push([c,l])}return t},t.prototype.executeEdits=function(e,t,n){var i=this,o=null;"snippet"===e&&(o=this._findAutoClosingPairs(t)),o&&(t[0]._isTracked=!0);var r=[],s=[],a=this._model.pushEditOperations(this.getSelections(),t,function(e){if(o)for(var t=0,a=o.length;t0&&this._pushAutoClosedAction(r,s)},t.prototype.trigger=function(e,t,n){var i=oi["b"];if(t!==i.CompositionStart)if(t===i.CompositionEnd&&(this._isDoingComposition=!1),this._configuration.editor.readOnly)this._onDidAttemptReadOnlyEdit.fire(void 0);else{var o=new ui(this._model,this),s=0;t!==i.Undo&&t!==i.Redo&&this._cursors.stopTrackingSelections(),this._cursors.ensureValidState(),this._isHandling=!0;try{switch(t){case i.Type:this._type(e,n.text);break;case i.ReplacePreviousChar:this._replacePreviousChar(n.text,n.replaceCharCnt);break;case i.Paste:s=4,this._paste(n.text,n.pasteOnNewLine,n.multicursorText);break;case i.Cut:this._cut();break;case i.Undo:s=5,this._interpretCommandResult(this._model.undo());break;case i.Redo:s=6,this._interpretCommandResult(this._model.redo());break;case i.ExecuteCommand:this._externalExecuteCommand(n);break;case i.ExecuteCommands:this._externalExecuteCommands(n);break;case i.CompositionEnd:this._interpretCompositionEnd(e);break}}catch(a){Object(r["e"])(a)}this._isHandling=!1,t!==i.Undo&&t!==i.Redo&&this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,s,o)&&this._revealRange(0,0,!0,0)}else this._isDoingComposition=!0},t.prototype._interpretCompositionEnd=function(e){if(!this._isDoingComposition&&"keyboard"===e){var t=li.getAllAutoClosedCharacters(this._autoClosedActions);this._executeEditOperation(ii["a"].compositionEndWithInterceptors(this._prevEditOperationType,this.context.config,this.context.model,this.getSelections(),t))}},t.prototype._type=function(e,t){if(this._isDoingComposition||"keyboard"!==e)this._executeEditOperation(ii["a"].typeWithoutInterceptors(this._prevEditOperationType,this.context.config,this.context.model,this.getSelections(),t));else for(var n=0,i=t.length;n0&&(r[0]._isTracked=!0);var u=e.model.pushEditOperations(e.selectionsBefore,r,function(n){for(var i=[],o=0;o0?(i[n].sort(u),l[n]=t[n].computeCursorState(e.model,{getInverseEditOperations:function(){return i[n]},getTrackedSelection:function(t){var n=parseInt(t,10),i=e.model._getTrackedRange(e.trackedRanges[n]);return 0===e.trackedRangesDirection[n]?new pe["a"](i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn):new pe["a"](i.endLineNumber,i.endColumn,i.startLineNumber,i.startColumn)}})):l[n]=e.selectionsBefore[n]};for(o=0;oo.identifier.major?i.identifier.major:o.identifier.major,t[r.toString()]=!0;for(var s=0;s0&&n--}}return t},e}(),hi=n("f58f"),pi=n("c101"),fi=n("4d05"),gi=n("42e3"),mi=function(){function e(){this._instanceId=Oe["I"](++e.INSTANCE_COUNT),this._heights=[],this._minWidths=[],this._ids=[],this._afterLineNumbers=[],this._ordinals=[],this._prefixSum=[],this._prefixSumValidIndex=-1,this._whitespaceId2Index={},this._lastWhitespaceId=0,this._minWidth=-1}return e.findInsertionIndex=function(e,t,n,i){var o=0,r=e.length;while(o>>1;t===e[s]?i=t&&(this._whitespaceId2Index[l]=c+1)}this._whitespaceId2Index[e]=t,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)},e.prototype.changeWhitespace=function(e,t,n){t|=0,n|=0;var i=!1;return i=this.changeWhitespaceHeight(e,n)||i,i=this.changeWhitespaceAfterLineNumber(e,t)||i,i},e.prototype.changeWhitespaceHeight=function(e,t){if(t|=0,this._whitespaceId2Index.hasOwnProperty(e)){var n=this._whitespaceId2Index[e];if(this._heights[n]!==t)return this._heights[n]=t,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,n-1),!0}return!1},e.prototype.changeWhitespaceAfterLineNumber=function(t,n){if(n|=0,this._whitespaceId2Index.hasOwnProperty(t)){var i=this._whitespaceId2Index[t];if(this._afterLineNumbers[i]!==n){var o=this._ordinals[i],r=this._heights[i],s=this._minWidths[i];this.removeWhitespace(t);var a=e.findInsertionIndex(this._afterLineNumbers,n,this._ordinals,o);return this._insertWhitespaceAtIndex(t,a,n,o,r,s),!0}}return!1},e.prototype.removeWhitespace=function(e){if(this._whitespaceId2Index.hasOwnProperty(e)){var t=this._whitespaceId2Index[e];return delete this._whitespaceId2Index[e],this._removeWhitespaceAtIndex(t),this._minWidth=-1,!0}return!1},e.prototype._removeWhitespaceAtIndex=function(e){e|=0,this._heights.splice(e,1),this._minWidths.splice(e,1),this._ids.splice(e,1),this._afterLineNumbers.splice(e,1),this._ordinals.splice(e,1),this._prefixSum.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1);for(var t=Object.keys(this._whitespaceId2Index),n=0,i=t.length;n=e&&(this._whitespaceId2Index[o]=r-1)}},e.prototype.onLinesDeleted=function(e,t){e|=0,t|=0;for(var n=0,i=this._afterLineNumbers.length;nt&&(this._afterLineNumbers[n]-=t-e+1)}},e.prototype.onLinesInserted=function(e,t){e|=0,t|=0;for(var n=0,i=this._afterLineNumbers.length;n=t.length||t[s+1]>=e)return s;n=s+1|0}else i=s-1|0}return-1},e.prototype._findFirstWhitespaceAfterLineNumber=function(e){e|=0;var t=this._findLastWhitespaceBeforeLineNumber(e),n=t+1;return n1?this._lineHeight*(e-1):0;var n=this._whitespaces.getAccumulatedHeightBeforeLineNumber(e);return t+n},e.prototype.getWhitespaceAccumulatedHeightBeforeLineNumber=function(e){return this._whitespaces.getAccumulatedHeightBeforeLineNumber(e)},e.prototype.getWhitespaceMinWidth=function(){return this._whitespaces.getMinWidth()},e.prototype.isAfterLines=function(e){var t=this.getLinesTotalHeight();return e>t},e.prototype.getLineNumberAtOrAfterVerticalOffset=function(e){if(e|=0,e<0)return 1;var t=0|this._lineCount,n=this._lineHeight,i=1,o=t;while(i=s+n)i=r+1;else{if(e>=s)return r;o=r}}return i>t?t:i},e.prototype.getLinesViewportData=function(e,t){e|=0,t|=0;var n,i,o=this._lineHeight,r=0|this.getLineNumberAtOrAfterVerticalOffset(e),s=0|this.getVerticalOffsetForLineNumber(r),a=0|this._lineCount,u=0|this._whitespaces.getFirstWhitespaceIndexAfterLineNumber(r),l=0|this._whitespaces.getCount();-1===u?(u=l,i=a+1,n=0):(i=0|this._whitespaces.getAfterLineNumberForWhitespaceIndex(u),n=0|this._whitespaces.getHeightForWhitespaceIndex(u));var c=s,d=c,h=5e5,p=0;s>=h&&(p=Math.floor(s/h)*h,p=Math.floor(p/o)*o,d-=p);for(var f=[],g=e+(t-e)/2,m=-1,v=r;v<=a;v++){if(-1===m){var _=c,b=c+o;(_<=g&&gg)&&(m=v)}c+=o,f[v-r]=d,d+=o;while(i===v)d+=n,c+=n,u++,u>=l?i=a+1:(i=0|this._whitespaces.getAfterLineNumberForWhitespaceIndex(u),n=0|this._whitespaces.getHeightForWhitespaceIndex(u));if(c>=t){a=v;break}}-1===m&&(m=a);var y=0|this.getVerticalOffsetForLineNumber(a),w=r,C=a;return wt&&C--,{bigNumbersDelta:p,startLineNumber:r,endLineNumber:a,relativeVerticalOffset:f,centeredLineNumber:m,completelyVisibleStartLineNumber:w,completelyVisibleEndLineNumber:C}},e.prototype.getVerticalOffsetForWhitespaceIndex=function(e){e|=0;var t,n,i=this._whitespaces.getAfterLineNumberForWhitespaceIndex(e);return t=i>=1?this._lineHeight*i:0,n=e>0?this._whitespaces.getAccumulatedHeight(e-1):0,t+n},e.prototype.getWhitespaceIndexAtOrAfterVerticallOffset=function(e){e|=0;var t,n,i,o=0,r=this._whitespaces.getCount()-1;if(r<0)return-1;var s=this.getVerticalOffsetForWhitespaceIndex(r),a=this._whitespaces.getHeightForWhitespaceIndex(r);if(e>=s+a)return-1;while(o=n+i)o=t+1;else{if(e>=n)return t;r=t}return o},e.prototype.getWhitespaceAtVerticalOffset=function(e){e|=0;var t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0)return null;if(t>=this._whitespaces.getCount())return null;var n=this.getVerticalOffsetForWhitespaceIndex(t);if(n>e)return null;var i=this._whitespaces.getHeightForWhitespaceIndex(t),o=this._whitespaces.getIdForWhitespaceIndex(t),r=this._whitespaces.getAfterLineNumberForWhitespaceIndex(t);return{id:o,afterLineNumber:r,verticalOffset:n,height:i}},e.prototype.getWhitespaceViewportData=function(e,t){e|=0,t|=0;var n=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),i=this._whitespaces.getCount()-1;if(n<0)return[];for(var o=[],r=n;r<=i;r++){var s=this.getVerticalOffsetForWhitespaceIndex(r),a=this._whitespaces.getHeightForWhitespaceIndex(r);if(s>=t)break;o.push({id:this._whitespaces.getIdForWhitespaceIndex(r),afterLineNumber:this._whitespaces.getAfterLineNumberForWhitespaceIndex(r),verticalOffset:s,height:a})}return o},e.prototype.getWhitespaces=function(){return this._whitespaces.getWhitespaces(this._lineHeight)},e}(),_i=n("a8d0"),bi=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),yi=125,wi=function(e){function t(t,n,i){var o=e.call(this)||this;return o._configuration=t,o._linesLayout=new vi(n,o._configuration.editor.lineHeight),o.scrollable=o._register(new gi["a"](0,i)),o._configureSmoothScrollDuration(),o.scrollable.setScrollDimensions({width:t.editor.layoutInfo.contentWidth,height:t.editor.layoutInfo.contentHeight}),o.onDidScroll=o.scrollable.onScroll,o._updateHeight(),o}return bi(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.onHeightMaybeChanged=function(){this._updateHeight()},t.prototype._configureSmoothScrollDuration=function(){this.scrollable.setSmoothScrollDuration(this._configuration.editor.viewInfo.smoothScrolling?yi:0)},t.prototype.onConfigurationChanged=function(e){e.lineHeight&&this._linesLayout.setLineHeight(this._configuration.editor.lineHeight),e.layoutInfo&&this.scrollable.setScrollDimensions({width:this._configuration.editor.layoutInfo.contentWidth,height:this._configuration.editor.layoutInfo.contentHeight}),e.viewInfo&&this._configureSmoothScrollDuration(),this._updateHeight()},t.prototype.onFlushed=function(e){this._linesLayout.onFlushed(e)},t.prototype.onLinesDeleted=function(e,t){this._linesLayout.onLinesDeleted(e,t)},t.prototype.onLinesInserted=function(e,t){this._linesLayout.onLinesInserted(e,t)},t.prototype._getHorizontalScrollbarHeight=function(e){return 2===this._configuration.editor.viewInfo.scrollbar.horizontal?0:e.width>=e.scrollWidth?0:this._configuration.editor.viewInfo.scrollbar.horizontalScrollbarSize},t.prototype._getTotalHeight=function(){var e=this.scrollable.getScrollDimensions(),t=this._linesLayout.getLinesTotalHeight();return this._configuration.editor.viewInfo.scrollBeyondLastLine?t+=e.height-this._configuration.editor.lineHeight:t+=this._getHorizontalScrollbarHeight(e),Math.max(e.height,t)},t.prototype._updateHeight=function(){this.scrollable.setScrollDimensions({scrollHeight:this._getTotalHeight()})},t.prototype.getCurrentViewport=function(){var e=this.scrollable.getScrollDimensions(),t=this.scrollable.getCurrentScrollPosition();return new _i["f"](t.scrollTop,t.scrollLeft,e.width,e.height)},t.prototype.getFutureViewport=function(){var e=this.scrollable.getScrollDimensions(),t=this.scrollable.getFutureScrollPosition();return new _i["f"](t.scrollTop,t.scrollLeft,e.width,e.height)},t.prototype._computeScrollWidth=function(e,t){var n=this._configuration.editor.wrappingInfo.isViewportWrapping;if(!n){var i=this._configuration.editor.viewInfo.scrollBeyondLastColumn*this._configuration.editor.fontInfo.typicalHalfwidthCharacterWidth,o=this._linesLayout.getWhitespaceMinWidth();return Math.max(e+i,t,o)}return Math.max(e,t)},t.prototype.onMaxLineWidthChanged=function(e){var t=this._computeScrollWidth(e,this.getCurrentViewport().width);this.scrollable.setScrollDimensions({scrollWidth:t}),this._updateHeight()},t.prototype.saveState=function(){var e=this.scrollable.getFutureScrollPosition(),t=e.scrollTop,n=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t),i=this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(n);return{scrollTop:t,scrollTopWithoutViewZones:t-i,scrollLeft:e.scrollLeft}},t.prototype.addWhitespace=function(e,t,n,i){return this._linesLayout.insertWhitespace(e,t,n,i)},t.prototype.changeWhitespace=function(e,t,n){return this._linesLayout.changeWhitespace(e,t,n)},t.prototype.removeWhitespace=function(e){return this._linesLayout.removeWhitespace(e)},t.prototype.getVerticalOffsetForLineNumber=function(e){return this._linesLayout.getVerticalOffsetForLineNumber(e)},t.prototype.isAfterLines=function(e){return this._linesLayout.isAfterLines(e)},t.prototype.getLineNumberAtVerticalOffset=function(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)},t.prototype.getWhitespaceAtVerticalOffset=function(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)},t.prototype.getLinesViewportData=function(){var e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)},t.prototype.getLinesViewportDataAtScrollTop=function(e){var t=this.scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)},t.prototype.getWhitespaceViewportData=function(){var e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)},t.prototype.getWhitespaces=function(){return this._linesLayout.getWhitespaces()},t.prototype.getScrollWidth=function(){var e=this.scrollable.getScrollDimensions();return e.scrollWidth},t.prototype.getScrollHeight=function(){var e=this.scrollable.getScrollDimensions();return e.scrollHeight},t.prototype.getCurrentScrollLeft=function(){var e=this.scrollable.getCurrentScrollPosition();return e.scrollLeft},t.prototype.getCurrentScrollTop=function(){var e=this.scrollable.getCurrentScrollPosition();return e.scrollTop},t.prototype.validateScrollPosition=function(e){return this.scrollable.validateScrollPosition(e)},t.prototype.setScrollPositionNow=function(e){this.scrollable.setScrollPositionNow(e)},t.prototype.setScrollPositionSmooth=function(e){this.scrollable.setScrollPositionSmooth(e)},t.prototype.deltaScrollNow=function(e,t){var n=this.scrollable.getCurrentScrollPosition();this.scrollable.setScrollPositionNow({scrollLeft:n.scrollLeft+e,scrollTop:n.scrollTop+t})},t}(a["a"]),Ci=n("3170"),Si=n("507c"),Li=n("2de5"),Oi=n("b57f"),xi=function(){function e(e,t){this.outputLineIndex=e,this.outputOffset=t}return e}(),Ni=function(){function e(e){this._lines=e}return e.prototype.convertViewPositionToModelPosition=function(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)},e.prototype.convertViewRangeToModelRange=function(e){var t=this._lines.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),n=this._lines.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new te["a"](t.lineNumber,t.column,n.lineNumber,n.column)},e.prototype.validateViewPosition=function(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)},e.prototype.validateViewRange=function(e,t){var n=this._lines.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),i=this._lines.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new te["a"](n.lineNumber,n.column,i.lineNumber,i.column)},e.prototype.convertModelPositionToViewPosition=function(e){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column)},e.prototype.convertModelRangeToViewRange=function(e){var t=this._lines.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn),n=this._lines.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn);return new te["a"](t.lineNumber,t.column,n.lineNumber,n.column)},e.prototype.modelPositionIsVisible=function(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)},e}(),Di=function(){function e(e,t,n,i,o,r){this.model=e,this._validModelVersionId=-1,this.tabSize=n,this.wrappingColumn=i,this.columnsForFullWidthChar=o,this.wrappingIndent=r,this.linePositionMapperFactory=t,this._constructLines(!0)}return e.prototype.dispose=function(){this.hiddenAreasIds=this.model.deltaDecorations(this.hiddenAreasIds,[])},e.prototype.createCoordinatesConverter=function(){return new Ni(this)},e.prototype._ensureValidState=function(){var e=this.model.getVersionId();if(e!==this._validModelVersionId)throw new Error("ViewModel is out of sync with Model!");this.lines.length!==this.model.getLineCount()&&this._constructLines(!1)},e.prototype._constructLines=function(e){var t=this;this.lines=[],e&&(this.hiddenAreasIds=[]);for(var n=this.model.getLinesContent(),i=n.length,o=new Uint32Array(i),r=this.hiddenAreasIds.map(function(e){return t.model.getDecorationRange(e)}).sort(te["a"].compareRangesUsingStarts),s=1,a=0,u=-1,l=u+1=s&&d<=a,p=Mi(this.linePositionMapperFactory,n[c],this.tabSize,this.wrappingColumn,this.columnsForFullWidthChar,this.wrappingIndent,!h);o[c]=p.getViewLineCount(),this.lines[c]=p}this._validModelVersionId=this.model.getVersionId(),this.prefixSumComputer=new Li["b"](o)},e.prototype.getHiddenAreas=function(){var e=this;return this.hiddenAreasIds.map(function(t){return e.model.getDecorationRange(t)})},e.prototype._reduceRanges=function(e){var t=this;if(0===e.length)return[];for(var n=e.map(function(e){return t.model.validateRange(e)}).sort(te["a"].compareRangesUsingStarts),i=[],o=n[0].startLineNumber,r=n[0].endLineNumber,s=1,a=n.length;sr+1?(i.push(new te["a"](o,1,r,1)),o=u.startLineNumber,r=u.endLineNumber):u.endLineNumber>r&&(r=u.endLineNumber)}return i.push(new te["a"](o,1,r,1)),i},e.prototype.setHiddenAreas=function(e){var t=this,n=this._reduceRanges(e),i=this.hiddenAreasIds.map(function(e){return t.model.getDecorationRange(e)}).sort(te["a"].compareRangesUsingStarts);if(n.length===i.length){for(var o=!1,r=0;r=d&&m<=h?this.lines[r].isVisible()&&(this.lines[r]=this.lines[r].setVisible(!1),v=!0):(g=!0,this.lines[r].isVisible()||(this.lines[r]=this.lines[r].setVisible(!0),v=!0)),v){var _=this.lines[r].getViewLineCount();this.prefixSumComputer.changeValue(r,_)}}return g||this.setHiddenAreas([]),!0},e.prototype.modelPositionIsVisible=function(e,t){return!(e<1||e>this.lines.length)&&this.lines[e-1].isVisible()},e.prototype.setTabSize=function(e){return this.tabSize!==e&&(this.tabSize=e,this._constructLines(!1),!0)},e.prototype.setWrappingSettings=function(e,t,n){return(this.wrappingIndent!==e||this.wrappingColumn!==t||this.columnsForFullWidthChar!==n)&&(this.wrappingIndent=e,this.wrappingColumn=t,this.columnsForFullWidthChar=n,this._constructLines(!1),!0)},e.prototype.onModelFlushed=function(){this._constructLines(!0)},e.prototype.onModelLinesDeleted=function(e,t,n){if(e<=this._validModelVersionId)return null;var i=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,o=this.prefixSumComputer.getAccumulatedValue(n-1);return this.lines.splice(t-1,n-t+1),this.prefixSumComputer.removeValues(t-1,n-t+1),new Ue(i,o)},e.prototype.onModelLinesInserted=function(e,t,n,i){if(e<=this._validModelVersionId)return null;for(var o=this.getHiddenAreas(),r=!1,s=new ee["a"](t,1),a=0,u=o;aa?(l=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,c=l+a-1,p=c+1,f=p+(o-a)-1,u=!0):ot?t:e},e.prototype.warmUpLookupCache=function(e,t){this.prefixSumComputer.warmUpCache(e-1,t-1)},e.prototype.getActiveIndentGuide=function(e,t,n){this._ensureValidState(),e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),n=this._toValidViewLineNumber(n);var i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),o=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),r=this.convertViewPositionToModelPosition(n,this.getViewLineMinColumn(n)),s=this.model.getActiveIndentGuide(i.lineNumber,o.lineNumber,r.lineNumber),a=this.convertModelPositionToViewPosition(s.startLineNumber,1),u=this.convertModelPositionToViewPosition(s.endLineNumber,this.model.getLineMaxColumn(s.endLineNumber));return{startLineNumber:a.lineNumber,endLineNumber:u.lineNumber,indent:s.indent}},e.prototype.getViewLinesIndentGuides=function(e,t){this._ensureValidState(),e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);for(var n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),i=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t)),o=[],r=[],s=[],a=n.lineNumber-1,u=i.lineNumber-1,l=null,c=a;c<=u;c++){var d=this.lines[c];if(d.isVisible()){var h=d.getViewLineNumberOfModelPosition(0,c===a?n.column:1),p=d.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(c+1)),f=p-h+1,g=0;f>1&&1===d.getViewLineMinColumn(this.model,c+1,p)&&(g=0===h?1:2),r.push(f),s.push(g),null===l&&(l=new ee["a"](c+1,0))}else null!==l&&(o=o.concat(this.model.getLinesIndentGuides(l.lineNumber,c)),l=null)}null!==l&&(o=o.concat(this.model.getLinesIndentGuides(l.lineNumber,i.lineNumber)),l=null);for(var m=t-e+1,v=new Array(m),_=0,b=0,y=o.length;bt&&(p=!0,h=t-o+1);var f=d+h;if(c.getViewLinesData(this.model,u+1,d,f,o-e,n,a),o+=h,p)break}}return a},e.prototype.validateViewPosition=function(e,t,n){this._ensureValidState(),e=this._toValidViewLineNumber(e);var i=this.prefixSumComputer.getIndexOf(e-1),o=i.index,r=i.remainder,s=this.lines[o],a=s.getViewLineMinColumn(this.model,o+1,r),u=s.getViewLineMaxColumn(this.model,o+1,r);tu&&(t=u);var l=s.getModelColumnOfViewPosition(r,t),c=this.model.validatePosition(new ee["a"](o+1,l));return c.equals(n)?new ee["a"](e,t):this.convertModelPositionToViewPosition(n.lineNumber,n.column)},e.prototype.convertViewPositionToModelPosition=function(e,t){this._ensureValidState(),e=this._toValidViewLineNumber(e);var n=this.prefixSumComputer.getIndexOf(e-1),i=n.index,o=n.remainder,r=this.lines[i].getModelColumnOfViewPosition(o,t);return this.model.validatePosition(new ee["a"](i+1,r))},e.prototype.convertModelPositionToViewPosition=function(e,t){this._ensureValidState();var n=this.model.validatePosition(new ee["a"](e,t)),i=n.lineNumber,o=n.column,r=i-1,s=!1;while(r>0&&!this.lines[r].isVisible())r--,s=!0;if(0===r&&!this.lines[r].isVisible())return new ee["a"](1,1);var a,u=1+(0===r?0:this.prefixSumComputer.getAccumulatedValue(r-1));return a=s?this.lines[r].getViewPositionOfModelPosition(u,this.model.getLineMaxColumn(r+1)):this.lines[i-1].getViewPositionOfModelPosition(u,o),a},e.prototype._getViewLineNumberForModelPosition=function(e,t){var n=e-1;if(this.lines[n].isVisible()){var i=1+(0===n?0:this.prefixSumComputer.getAccumulatedValue(n-1));return this.lines[n].getViewLineNumberOfModelPosition(i,t)}while(n>0&&!this.lines[n].isVisible())n--;if(0===n&&!this.lines[n].isVisible())return 1;var o=1+(0===n?0:this.prefixSumComputer.getAccumulatedValue(n-1));return this.lines[n].getViewLineNumberOfModelPosition(o,this.model.getLineMaxColumn(n+1))},e.prototype.getAllOverviewRulerDecorations=function(e,t,n){for(var i=this.model.getOverviewRulerDecorations(e,t),o=new Ri,r=0,s=i;rt.id?1:0:n});for(var h=[],p=0,f=null,g=0,m=r;g0&&(r=this.wrappedIndent+r),r},e.prototype.getViewLineLength=function(e,t,n){if(!this._isVisible)throw new Error("Not supported");var i=this.getInputStartOffsetOfOutputLineIndex(n),o=this.getInputEndOffsetOfOutputLineIndex(e,t,n),r=o-i;return n>0&&(r=this.wrappedIndent.length+r),r},e.prototype.getViewLineMinColumn=function(e,t,n){if(!this._isVisible)throw new Error("Not supported");return n>0?this.wrappedIndentLength+1:1},e.prototype.getViewLineMaxColumn=function(e,t,n){if(!this._isVisible)throw new Error("Not supported");return this.getViewLineContent(e,t,n).length+1},e.prototype.getViewLineData=function(e,t,n){if(!this._isVisible)throw new Error("Not supported");var i=this.getInputStartOffsetOfOutputLineIndex(n),o=this.getInputEndOffsetOfOutputLineIndex(e,t,n),r=e.getValueInRange({startLineNumber:t,startColumn:i+1,endLineNumber:t,endColumn:o+1});n>0&&(r=this.wrappedIndent+r);var s=n>0?this.wrappedIndentLength+1:1,a=r.length+1,u=n+10&&(l=this.wrappedIndentLength);var c=e.getLineTokens(t);return new _i["c"](r,u,s,a,c.sliceAndInflate(i,o,l))},e.prototype.getViewLinesData=function(e,t,n,i,o,r,s){if(!this._isVisible)throw new Error("Not supported");for(var a=n;a0&&(n0&&(o+=this.wrappedIndentLength),new ee["a"](e+i,o)},e.prototype.getViewLineNumberOfModelPosition=function(e,t){if(!this._isVisible)throw new Error("Not supported");var n=this.positionMapper.getOutputPositionOfInputOffset(t-1);return e+n.outputLineIndex},e}();function Mi(e,t,n,i,o,r,s){var a=e.createLineMapping(t,n,i,o,r);return null===a?s?ki.INSTANCE:Ii.INSTANCE:new Ei(a,s)}var Ti=function(){function e(e){this._lines=e}return e.prototype._validPosition=function(e){return this._lines.model.validatePosition(e)},e.prototype._validRange=function(e){return this._lines.model.validateRange(e)},e.prototype.convertViewPositionToModelPosition=function(e){return this._validPosition(e)},e.prototype.convertViewRangeToModelRange=function(e){return this._validRange(e)},e.prototype.validateViewPosition=function(e,t){return this._validPosition(t)},e.prototype.validateViewRange=function(e,t){return this._validRange(t)},e.prototype.convertModelPositionToViewPosition=function(e){return this._validPosition(e)},e.prototype.convertModelRangeToViewRange=function(e){return this._validRange(e)},e.prototype.modelPositionIsVisible=function(e){var t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)},e}(),Pi=function(){function e(e){this.model=e}return e.prototype.dispose=function(){},e.prototype.createCoordinatesConverter=function(){return new Ti(this)},e.prototype.getHiddenAreas=function(){return[]},e.prototype.setHiddenAreas=function(e){return!1},e.prototype.setTabSize=function(e){return!1},e.prototype.setWrappingSettings=function(e,t,n){return!1},e.prototype.onModelFlushed=function(){},e.prototype.onModelLinesDeleted=function(e,t,n){return new Ue(t,n)},e.prototype.onModelLinesInserted=function(e,t,n,i){return new Ke(t,n)},e.prototype.onModelLineChanged=function(e,t,n){return[!1,new ze(t,t),null,null]},e.prototype.acceptVersionId=function(e){},e.prototype.getViewLineCount=function(){return this.model.getLineCount()},e.prototype.warmUpLookupCache=function(e,t){},e.prototype.getActiveIndentGuide=function(e,t,n){return{startLineNumber:e,endLineNumber:e,indent:0}},e.prototype.getViewLinesIndentGuides=function(e,t){for(var n=t-e+1,i=new Array(n),o=0;o=t)return void(n>s&&(o[o.length-1]=n));o.push(i,t,n)}else this.result[e]=[i,t,n]},e}(),Ai=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Fi=function(e){function t(t,n,i){for(var o=e.call(this,0)||this,r=0;r=12352&&t<=12543||t>=13312&&t<=19903||t>=19968&&t<=40959?4:e.prototype.get.call(this,t)},t}(Ci["a"]),ji=function(){function e(e,t,n){this.classifier=new Fi(e,t,n)}return e.nextVisibleColumn=function(e,t,n,i){return e=+e,t=+t,i=+i,n?e+(t-e%t):e+i},e.prototype.createLineMapping=function(t,n,i,o,r){if(-1===i)return null;n=+n,i=+i,o=+o,r=+r;var s=0,a="",u=-1;if(0!==r&&(u=Oe["q"](t),-1!==u)){a=t.substring(0,u);for(var l=0;li&&(a="",s=0)}var d=this.classifier,h=0,p=[],f=0,g=0,m=-1,v=0,_=-1,b=0,y=t.length;for(l=0;l0){var L=t.charCodeAt(l-1),O=d.get(L);1!==O&&(m=l,v=s)}var x=1;if(Oe["v"](w)&&(x=o),g=e.nextVisibleColumn(g,n,C,x),g>i&&0!==l){var N=void 0,D=void 0;-1!==m&&v<=i?(N=m,D=v):-1!==_&&b<=i?(N=_,D=b):(N=l,D=s),p[f++]=N-h,h=N,g=e.nextVisibleColumn(D,n,C,x),m=-1,v=0,_=-1,b=0}if(-1!==m&&(v=e.nextVisibleColumn(v,n,C,x)),-1!==_&&(b=e.nextVisibleColumn(b,n,C,x)),2===S&&(0===r||l>=u)&&(m=l+1,v=s),4===S&&l=2&&e.viewportStartLineTrackedRange){var g=e.model._getTrackedRange(e.viewportStartLineTrackedRange);if(g){var m=e.coordinatesConverter.convertModelPositionToViewPosition(g.getStartPosition()),v=e.viewLayout.getVerticalOffsetForLineNumber(m.lineNumber);e.viewLayout.setScrollPositionNow({scrollTop:v+e.viewportStartLineDelta})}}})),this._register(this.model.onDidChangeTokens(function(t){for(var n=[],i=0,o=t.ranges.length;ia||(r0&&s[u-1]===s[u]||(a+=this.model.getLineContent(s[u])+o);return a}for(var l=[],c=0,d=r;c'+this._getHTMLToCopy(n,r)+""},t.prototype._getHTMLToCopy=function(e,t){for(var n=e.startLineNumber,i=e.startColumn,o=e.endLineNumber,r=e.endColumn,s=this.getTabSize(),a="",u=n;u<=o;u++){var l=this.model.getLineTokens(u),c=l.getLineContent(),d=u===n?i-1:0,h=u===o?r-1:c.length;a+=""===c?"
    ":Object(fi["a"])(c,l.inflate(),t,d,h,s)}return a},t.prototype._getColorMap=function(){var e=Yt["y"].getColorMap(),t=["#000000"];if(e)for(var n=1,i=e.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Ji=function(e,t){return function(n,i){t(n,i,e)}},eo=0,to="showUnused",no=function(){function e(e,t,n,i,o,r){this.model=e,this.viewModel=t,this.cursor=n,this.view=i,this.hasRealView=o,this.listenersToRemove=r}return e.prototype.dispose=function(){Object(a["f"])(this.listenersToRemove),this.model.onBeforeDetached(),this.hasRealView&&this.view.dispose(),this.cursor.dispose(),this.viewModel.dispose()},e}(),io=function(e){function t(t,n,i,o,a,u,l,d,h,p){var f,g=e.call(this)||this;g._onDidDispose=g._register(new s["a"]),g.onDidDispose=g._onDidDispose.event,g._onDidChangeModelContent=g._register(new s["a"]),g.onDidChangeModelContent=g._onDidChangeModelContent.event,g._onDidChangeModelLanguage=g._register(new s["a"]),g.onDidChangeModelLanguage=g._onDidChangeModelLanguage.event,g._onDidChangeModelLanguageConfiguration=g._register(new s["a"]),g.onDidChangeModelLanguageConfiguration=g._onDidChangeModelLanguageConfiguration.event,g._onDidChangeModelOptions=g._register(new s["a"]),g.onDidChangeModelOptions=g._onDidChangeModelOptions.event,g._onDidChangeModelDecorations=g._register(new s["a"]),g.onDidChangeModelDecorations=g._onDidChangeModelDecorations.event,g._onDidChangeConfiguration=g._register(new s["a"]),g.onDidChangeConfiguration=g._onDidChangeConfiguration.event,g._onDidChangeModel=g._register(new s["a"]),g.onDidChangeModel=g._onDidChangeModel.event,g._onDidChangeCursorPosition=g._register(new s["a"]),g.onDidChangeCursorPosition=g._onDidChangeCursorPosition.event,g._onDidChangeCursorSelection=g._register(new s["a"]),g.onDidChangeCursorSelection=g._onDidChangeCursorSelection.event,g._onDidAttemptReadOnlyEdit=g._register(new s["a"]),g.onDidAttemptReadOnlyEdit=g._onDidAttemptReadOnlyEdit.event,g._onDidLayoutChange=g._register(new s["a"]),g.onDidLayoutChange=g._onDidLayoutChange.event,g._editorTextFocus=g._register(new oo),g.onDidFocusEditorText=g._editorTextFocus.onDidChangeToTrue,g.onDidBlurEditorText=g._editorTextFocus.onDidChangeToFalse,g._editorWidgetFocus=g._register(new oo),g.onDidFocusEditorWidget=g._editorWidgetFocus.onDidChangeToTrue,g.onDidBlurEditorWidget=g._editorWidgetFocus.onDidChangeToFalse,g._onWillType=g._register(new s["a"]),g.onWillType=g._onWillType.event,g._onDidType=g._register(new s["a"]),g.onDidType=g._onDidType.event,g._onCompositionStart=g._register(new s["a"]),g.onCompositionStart=g._onCompositionStart.event,g._onCompositionEnd=g._register(new s["a"]),g.onCompositionEnd=g._onCompositionEnd.event,g._onDidPaste=g._register(new s["a"]),g.onDidPaste=g._onDidPaste.event,g._onMouseUp=g._register(new s["a"]),g.onMouseUp=g._onMouseUp.event,g._onMouseDown=g._register(new s["a"]),g.onMouseDown=g._onMouseDown.event,g._onMouseDrag=g._register(new s["a"]),g.onMouseDrag=g._onMouseDrag.event,g._onMouseDrop=g._register(new s["a"]),g.onMouseDrop=g._onMouseDrop.event,g._onContextMenu=g._register(new s["a"]),g.onContextMenu=g._onContextMenu.event,g._onMouseMove=g._register(new s["a"]),g.onMouseMove=g._onMouseMove.event,g._onMouseLeave=g._register(new s["a"]),g.onMouseLeave=g._onMouseLeave.event,g._onMouseWheel=g._register(new s["a"]),g.onMouseWheel=g._onMouseWheel.event,g._onKeyUp=g._register(new s["a"]),g.onKeyUp=g._onKeyUp.event,g._onKeyDown=g._register(new s["a"]),g.onKeyDown=g._onKeyDown.event,g._onDidScrollChange=g._register(new s["a"]),g.onDidScrollChange=g._onDidScrollChange.event,g._onDidChangeViewZones=g._register(new s["a"]),g.onDidChangeViewZones=g._onDidChangeViewZones.event,g._domElement=t,g._id=++eo,g._decorationTypeKeysToIds={},g._decorationTypeSubtypes={},g.isSimpleWidget=i.isSimpleWidget||!1,g._telemetryData=i.telemetryData,n=n||{},g._configuration=g._register(g._createConfiguration(n,p)),g._register(g._configuration.onDidChange(function(e){g._onDidChangeConfiguration.fire(e),e.layoutInfo&&g._onDidLayoutChange.fire(g._configuration.editor.layoutInfo),g._configuration.editor.showUnused?g._domElement.classList.add(to):g._domElement.classList.remove(to)})),g._contextKeyService=g._register(l.createScoped(g._domElement)),g._notificationService=h,g._codeEditorService=a,g._commandService=u,g._themeService=d,g._register(new ro(g,g._contextKeyService)),g._register(new so(g,g._contextKeyService)),g._instantiationService=o.createChild(new Gi["a"]([Ki["c"],g._contextKeyService])),g._modelData=null,g._contributions={},g._actions={},g._focusTracker=new ao(t),g._focusTracker.onChange(function(){g._editorWidgetFocus.setValue(g._focusTracker.hasFocus())}),g._contentWidgets={},g._overlayWidgets={},f=Array.isArray(i.contributions)?i.contributions:c["d"].getEditorContributions();for(var m=0,v=f.length;m1),this._hasNonEmptySelection.set(e.some(function(e){return!e.isEmpty()}))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())},t.prototype._updateFromFocus=function(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())},t.prototype._updateFromModel=function(){var e=this._editor.getModel();this._canUndo.set(Boolean(e&&e.canUndo())),this._canRedo.set(Boolean(e&&e.canRedo()))},t}(a["a"]),so=function(e){function t(t,n){var i=e.call(this)||this;i._editor=t,i._contextKeyService=n,i._langId=pi["a"].languageId.bindTo(n),i._hasCompletionItemProvider=pi["a"].hasCompletionItemProvider.bindTo(n),i._hasCodeActionsProvider=pi["a"].hasCodeActionsProvider.bindTo(n),i._hasCodeLensProvider=pi["a"].hasCodeLensProvider.bindTo(n),i._hasDefinitionProvider=pi["a"].hasDefinitionProvider.bindTo(n),i._hasDeclarationProvider=pi["a"].hasDeclarationProvider.bindTo(n),i._hasImplementationProvider=pi["a"].hasImplementationProvider.bindTo(n),i._hasTypeDefinitionProvider=pi["a"].hasTypeDefinitionProvider.bindTo(n),i._hasHoverProvider=pi["a"].hasHoverProvider.bindTo(n),i._hasDocumentHighlightProvider=pi["a"].hasDocumentHighlightProvider.bindTo(n),i._hasDocumentSymbolProvider=pi["a"].hasDocumentSymbolProvider.bindTo(n),i._hasReferenceProvider=pi["a"].hasReferenceProvider.bindTo(n),i._hasRenameProvider=pi["a"].hasRenameProvider.bindTo(n),i._hasSignatureHelpProvider=pi["a"].hasSignatureHelpProvider.bindTo(n),i._hasDocumentFormattingProvider=pi["a"].hasDocumentFormattingProvider.bindTo(n),i._hasDocumentSelectionFormattingProvider=pi["a"].hasDocumentSelectionFormattingProvider.bindTo(n),i._hasMultipleDocumentFormattingProvider=pi["a"].hasMultipleDocumentFormattingProvider.bindTo(n),i._hasMultipleDocumentSelectionFormattingProvider=pi["a"].hasMultipleDocumentSelectionFormattingProvider.bindTo(n),i._isInWalkThrough=pi["a"].isInEmbeddedEditor.bindTo(n);var o=function(){return i._update()};return i._register(t.onDidChangeModel(o)),i._register(t.onDidChangeModelLanguage(o)),i._register(Yt["d"].onDidChange(o)),i._register(Yt["a"].onDidChange(o)),i._register(Yt["b"].onDidChange(o)),i._register(Yt["f"].onDidChange(o)),i._register(Yt["e"].onDidChange(o)),i._register(Yt["o"].onDidChange(o)),i._register(Yt["z"].onDidChange(o)),i._register(Yt["n"].onDidChange(o)),i._register(Yt["i"].onDidChange(o)),i._register(Yt["k"].onDidChange(o)),i._register(Yt["s"].onDidChange(o)),i._register(Yt["t"].onDidChange(o)),i._register(Yt["g"].onDidChange(o)),i._register(Yt["j"].onDidChange(o)),i._register(Yt["v"].onDidChange(o)),o(),i}return $i(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.reset=function(){var e=this;this._contextKeyService.bufferChangeEvents(function(){e._langId.reset(),e._hasCompletionItemProvider.reset(),e._hasCodeActionsProvider.reset(),e._hasCodeLensProvider.reset(),e._hasDefinitionProvider.reset(),e._hasDeclarationProvider.reset(),e._hasImplementationProvider.reset(),e._hasTypeDefinitionProvider.reset(),e._hasHoverProvider.reset(),e._hasDocumentHighlightProvider.reset(),e._hasDocumentSymbolProvider.reset(),e._hasReferenceProvider.reset(),e._hasRenameProvider.reset(),e._hasDocumentFormattingProvider.reset(),e._hasDocumentSelectionFormattingProvider.reset(),e._hasSignatureHelpProvider.reset(),e._isInWalkThrough.reset()})},t.prototype._update=function(){var e=this,t=this._editor.getModel();t?this._contextKeyService.bufferChangeEvents(function(){e._langId.set(t.getLanguageIdentifier().language),e._hasCompletionItemProvider.set(Yt["d"].has(t)),e._hasCodeActionsProvider.set(Yt["a"].has(t)),e._hasCodeLensProvider.set(Yt["b"].has(t)),e._hasDefinitionProvider.set(Yt["f"].has(t)),e._hasDeclarationProvider.set(Yt["e"].has(t)),e._hasImplementationProvider.set(Yt["o"].has(t)),e._hasTypeDefinitionProvider.set(Yt["z"].has(t)),e._hasHoverProvider.set(Yt["n"].has(t)),e._hasDocumentHighlightProvider.set(Yt["i"].has(t)),e._hasDocumentSymbolProvider.set(Yt["k"].has(t)),e._hasReferenceProvider.set(Yt["s"].has(t)),e._hasRenameProvider.set(Yt["t"].has(t)),e._hasSignatureHelpProvider.set(Yt["v"].has(t)),e._hasDocumentFormattingProvider.set(Yt["g"].has(t)||Yt["j"].has(t)),e._hasDocumentSelectionFormattingProvider.set(Yt["j"].has(t)),e._hasMultipleDocumentFormattingProvider.set(Yt["g"].all(t).length+Yt["j"].all(t).length>1),e._hasMultipleDocumentSelectionFormattingProvider.set(Yt["j"].all(t).length>1),e._isInWalkThrough.set(t.uri.scheme===u["b"].walkThroughSnippet)}):this.reset()},t}(a["a"]),ao=function(e){function t(t){var n=e.call(this)||this;return n._onChange=n._register(new s["a"]),n.onChange=n._onChange.event,n._hasFocus=!1,n._domFocusTracker=n._register(o["S"](t)),n._register(n._domFocusTracker.onDidFocus(function(){n._hasFocus=!0,n._onChange.fire(void 0)})),n._register(n._domFocusTracker.onDidBlur(function(){n._hasFocus=!1,n._onChange.fire(void 0)})),n}return $i(t,e),t.prototype.hasFocus=function(){return this._hasFocus},t}(a["a"]),uo=encodeURIComponent("");function co(e){return uo+encodeURIComponent(e.toString())+lo}var ho=encodeURIComponent('');function fo(e){return ho+encodeURIComponent(e.toString())+po}Object(B["f"])(function(e,t){var n=e.getColor(on["p"]);n&&t.addRule(".monaco-editor .squiggly-error { border-bottom: 4px double "+n+"; }");var i=e.getColor(on["q"]);i&&t.addRule('.monaco-editor .squiggly-error { background: url("data:image/svg+xml,'+co(i)+'") repeat-x bottom left; }');var o=e.getColor(on["L"]);o&&t.addRule(".monaco-editor .squiggly-warning { border-bottom: 4px double "+o+"; }");var r=e.getColor(on["M"]);r&&t.addRule('.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,'+co(r)+'") repeat-x bottom left; }');var s=e.getColor(on["F"]);s&&t.addRule(".monaco-editor .squiggly-info { border-bottom: 4px double "+s+"; }");var a=e.getColor(on["G"]);a&&t.addRule('.monaco-editor .squiggly-info { background: url("data:image/svg+xml,'+co(a)+'") repeat-x bottom left; }');var u=e.getColor(on["y"]);u&&t.addRule(".monaco-editor .squiggly-hint { border-bottom: 2px dotted "+u+"; }");var l=e.getColor(on["z"]);l&&t.addRule('.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,'+fo(l)+'") no-repeat bottom left; }');var c=e.getColor(Ie["o"]);c&&t.addRule("."+to+" .monaco-editor .squiggly-inline-unnecessary { opacity: "+c.rgba.a+"; }");var d=e.getColor(Ie["n"]);d&&t.addRule("."+to+" .monaco-editor .squiggly-unnecessary { border-bottom: 2px dashed "+d+"; }");var h=e.getColor(on["x"])||"inherit";t.addRule(".monaco-editor .squiggly-inline-deprecated { text-decoration: line-through; text-decoration-color: "+h+"}")})},"9c3e":function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return o});var i=function(){function e(e){this._prefix=e,this._lastId=0}return e.prototype.nextId=function(){return this._prefix+ ++this._lastId},e}(),o=new i("id#")},"9e74":function(e,t,n){"use strict";n.d(t,"b",function(){return l}),n.d(t,"a",function(){return c});var i=n("a666"),o=n("ef8e"),r=n("0a0f"),s=n("308f"),a=n("db88"),u=n("4035"),l=Object(r["c"])("commandService"),c=new(function(){function e(){this._commands=new Map,this._onDidRegisterCommand=new s["a"],this.onDidRegisterCommand=this._onDidRegisterCommand.event}return e.prototype.registerCommand=function(e,t){var n=this;if(!e)throw new Error("invalid command");if("string"===typeof e){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.description){for(var r=[],s=0,u=e.description.args;s=21&&e<=30||(e>=31&&e<=56||(80===e||81===e||82===e||83===e||84===e||85===e||86===e||110===e||111===e||87===e||88===e||89===e||90===e||91===e||92===e))},e.prototype._assertNoCtrlAlt=function(t,n){t.ctrlKey&&t.altKey&&!t.metaKey&&e._mightProduceChar(t.keyCode)&&console.warn("Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ",t," for ",n)},e.prototype._registerDefaultKeybinding=function(e,t,n,i,r,s){1===o["a"]&&this._assertNoCtrlAlt(e.parts[0],t),this._coreKeybindings.push({keybinding:e,command:t,commandArgs:n,when:s,weight1:i,weight2:r}),this._cachedMergedKeybindings=null},e.prototype.getDefaultKeybindings=function(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=[].concat(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(c)),this._cachedMergedKeybindings.slice(0)},e}(),u=new a,l={EditorModes:"platform.keybindingsRegistry"};function c(e,t){return e.weight1!==t.weight1?e.weight1-t.weight1:e.commandt.command?1:e.weight2-t.weight2}s["a"].add(l.EditorModes,u)},"9ee1":function(e,t,n){"use strict";var i;n.d(t,"a",function(){return i}),function(e){function t(e,t){if(e.start>=t.end||t.start>=e.end)return{start:0,end:0};var n=Math.max(e.start,t.start),i=Math.min(e.end,t.end);return i-n<=0?{start:0,end:0}:{start:n,end:i}}function n(e){return e.end-e.start<=0}function i(e,i){return!n(t(e,i))}function o(e,t){var i=[],o={start:e.start,end:Math.min(t.start,e.end)},r={start:Math.max(t.end,e.start),end:e.end};return n(o)||i.push(o),n(r)||i.push(r),i}e.intersect=t,e.isEmpty=n,e.intersects=i,e.relativeComplement=o}(i||(i={}))},"9f4d":function(e,t,n){"use strict";n.r(t);var i=n("dff7"),o=n("fe45"),r=n("b2cc"),s=n("c101"),a=n("d3f49"),u=n("7061"),l=n("6a89"),c=n("8025"),d=n("70cb"),h=function(){function e(e){this._selection=e,this._usedEndToken=null}return e._haystackHasNeedleAtOffset=function(e,t,n){if(n<0)return!1;var i=t.length,o=e.length;if(n+i>o)return!1;for(var r=0;r=65&&s<=90&&s+32===a)&&!(a>=65&&a<=90&&a+32===s)))return!1}return!0},e.prototype._createOperationsForBlockComment=function(t,n,i,o,r){var s,a=t.startLineNumber,u=t.startColumn,c=t.endLineNumber,d=t.endColumn,h=o.getLineContent(a),p=o.getLineContent(c),f=h.lastIndexOf(n,u-1+n.length),g=p.indexOf(i,d-1-i.length);if(-1!==f&&-1!==g)if(a===c){var m=h.substring(f+n.length,g);m.indexOf(i)>=0&&(f=-1,g=-1)}else{var v=h.substring(f+n.length),_=p.substring(0,g);(v.indexOf(i)>=0||_.indexOf(i)>=0)&&(f=-1,g=-1)}-1!==f&&-1!==g?(f+n.length0&&32===p.charCodeAt(g-1)&&(i=" "+i,g-=1),s=e._createRemoveBlockCommentOperations(new l["a"](a,f+n.length+1,c,g+1),n,i)):(s=e._createAddBlockCommentOperations(t,n,i),this._usedEndToken=1===s.length?i:null);for(var b=0,y=s;ba?r-1:r}},e}(),g=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),m=function(e){function t(t,n){var i=e.call(this,n)||this;return i._type=t,i}return g(t,e),t.prototype.run=function(e,t){if(t.hasModel()){for(var n=t.getModel(),i=[],o=t.getSelections(),r=n.getOptions(),s=0,a=o;s=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},M=function(e,t){return function(n,i){t(n,i,e)}},T=new _["d"]("hasSymbols",!1),P=Object(L["c"])("ISymbolNavigationService"),R=function(){function e(e,t,n,i){this._editorService=t,this._notificationService=n,this._keybindingService=i,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=T.bindTo(e)}return e.prototype.reset=function(){this._ctxHasSymbols.reset(),Object(N["f"])(this._currentState),Object(N["f"])(this._currentMessage),this._currentModel=void 0,this._currentIdx=-1},e.prototype.put=function(e){var t=this,n=e.parent.parent;if(n.references.length<=1)this.reset();else{this._currentModel=n,this._currentIdx=n.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();var i=new A(this._editorService),o=i.onDidChange(function(e){if(!t._ignoreEditorChange){var i=t._editorService.getActiveCodeEditor();if(i){var o=i.getModel(),r=i.getPosition();if(o&&r){for(var s=!1,a=!1,u=0,c=n.references;u0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]1?m["a"]("meta.title"," – {0} definitions",e.references.length):""},t.prototype._onResult=function(e,t,n,o){return j(this,void 0,void 0,function(){var r,s,a,u;return W(this,function(l){switch(l.label){case 0:return r=o.getAriaMessage(),Object(i["a"])(r),s=n.getConfiguration().contribInfo.gotoLocation,this._configuration.openInPeek||"peek"===s.multiple&&o.references.length>1?(this._openInPeek(e,n,o),[3,3]):[3,1];case 1:return n.hasModel()?(a=o.firstReference(),a?[4,this._openReference(n,e,a,this._configuration.openToSide)]:[2]):[3,3];case 2:u=l.sent(),u&&o.references.length>1&&"gotoAndPeek"===s.multiple?this._openInPeek(e,u,o):o.dispose(),"goto"===s.multiple&&t.put(a),l.label=3;case 3:return[2]}})})},t.prototype._openReference=function(e,t,n,i){var o=void 0;return Object(d["C"])(n)&&(o=n.targetSelectionRange),o||(o=n.range),t.openCodeEditor({resource:n.uri,options:{selection:l["a"].collapseToStart(o),revealInCenterIfOutsideViewport:!0}},e,i)},t.prototype._openInPeek=function(e,t,n){var i=this,r=f["a"].get(t);r&&t.hasModel()?r.toggleWidget(t.getSelection(),Object(o["f"])(function(e){return Promise.resolve(n)}),{getMetaTitle:function(e){return i._getMetaTitle(e)},onGoto:function(n){return r.closeWidget(),i._openReference(t,e,n,!1)}}):n.dispose()},t}(a["b"]),H=s["f"]?2118:70,z=function(e){function t(){var n=e.call(this,new V,{id:t.id,label:m["a"]("actions.goToDecl.label","Go to Definition"),alias:"Go to Definition",precondition:_["a"].and(c["a"].hasDefinitionProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:H,weight:100},menuOpts:{group:"navigation",order:1.1}})||this;return C["a"].registerCommandAlias("editor.action.goToDeclaration",t.id),n}return F(t,e),t.id="editor.action.revealDefinition",t}(B),U=function(e){function t(){var n=e.call(this,new V(!0),{id:t.id,label:m["a"]("actions.goToDeclToSide.label","Open Definition to the Side"),alias:"Open Definition to the Side",precondition:_["a"].and(c["a"].hasDefinitionProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:Object(r["a"])(2089,H),weight:100}})||this;return C["a"].registerCommandAlias("editor.action.openDeclarationToTheSide",t.id),n}return F(t,e),t.id="editor.action.revealDefinitionAside",t}(B),K=function(e){function t(){var n=e.call(this,new V(void 0,!0,!1),{id:t.id,label:m["a"]("actions.previewDecl.label","Peek Definition"),alias:"Peek Definition",precondition:_["a"].and(c["a"].hasDefinitionProvider,p["b"].notInPeekEditor,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:582,linux:{primary:3140},weight:100},menuOpts:{group:"navigation",order:1.2}})||this;return C["a"].registerCommandAlias("editor.action.previewDeclaration",t.id),n}return F(t,e),t.id="editor.action.peekDefinition",t}(B),q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return F(t,e),t.prototype._getTargetLocationForPosition=function(e,t,n){return Object(w["a"])(e,t,n)},t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?m["a"]("decl.noResultWord","No declaration found for '{0}'",e.word):m["a"]("decl.generic.noResults","No declaration found")},t.prototype._getMetaTitle=function(e){return e.references.length>1?m["a"]("decl.meta.title"," – {0} declarations",e.references.length):""},t}(B),G=function(e){function t(){return e.call(this,new V,{id:t.id,label:m["a"]("actions.goToDeclaration.label","Go to Declaration"),alias:"Go to Declaration",precondition:_["a"].and(c["a"].hasDeclarationProvider,c["a"].isInEmbeddedEditor.toNegated()),menuOpts:{group:"navigation",order:1.3}})||this}return F(t,e),t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?m["a"]("decl.noResultWord","No declaration found for '{0}'",e.word):m["a"]("decl.generic.noResults","No declaration found")},t.prototype._getMetaTitle=function(e){return e.references.length>1?m["a"]("decl.meta.title"," – {0} declarations",e.references.length):""},t.id="editor.action.revealDeclaration",t}(q),Z=function(e){function t(){return e.call(this,new V(void 0,!0,!1),{id:"editor.action.peekDeclaration",label:m["a"]("actions.peekDecl.label","Peek Declaration"),alias:"Peek Declaration",precondition:_["a"].and(c["a"].hasDeclarationProvider,p["b"].notInPeekEditor,c["a"].isInEmbeddedEditor.toNegated()),menuOpts:{group:"navigation",order:1.31}})||this}return F(t,e),t}(q),Y=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return F(t,e),t.prototype._getTargetLocationForPosition=function(e,t,n){return Object(w["c"])(e,t,n)},t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?m["a"]("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):m["a"]("goToImplementation.generic.noResults","No implementation found")},t.prototype._getMetaTitle=function(e){return e.references.length>1?m["a"]("meta.implementations.title"," – {0} implementations",e.references.length):""},t}(B),X=function(e){function t(){return e.call(this,new V,{id:t.ID,label:m["a"]("actions.goToImplementation.label","Go to Implementation"),alias:"Go to Implementation",precondition:_["a"].and(c["a"].hasImplementationProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:2118,weight:100}})||this}return F(t,e),t.ID="editor.action.goToImplementation",t}(Y),$=function(e){function t(){return e.call(this,new V(!1,!0,!1),{id:t.ID,label:m["a"]("actions.peekImplementation.label","Peek Implementation"),alias:"Peek Implementation",precondition:_["a"].and(c["a"].hasImplementationProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:3142,weight:100}})||this}return F(t,e),t.ID="editor.action.peekImplementation",t}(Y),Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return F(t,e),t.prototype._getTargetLocationForPosition=function(e,t,n){return Object(w["d"])(e,t,n)},t.prototype._getNoResultFoundMessage=function(e){return e&&e.word?m["a"]("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):m["a"]("goToTypeDefinition.generic.noResults","No type definition found")},t.prototype._getMetaTitle=function(e){return e.references.length>1?m["a"]("meta.typeDefinitions.title"," – {0} type definitions",e.references.length):""},t}(B),J=function(e){function t(){return e.call(this,new V,{id:t.ID,label:m["a"]("actions.goToTypeDefinition.label","Go to Type Definition"),alias:"Go to Type Definition",precondition:_["a"].and(c["a"].hasTypeDefinitionProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:0,weight:100},menuOpts:{group:"navigation",order:1.4}})||this}return F(t,e),t.ID="editor.action.goToTypeDefinition",t}(Q),ee=function(e){function t(){return e.call(this,new V(!1,!0,!1),{id:t.ID,label:m["a"]("actions.peekTypeDefinition.label","Peek Type Definition"),alias:"Peek Type Definition",precondition:_["a"].and(c["a"].hasTypeDefinitionProvider,c["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:c["a"].editorTextFocus,primary:0,weight:100}})||this}return F(t,e),t.ID="editor.action.peekTypeDefinition",t}(Q);Object(a["f"])(z),Object(a["f"])(U),Object(a["f"])(K),Object(a["f"])(G),Object(a["f"])(Z),Object(a["f"])(X),Object(a["f"])($),Object(a["f"])(J),Object(a["f"])(ee),v["c"].appendMenuItem(16,{group:"4_symbol_nav",command:{id:"editor.action.goToDeclaration",title:m["a"]({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")},order:2}),v["c"].appendMenuItem(16,{group:"4_symbol_nav",command:{id:"editor.action.goToTypeDefinition",title:m["a"]({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")},order:3}),v["c"].appendMenuItem(16,{group:"4_symbol_nav",command:{id:"editor.action.goToImplementation",title:m["a"]({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementation")},order:4})},a007:function(e,t,n){"use strict";n.d(t,"b",function(){return c}),n.d(t,"a",function(){return i});var i,o=n("ef8e"),r=n("2e5d"),s=n("f85a"),a=n("d48d"),u=n("7061"),l=n("6a89"),c=function(){function e(){}return e.addCursorDown=function(e,t,n){for(var i=[],o=0,a=0,u=t.length;ac&&(d=c,h=e.model.getLineMaxColumn(d)),r["d"].fromModelState(new r["f"](new l["a"](s.lineNumber,1,d,h),0,new u["a"](d,h),0))}var p=t.modelState.selectionStart.getStartPosition().lineNumber;if(s.lineNumberp){c=e.viewModel.getLineCount();var f=a.lineNumber+1,g=1;return f>c&&(f=c,g=e.viewModel.getLineMaxColumn(f)),r["d"].fromViewState(t.viewState.move(t.modelState.hasSelection(),f,g,0))}var m=t.modelState.selectionStart.getEndPosition();return r["d"].fromModelState(t.modelState.move(t.modelState.hasSelection(),m.lineNumber,m.column,0))},e.word=function(e,t,n,i){var o=e.model.validatePosition(i);return r["d"].fromModelState(a["a"].word(e.config,e.model,t.modelState,n,o))},e.cancelSelection=function(e,t){if(!t.modelState.hasSelection())return new r["d"](t.modelState,t.viewState);var n=t.viewState.position.lineNumber,i=t.viewState.position.column;return r["d"].fromViewState(new r["f"](new l["a"](n,i,n,i),0,new u["a"](n,i),0))},e.moveTo=function(e,t,n,i,o){var s=e.model.validatePosition(i),a=o?e.validateViewPosition(new u["a"](o.lineNumber,o.column),s):e.convertModelPositionToViewPosition(s);return r["d"].fromViewState(t.viewState.move(n,a.lineNumber,a.column,0))},e.move=function(e,t,n){var i=n.select,o=n.value;switch(n.direction){case 0:return 4===n.unit?this._moveHalfLineLeft(e,t,i):this._moveLeft(e,t,i,o);case 1:return 4===n.unit?this._moveHalfLineRight(e,t,i):this._moveRight(e,t,i,o);case 2:return 2===n.unit?this._moveUpByViewLines(e,t,i,o):this._moveUpByModelLines(e,t,i,o);case 3:return 2===n.unit?this._moveDownByViewLines(e,t,i,o):this._moveDownByModelLines(e,t,i,o);case 4:return this._moveToViewMinColumn(e,t,i);case 5:return this._moveToViewFirstNonWhitespaceColumn(e,t,i);case 6:return this._moveToViewCenterColumn(e,t,i);case 7:return this._moveToViewMaxColumn(e,t,i);case 8:return this._moveToViewLastNonWhitespaceColumn(e,t,i);case 9:var r=t[0],s=e.getCompletelyVisibleModelRange(),a=this._firstLineNumberInRange(e.model,s,o),u=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,r,i,a,u)];case 11:r=t[0],s=e.getCompletelyVisibleModelRange(),a=this._lastLineNumberInRange(e.model,s,o),u=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,r,i,a,u)];case 10:r=t[0],s=e.getCompletelyVisibleModelRange(),a=Math.round((s.startLineNumber+s.endLineNumber)/2),u=e.model.getLineFirstNonWhitespaceColumn(a);return[this._moveToModelPosition(e,r,i,a,u)];case 12:for(var l=e.getCompletelyVisibleViewRange(),c=[],d=0,h=t.length;dn.endLineNumber-1&&(o=n.endLineNumber-1),o=0?t+1:1},e.prototype.getCurrentMatchesPosition=function(t){for(var n=this._editor.getModel().getDecorationsInRange(t),i=0,o=n;i1e3){r=e._FIND_MATCH_NO_OVERVIEW_DECORATION;for(var a=i._editor.getModel().getLineCount(),u=i._editor.getLayoutInfo().height,l=u/a,c=Math.max(2,Math.ceil(3/l)),h=t[0].range.startLineNumber,p=t[0].range.endLineNumber,f=1,g=t.length;f=m.startLineNumber?m.endLineNumber>p&&(p=m.endLineNumber):(s.push({range:new d["a"](h,1,p,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),h=m.startLineNumber,p=m.endLineNumber)}s.push({range:new d["a"](h,1,p,1),options:e._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}var v=new Array(t.length);for(f=0,g=t.length;f=0;t--){var n=this._decorations[t],i=this._editor.getModel().getDecorationRange(n);if(i&&!(i.endLineNumber>e.lineNumber)){if(i.endLineNumbere.column))return i}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])},e.prototype.matchAfterPosition=function(e){if(0===this._decorations.length)return null;for(var t=0,n=this._decorations.length;te.lineNumber)return o;if(!(o.startColumn0){for(var n=[],i=0;i0){if(e=i)break;a=e.charCodeAt(n);if(36===a){t.emitUnchanged(n-1),t.emitStatic("$",n+1);continue}if(48===a||38===a){t.emitUnchanged(n-1),t.emitMatchIndex(0,n+1);continue}if(49<=a&&a<=57){var r=a-48;if(n+1=i)break;var a=e.charCodeAt(n);switch(a){case 92:t.emitUnchanged(n-1),t.emitStatic("\\",n+1);break;case 110:t.emitUnchanged(n-1),t.emitStatic("\n",n+1);break;case 116:t.emitUnchanged(n-1),t.emitStatic("\t",n+1);break}}}return t.finalize()}var k=n("4fc3"),I=new k["d"]("findWidgetVisible",!1),E=new k["d"]("findInputFocussed",!1),M=new k["d"]("replaceInputFocussed",!1),T={primary:545,mac:{primary:2593}},P={primary:565,mac:{primary:2613}},R={primary:560,mac:{primary:2608}},A={primary:554,mac:{primary:2602}},F={StartFindAction:"actions.find",StartFindWithSelection:"actions.findWithSelection",NextMatchFindAction:"editor.action.nextMatchFindAction",PreviousMatchFindAction:"editor.action.previousMatchFindAction",NextSelectionMatchFindAction:"editor.action.nextSelectionMatchFindAction",PreviousSelectionMatchFindAction:"editor.action.previousSelectionMatchFindAction",StartFindReplaceAction:"editor.action.startFindReplaceAction",CloseFindWidgetCommand:"closeFindWidget",ToggleCaseSensitiveCommand:"toggleFindCaseSensitive",ToggleWholeWordCommand:"toggleFindWholeWord",ToggleRegexCommand:"toggleFindRegex",ToggleSearchScopeCommand:"toggleFindInSelection",TogglePreserveCaseCommand:"togglePreserveCase",ReplaceOneAction:"editor.action.replaceOne",ReplaceAllAction:"editor.action.replaceAll",SelectAllMatchesAction:"editor.action.selectAllMatches"},j=19999,W=240,V=function(){function e(e,t){var n=this;this._toDispose=new r["b"],this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new o["e"],this._decorations=new _(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new o["d"](function(){return n.research(!1)},100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition(function(e){3!==e.reason&&5!==e.reason&&6!==e.reason||n._decorations.setStartPosition(n._editor.getPosition())})),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent(function(e){n._ignoreModelContentChanged||(e.isFlush&&n._decorations.reset(),n._decorations.setStartPosition(n._editor.getPosition()),n._updateDecorationsScheduler.schedule())})),this._toDispose.add(this._state.onFindReplaceStateChange(function(e){return n._onStateChanged(e)})),this.research(!1,this._state.searchScope)}return e.prototype.dispose=function(){this._isDisposed=!0,Object(r["f"])(this._startSearchingTimer),this._toDispose.dispose()},e.prototype._onStateChanged=function(e){var t=this;if(!this._isDisposed&&this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)){var n=this._editor.getModel();n.isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet(function(){e.searchScope?t.research(e.moveCursor,t._state.searchScope):t.research(e.moveCursor)},W)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)}},e._getSearchRange=function(e,t){return t||e.getFullModelRange()},e.prototype.research=function(e,t){var n=null;n="undefined"!==typeof t?t:this._decorations.getFindScope(),null!==n&&n.startLineNumber!==n.endLineNumber&&(n=1===n.endColumn?new d["a"](n.startLineNumber,1,n.endLineNumber-1,this._editor.getModel().getLineMaxColumn(n.endLineNumber-1)):new d["a"](n.startLineNumber,1,n.endLineNumber,this._editor.getModel().getLineMaxColumn(n.endLineNumber)));var i=this._findMatches(n,!1,j);this._decorations.set(i,n),this._state.changeMatchInfo(this._decorations.getCurrentMatchesPosition(this._editor.getSelection()),this._decorations.getCount(),void 0),e&&this._moveToNextMatch(this._decorations.getStartPosition())},e.prototype._hasMatches=function(){return this._state.matchesCount>0},e.prototype._cannotFind=function(){if(!this._hasMatches()){var e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1},e.prototype._setCurrentFindMatch=function(e){var t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)},e.prototype._prevSearchPosition=function(e){var t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,o=this._editor.getModel();return t||1===i?(1===n?n=o.getLineCount():n--,i=o.getLineMaxColumn(n)):i--,new c["a"](n,i)},e.prototype._moveToPrevMatch=function(t,n){if(void 0===n&&(n=!1),this._decorations.getCount()=0||this._state.searchString.indexOf("$")>=0),n=e.lineNumber,i=e.column,o=this._editor.getModel();return t||i===o.getLineMaxColumn(n)?(n===o.getLineCount()?n=1:n++,i=1):i++,new c["a"](n,i)},e.prototype._moveToNextMatch=function(e){if(this._decorations.getCount()=j?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}},e.prototype._largeReplaceAll=function(){var e=new p["a"](this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getConfiguration().wordSeparators:null),t=e.parseSearchRequest();if(t){var n=t.regex;if(!n.multiline){var i="m";n.ignoreCase&&(i+="i"),n.global&&(i+="g"),n=new RegExp(n.source,i)}var o,r=this._editor.getModel(),s=r.getValue(1),a=r.getFullModelRange(),u=this._getReplacePattern(),c=this._state.preserveCase;o=u.hasReplacementPatterns||c?s.replace(n,function(){return u.buildReplaceString(arguments,c)}):s.replace(n,u.buildReplaceString(null,c));var d=new l["b"](a,o,this._editor.getSelection());this._executeEditorCommand("replaceAll",d)}},e.prototype._regularReplaceAll=function(e){for(var t=this._getReplacePattern(),n=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),i=[],o=0,r=n.length;ot&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,i.matchesPosition=!0,o=!0),this._matchesCount!==t&&(this._matchesCount=t,i.matchesCount=!0,o=!0),"undefined"!==typeof n&&(d["a"].equalsRange(this._currentMatch,n)||(this._currentMatch=n,i.currentMatch=!0,o=!0)),o&&this._onFindReplaceStateChange.fire(i)},e.prototype.change=function(e,t,n){void 0===n&&(n=!0);var i={moveCursor:t,updateHistory:n,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1},o=!1,r=this.isRegex,s=this.wholeWord,a=this.matchCase,u=this.preserveCase;"undefined"!==typeof e.searchString&&this._searchString!==e.searchString&&(this._searchString=e.searchString,i.searchString=!0,o=!0),"undefined"!==typeof e.replaceString&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,i.replaceString=!0,o=!0),"undefined"!==typeof e.isRevealed&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,i.isRevealed=!0,o=!0),"undefined"!==typeof e.isReplaceRevealed&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,i.isReplaceRevealed=!0,o=!0),"undefined"!==typeof e.isRegex&&(this._isRegex=e.isRegex),"undefined"!==typeof e.wholeWord&&(this._wholeWord=e.wholeWord),"undefined"!==typeof e.matchCase&&(this._matchCase=e.matchCase),"undefined"!==typeof e.preserveCase&&(this._preserveCase=e.preserveCase),"undefined"!==typeof e.searchScope&&(d["a"].equalsRange(this._searchScope,e.searchScope)||(this._searchScope=e.searchScope,i.searchScope=!0,o=!0)),this._isRegexOverride="undefined"!==typeof e.isRegexOverride?e.isRegexOverride:0,this._wholeWordOverride="undefined"!==typeof e.wholeWordOverride?e.wholeWordOverride:0,this._matchCaseOverride="undefined"!==typeof e.matchCaseOverride?e.matchCaseOverride:0,this._preserveCaseOverride="undefined"!==typeof e.preserveCaseOverride?e.preserveCaseOverride:0,r!==this.isRegex&&(o=!0,i.isRegex=!0),s!==this.wholeWord&&(o=!0,i.wholeWord=!0),a!==this.matchCase&&(o=!0,i.matchCase=!0),u!==this.preserveCase&&(o=!0,i.preserveCase=!0),o&&this._onFindReplaceStateChange.fire(i)},e}(),se=(n("01b0"),n("3813")),ae=n("70c3"),ue=n("fdcc"),le=n("30db"),ce=(n("caa1"),n("d3ef")),de=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),he=i["a"]("defaultLabel","input"),pe=function(e){function t(t,n,i,o){var r=e.call(this)||this;r._showOptionButtons=i,r.fixFocusOnOptionClickEnabled=!0,r._onDidOptionChange=r._register(new U["a"]),r.onDidOptionChange=r._onDidOptionChange.event,r._onKeyDown=r._register(new U["a"]),r.onKeyDown=r._onKeyDown.event,r._onMouseDown=r._register(new U["a"]),r.onMouseDown=r._onMouseDown.event,r._onInput=r._register(new U["a"]),r._onKeyUp=r._register(new U["a"]),r._onCaseSensitiveKeyDown=r._register(new U["a"]),r.onCaseSensitiveKeyDown=r._onCaseSensitiveKeyDown.event,r._onRegexKeyDown=r._register(new U["a"]),r.onRegexKeyDown=r._onRegexKeyDown.event,r._lastHighlightFindOptions=0,r.contextViewProvider=n,r.placeholder=o.placeholder||"",r.validation=o.validation,r.label=o.label||he,r.inputActiveOptionBorder=o.inputActiveOptionBorder,r.inputActiveOptionBackground=o.inputActiveOptionBackground,r.inputBackground=o.inputBackground,r.inputForeground=o.inputForeground,r.inputBorder=o.inputBorder,r.inputValidationInfoBorder=o.inputValidationInfoBorder,r.inputValidationInfoBackground=o.inputValidationInfoBackground,r.inputValidationInfoForeground=o.inputValidationInfoForeground,r.inputValidationWarningBorder=o.inputValidationWarningBorder,r.inputValidationWarningBackground=o.inputValidationWarningBackground,r.inputValidationWarningForeground=o.inputValidationWarningForeground,r.inputValidationErrorBorder=o.inputValidationErrorBorder,r.inputValidationErrorBackground=o.inputValidationErrorBackground,r.inputValidationErrorForeground=o.inputValidationErrorForeground;var s=o.appendCaseSensitiveLabel||"",a=o.appendWholeWordsLabel||"",u=o.appendRegexLabel||"",l=o.history||[],c=!!o.flexibleHeight,d=!!o.flexibleWidth,h=o.flexibleMaxHeight;r.domNode=document.createElement("div"),B["f"](r.domNode,"monaco-findInput"),r.inputBox=r._register(new ce["a"](r.domNode,r.contextViewProvider,{placeholder:r.placeholder||"",ariaLabel:r.label||"",validationOptions:{validation:r.validation},inputBackground:r.inputBackground,inputForeground:r.inputForeground,inputBorder:r.inputBorder,inputValidationInfoBackground:r.inputValidationInfoBackground,inputValidationInfoForeground:r.inputValidationInfoForeground,inputValidationInfoBorder:r.inputValidationInfoBorder,inputValidationWarningBackground:r.inputValidationWarningBackground,inputValidationWarningForeground:r.inputValidationWarningForeground,inputValidationWarningBorder:r.inputValidationWarningBorder,inputValidationErrorBackground:r.inputValidationErrorBackground,inputValidationErrorForeground:r.inputValidationErrorForeground,inputValidationErrorBorder:r.inputValidationErrorBorder,history:l,flexibleHeight:c,flexibleWidth:d,flexibleMaxHeight:h})),r.regex=r._register(new te({appendTitle:u,isChecked:!1,inputActiveOptionBorder:r.inputActiveOptionBorder,inputActiveOptionBackground:r.inputActiveOptionBackground})),r._register(r.regex.onChange(function(e){r._onDidOptionChange.fire(e),!e&&r.fixFocusOnOptionClickEnabled&&r.inputBox.focus(),r.validate()})),r._register(r.regex.onKeyDown(function(e){r._onRegexKeyDown.fire(e)})),r.wholeWords=r._register(new ee({appendTitle:a,isChecked:!1,inputActiveOptionBorder:r.inputActiveOptionBorder,inputActiveOptionBackground:r.inputActiveOptionBackground})),r._register(r.wholeWords.onChange(function(e){r._onDidOptionChange.fire(e),!e&&r.fixFocusOnOptionClickEnabled&&r.inputBox.focus(),r.validate()})),r.caseSensitive=r._register(new J({appendTitle:s,isChecked:!1,inputActiveOptionBorder:r.inputActiveOptionBorder,inputActiveOptionBackground:r.inputActiveOptionBackground})),r._register(r.caseSensitive.onChange(function(e){r._onDidOptionChange.fire(e),!e&&r.fixFocusOnOptionClickEnabled&&r.inputBox.focus(),r.validate()})),r._register(r.caseSensitive.onKeyDown(function(e){r._onCaseSensitiveKeyDown.fire(e)})),r._showOptionButtons&&(r.inputBox.paddingRight=r.caseSensitive.width()+r.wholeWords.width()+r.regex.width());var p=[r.caseSensitive.domNode,r.wholeWords.domNode,r.regex.domNode];r.onkeydown(r.domNode,function(e){if(e.equals(15)||e.equals(17)||e.equals(9)){var t=p.indexOf(document.activeElement);if(t>=0){var n=-1;e.equals(17)?n=(t+1)%p.length:e.equals(15)&&(n=0===t?p.length-1:t-1),e.equals(9)?p[t].blur():n>=0&&p[n].focus(),B["c"].stop(e,!0)}}});var f=document.createElement("div");return f.className="controls",f.style.display=r._showOptionButtons?"block":"none",f.appendChild(r.caseSensitive.domNode),f.appendChild(r.wholeWords.domNode),f.appendChild(r.regex.domNode),r.domNode.appendChild(f),t&&t.appendChild(r.domNode),r.onkeydown(r.inputBox.inputElement,function(e){return r._onKeyDown.fire(e)}),r.onkeyup(r.inputBox.inputElement,function(e){return r._onKeyUp.fire(e)}),r.oninput(r.inputBox.inputElement,function(e){return r._onInput.fire()}),r.onmousedown(r.inputBox.inputElement,function(e){return r._onMouseDown.fire(e)}),r}return de(t,e),t.prototype.enable=function(){B["I"](this.domNode,"disabled"),this.inputBox.enable(),this.regex.enable(),this.wholeWords.enable(),this.caseSensitive.enable()},t.prototype.disable=function(){B["f"](this.domNode,"disabled"),this.inputBox.disable(),this.regex.disable(),this.wholeWords.disable(),this.caseSensitive.disable()},t.prototype.setFocusInputOnOptionClick=function(e){this.fixFocusOnOptionClickEnabled=e},t.prototype.setEnabled=function(e){e?this.enable():this.disable()},t.prototype.getValue=function(){return this.inputBox.value},t.prototype.setValue=function(e){this.inputBox.value!==e&&(this.inputBox.value=e)},t.prototype.style=function(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputActiveOptionBackground=e.inputActiveOptionBackground,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()},t.prototype.applyStyles=function(){if(this.domNode){var e={inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionBackground:this.inputActiveOptionBackground};this.regex.style(e),this.wholeWords.style(e),this.caseSensitive.style(e);var t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}},t.prototype.select=function(){this.inputBox.select()},t.prototype.focus=function(){this.inputBox.focus()},t.prototype.getCaseSensitive=function(){return this.caseSensitive.checked},t.prototype.setCaseSensitive=function(e){this.caseSensitive.checked=e},t.prototype.getWholeWords=function(){return this.wholeWords.checked},t.prototype.setWholeWords=function(e){this.wholeWords.checked=e},t.prototype.getRegex=function(){return this.regex.checked},t.prototype.setRegex=function(e){this.regex.checked=e,this.validate()},t.prototype.focusOnCaseSensitive=function(){this.caseSensitive.focus()},t.prototype.highlightFindOptions=function(){B["I"](this.domNode,"highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,B["f"](this.domNode,"highlight-"+this._lastHighlightFindOptions)},t.prototype.validate=function(){this.inputBox&&this.inputBox.validate()},t.prototype.clearMessage=function(){this.inputBox&&this.inputBox.hideMessage()},t.prototype.dispose=function(){e.prototype.dispose.call(this)},t}(H["a"]),fe=n("9eb8"),ge=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),me=i["a"]("defaultLabel","input"),ve=i["a"]("label.preserveCaseCheckbox","Preserve Case"),_e=function(e){function t(t){return e.call(this,{actionClassName:"monaco-case-sensitive",title:ve+t.appendTitle,isChecked:t.isChecked,inputActiveOptionBorder:t.inputActiveOptionBorder})||this}return ge(t,e),t}(Z),be=function(e){function t(t,n,i,o){var r=e.call(this)||this;r._showOptionButtons=i,r.fixFocusOnOptionClickEnabled=!0,r.cachedOptionsWidth=0,r._onDidOptionChange=r._register(new U["a"]),r.onDidOptionChange=r._onDidOptionChange.event,r._onKeyDown=r._register(new U["a"]),r.onKeyDown=r._onKeyDown.event,r._onMouseDown=r._register(new U["a"]),r._onInput=r._register(new U["a"]),r._onKeyUp=r._register(new U["a"]),r._onPreserveCaseKeyDown=r._register(new U["a"]),r.onPreserveCaseKeyDown=r._onPreserveCaseKeyDown.event,r.contextViewProvider=n,r.placeholder=o.placeholder||"",r.validation=o.validation,r.label=o.label||me,r.inputActiveOptionBorder=o.inputActiveOptionBorder,r.inputBackground=o.inputBackground,r.inputForeground=o.inputForeground,r.inputBorder=o.inputBorder,r.inputValidationInfoBorder=o.inputValidationInfoBorder,r.inputValidationInfoBackground=o.inputValidationInfoBackground,r.inputValidationInfoForeground=o.inputValidationInfoForeground,r.inputValidationWarningBorder=o.inputValidationWarningBorder,r.inputValidationWarningBackground=o.inputValidationWarningBackground,r.inputValidationWarningForeground=o.inputValidationWarningForeground,r.inputValidationErrorBorder=o.inputValidationErrorBorder,r.inputValidationErrorBackground=o.inputValidationErrorBackground,r.inputValidationErrorForeground=o.inputValidationErrorForeground;var s=!!o.flexibleHeight,a=!!o.flexibleWidth,u=o.flexibleMaxHeight;return r.buildDomNode(o.history||[],s,a,u),t&&t.appendChild(r.domNode),r.onkeydown(r.inputBox.inputElement,function(e){return r._onKeyDown.fire(e)}),r.onkeyup(r.inputBox.inputElement,function(e){return r._onKeyUp.fire(e)}),r.oninput(r.inputBox.inputElement,function(e){return r._onInput.fire()}),r.onmousedown(r.inputBox.inputElement,function(e){return r._onMouseDown.fire(e)}),r}return ge(t,e),t.prototype.enable=function(){B["I"](this.domNode,"disabled"),this.inputBox.enable(),this.preserveCase.enable()},t.prototype.disable=function(){B["f"](this.domNode,"disabled"),this.inputBox.disable(),this.preserveCase.disable()},t.prototype.setEnabled=function(e){e?this.enable():this.disable()},t.prototype.style=function(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()},t.prototype.applyStyles=function(){if(this.domNode){var e={inputActiveOptionBorder:this.inputActiveOptionBorder};this.preserveCase.style(e);var t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}},t.prototype.select=function(){this.inputBox.select()},t.prototype.focus=function(){this.inputBox.focus()},t.prototype.getPreserveCase=function(){return this.preserveCase.checked},t.prototype.setPreserveCase=function(e){this.preserveCase.checked=e},t.prototype.focusOnPreserve=function(){this.preserveCase.focus()},t.prototype.buildDomNode=function(e,t,n,i){var o=this;this.domNode=document.createElement("div"),B["f"](this.domNode,"monaco-findInput"),this.inputBox=this._register(new ce["a"](this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder,history:e,flexibleHeight:t,flexibleWidth:n,flexibleMaxHeight:i})),this.preserveCase=this._register(new _e({appendTitle:"",isChecked:!1,inputActiveOptionBorder:this.inputActiveOptionBorder})),this._register(this.preserveCase.onChange(function(e){o._onDidOptionChange.fire(e),!e&&o.fixFocusOnOptionClickEnabled&&o.inputBox.focus(),o.validate()})),this._register(this.preserveCase.onKeyDown(function(e){o._onPreserveCaseKeyDown.fire(e)})),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;var r=[this.preserveCase.domNode];this.onkeydown(this.domNode,function(e){if(e.equals(15)||e.equals(17)||e.equals(9)){var t=r.indexOf(document.activeElement);if(t>=0){var n=-1;e.equals(17)?n=(t+1)%r.length:e.equals(15)&&(n=0===t?r.length-1:t-1),e.equals(9)?r[t].blur():n>=0&&r[n].focus(),B["c"].stop(e,!0)}}});var s=document.createElement("div");s.className="controls",s.style.display=this._showOptionButtons?"block":"none",s.appendChild(this.preserveCase.domNode),this.domNode.appendChild(s)},t.prototype.validate=function(){this.inputBox&&this.inputBox.validate()},Object.defineProperty(t.prototype,"width",{set:function(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.inputBox.width=e,this.domNode.style.width=e+"px"},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t}(H["a"]),ye=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),we=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Ce=function(e,t){return function(n,i){t(n,i,e)}},Se="historyNavigationWidget",Le="historyNavigationEnabled";function Oe(e,t,n){new k["d"](n,t).bindTo(e)}function xe(e,t){return e.createScoped(t.target)}function Ne(e,t){return e.getContext(document.activeElement).getValue(t)}function De(e,t){var n=xe(e,t);Oe(n,t,Se);var i=new k["d"](Le,!0).bindTo(n);return{scopedContextKeyService:n,historyNavigationEnablement:i}}var ke=function(e){function t(t,n,i,o,r){void 0===r&&(r=!1);var s=e.call(this,t,n,r,i)||this;return s._register(De(o,{target:s.inputBox.element,historyNavigator:s.inputBox}).scopedContextKeyService),s}return ye(t,e),t=we([Ce(3,k["c"])],t),t}(pe),Ie=function(e){function t(t,n,i,o,r){void 0===r&&(r=!1);var s=e.call(this,t,n,r,i)||this;return s._register(De(o,{target:s.inputBox.element,historyNavigator:s.inputBox}).scopedContextKeyService),s}return ye(t,e),t=we([Ce(3,k["c"])],t),t}(be);fe["a"].registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:k["a"].and(k["a"].has(Se),k["a"].equals(Le,!0)),primary:16,secondary:[528],handler:function(e,t){var n=Ne(e.get(k["c"]),Se);if(n){var i=n.historyNavigator;i.showPreviousValue()}}}),fe["a"].registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:k["a"].and(k["a"].has(Se),k["a"].equals(Le,!0)),primary:18,secondary:[530],handler:function(e,t){var n=Ne(e.get(k["c"]),Se);if(n){var i=n.historyNavigator;i.showNextValue()}}});var Ee=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Me=i["a"]("label.find","Find"),Te=i["a"]("placeholder.find","Find"),Pe=i["a"]("label.previousMatchButton","Previous match"),Re=i["a"]("label.nextMatchButton","Next match"),Ae=i["a"]("label.toggleSelectionFind","Find in selection"),Fe=i["a"]("label.closeButton","Close"),je=i["a"]("label.replace","Replace"),We=i["a"]("placeholder.replace","Replace"),Ve=i["a"]("label.replaceButton","Replace"),Be=i["a"]("label.replaceAllButton","Replace All"),He=i["a"]("label.toggleReplaceButton","Toggle Replace mode"),ze=i["a"]("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",j),Ue=i["a"]("label.matchesLocation","{0} of {1}"),Ke=i["a"]("label.noResults","No Results"),qe=419,Ge=275,Ze=Ge-54,Ye=69,Xe=17+(Ye+3+1)+92+2,$e=33,Qe="ctrlEnterReplaceAll.windows.donotask",Je=le["d"]?256:2048,et=function(){function e(e){this.afterLineNumber=e,this.heightInPx=$e,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}return e}();function tt(e,t,n){var i=!!t.match(/\n/);n&&i&&n.selectionStart>0&&e.stopPropagation()}function nt(e,t,n){var i=!!t.match(/\n/);n&&i&&n.selectionEnd=0?B["f"](this._domNode,"multipleline"):B["I"](this._domNode,"multipleline");try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?this._codeEditor.getConfiguration().readOnly||this._isReplaceVisible||(this._isReplaceVisible=!0,this._replaceInput.width=B["B"](this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){var t=this._state.searchString.length>0&&0===this._state.matchesCount;B["R"](this._domNode,"no-results",t),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory()},t.prototype._delayedUpdateHistory=function(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this))},t.prototype._updateHistory=function(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()},t.prototype._updateMatchesCount=function(){var e;if(this._matchesCount.style.minWidth=Ye+"px",this._state.matchesCount>=j?this._matchesCount.title=ze:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild),this._state.matchesCount>0){var t=String(this._state.matchesCount);this._state.matchesCount>=j&&(t+="+");var n=String(this._state.matchesPosition);"0"===n&&(n="?"),e=s["r"](Ue,n,t)}else e=Ke;this._matchesCount.appendChild(document.createTextNode(e)),Object(se["a"])(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString),!0),Ye=Math.max(Ye,this._matchesCount.clientWidth)},t.prototype._getAriaLabel=function(e,t,n){return e===Ke?""===n?i["a"]("ariaSearchNoResultEmpty","{0} found",e):i["a"]("ariaSearchNoResult","{0} found for {1}",e,n):t?i["a"]("ariaSearchNoResultWithLineNum","{0} found for {1} at {2}",e,n,t.startLineNumber+":"+t.startColumn):i["a"]("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for {1}",e,n)},t.prototype._updateToggleSelectionFindButton=function(){var e=this._codeEditor.getSelection(),t=!!e&&(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn),n=this._toggleSelectionFind.checked;this._toggleSelectionFind.setEnabled(this._isVisible&&(n||t))},t.prototype._updateButtons=function(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);var e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t),this._nextBtn.setEnabled(this._isVisible&&e&&t),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),B["R"](this._domNode,"replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.toggleClass("collapse",!this._isReplaceVisible),this._toggleReplaceBtn.toggleClass("expand",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);var n=!this._codeEditor.getConfiguration().readOnly;this._toggleReplaceBtn.setEnabled(this._isVisible&&n)},t.prototype._reveal=function(){var e=this;if(!this._isVisible){this._isVisible=!0;var t=this._codeEditor.getSelection(),n=!!t&&(t.startLineNumber!==t.endLineNumber||t.startColumn!==t.endColumn);n&&this._codeEditor.getConfiguration().contribInfo.find.autoFindInSelection?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._tryUpdateWidgetWidth(),this._updateButtons(),setTimeout(function(){B["f"](e._domNode,"visible"),e._domNode.setAttribute("aria-hidden","false")},0),setTimeout(function(){e._findInput.validate()},200),this._codeEditor.layoutOverlayWidget(this);var i=!0;if(this._codeEditor.getConfiguration().contribInfo.find.seedSearchStringFromSelection&&t){var o=this._codeEditor.getDomNode();if(o){var r=B["x"](o),s=this._codeEditor.getScrolledVisiblePosition(t.getStartPosition()),a=r.left+(s?s.left:0),u=s?s.top:0;if(this._viewZone&&ut.startLineNumber&&(i=!1);var l=B["z"](this._domNode).left;a>l&&(i=!1);var c=this._codeEditor.getScrolledVisiblePosition(t.getEndPosition()),d=r.left+(c?c.left:0);d>l&&(i=!1)}}}this._showViewZone(i)}},t.prototype._hide=function(e){this._isVisible&&(this._isVisible=!1,this._updateButtons(),B["I"](this._domNode,"visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())},t.prototype._layoutViewZone=function(){var e=this,t=this._codeEditor.getConfiguration().contribInfo.find.addExtraSpaceOnTop;if(t){if(this._isVisible){var n=this._viewZone;void 0===this._viewZoneId&&n&&this._codeEditor.changeViewZones(function(t){n.heightInPx=e._getHeight(),e._viewZoneId=t.addZone(n),e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()+n.heightInPx)})}}else this._removeViewZone()},t.prototype._showViewZone=function(e){var t=this;if(void 0===e&&(e=!0),this._isVisible){var n=this._codeEditor.getConfiguration().contribInfo.find.addExtraSpaceOnTop;if(n){void 0===this._viewZone&&(this._viewZone=new et(0));var i=this._viewZone;this._codeEditor.changeViewZones(function(n){if(void 0!==t._viewZoneId){var o=t._getHeight();if(o===i.heightInPx)return;var r=o-i.heightInPx;return i.heightInPx=o,n.layoutZone(t._viewZoneId),void(e&&t._codeEditor.setScrollTop(t._codeEditor.getScrollTop()+r))}r=t._getHeight();i.heightInPx=r,t._viewZoneId=n.addZone(i),e&&t._codeEditor.setScrollTop(t._codeEditor.getScrollTop()+r)})}}},t.prototype._removeViewZone=function(){var e=this;this._codeEditor.changeViewZones(function(t){void 0!==e._viewZoneId&&(t.removeZone(e._viewZoneId),e._viewZoneId=void 0,e._viewZone&&(e._codeEditor.setScrollTop(e._codeEditor.getScrollTop()-e._viewZone.heightInPx),e._viewZone=void 0))})},t.prototype._applyTheme=function(e){var t={inputActiveOptionBorder:e.getColor(m["V"]),inputActiveOptionBackground:e.getColor(m["U"]),inputBackground:e.getColor(m["W"]),inputForeground:e.getColor(m["Y"]),inputBorder:e.getColor(m["X"]),inputValidationInfoBackground:e.getColor(m["cb"]),inputValidationInfoForeground:e.getColor(m["eb"]),inputValidationInfoBorder:e.getColor(m["db"]),inputValidationWarningBackground:e.getColor(m["fb"]),inputValidationWarningForeground:e.getColor(m["hb"]),inputValidationWarningBorder:e.getColor(m["gb"]),inputValidationErrorBackground:e.getColor(m["Z"]),inputValidationErrorForeground:e.getColor(m["bb"]),inputValidationErrorBorder:e.getColor(m["ab"])};this._findInput.style(t),this._replaceInput.style(t)},t.prototype._tryUpdateWidgetWidth=function(){if(this._isVisible){var e=this._codeEditor.getConfiguration().layoutInfo.contentWidth;if(e<=0)B["f"](this._domNode,"hiddenEditor");else{B["C"](this._domNode,"hiddenEditor")&&B["I"](this._domNode,"hiddenEditor");var t=this._codeEditor.getConfiguration().layoutInfo.width,n=this._codeEditor.getConfiguration().layoutInfo.minimapWidth,i=!1,o=!1,r=!1;if(this._resized){var s=B["B"](this._domNode);if(s>qe)return this._domNode.style.maxWidth=t-28-n-15+"px",void(this._replaceInput.width=B["B"](this._findInput.domNode))}if(qe+28+n>=t&&(o=!0),qe+28+n-Ye>=t&&(r=!0),qe+28+n-Ye>=t+50&&(i=!0),B["R"](this._domNode,"collapsed-find-widget",i),B["R"](this._domNode,"narrow-find-widget",r),B["R"](this._domNode,"reduced-find-widget",o),r||i||(this._domNode.style.maxWidth=t-28-n-15+"px"),this._resized){this._findInput.inputBox.layout();var a=this._findInput.inputBox.width;a>0&&(this._replaceInput.width=a)}}}},t.prototype._getHeight=function(){var e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e},t.prototype._tryUpdateHeight=function(){var e=this._getHeight();return(null===this._cachedHeight||this._cachedHeight!==e)&&(this._cachedHeight=e,this._domNode.style.height=e+"px",!0)},t.prototype.focusFindInput=function(){this._findInput.select(),this._findInput.focus()},t.prototype.focusReplaceInput=function(){this._replaceInput.select(),this._replaceInput.focus()},t.prototype.highlightFindOptions=function(){this._findInput.highlightFindOptions()},t.prototype._updateSearchScope=function(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){var e=this._codeEditor.getSelection();1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber-1)));var t=this._state.currentMatch;e.startLineNumber!==e.endLineNumber&&(d["a"].equalsRange(e,t)||this._state.change({searchScope:e},!0))}},t.prototype._onFindInputMouseDown=function(e){e.middleButton&&e.stopPropagation()},t.prototype._onFindInputKeyDown=function(e){if(e.equals(3|Je)){var t=this._findInput.inputBox.inputElement,n=t.selectionStart,i=t.selectionEnd,o=t.value;if(null!==n&&null!==i){var r=o.substr(0,n)+"\n"+o.substr(i);return this._findInput.inputBox.value=r,t.setSelectionRange(n+1,n+1),this._findInput.inputBox.layout(),void e.preventDefault()}}return e.equals(2)?(this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?tt(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):e.equals(18)?nt(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):void 0},t.prototype._onReplaceInputKeyDown=function(e){if(e.equals(3|Je)){le["g"]&&le["e"]&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(i["a"]("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(Qe,!0,0));var t=this._replaceInput.inputBox.inputElement,n=t.selectionStart,o=t.selectionEnd,r=t.value;if(null!==n&&null!==o){var s=r.substr(0,n)+"\n"+r.substr(o);return this._replaceInput.inputBox.value=s,t.setSelectionRange(n+1,n+1),this._replaceInput.inputBox.layout(),void e.preventDefault()}}return e.equals(2)?(this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(1026)?(this._findInput.focus(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?tt(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):e.equals(18)?nt(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):void 0},t.prototype.getHorizontalSashTop=function(e){return 0},t.prototype.getHorizontalSashLeft=function(e){return 0},t.prototype.getHorizontalSashWidth=function(e){return 500},t.prototype._keybindingLabelFor=function(e){var t=this._keybindingService.lookupKeybinding(e);return t?" ("+t.getLabel()+")":""},t.prototype._buildDomNode=function(){var e=this,t=!0,n=!0;this._findInput=this._register(new ke(null,this._contextViewProvider,{width:Ze,label:Me,placeholder:Te,appendCaseSensitiveLabel:this._keybindingLabelFor(F.ToggleCaseSensitiveCommand),appendWholeWordsLabel:this._keybindingLabelFor(F.ToggleWholeWordCommand),appendRegexLabel:this._keybindingLabelFor(F.ToggleRegexCommand),validation:function(t){if(0===t.length||!e._findInput.getRegex())return null;try{return new RegExp(t),null}catch(n){return{content:n.message}}},flexibleHeight:t,flexibleWidth:n,flexibleMaxHeight:118},this._contextKeyService,!0)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown(function(t){return e._onFindInputKeyDown(t)})),this._register(this._findInput.inputBox.onDidChange(function(){e._ignoreChangeEvent||e._state.change({searchString:e._findInput.getValue()},!0)})),this._register(this._findInput.onDidOptionChange(function(){e._state.change({isRegex:e._findInput.getRegex(),wholeWord:e._findInput.getWholeWords(),matchCase:e._findInput.getCaseSensitive()},!0)})),this._register(this._findInput.onCaseSensitiveKeyDown(function(t){t.equals(1026)&&e._isReplaceVisible&&(e._replaceInput.focus(),t.preventDefault())})),this._register(this._findInput.onRegexKeyDown(function(t){t.equals(2)&&e._isReplaceVisible&&(e._replaceInput.focusOnPreserve(),t.preventDefault())})),this._register(this._findInput.inputBox.onDidHeightChange(function(t){e._tryUpdateHeight()&&e._showViewZone()})),le["c"]&&this._register(this._findInput.onMouseDown(function(t){return e._onFindInputMouseDown(t)})),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new rt({label:Pe+this._keybindingLabelFor(F.PreviousMatchFindAction),className:"previous",onTrigger:function(){e._codeEditor.getAction(F.PreviousMatchFindAction).run().then(void 0,ue["e"])}})),this._nextBtn=this._register(new rt({label:Re+this._keybindingLabelFor(F.NextMatchFindAction),className:"next",onTrigger:function(){e._codeEditor.getAction(F.NextMatchFindAction).run().then(void 0,ue["e"])}}));var i=document.createElement("div");i.className="find-part",i.appendChild(this._findInput.domNode);var o=document.createElement("div");o.className="find-actions",i.appendChild(o),o.appendChild(this._matchesCount),o.appendChild(this._prevBtn.domNode),o.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new ot({parent:o,title:Ae+this._keybindingLabelFor(F.ToggleSearchScopeCommand),onChange:function(){if(e._toggleSelectionFind.checked){if(e._codeEditor.hasModel()){var t=e._codeEditor.getSelection();1===t.endColumn&&t.endLineNumber>t.startLineNumber&&(t=t.setEndPosition(t.endLineNumber-1,e._codeEditor.getModel().getLineMaxColumn(t.endLineNumber-1))),t.isEmpty()||e._state.change({searchScope:t},!0)}}else e._state.change({searchScope:null},!0)}})),this._closeBtn=this._register(new rt({label:Fe+this._keybindingLabelFor(F.CloseFindWidgetCommand),className:"close-fw",onTrigger:function(){e._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:function(t){t.equals(2)&&e._isReplaceVisible&&(e._replaceBtn.isEnabled()?e._replaceBtn.focus():e._codeEditor.focus(),t.preventDefault())}})),o.appendChild(this._closeBtn.domNode),this._replaceInput=this._register(new Ie(null,void 0,{label:je,placeholder:We,history:[],flexibleHeight:t,flexibleWidth:n,flexibleMaxHeight:118},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown(function(t){return e._onReplaceInputKeyDown(t)})),this._register(this._replaceInput.inputBox.onDidChange(function(){e._state.change({replaceString:e._replaceInput.inputBox.value},!1)})),this._register(this._replaceInput.inputBox.onDidHeightChange(function(t){e._isReplaceVisible&&e._tryUpdateHeight()&&e._showViewZone()})),this._register(this._replaceInput.onDidOptionChange(function(){e._state.change({preserveCase:e._replaceInput.getPreserveCase()},!0)})),this._register(this._replaceInput.onPreserveCaseKeyDown(function(t){t.equals(2)&&(e._prevBtn.isEnabled()?e._prevBtn.focus():e._nextBtn.isEnabled()?e._nextBtn.focus():e._toggleSelectionFind.isEnabled()?e._toggleSelectionFind.focus():e._closeBtn.isEnabled()&&e._closeBtn.focus(),t.preventDefault())})),this._replaceBtn=this._register(new rt({label:Ve+this._keybindingLabelFor(F.ReplaceOneAction),className:"replace",onTrigger:function(){e._controller.replace()},onKeyDown:function(t){t.equals(1026)&&(e._closeBtn.focus(),t.preventDefault())}})),this._replaceAllBtn=this._register(new rt({label:Be+this._keybindingLabelFor(F.ReplaceAllAction),className:"replace-all",onTrigger:function(){e._controller.replaceAll()}}));var r=document.createElement("div");r.className="replace-part",r.appendChild(this._replaceInput.domNode);var s=document.createElement("div");s.className="replace-actions",r.appendChild(s),s.appendChild(this._replaceBtn.domNode),s.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new rt({label:He,className:"toggle left",onTrigger:function(){e._state.change({isReplaceRevealed:!e._isReplaceVisible},!1),e._isReplaceVisible&&(e._replaceInput.width=B["B"](e._findInput.domNode),e._replaceInput.inputBox.layout()),e._showViewZone()}})),this._toggleReplaceBtn.toggleClass("expand",this._isReplaceVisible),this._toggleReplaceBtn.toggleClass("collapse",!this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.style.width=qe+"px",this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(i),this._domNode.appendChild(r),this._resizeSash=new ae["a"](this._domNode,this,{orientation:0}),this._resized=!1;var a=qe;this._register(this._resizeSash.onDidStart(function(){a=B["B"](e._domNode)})),this._register(this._resizeSash.onDidChange(function(t){e._resized=!0;var n=a+t.startX-t.currentX;if(!(no||(e._domNode.style.width=n+"px",e._findInput.inputBox.width=i,e._isReplaceVisible&&(e._replaceInput.width=B["B"](e._findInput.domNode)),e._findInput.inputBox.layout(),e._tryUpdateHeight())}})),this._register(this._resizeSash.onDidReset(function(){var t=B["B"](e._domNode);if(!(t=0},Object.defineProperty(t.prototype,"checked",{get:function(){return this._checkbox.checked},set:function(e){this._checkbox.checked=e},enumerable:!0,configurable:!0}),t.prototype.focus=function(){this._domNode.focus()},t.prototype.enable=function(){this._checkbox.removeAttribute("disabled")},t.prototype.disable=function(){this._checkbox.disabled=!0},t.prototype.setEnabled=function(e){e?(this.enable(),this.domNode.tabIndex=0):(this.disable(),this.domNode.tabIndex=-1)},t._COUNTER=0,t}(H["a"]),rt=function(e){function t(t){var n=e.call(this)||this;return n._opts=t,n._domNode=document.createElement("div"),n._domNode.title=n._opts.label,n._domNode.tabIndex=0,n._domNode.className="button "+n._opts.className,n._domNode.setAttribute("role","button"),n._domNode.setAttribute("aria-label",n._opts.label),n.onclick(n._domNode,function(e){n._opts.onTrigger(),e.preventDefault()}),n.onkeydown(n._domNode,function(e){if(e.equals(10)||e.equals(3))return n._opts.onTrigger(),void e.preventDefault();n._opts.onKeyDown&&n._opts.onKeyDown(e)}),n}return Ee(t,e),Object.defineProperty(t.prototype,"domNode",{get:function(){return this._domNode},enumerable:!0,configurable:!0}),t.prototype.isEnabled=function(){return this._domNode.tabIndex>=0},t.prototype.focus=function(){this._domNode.focus()},t.prototype.setEnabled=function(e){B["R"](this._domNode,"disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1},t.prototype.setExpanded=function(e){this._domNode.setAttribute("aria-expanded",String(!!e))},t.prototype.toggleClass=function(e,t){B["R"](this._domNode,e,t)},t}(H["a"]);Object(v["f"])(function(e,t){var n=function(e,n){n&&t.addRule(".monaco-editor "+e+" { background-color: "+n+"; }")};n(".findMatch",e.getColor(m["t"])),n(".currentFindMatch",e.getColor(m["r"])),n(".findScope",e.getColor(m["v"]));var i=e.getColor(m["N"]);n(".find-widget",i);var o=e.getColor(m["Wb"]);o&&t.addRule(".monaco-editor .find-widget { box-shadow: 0 2px 8px "+o+"; }");var r=e.getColor(m["u"]);r&&t.addRule(".monaco-editor .findMatch { border: 1px "+("hc"===e.type?"dotted":"solid")+" "+r+"; box-sizing: border-box; }");var s=e.getColor(m["s"]);s&&t.addRule(".monaco-editor .currentFindMatch { border: 2px solid "+s+"; padding: 1px; box-sizing: border-box; }");var a=e.getColor(m["w"]);a&&t.addRule(".monaco-editor .findScope { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+a+"; }");var u=e.getColor(m["e"]);u&&t.addRule(".monaco-editor .find-widget { border: 2px solid "+u+"; }");var l=e.getColor(m["P"]);l&&t.addRule(".monaco-editor .find-widget { color: "+l+"; }");var c=e.getColor(m["R"]);c&&t.addRule(".monaco-editor .find-widget.no-results .matchesCount { color: "+c+"; }");var d=e.getColor(m["Q"]);if(d)t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: "+d+"; width: 3px !important; margin-left: -4px;}");else{var h=e.getColor(m["O"]);h&&t.addRule(".monaco-editor .find-widget .monaco-sash { background-color: "+h+"; width: 3px !important; margin-left: -4px;}")}var p=e.getColor(m["V"]);p&&t.addRule(".monaco-editor .find-widget .monaco-checkbox .checkbox:checked + .label { border: 1px solid "+p.toString()+"; }");var f=e.getColor(m["U"]);f&&t.addRule(".monaco-editor .find-widget .monaco-checkbox .checkbox:checked + .label { background-color: "+f.toString()+"; }");var g=e.getColor(m["S"]);g&&t.addRule(".monaco-workbench .monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: "+g+"; }")});var st=n("f577"),at=n("533b"),ut=n("0a0f"),lt=n("6dec"),ct=n("03e8"),dt=n("b0cd");n.d(t,"getSelectionSearchString",function(){return mt}),n.d(t,"CommonFindController",function(){return vt}),n.d(t,"FindController",function(){return _t}),n.d(t,"StartFindAction",function(){return bt}),n.d(t,"StartFindWithSelectionAction",function(){return yt}),n.d(t,"MatchFindAction",function(){return wt}),n.d(t,"NextMatchFindAction",function(){return Ct}),n.d(t,"NextMatchFindAction2",function(){return St}),n.d(t,"PreviousMatchFindAction",function(){return Lt}),n.d(t,"PreviousMatchFindAction2",function(){return Ot}),n.d(t,"SelectionMatchFindAction",function(){return xt}),n.d(t,"NextSelectionMatchFindAction",function(){return Nt}),n.d(t,"PreviousSelectionMatchFindAction",function(){return Dt}),n.d(t,"StartFindReplaceAction",function(){return kt});var ht=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),pt=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},ft=function(e,t){return function(n,i){t(n,i,e)}},gt=524288;function mt(e){if(!e.hasModel())return null;var t=e.getSelection();if(t.startLineNumber===t.endLineNumber)if(t.isEmpty()){var n=e.getModel().getWordAtPosition(t.getStartPosition());if(n)return n.word}else if(e.getModel().getValueLengthInRange(t)e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._editor.getModel().getLineMaxColumn(e.endLineNumber-1))),e.isEmpty()||this._state.change({searchScope:e},!0)}},t.prototype.setSearchString=function(e){this._state.isRegex&&(e=s["p"](e)),this._state.change({searchString:e},!1)},t.prototype.highlightFindOptions=function(){},t.prototype._start=function(e){if(this.disposeModel(),this._editor.hasModel()){var t={isRevealed:!0};if(e.seedSearchStringFromSelection){var n=mt(this._editor);n&&(this._state.isRegex?t.searchString=s["p"](n):t.searchString=n)}if(!t.searchString&&e.seedSearchStringFromGlobalClipboard){n=this.getGlobalBufferTerm();n&&(t.searchString=n)}if(e.forceRevealReplace?t.isReplaceRevealed=!0:this._findWidgetVisible.get()||(t.isReplaceRevealed=!1),e.updateSearchScope){var i=this._editor.getSelection();i.isEmpty()||(t.searchScope=i)}this._state.change(t,!1),this._model||(this._model=new V(this._editor,this._state))}},t.prototype.start=function(e){this._start(e)},t.prototype.moveToNextMatch=function(){return!!this._model&&(this._model.moveToNextMatch(),!0)},t.prototype.moveToPrevMatch=function(){return!!this._model&&(this._model.moveToPrevMatch(),!0)},t.prototype.replace=function(){return!!this._model&&(this._model.replace(),!0)},t.prototype.replaceAll=function(){return!!this._model&&(this._model.replaceAll(),!0)},t.prototype.selectAllMatches=function(){return!!this._model&&(this._model.selectAllMatches(),this._editor.focus(),!0)},t.prototype.getGlobalBufferTerm=function(){return this._editor.getConfiguration().contribInfo.find.globalFindClipboard&&this._clipboardService&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""},t.prototype.setGlobalBufferTerm=function(e){this._editor.getConfiguration().contribInfo.find.globalFindClipboard&&this._clipboardService&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)},t.ID="editor.contrib.findController",t=pt([ft(1,k["c"]),ft(2,ct["a"]),ft(3,st["a"])],t),t}(r["a"]),_t=function(e){function t(t,n,i,o,r,s,a,u){var l=e.call(this,t,i,a,u)||this;return l._contextViewService=n,l._keybindingService=o,l._themeService=r,l._notificationService=s,l._widget=null,l._findOptionsWidget=null,l}return ht(t,e),t.prototype._start=function(t){this._widget||this._createFindWidget(),!this._widget.getPosition()&&this._editor.getConfiguration().contribInfo.find.autoFindInSelection&&(t.updateSearchScope=!0),e.prototype._start.call(this,t),2===t.shouldFocus?this._widget.focusReplaceInput():1===t.shouldFocus&&this._widget.focusFindInput()},t.prototype.highlightFindOptions=function(){this._widget||this._createFindWidget(),this._state.isRevealed?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()},t.prototype._createFindWidget=function(){this._widget=this._register(new it(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService)),this._findOptionsWidget=this._register(new ie(this._editor,this._state,this._keybindingService,this._themeService))},t=pt([ft(1,at["b"]),ft(2,k["c"]),ft(3,lt["a"]),ft(4,v["c"]),ft(5,dt["a"]),ft(6,ct["a"]),ft(7,Object(ut["d"])(st["a"]))],t),t}(vt),bt=function(e){function t(){return e.call(this,{id:F.StartFindAction,label:i["a"]("startFindAction","Find"),alias:"Find",precondition:void 0,kbOpts:{kbExpr:null,primary:2084,weight:100},menubarOpts:{menuId:14,group:"3_find",title:i["a"]({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}})||this}return ht(t,e),t.prototype.run=function(e,t){var n=vt.get(t);n&&n.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:t.getConfiguration().contribInfo.find.globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1})},t}(a["b"]),yt=function(e){function t(){return e.call(this,{id:F.StartFindWithSelection,label:i["a"]("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})||this}return ht(t,e),t.prototype.run=function(e,t){var n=vt.get(t);n&&(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:!0,seedSearchStringFromGlobalClipboard:!1,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1}),n.setGlobalBufferTerm(n.getState().searchString))},t}(a["b"]),wt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ht(t,e),t.prototype.run=function(e,t){var n=vt.get(t);n&&!this._run(n)&&(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===n.getState().searchString.length&&t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1}),this._run(n))},t}(a["b"]),Ct=function(e){function t(){return e.call(this,{id:F.NextMatchFindAction,label:i["a"]("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:u["a"].focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToNextMatch()},t}(wt),St=function(e){function t(){return e.call(this,{id:F.NextMatchFindAction,label:i["a"]("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:k["a"].and(u["a"].focus,E),primary:3,weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToNextMatch()},t}(wt),Lt=function(e){function t(){return e.call(this,{id:F.PreviousMatchFindAction,label:i["a"]("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:u["a"].focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToPrevMatch()},t}(wt),Ot=function(e){function t(){return e.call(this,{id:F.PreviousMatchFindAction,label:i["a"]("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:k["a"].and(u["a"].focus,E),primary:1027,weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToPrevMatch()},t}(wt),xt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return ht(t,e),t.prototype.run=function(e,t){var n=vt.get(t);if(n){var i=mt(t);i&&n.setSearchString(i),this._run(n)||(n.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1}),this._run(n))}},t}(a["b"]),Nt=function(e){function t(){return e.call(this,{id:F.NextSelectionMatchFindAction,label:i["a"]("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:u["a"].focus,primary:2109,weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToNextMatch()},t}(xt),Dt=function(e){function t(){return e.call(this,{id:F.PreviousSelectionMatchFindAction,label:i["a"]("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:u["a"].focus,primary:3133,weight:100}})||this}return ht(t,e),t.prototype._run=function(e){return e.moveToPrevMatch()},t}(xt),kt=function(e){function t(){return e.call(this,{id:F.StartFindReplaceAction,label:i["a"]("startReplace","Replace"),alias:"Replace",precondition:void 0,kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menubarOpts:{menuId:14,group:"3_find",title:i["a"]({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}})||this}return ht(t,e),t.prototype.run=function(e,t){if(t.hasModel()&&!t.getConfiguration().readOnly){var n=vt.get(t),i=t.getSelection(),o=n.isFindInputFocused(),r=!i.isEmpty()&&i.startLineNumber===i.endLineNumber&&t.getConfiguration().contribInfo.find.seedSearchStringFromSelection&&!o,s=o||r?2:1;n&&n.start({forceRevealReplace:!0,seedSearchStringFromSelection:r,seedSearchStringFromGlobalClipboard:t.getConfiguration().contribInfo.find.seedSearchStringFromSelection,shouldFocus:s,shouldAnimate:!0,updateSearchScope:!1})}},t}(a["b"]);Object(a["h"])(_t),Object(a["f"])(bt),Object(a["f"])(yt),Object(a["f"])(Ct),Object(a["f"])(St),Object(a["f"])(Lt),Object(a["f"])(Ot),Object(a["f"])(Nt),Object(a["f"])(Dt),Object(a["f"])(kt);var It=a["c"].bindToContribution(vt.get);Object(a["g"])(new It({id:F.CloseFindWidgetCommand,precondition:I,handler:function(e){return e.closeFindWidget()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:9,secondary:[1033]}})),Object(a["g"])(new It({id:F.ToggleCaseSensitiveCommand,precondition:void 0,handler:function(e){return e.toggleCaseSensitive()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:T.primary,mac:T.mac,win:T.win,linux:T.linux}})),Object(a["g"])(new It({id:F.ToggleWholeWordCommand,precondition:void 0,handler:function(e){return e.toggleWholeWords()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:P.primary,mac:P.mac,win:P.win,linux:P.linux}})),Object(a["g"])(new It({id:F.ToggleRegexCommand,precondition:void 0,handler:function(e){return e.toggleRegex()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:R.primary,mac:R.mac,win:R.win,linux:R.linux}})),Object(a["g"])(new It({id:F.ToggleSearchScopeCommand,precondition:void 0,handler:function(e){return e.toggleSearchScope()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:A.primary,mac:A.mac,win:A.win,linux:A.linux}})),Object(a["g"])(new It({id:F.ReplaceOneAction,precondition:I,handler:function(e){return e.replace()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:3094}})),Object(a["g"])(new It({id:F.ReplaceOneAction,precondition:I,handler:function(e){return e.replace()},kbOpts:{weight:105,kbExpr:k["a"].and(u["a"].focus,M),primary:3}})),Object(a["g"])(new It({id:F.ReplaceAllAction,precondition:I,handler:function(e){return e.replaceAll()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:2563}})),Object(a["g"])(new It({id:F.ReplaceAllAction,precondition:I,handler:function(e){return e.replaceAll()},kbOpts:{weight:105,kbExpr:k["a"].and(u["a"].focus,M),primary:void 0,mac:{primary:2051}}})),Object(a["g"])(new It({id:F.SelectAllMatchesAction,precondition:I,handler:function(e){return e.selectAllMatches()},kbOpts:{weight:105,kbExpr:u["a"].focus,primary:515}}))},a222:function(e,t,n){"use strict";n.r(t),n.d(t,"IPadShowKeyboard",function(){return u});n("722f9");var i=n("0f70"),o=n("11f7"),r=n("a666"),s=n("b2cc"),a=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),u=function(e){function t(t){var n=e.call(this)||this;return n.editor=t,n.widget=null,i["k"]&&(n._register(t.onDidChangeConfiguration(function(){return n.update()})),n.update()),n}return a(t,e),t.prototype.update=function(){var e=!this.editor.getConfiguration().readOnly;!this.widget&&e?this.widget=new l(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)},t.prototype.getId=function(){return t.ID},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.widget&&(this.widget.dispose(),this.widget=null)},t.ID="editor.contrib.iPadShowKeyboard",t}(r["a"]),l=function(e){function t(t){var n=e.call(this)||this;return n.editor=t,n._domNode=document.createElement("textarea"),n._domNode.className="iPadShowKeyboard",n._register(o["h"](n._domNode,"touchstart",function(e){n.editor.focus()})),n._register(o["h"](n._domNode,"focus",function(e){n.editor.focus()})),n.editor.addOverlayWidget(n),n}return a(t,e),t.prototype.dispose=function(){this.editor.removeOverlayWidget(this),e.prototype.dispose.call(this)},t.prototype.getId=function(){return t.ID},t.prototype.getDomNode=function(){return this._domNode},t.prototype.getPosition=function(){return{preference:1}},t.ID="editor.contrib.ShowKeyboardWidget",t}(r["a"]);Object(s["h"])(u)},a40b:function(e,t,n){"use strict";n.d(t,"a",function(){return r});var i=n("0a0f"),o="editorWorkerService",r=Object(i["c"])(o)},a60f:function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return c});var i,o=n("e8e3"),r=n("a666"),s=n("11f7"),a=n("6424"),u=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),l=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s};(function(e){e.Tap="-monaco-gesturetap",e.Change="-monaco-gesturechange",e.Start="-monaco-gesturestart",e.End="-monaco-gesturesend",e.Contextmenu="-monaco-gesturecontextmenu"})(i||(i={}));var c=function(e){function t(){var t=e.call(this)||this;return t.dispatched=!1,t.activeTouches={},t.handle=null,t.targets=[],t._register(s["h"](document,"touchstart",function(e){return t.onTouchStart(e)})),t._register(s["h"](document,"touchend",function(e){return t.onTouchEnd(e)})),t._register(s["h"](document,"touchmove",function(e){return t.onTouchMove(e)})),t}return u(t,e),t.addTarget=function(e){t.isTouchDevice()&&(t.INSTANCE||(t.INSTANCE=new t),t.INSTANCE.targets.push(e))},t.isTouchDevice=function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0},t.prototype.dispose=function(){this.handle&&(this.handle.dispose(),this.handle=null),e.prototype.dispose.call(this)},t.prototype.onTouchStart=function(e){var t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(var n=0,o=e.targetTouches.length;n=t.HOLD_DELAY&&Math.abs(c.initialPageX-o["s"](c.rollingPageX))<30&&Math.abs(c.initialPageY-o["s"](c.rollingPageY))<30){h=a.newGestureEvent(i.Contextmenu,c.initialTarget);h.pageX=o["s"](c.rollingPageX),h.pageY=o["s"](c.rollingPageY),a.dispatchEvent(h)}else if(1===r){var p=o["s"](c.rollingPageX),f=o["s"](c.rollingPageY),g=o["s"](c.rollingTimestamps)-c.rollingTimestamps[0],m=p-c.rollingPageX[0],v=f-c.rollingPageY[0],_=a.targets.filter(function(e){return c.initialTarget instanceof Node&&e.contains(c.initialTarget)});a.inertia(_,n,Math.abs(m)/g,m>0?1:-1,p,Math.abs(v)/g,v>0?1:-1,f)}a.dispatchEvent(a.newGestureEvent(i.End,c.initialTarget)),delete a.activeTouches[l.identifier]},a=this,u=0,l=e.changedTouches.length;u0&&(g=!1,p=r*o*h),u>0&&(g=!1,f=l*u*h);var m=d.newGestureEvent(i.Change);m.translationX=p,m.translationY=f,e.forEach(function(e){return e.dispatchEvent(m)}),g||d.inertia(e,s,o,r,a+p,u,l,c+f)})},t.prototype.onTouchMove=function(e){for(var t=Date.now(),n=0,r=e.changedTouches.length;n3&&(a.rollingPageX.shift(),a.rollingPageY.shift(),a.rollingTimestamps.shift()),a.rollingPageX.push(s.pageX),a.rollingPageY.push(s.pageY),a.rollingTimestamps.push(t)}else console.warn("end of an UNKNOWN touch",s)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)},t.SCROLL_FRICTION=-.005,t.HOLD_DELAY=700,l([a["a"]],t,"isTouchDevice",null),t}(r["a"])},a65a:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"c",function(){return r}),n.d(t,"b",function(){return s});var i=n("3742"),o=function(){function e(e){this.value=e}return e.prototype.equals=function(e){return this.value===e.value},e.prototype.contains=function(t){return this.equals(t)||Object(i["J"])(t.value,this.value+e.sep)},e.prototype.intersects=function(e){return this.contains(e)||e.contains(this)},e.sep=".",e.Empty=new e(""),e.QuickFix=new e("quickfix"),e.Refactor=new e("refactor"),e.Source=new e("source"),e.SourceOrganizeImports=new e("source.organizeImports"),e.SourceFixAll=new e("source.fixAll"),e}();function r(e,t){return!(e.kind&&!e.kind.intersects(t))&&!(o.Source.contains(t)&&!e.includeSourceActions)}function s(e,t){var n=t.kind?new o(t.kind):void 0;return!!(!e.kind||n&&e.kind.contains(n))&&(!(!e.includeSourceActions&&n&&o.Source.contains(n))&&!(e.onlyIncludePreferredActions&&!t.isPreferred))}},a666:function(e,t,n){"use strict";n.d(t,"g",function(){return a}),n.d(t,"f",function(){return u}),n.d(t,"e",function(){return l}),n.d(t,"h",function(){return c}),n.d(t,"b",function(){return d}),n.d(t,"a",function(){return h}),n.d(t,"d",function(){return p}),n.d(t,"c",function(){return f});var i=!1,o="__is_disposable_tracked__";function r(e){if(i&&e&&e!==h.None)try{e[o]=!0}catch(t){}}function s(e){if(!i)return e;var t=new Error("Potentially leaked disposable").stack;return setTimeout(function(){e[o]||console.log(t)},3e3),e}function a(e){return"function"===typeof e.dispose&&0===e.dispose.length}function u(e){return Array.isArray(e)?(e.forEach(function(e){e&&(r(e),e.dispose())}),[]):e?(r(e),e.dispose(),e):void 0}function l(){for(var e=[],t=0;t0){var n=t.shift();for(var i in Object.freeze(n),n)if(s.call(n,i)){var o=n[i];"object"!==typeof o||Object.isFrozen(o)||t.push(o)}}return e}var s=Object.prototype.hasOwnProperty;function a(e,t){return u(e,t,new Set)}function u(e,t,n){if(Object(i["k"])(e))return e;var o=t(e);if("undefined"!==typeof o)return o;if(Object(i["c"])(e)){for(var r=[],a=0,l=e;a=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},m=function(e,t){return function(n,i){t(n,i,e)}},v=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},_=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)},enumerable:!0,configurable:!0}),e.prototype.selectNextColorPresentation=function(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)},e.prototype.guessColorPresentation=function(e,t){for(var n=0;n0;return t&&n}Object(s["e"])("_executeHoverProvider",function(e,t){return F(e,t,d["a"].None)});var W=n("5fe7"),V=function(){function e(e,t,n,i,o){var r=this;this._computer=e,this._state=0,this._hoverTime=o,this._firstWaitScheduler=new W["d"](function(){return r._triggerAsyncComputation()},0),this._secondWaitScheduler=new W["d"](function(){return r._triggerSyncComputation()},0),this._loadingMessageScheduler=new W["d"](function(){return r._showLoadingMessage()},0),this._asyncComputationPromise=null,this._asyncComputationPromiseDone=!1,this._completeCallback=t,this._errorCallback=n,this._progressCallback=i}return e.prototype.setHoverTime=function(e){this._hoverTime=e},e.prototype._firstWaitTime=function(){return this._hoverTime/2},e.prototype._secondWaitTime=function(){return this._hoverTime/2},e.prototype._loadingMessageTime=function(){return 3*this._hoverTime},e.prototype._triggerAsyncComputation=function(){var e=this;this._state=2,this._secondWaitScheduler.schedule(this._secondWaitTime()),this._computer.computeAsync?(this._asyncComputationPromiseDone=!1,this._asyncComputationPromise=Object(W["f"])(function(t){return e._computer.computeAsync(t)}),this._asyncComputationPromise.then(function(t){e._asyncComputationPromiseDone=!0,e._withAsyncResult(t)},function(t){return e._onError(t)})):this._asyncComputationPromiseDone=!0},e.prototype._triggerSyncComputation=function(){this._computer.computeSync&&this._computer.onResult(this._computer.computeSync(),!0),this._asyncComputationPromiseDone?(this._state=0,this._onComplete(this._computer.getResult())):(this._state=3,this._onProgress(this._computer.getResult()))},e.prototype._showLoadingMessage=function(){3===this._state&&this._onProgress(this._computer.getResultWithLoadingMessage())},e.prototype._withAsyncResult=function(e){e&&this._computer.onResult(e,!1),3===this._state&&(this._state=0,this._onComplete(this._computer.getResult()))},e.prototype._onComplete=function(e){this._completeCallback&&this._completeCallback(e)},e.prototype._onError=function(e){this._errorCallback?this._errorCallback(e):Object(A["e"])(e)},e.prototype._onProgress=function(e){this._progressCallback&&this._progressCallback(e)},e.prototype.start=function(e){if(0===e)0===this._state&&(this._state=1,this._firstWaitScheduler.schedule(this._firstWaitTime()),this._loadingMessageScheduler.schedule(this._loadingMessageTime()));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break}},e.prototype.cancel=function(){this._loadingMessageScheduler.cancel(),1===this._state&&this._firstWaitScheduler.cancel(),2===this._state&&(this._secondWaitScheduler.cancel(),this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null)),3===this._state&&this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null),this._state=0},e}(),B=n("1898"),H=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),z=function(e){function t(t,n){var i=e.call(this)||this;return i.allowEditorOverflow=!0,i._id=t,i._editor=n,i._isVisible=!1,i._stoleFocus=!1,i._containerDomNode=document.createElement("div"),i._containerDomNode.className="monaco-editor-hover hidden",i._containerDomNode.tabIndex=0,i._domNode=document.createElement("div"),i._domNode.className="monaco-editor-hover-content",i.scrollbar=new B["a"](i._domNode,{}),i._register(i.scrollbar),i._containerDomNode.appendChild(i.scrollbar.getDomNode()),i.onkeydown(i._containerDomNode,function(e){e.equals(9)&&i.hide()}),i._register(i._editor.onDidChangeConfiguration(function(e){e.fontInfo&&i.updateFont()})),i._editor.onDidLayoutChange(function(e){return i.layout()}),i.layout(),i._editor.addContentWidget(i),i._showAtPosition=null,i._showAtRange=null,i._stoleFocus=!1,i}return H(t,e),Object.defineProperty(t.prototype,"isVisible",{get:function(){return this._isVisible},set:function(e){this._isVisible=e,Object(c["R"])(this._containerDomNode,"hidden",!this._isVisible)},enumerable:!0,configurable:!0}),t.prototype.getId=function(){return this._id},t.prototype.getDomNode=function(){return this._containerDomNode},t.prototype.showAt=function(e,t,n){this._showAtPosition=e,this._showAtRange=t,this.isVisible=!0,this._editor.layoutContentWidget(this),this._editor.render(),this._stoleFocus=n,n&&this._containerDomNode.focus()},t.prototype.hide=function(){this.isVisible&&(this.isVisible=!1,this._editor.layoutContentWidget(this),this._stoleFocus&&this._editor.focus())},t.prototype.getPosition=function(){return this.isVisible?{position:this._showAtPosition,range:this._showAtRange,preference:[1,2]}:null},t.prototype.dispose=function(){this._editor.removeContentWidget(this),e.prototype.dispose.call(this)},t.prototype.updateFont=function(){var e=this,t=Array.prototype.slice.call(this._domNode.getElementsByClassName("code"));t.forEach(function(t){return e._editor.applyFontInfo(t)})},t.prototype.updateContents=function(e){this._domNode.textContent="",this._domNode.appendChild(e),this.updateFont(),this._editor.layoutContentWidget(this),this.onContentsChange()},t.prototype.onContentsChange=function(){this.scrollbar.scanDomNode()},t.prototype.layout=function(){var e=Math.max(this._editor.getLayoutInfo().height/4,250),t=this._editor.getConfiguration().fontInfo,n=t.fontSize,i=t.lineHeight;this._domNode.style.fontSize=n+"px",this._domNode.style.lineHeight=i+"px",this._domNode.style.maxHeight=e+"px",this._domNode.style.maxWidth=Math.max(.66*this._editor.getLayoutInfo().width,500)+"px"},t}(S["a"]),U=function(e){function t(t,n){var i=e.call(this)||this;return i._id=t,i._editor=n,i._isVisible=!1,i._domNode=document.createElement("div"),i._domNode.className="monaco-editor-hover hidden",i._domNode.setAttribute("aria-hidden","true"),i._domNode.setAttribute("role","presentation"),i._showAtLineNumber=-1,i._register(i._editor.onDidChangeConfiguration(function(e){e.fontInfo&&i.updateFont()})),i._editor.addOverlayWidget(i),i}return H(t,e),Object.defineProperty(t.prototype,"isVisible",{get:function(){return this._isVisible},set:function(e){this._isVisible=e,Object(c["R"])(this._domNode,"hidden",!this._isVisible)},enumerable:!0,configurable:!0}),t.prototype.getId=function(){return this._id},t.prototype.getDomNode=function(){return this._domNode},t.prototype.showAt=function(e){this._showAtLineNumber=e,this.isVisible||(this.isVisible=!0);var t=this._editor.getLayoutInfo(),n=this._editor.getTopForLineNumber(this._showAtLineNumber),i=this._editor.getScrollTop(),o=this._editor.getConfiguration().lineHeight,r=this._domNode.clientHeight,s=n-i-(r-o)/2;this._domNode.style.left=t.glyphMarginLeft+t.glyphMarginWidth+"px",this._domNode.style.top=Math.max(Math.round(s),0)+"px"},t.prototype.hide=function(){this.isVisible&&(this.isVisible=!1)},t.prototype.getPosition=function(){return null},t.prototype.dispose=function(){this._editor.removeOverlayWidget(this),e.prototype.dispose.call(this)},t.prototype.updateFont=function(){var e=this,t=Array.prototype.slice.call(this._domNode.getElementsByTagName("code")),n=Array.prototype.slice.call(this._domNode.getElementsByClassName("code"));t.concat(n).forEach(function(t){return e._editor.applyFontInfo(t)})},t.prototype.updateContents=function(e){this._domNode.textContent="",this._domNode.appendChild(e),this.updateFont()},t}(S["a"]),K=n("dea0"),q=n("b400"),G=n("82c9"),Z=n("5bd7"),Y=n("958f"),X=n("8495"),$=n("0b54"),Q=n("a65a"),J=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ee=c["a"],te=function(){function e(e,t,n){this.range=e,this.color=t,this.provider=n}return e}(),ne=function(){function e(e,t){this.range=e,this.marker=t}return e}(),ie=function(){function e(e,t){this._markerDecorationsService=t,this._editor=e,this._result=[]}return e.prototype.setRange=function(e){this._range=e,this._result=[]},e.prototype.clearResult=function(){this._result=[]},e.prototype.computeAsync=function(e){if(!this._editor.hasModel()||!this._range)return Promise.resolve([]);var t=this._editor.getModel();return m["n"].has(t)?F(t,new f["a"](this._range.startLineNumber,this._range.startColumn),e):Promise.resolve([])},e.prototype.computeSync=function(){var e=this;if(!this._editor.hasModel()||!this._range)return[];var t=this._editor.getModel(),n=this._range.startLineNumber;if(n>this._editor.getModel().getLineCount())return[];var i=_["ColorDetector"].get(this._editor),o=t.getLineMaxColumn(n),r=this._editor.getLineDecorations(n),s=!1,u=this._range,l=r.map(function(r){var l=r.range.startLineNumber===n?r.range.startColumn:1,c=r.range.endLineNumber===n?r.range.endColumn:o;if(l>u.startColumn||u.endColumn>c)return null;var d=new a["a"](u.startLineNumber,l,u.startLineNumber,c),h=e._markerDecorationsService.getMarker(t,r);if(h)return new ne(d,h);var f=i.getColorData(r.range.getStartPosition());if(!s&&f){s=!0;var g=f.colorInfo,m=g.color,v=g.range;return new te(v,m,f.provider)}if(Object(p["b"])(r.options.hoverMessage))return null;var _=r.options.hoverMessage?Object(R["b"])(r.options.hoverMessage):[];return{contents:_,range:d}});return Object(R["d"])(l)},e.prototype.onResult=function(e,t){this._result=t?e.concat(this._result.sort(function(e,t){return e instanceof te?-1:t instanceof te?1:0})):this._result.concat(e)},e.prototype.getResult=function(){return this._result.slice(0)},e.prototype.getResultWithLoadingMessage=function(){return this._result.slice(0).concat([this._getLoadingMessage()])},e.prototype._getLoadingMessage=function(){return{range:this._range,contents:[(new p["a"]).appendText(i["a"]("modesContentHover.loading","Loading..."))]}},e}(),oe=function(e){function t(n,i,o,s,a,u){void 0===u&&(u=Z["b"]);var l=e.call(this,t.ID,n)||this;return l._themeService=o,l._keybindingService=s,l._modeService=a,l._openerService=u,l.renderDisposable=l._register(new r["d"]),l._messages=[],l._lastRange=null,l._computer=new ie(l._editor,i),l._highlightDecorations=[],l._isChangingDecorations=!1,l._shouldFocus=!1,l._colorPicker=null,l._hoverOperation=new V(l._computer,function(e){return l._withResult(e,!0)},null,function(e){return l._withResult(e,!1)},l._editor.getConfiguration().contribInfo.hover.delay),l._register(c["k"](l.getDomNode(),c["d"].FOCUS,function(){l._colorPicker&&c["f"](l.getDomNode(),"colorpicker-hover")})),l._register(c["k"](l.getDomNode(),c["d"].BLUR,function(){c["I"](l.getDomNode(),"colorpicker-hover")})),l._register(n.onDidChangeConfiguration(function(e){l._hoverOperation.setHoverTime(l._editor.getConfiguration().contribInfo.hover.delay)})),l}return J(t,e),t.prototype.dispose=function(){this._hoverOperation.cancel(),e.prototype.dispose.call(this)},t.prototype.onModelDecorationsChanged=function(){this._isChangingDecorations||this.isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._colorPicker||this._hoverOperation.start(0))},t.prototype.startShowingAt=function(e,t,n){if(!this._lastRange||!this._lastRange.equalsRange(e)){if(this._hoverOperation.cancel(),this.isVisible)if(this._showAtPosition&&this._showAtPosition.lineNumber===e.startLineNumber){for(var i=[],o=0,r=this._messages.length;o=e.endColumn&&i.push(s)}if(i.length>0){if(re(i,this._messages))return;this._renderMessages(e,i)}else this.hide()}else this.hide();this._lastRange=e,this._computer.setRange(e),this._shouldFocus=n,this._hoverOperation.start(t)}},t.prototype.hide=function(){this._lastRange=null,this._hoverOperation.cancel(),e.prototype.hide.call(this),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,[]),this._isChangingDecorations=!1,this.renderDisposable.clear(),this._colorPicker=null},t.prototype.isColorPickerVisible=function(){return!!this._colorPicker},t.prototype._withResult=function(e,t){this._messages=e,this._lastRange&&this._messages.length>0?this._renderMessages(this._lastRange,this._messages):t&&this.hide()},t.prototype._renderMessages=function(e,n){var i=this;this.renderDisposable.dispose(),this._colorPicker=null;var o=Number.MAX_VALUE,s=n[0].range?a["a"].lift(n[0].range):null,u=document.createDocumentFragment(),l=!0,g=!1,m=new r["b"],_=[];if(n.forEach(function(e){if(e.range)if(o=Math.min(o,e.range.startColumn),s=s?a["a"].plusRange(s,e.range):a["a"].lift(e.range),e instanceof te){g=!0;var t=e.color,n=t.red,f=t.green,b=t.blue,w=t.alpha,C=new h["c"](255*n,255*f,255*b,w),S=new h["a"](C);if(!i._editor.hasModel())return;var L=i._editor.getModel(),O=new a["a"](e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn),x={range:e.range,color:e.color},N=new y(S,[],0),D=new P(u,N,i._editor.getConfiguration().pixelRatio,i._themeService);Object(v["a"])(L,x,e.provider,d["a"].None).then(function(t){if(N.colorPresentations=t||[],i._editor.hasModel()){var n=i._editor.getModel().getValueInRange(e.range);N.guessColorPresentation(S,n);var o=function(){var e,t;N.presentation.textEdit?(e=[N.presentation.textEdit],t=new a["a"](N.presentation.textEdit.range.startLineNumber,N.presentation.textEdit.range.startColumn,N.presentation.textEdit.range.endLineNumber,N.presentation.textEdit.range.endColumn),t=t.setEndPosition(t.endLineNumber,t.startColumn+N.presentation.textEdit.text.length)):(e=[{identifier:null,range:O,text:N.presentation.label,forceMoveMarkers:!1}],t=O.setEndPosition(O.endLineNumber,O.startColumn+N.presentation.label.length)),i._editor.pushUndoStop(),i._editor.executeEdits("colorpicker",e),N.presentation.additionalTextEdits&&(e=N.presentation.additionalTextEdits.slice(),i._editor.executeEdits("colorpicker",e),i.hide()),i._editor.pushUndoStop(),O=t},s=function(t){return Object(v["a"])(L,{range:O,color:{red:t.rgba.r/255,green:t.rgba.g/255,blue:t.rgba.b/255,alpha:t.rgba.a}},e.provider,d["a"].None).then(function(e){N.colorPresentations=e||[]})},l=N.onColorFlushed(function(e){s(e).then(o)}),c=N.onDidChangeColor(s);i._colorPicker=D,i.showAt(O.getStartPosition(),O,i._shouldFocus),i.updateContents(u),i._colorPicker.layout(),i.renderDisposable.value=Object(r["e"])(l,c,D,m)}})}else e instanceof ne?(_.push(e),l=!1):e.contents.filter(function(e){return!Object(p["b"])(e)}).forEach(function(e){var t=ee("div.hover-row.markdown-hover"),n=c["m"](t,ee("div.hover-contents")),o=m.add(new K["a"](i._editor,i._modeService,i._openerService));m.add(o.onDidRenderCodeBlock(function(){n.className="hover-contents code-hover-contents",i.onContentsChange()}));var r=m.add(o.render(e));n.appendChild(r.element),u.appendChild(t),l=!1})}),_.length){_.forEach(function(e){return u.appendChild(i.renderMarkerHover(e))});var b=1===_.length?_[0]:_.sort(function(e,t){return q["c"].compare(e.marker.severity,t.marker.severity)})[0];u.appendChild(this.renderMarkerStatusbar(b))}g||l||(this.showAt(new f["a"](e.startLineNumber,o),s,this._shouldFocus),this.updateContents(u)),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,s?[{range:s,options:t._DECORATION_OPTIONS}]:[]),this._isChangingDecorations=!1},t.prototype.renderMarkerHover=function(e){var t=this,n=ee("div.hover-row"),i=c["m"](n,ee("div.marker.hover-contents")),o=e.marker,r=o.source,s=o.message,a=o.code,u=o.relatedInformation;this._editor.applyFontInfo(i);var l=c["m"](i,ee("span"));if(l.style.whiteSpace="pre-wrap",l.innerText=s,r||a){var d=c["m"](i,ee("span"));d.style.opacity="0.6",d.style.paddingLeft="6px",d.innerText=r&&a?r+"("+a+")":r||"("+a+")"}if(Object(R["n"])(u))for(var h=function(e,n,o,r){var s=c["m"](i,ee("div"));s.style.marginTop="8px";var a=c["m"](s,ee("a"));a.innerText=Object(G["b"])(n)+"("+o+", "+r+"): ",a.style.cursor="pointer",a.onclick=function(e){e.stopPropagation(),e.preventDefault(),t._openerService&&t._openerService.open(n.with({fragment:o+","+r})).catch(A["e"])};var u=c["m"](s,ee("span"));u.innerText=e,p._editor.applyFontInfo(u)},p=this,f=0,g=u;f0?this._renderMessages(this._lastLineNumber,this._messages):this.hide()},t.prototype._renderMessages=function(e,t){this._renderDisposeables.clear();for(var n=document.createDocumentFragment(),i=0,o=t;i=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},pe=function(e,t){return function(n,i){t(n,i,e)}},fe=function(){function e(e,t,n,i,o,s){var a=this;this._editor=e,this._openerService=t,this._modeService=n,this._markerDecorationsService=i,this._keybindingService=o,this._themeService=s,this._toUnhook=new r["b"],this._isMouseDown=!1,this._hoverClicked=!1,this._contentWidget=null,this._glyphWidget=null,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration(function(e){e.contribInfo&&(a._hideWidgets(),a._unhookEvents(),a._hookEvents())})}return Object.defineProperty(e.prototype,"contentWidget",{get:function(){return this._contentWidget||this._createHoverWidgets(),this._contentWidget},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"glyphWidget",{get:function(){return this._glyphWidget||this._createHoverWidgets(),this._glyphWidget},enumerable:!0,configurable:!0}),e.get=function(t){return t.getContribution(e.ID)},e.prototype._hookEvents=function(){var e=this,t=function(){return e._hideWidgets()},n=this._editor.getConfiguration().contribInfo.hover;this._isHoverEnabled=n.enabled,this._isHoverSticky=n.sticky,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown(function(t){return e._onEditorMouseDown(t)})),this._toUnhook.add(this._editor.onMouseUp(function(t){return e._onEditorMouseUp(t)})),this._toUnhook.add(this._editor.onMouseMove(function(t){return e._onEditorMouseMove(t)})),this._toUnhook.add(this._editor.onKeyDown(function(t){return e._onKeyDown(t)})),this._toUnhook.add(this._editor.onDidChangeModelDecorations(function(){return e._onModelDecorationsChanged()}))):this._toUnhook.add(this._editor.onMouseMove(t)),this._toUnhook.add(this._editor.onMouseLeave(t)),this._toUnhook.add(this._editor.onDidChangeModel(t)),this._toUnhook.add(this._editor.onDidScrollChange(function(t){return e._onEditorScrollChanged(t)}))},e.prototype._unhookEvents=function(){this._toUnhook.clear()},e.prototype._onModelDecorationsChanged=function(){this.contentWidget.onModelDecorationsChanged(),this.glyphWidget.onModelDecorationsChanged()},e.prototype._onEditorScrollChanged=function(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()},e.prototype._onEditorMouseDown=function(e){this._isMouseDown=!0;var t=e.target.type;9!==t||e.target.detail!==oe.ID?12===t&&e.target.detail===ue.ID||(12!==t&&e.target.detail!==ue.ID&&(this._hoverClicked=!1),this._hideWidgets()):this._hoverClicked=!0},e.prototype._onEditorMouseUp=function(e){this._isMouseDown=!1},e.prototype._onEditorMouseMove=function(e){var t=e.target.type;if(!(this._isMouseDown&&this._hoverClicked&&this.contentWidget.isColorPickerVisible())&&(!this._isHoverSticky||9!==t||e.target.detail!==oe.ID)&&(!this._isHoverSticky||12!==t||e.target.detail!==ue.ID)){if(7===t){var n=this._editor.getConfiguration().fontInfo.typicalHalfwidthCharacterWidth/2,i=e.target.detail;i&&!i.isAfterLines&&"number"===typeof i.horizontalDistanceToText&&i.horizontalDistanceToText0)},e.prototype.getChildren=function(e,t){var n=this.modelProvider.getModel();return Promise.resolve(n===t?n.entries:[])},e.prototype.getParent=function(e,t){return Promise.resolve(null)},e}(),c=function(){function e(e){this.modelProvider=e}return e.prototype.getAriaLabel=function(e,t){var n=this.modelProvider.getModel();return n.accessibilityProvider?n.accessibilityProvider.getAriaLabel(t):null},e.prototype.getPosInSet=function(e,t){var n=this.modelProvider.getModel(),i=0;if(n.filter)for(var o=0,r=n.entries;o=0;t--){var n=this._arr[t];if(e.toChord().equals(n.keybinding))return n.callback}return null},e}(),v=function(){function e(e){var t=this;void 0===e&&(e={clickBehavior:0,keyboardSupport:!0,openMode:0}),this.options=e,this.downKeyBindingDispatcher=new m,this.upKeyBindingDispatcher=new m,("boolean"!==typeof e.keyboardSupport||e.keyboardSupport)&&(this.downKeyBindingDispatcher.set(16,function(e,n){return t.onUp(e,n)}),this.downKeyBindingDispatcher.set(18,function(e,n){return t.onDown(e,n)}),this.downKeyBindingDispatcher.set(15,function(e,n){return t.onLeft(e,n)}),this.downKeyBindingDispatcher.set(17,function(e,n){return t.onRight(e,n)}),a["d"]&&(this.downKeyBindingDispatcher.set(2064,function(e,n){return t.onLeft(e,n)}),this.downKeyBindingDispatcher.set(300,function(e,n){return t.onDown(e,n)}),this.downKeyBindingDispatcher.set(302,function(e,n){return t.onUp(e,n)})),this.downKeyBindingDispatcher.set(11,function(e,n){return t.onPageUp(e,n)}),this.downKeyBindingDispatcher.set(12,function(e,n){return t.onPageDown(e,n)}),this.downKeyBindingDispatcher.set(14,function(e,n){return t.onHome(e,n)}),this.downKeyBindingDispatcher.set(13,function(e,n){return t.onEnd(e,n)}),this.downKeyBindingDispatcher.set(10,function(e,n){return t.onSpace(e,n)}),this.downKeyBindingDispatcher.set(9,function(e,n){return t.onEscape(e,n)}),this.upKeyBindingDispatcher.set(3,this.onEnter.bind(this)),this.upKeyBindingDispatcher.set(2051,this.onEnter.bind(this)))}return e.prototype.onMouseDown=function(e,t,n,i){if(void 0===i&&(i="mouse"),0===this.options.clickBehavior&&(n.leftButton||n.middleButton)){if(n.target){if(n.target.tagName&&"input"===n.target.tagName.toLowerCase())return!1;if(r["t"](n.target,"scrollbar","monaco-tree"))return!1;if(r["t"](n.target,"monaco-action-bar","row"))return!1}return this.onLeftClick(e,t,n,i)}return!1},e.prototype.onClick=function(e,t,n){var i=a["d"];return i&&n.ctrlKey?(n.preventDefault(),n.stopPropagation(),!1):(!n.target||!n.target.tagName||"input"!==n.target.tagName.toLowerCase())&&((0!==this.options.clickBehavior||!n.leftButton&&!n.middleButton)&&this.onLeftClick(e,t,n))},e.prototype.onLeftClick=function(e,t,n,i){void 0===i&&(i="mouse");var o=n,r={origin:i,originalEvent:n,didClickOnTwistie:this.isClickOnTwistie(o)};if(e.getInput()===t)e.clearFocus(r),e.clearSelection(r);else{var s=n&&o.browserEvent&&"mousedown"===o.browserEvent.type&&1===o.browserEvent.detail;s||n.preventDefault(),n.stopPropagation(),e.domFocus(),e.setSelection([t],r),e.setFocus(t,r),this.shouldToggleExpansion(t,o,i)&&(e.isExpanded(t)?e.collapse(t).then(void 0,f["e"]):e.expand(t).then(void 0,f["e"]))}return!0},e.prototype.shouldToggleExpansion=function(e,t,n){var i="mouse"===n&&2===t.detail;return this.openOnSingleClick||i||this.isClickOnTwistie(t)},Object.defineProperty(e.prototype,"openOnSingleClick",{get:function(){return 0===this.options.openMode},enumerable:!0,configurable:!0}),e.prototype.isClickOnTwistie=function(e){var t=e.target;if(!r["C"](t,"content"))return!1;var n=window.getComputedStyle(t,":before");if("none"===n.backgroundImage||"none"===n.display)return!1;var i=parseInt(n.width)+parseInt(n.paddingRight);return e.browserEvent.offsetX<=i},e.prototype.onContextMenu=function(e,t,n){return(!n.target||!n.target.tagName||"input"!==n.target.tagName.toLowerCase())&&(n&&(n.preventDefault(),n.stopPropagation()),!1)},e.prototype.onTap=function(e,t,n){var i=n.initialTarget;return(!i||!i.tagName||"input"!==i.tagName.toLowerCase())&&this.onLeftClick(e,t,n,"touch")},e.prototype.onKeyDown=function(e,t){return this.onKey(this.downKeyBindingDispatcher,e,t)},e.prototype.onKeyUp=function(e,t){return this.onKey(this.upKeyBindingDispatcher,e,t)},e.prototype.onKey=function(e,t,n){var i=e.dispatch(n.toKeybinding());return!(!i||!i(t,n))&&(n.preventDefault(),n.stopPropagation(),!0)},e.prototype.onUp=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusPrevious(1,n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onPageUp=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusPreviousPage(n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onDown=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusNext(1,n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onPageDown=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusNextPage(n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onHome=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusFirst(n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onEnd=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?e.clearHighlight(n):(e.focusLast(n),e.reveal(e.getFocus()).then(void 0,f["e"])),!0},e.prototype.onLeft=function(e,t){var n={origin:"keyboard",originalEvent:t};if(e.getHighlight())e.clearHighlight(n);else{var i=e.getFocus();e.collapse(i).then(function(t){if(i&&!t)return e.focusParent(n),e.reveal(e.getFocus())}).then(void 0,f["e"])}return!0},e.prototype.onRight=function(e,t){var n={origin:"keyboard",originalEvent:t};if(e.getHighlight())e.clearHighlight(n);else{var i=e.getFocus();e.expand(i).then(function(t){if(i&&!t)return e.focusFirstChild(n),e.reveal(e.getFocus())}).then(void 0,f["e"])}return!0},e.prototype.onEnter=function(e,t){var n={origin:"keyboard",originalEvent:t};if(e.getHighlight())return!1;var i=e.getFocus();return i&&e.setSelection([i],n),!0},e.prototype.onSpace=function(e,t){if(e.getHighlight())return!1;var n=e.getFocus();return n&&e.toggleExpansion(n),!0},e.prototype.onEscape=function(e,t){var n={origin:"keyboard",originalEvent:t};return e.getHighlight()?(e.clearHighlight(n),!0):e.getSelection().length?(e.clearSelection(n),!0):!!e.getFocus()&&(e.clearFocus(n),!0)},e}(),_=function(){function e(){}return e.prototype.getDragURI=function(e,t){return null},e.prototype.onDragStart=function(e,t,n){},e.prototype.onDragOver=function(e,t,n,i){return null},e.prototype.drop=function(e,t,n,i){},e}(),b=function(){function e(){}return e.prototype.isVisible=function(e,t){return!0},e}(),y=function(){function e(){}return e.prototype.getAriaLabel=function(e,t){return null},e}(),w=function(){function e(e,t){this.styleElement=e,this.selectorSuffix=t}return e.prototype.style=function(e){var t=this.selectorSuffix?"."+this.selectorSuffix:"",n=[];e.listFocusBackground&&n.push(".monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.focused:not(.highlighted) { background-color: "+e.listFocusBackground+"; }"),e.listFocusForeground&&n.push(".monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.focused:not(.highlighted) { color: "+e.listFocusForeground+"; }"),e.listActiveSelectionBackground&&n.push(".monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { background-color: "+e.listActiveSelectionBackground+"; }"),e.listActiveSelectionForeground&&n.push(".monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { color: "+e.listActiveSelectionForeground+"; }"),e.listFocusAndSelectionBackground&&n.push("\n\t\t\t\t.monaco-tree-drag-image,\n\t\t\t\t.monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.focused.selected:not(.highlighted) { background-color: "+e.listFocusAndSelectionBackground+"; }\n\t\t\t"),e.listFocusAndSelectionForeground&&n.push("\n\t\t\t\t.monaco-tree-drag-image,\n\t\t\t\t.monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.focused.selected:not(.highlighted) { color: "+e.listFocusAndSelectionForeground+"; }\n\t\t\t"),e.listInactiveSelectionBackground&&n.push(".monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { background-color: "+e.listInactiveSelectionBackground+"; }"),e.listInactiveSelectionForeground&&n.push(".monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) { color: "+e.listInactiveSelectionForeground+"; }"),e.listHoverBackground&&n.push(".monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row:hover:not(.highlighted):not(.selected):not(.focused) { background-color: "+e.listHoverBackground+"; }"),e.listHoverForeground&&n.push(".monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row:hover:not(.highlighted):not(.selected):not(.focused) { color: "+e.listHoverForeground+"; }"),e.listDropBackground&&n.push("\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-wrapper.drop-target,\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row.drop-target { background-color: "+e.listDropBackground+" !important; color: inherit !important; }\n\t\t\t"),e.listFocusOutline&&n.push("\n\t\t\t\t.monaco-tree-drag-image\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ border: 1px solid "+e.listFocusOutline+"; background: #000; }\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row \t\t\t\t\t\t\t\t\t\t\t\t\t\t{ border: 1px solid transparent; }\n\t\t\t\t.monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.focused:not(.highlighted) \t\t\t\t\t\t{ border: 1px dotted "+e.listFocusOutline+"; }\n\t\t\t\t.monaco-tree"+t+".focused .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) \t\t\t\t\t\t{ border: 1px solid "+e.listFocusOutline+"; }\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row.selected:not(.highlighted) \t\t\t\t\t\t\t{ border: 1px solid "+e.listFocusOutline+"; }\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row:hover:not(.highlighted):not(.selected):not(.focused) \t{ border: 1px dashed "+e.listFocusOutline+"; }\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-wrapper.drop-target,\n\t\t\t\t.monaco-tree"+t+" .monaco-tree-rows > .monaco-tree-row.drop-target\t\t\t\t\t\t\t\t\t\t\t\t{ border: 1px dashed "+e.listFocusOutline+"; }\n\t\t\t");var i=n.join("\n");i!==this.styleElement.innerHTML&&(this.styleElement.innerHTML=i)},e}(),C=n("1569"),S=n("a666"),L=n("308f"),O=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),x=function(){function e(e){this._onDispose=new L["a"],this.onDispose=this._onDispose.event,this._item=e}return Object.defineProperty(e.prototype,"item",{get:function(){return this._item},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._onDispose&&(this._onDispose.fire(),this._onDispose.dispose(),this._onDispose=void 0)},e}(),N=function(){function e(){this.locks=Object.create({})}return e.prototype.isLocked=function(e){return!!this.locks[e.id]},e.prototype.run=function(e,t){var n,i=this,o=this.getLock(e);return o?new Promise(function(n,r){L["b"].once(o.onDispose)(function(){return i.run(e,t).then(n,r)})}):new Promise(function(o,r){if(e.isDisposed())return r(new Error("Item is disposed."));var s=i.locks[e.id]=new x(e);return n=t().then(function(t){return delete i.locks[e.id],s.dispose(),t}).then(o,r),n})},e.prototype.getLock=function(e){var t;for(t in this.locks){var n=this.locks[t];if(e.intersects(n.item))return n}return null},e}(),D=function(){function e(){this._isDisposed=!1,this._onDidRevealItem=new L["d"],this.onDidRevealItem=this._onDidRevealItem.event,this._onExpandItem=new L["d"],this.onExpandItem=this._onExpandItem.event,this._onDidExpandItem=new L["d"],this.onDidExpandItem=this._onDidExpandItem.event,this._onCollapseItem=new L["d"],this.onCollapseItem=this._onCollapseItem.event,this._onDidCollapseItem=new L["d"],this.onDidCollapseItem=this._onDidCollapseItem.event,this._onDidAddTraitItem=new L["d"],this.onDidAddTraitItem=this._onDidAddTraitItem.event,this._onDidRemoveTraitItem=new L["d"],this.onDidRemoveTraitItem=this._onDidRemoveTraitItem.event,this._onDidRefreshItem=new L["d"],this.onDidRefreshItem=this._onDidRefreshItem.event,this._onRefreshItemChildren=new L["d"],this.onRefreshItemChildren=this._onRefreshItemChildren.event,this._onDidRefreshItemChildren=new L["d"],this.onDidRefreshItemChildren=this._onDidRefreshItemChildren.event,this._onDidDisposeItem=new L["d"],this.onDidDisposeItem=this._onDidDisposeItem.event,this.items={}}return e.prototype.register=function(e){C["a"](!this.isRegistered(e.id),"item already registered: "+e.id);var t=Object(S["e"])(this._onDidRevealItem.add(e.onDidReveal),this._onExpandItem.add(e.onExpand),this._onDidExpandItem.add(e.onDidExpand),this._onCollapseItem.add(e.onCollapse),this._onDidCollapseItem.add(e.onDidCollapse),this._onDidAddTraitItem.add(e.onDidAddTrait),this._onDidRemoveTraitItem.add(e.onDidRemoveTrait),this._onDidRefreshItem.add(e.onDidRefresh),this._onRefreshItemChildren.add(e.onRefreshChildren),this._onDidRefreshItemChildren.add(e.onDidRefreshChildren),this._onDidDisposeItem.add(e.onDidDispose));this.items[e.id]={item:e,disposable:t}},e.prototype.deregister=function(e){C["a"](this.isRegistered(e.id),"item not registered: "+e.id),this.items[e.id].disposable.dispose(),delete this.items[e.id]},e.prototype.isRegistered=function(e){return this.items.hasOwnProperty(e)},e.prototype.getItem=function(e){var t=this.items[e];return t?t.item:null},e.prototype.dispose=function(){this.items=null,this._onDidRevealItem.dispose(),this._onExpandItem.dispose(),this._onDidExpandItem.dispose(),this._onCollapseItem.dispose(),this._onDidCollapseItem.dispose(),this._onDidAddTraitItem.dispose(),this._onDidRemoveTraitItem.dispose(),this._onDidRefreshItem.dispose(),this._onRefreshItemChildren.dispose(),this._onDidRefreshItemChildren.dispose(),this._isDisposed=!0},e.prototype.isDisposed=function(){return this._isDisposed},e}(),k=function(){function e(e,t,n,i,o){this._onDidCreate=new L["a"],this._onDidReveal=new L["a"],this.onDidReveal=this._onDidReveal.event,this._onExpand=new L["a"],this.onExpand=this._onExpand.event,this._onDidExpand=new L["a"],this.onDidExpand=this._onDidExpand.event,this._onCollapse=new L["a"],this.onCollapse=this._onCollapse.event,this._onDidCollapse=new L["a"],this.onDidCollapse=this._onDidCollapse.event,this._onDidAddTrait=new L["a"],this.onDidAddTrait=this._onDidAddTrait.event,this._onDidRemoveTrait=new L["a"],this.onDidRemoveTrait=this._onDidRemoveTrait.event,this._onDidRefresh=new L["a"],this.onDidRefresh=this._onDidRefresh.event,this._onRefreshChildren=new L["a"],this.onRefreshChildren=this._onRefreshChildren.event,this._onDidRefreshChildren=new L["a"],this.onDidRefreshChildren=this._onDidRefreshChildren.event,this._onDidDispose=new L["a"],this.onDidDispose=this._onDidDispose.event,this.registry=t,this.context=n,this.lock=i,this.element=o,this.id=e,this.registry.register(this),this.doesHaveChildren=this.context.dataSource.hasChildren(this.context.tree,this.element),this.needsChildrenRefresh=!0,this.parent=null,this.previous=null,this.next=null,this.firstChild=null,this.lastChild=null,this.traits={},this.depth=0,this.expanded=!(!this.context.dataSource.shouldAutoexpand||!this.context.dataSource.shouldAutoexpand(this.context.tree,o)),this._onDidCreate.fire(this),this.visible=this._isVisible(),this.height=this._getHeight(),this._isDisposed=!1}return e.prototype.getElement=function(){return this.element},e.prototype.hasChildren=function(){return this.doesHaveChildren},e.prototype.getDepth=function(){return this.depth},e.prototype.isVisible=function(){return this.visible},e.prototype.setVisible=function(e){this.visible=e},e.prototype.isExpanded=function(){return this.expanded},e.prototype._setExpanded=function(e){this.expanded=e},e.prototype.reveal=function(e){void 0===e&&(e=null);var t={item:this,relativeTop:e};this._onDidReveal.fire(t)},e.prototype.expand=function(){var e=this;if(this.isExpanded()||!this.doesHaveChildren||this.lock.isLocked(this))return Promise.resolve(!1);var t=this.lock.run(this,function(){if(e.isExpanded()||!e.doesHaveChildren)return Promise.resolve(!1);var t,n={item:e};return e._onExpand.fire(n),t=e.needsChildrenRefresh?e.refreshChildren(!1,!0,!0):Promise.resolve(null),t.then(function(){return e._setExpanded(!0),e._onDidExpand.fire(n),!0})});return t.then(function(t){return!e.isDisposed()&&(e.context.options.autoExpandSingleChildren&&t&&null!==e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.isVisible()?e.firstChild.expand().then(function(){return!0}):t)})},e.prototype.collapse=function(e){var t=this;if(void 0===e&&(e=!1),e){var n=Promise.resolve(null);return this.forEachChild(function(e){n=n.then(function(){return e.collapse(!0)})}),n.then(function(){return t.collapse(!1)})}return!this.isExpanded()||this.lock.isLocked(this)?Promise.resolve(!1):this.lock.run(this,function(){var e={item:t};return t._onCollapse.fire(e),t._setExpanded(!1),t._onDidCollapse.fire(e),Promise.resolve(!0)})},e.prototype.addTrait=function(e){var t={item:this,trait:e};this.traits[e]=!0,this._onDidAddTrait.fire(t)},e.prototype.removeTrait=function(e){var t={item:this,trait:e};delete this.traits[e],this._onDidRemoveTrait.fire(t)},e.prototype.hasTrait=function(e){return this.traits[e]||!1},e.prototype.getAllTraits=function(){var e,t=[];for(e in this.traits)this.traits.hasOwnProperty(e)&&this.traits[e]&&t.push(e);return t},e.prototype.getHeight=function(){return this.height},e.prototype.refreshChildren=function(t,n,i){var o=this;if(void 0===n&&(n=!1),void 0===i&&(i=!1),!i&&!this.isExpanded()){var r=function(e){e.needsChildrenRefresh=!0,e.forEachChild(r)};return r(this),Promise.resolve(this)}this.needsChildrenRefresh=!1;var s=function(){var i,r={item:o,isNested:n};o._onRefreshChildren.fire(r),i=o.doesHaveChildren?o.context.dataSource.getChildren(o.context.tree,o.element):Promise.resolve([]);var s=i.then(function(n){if(o.isDisposed()||o.registry.isDisposed())return Promise.resolve(null);if(!Array.isArray(n))return Promise.reject(new Error("Please return an array of children."));n=n?n.slice(0):[],n=o.sort(n);var i={};while(null!==o.firstChild)i[o.firstChild.id]=o.firstChild,o.removeChild(o.firstChild);for(var r=0,s=n.length;r=0;o--)this.onInsertItem(l[o]);for(o=this.heightMap.length-1;o>=i;o--)this.onRefreshItem(this.heightMap[o]);return a},e.prototype.onInsertItem=function(e){},e.prototype.onRemoveItems=function(e){var t,n=null,i=null,o=0,r=0;while(n=e.next()){if(o=this.indexes[n],t=this.heightMap[o],!t)return void console.error("view item doesnt exist");r-=t.height,delete this.indexes[n],this.onRemoveItem(t),null===i&&(i=o)}if(0!==r&&null!==i)for(this.heightMap.splice(i,o-i+1),o=i;o=n.top+n.height))return t;if(i===t)break;i=t}return this.heightMap.length},e.prototype.indexAfter=function(e){return Math.min(this.indexAt(e)+1,this.heightMap.length)},e.prototype.itemAtIndex=function(e){return this.heightMap[e]},e.prototype.itemAfter=function(e){return this.heightMap[this.indexes[e.model.id]+1]||null},e.prototype.createViewItem=function(e){throw new Error("not implemented")},e.prototype.dispose=function(){this.heightMap=[],this.indexes={}},e}(),K=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),q=function(){function e(e,t,n){this._posx=e,this._posy=t,this._target=n}return e.prototype.preventDefault=function(){},e.prototype.stopPropagation=function(){},Object.defineProperty(e.prototype,"target",{get:function(){return this._target},enumerable:!0,configurable:!0}),e}(),G=function(e){function t(t){var n=e.call(this,t.posx,t.posy,t.target)||this;return n.originalEvent=t,n}return K(t,e),t.prototype.preventDefault=function(){this.originalEvent.preventDefault()},t.prototype.stopPropagation=function(){this.originalEvent.stopPropagation()},t}(q),Z=function(e){function t(t,n,i){var o=e.call(this,t,n,i.target)||this;return o.originalEvent=i,o}return K(t,e),t.prototype.preventDefault=function(){this.originalEvent.preventDefault()},t.prototype.stopPropagation=function(){this.originalEvent.stopPropagation()},t}(q),Y=n("650e"),X=n("5fe7"),$=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function Q(e){try{e.parentElement.removeChild(e)}catch(t){}}var J=function(){function e(e){this.context=e,this._cache={"":[]}}return e.prototype.alloc=function(e){var t=this.cache(e).pop();if(!t){var n=document.createElement("div");n.className="content";var i=document.createElement("div");i.appendChild(n);var o=null;try{o=this.context.renderer.renderTemplate(this.context.tree,e,n)}catch(r){console.error("Tree usage error: exception while rendering template"),console.error(r)}t={element:i,templateId:e,templateData:o}}return t},e.prototype.release=function(e,t){Q(t.element),this.cache(e).push(t)},e.prototype.cache=function(e){return this._cache[e]||(this._cache[e]=[])},e.prototype.garbageCollect=function(){var e=this;this._cache&&Object.keys(this._cache).forEach(function(t){e._cache[t].forEach(function(n){e.context.renderer.disposeTemplate(e.context.tree,t,n.templateData),n.element=null,n.templateData=null}),delete e._cache[t]})},e.prototype.dispose=function(){this.garbageCollect(),this._cache=null},e}(),ee=function(){function e(e,t){var n=this;this.width=0,this.needsRender=!1,this.uri=null,this.unbindDragStart=S["a"].None,this._draggable=!1,this.context=e,this.model=t,this.id=this.model.id,this.row=null,this.top=0,this.height=t.getHeight(),this._styles={},t.getAllTraits().forEach(function(e){return n._styles[e]=!0}),t.isExpanded()&&this.addClass("expanded")}return Object.defineProperty(e.prototype,"expanded",{set:function(e){e?this.addClass("expanded"):this.removeClass("expanded")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"loading",{set:function(e){e?this.addClass("loading"):this.removeClass("loading")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"draggable",{get:function(){return this._draggable},set:function(e){this._draggable=e,this.render(!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropTarget",{set:function(e){e?this.addClass("drop-target"):this.removeClass("drop-target")},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"element",{get:function(){return this.row&&this.row.element},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"templateId",{get:function(){return this._templateId||(this._templateId=this.context.renderer.getTemplateId&&this.context.renderer.getTemplateId(this.context.tree,this.model.getElement()))},enumerable:!0,configurable:!0}),e.prototype.addClass=function(e){this._styles[e]=!0,this.render(!0)},e.prototype.removeClass=function(e){delete this._styles[e],this.render(!0)},e.prototype.render=function(e){var t=this;if(void 0===e&&(e=!1),this.model&&this.element){var n=["monaco-tree-row"];n.push.apply(n,Object.keys(this._styles)),this.model.hasChildren()&&n.push("has-children"),this.element.className=n.join(" "),this.element.draggable=this.draggable,this.element.style.height=this.height+"px",this.element.setAttribute("role","treeitem");var i=this.context.accessibilityProvider,o=i.getAriaLabel(this.context.tree,this.model.getElement());if(o&&this.element.setAttribute("aria-label",o),i.getPosInSet&&i.getSetSize&&(this.element.setAttribute("aria-setsize",i.getSetSize()),this.element.setAttribute("aria-posinset",i.getPosInSet(this.context.tree,this.model.getElement()))),this.model.hasTrait("focused")){var s=A["H"](this.model.id);this.element.setAttribute("aria-selected","true"),this.element.setAttribute("id",s)}else this.element.setAttribute("aria-selected","false"),this.element.removeAttribute("id");this.model.hasChildren()?this.element.setAttribute("aria-expanded",String(!!this._styles["expanded"])):this.element.removeAttribute("aria-expanded"),this.element.setAttribute("aria-level",String(this.model.getDepth())),this.context.options.paddingOnRow?this.element.style.paddingLeft=this.context.options.twistiePixels+(this.model.getDepth()-1)*this.context.options.indentPixels+"px":(this.element.style.paddingLeft=(this.model.getDepth()-1)*this.context.options.indentPixels+"px",this.row.element.firstElementChild.style.paddingLeft=this.context.options.twistiePixels+"px");var a=this.context.dnd.getDragURI(this.context.tree,this.model.getElement());if(a!==this.uri&&(this.unbindDragStart&&this.unbindDragStart.dispose(),a?(this.uri=a,this.draggable=!0,this.unbindDragStart=r["h"](this.element,"dragstart",function(e){t.onDragStart(e)})):this.uri=null),!e&&this.element){var u=0;if(this.context.horizontalScrolling){var l=window.getComputedStyle(this.element);u=parseFloat(l.paddingLeft)}this.context.horizontalScrolling&&(this.element.style.width="fit-content");try{this.context.renderer.renderElement(this.context.tree,this.model.getElement(),this.templateId,this.row.templateData)}catch(c){console.error("Tree usage error: exception while rendering element"),console.error(c)}this.context.horizontalScrolling&&(this.width=r["w"](this.element)+u,this.element.style.width="")}}},e.prototype.insertInDOM=function(e,t){if(this.row||(this.row=this.context.cache.alloc(this.templateId),this.element[ie.BINDING]=this),!this.element.parentElement){if(null===t)e.appendChild(this.element);else try{e.insertBefore(this.element,t)}catch(n){console.warn("Failed to locate previous tree element"),e.appendChild(this.element)}this.render()}},e.prototype.removeFromDOM=function(){this.row&&(this.unbindDragStart.dispose(),this.uri=null,this.element[ie.BINDING]=null,this.context.cache.release(this.templateId,this.row),this.row=null)},e.prototype.dispose=function(){this.row=null},e}(),te=function(e){function t(t,n,i){var o=e.call(this,t,n)||this;return o.row={element:i,templateData:null,templateId:null},o}return $(t,e),t.prototype.render=function(){if(this.model&&this.element){var e=["monaco-tree-wrapper"];e.push.apply(e,Object.keys(this._styles)),this.model.hasChildren()&&e.push("has-children"),this.element.className=e.join(" ")}},t.prototype.insertInDOM=function(e,t){},t.prototype.removeFromDOM=function(){},t}(ee);function ne(e,t){return!e&&!t||!(!e||!t)&&(e.accept===t.accept&&(e.bubble===t.bubble&&e.effect===t.effect))}var ie=function(e){function t(n,i){var o=e.call(this)||this;o.model=null,o.lastPointerType="",o.lastClickTimeStamp=0,o.contentWidthUpdateDelayer=new X["a"](50),o.isRefreshing=!1,o.refreshingPreviousChildrenIds={},o.currentDragAndDropData=null,o.currentDropTarget=null,o.currentDropTargets=null,o.currentDropDisposable=S["a"].None,o.dragAndDropScrollInterval=null,o.dragAndDropScrollTimeout=null,o.dragAndDropMouseY=null,o.highlightedItemWasDraggable=!1,o.onHiddenScrollTop=null,o._onDOMFocus=new L["a"],o.onDOMFocus=o._onDOMFocus.event,o._onDOMBlur=new L["a"],o._onDidScroll=new L["a"],t.counter++,o.instance=t.counter;var s="undefined"===typeof n.options.horizontalScrollMode?2:n.options.horizontalScrollMode;o.horizontalScrolling=2!==s,o.context={dataSource:n.dataSource,renderer:n.renderer,controller:n.controller,dnd:n.dnd,filter:n.filter,sorter:n.sorter,tree:n.tree,accessibilityProvider:n.accessibilityProvider,options:n.options,cache:new J(n),horizontalScrolling:o.horizontalScrolling},o.modelListeners=[],o.viewListeners=[],o.items={},o.domNode=document.createElement("div"),o.domNode.className="monaco-tree no-focused-item monaco-tree-instance-"+o.instance,o.domNode.tabIndex=n.options.preventRootFocus?-1:0,o.styleElement=r["s"](o.domNode),o.treeStyler=n.styler||new w(o.styleElement,"monaco-tree-instance-"+o.instance),o.domNode.setAttribute("role","tree"),o.context.options.ariaLabel&&o.domNode.setAttribute("aria-label",o.context.options.ariaLabel),o.context.options.alwaysFocused&&r["f"](o.domNode,"focused"),o.context.options.paddingOnRow||r["f"](o.domNode,"no-row-padding"),o.wrapper=document.createElement("div"),o.wrapper.className="monaco-tree-wrapper",o.scrollableElement=new z["b"](o.wrapper,{alwaysConsumeMouseWheel:!0,horizontal:s,vertical:"undefined"!==typeof n.options.verticalScrollMode?n.options.verticalScrollMode:1,useShadows:n.options.useShadows}),o.scrollableElement.onScroll(function(e){o.render(e.scrollTop,e.height,e.scrollLeft,e.width,e.scrollWidth),o._onDidScroll.fire()}),T["j"]?(o.wrapper.style.msTouchAction="none",o.wrapper.style.msContentZooming="none"):R["b"].addTarget(o.wrapper),o.rowsContainer=document.createElement("div"),o.rowsContainer.className="monaco-tree-rows",n.options.showTwistie&&(o.rowsContainer.className+=" show-twisties");var a=r["S"](o.domNode);return o.viewListeners.push(a.onDidFocus(function(){return o.onFocus()})),o.viewListeners.push(a.onDidBlur(function(){return o.onBlur()})),o.viewListeners.push(a),o.viewListeners.push(r["h"](o.domNode,"keydown",function(e){return o.onKeyDown(e)})),o.viewListeners.push(r["h"](o.domNode,"keyup",function(e){return o.onKeyUp(e)})),o.viewListeners.push(r["h"](o.domNode,"mousedown",function(e){return o.onMouseDown(e)})),o.viewListeners.push(r["h"](o.domNode,"mouseup",function(e){return o.onMouseUp(e)})),o.viewListeners.push(r["h"](o.wrapper,"auxclick",function(e){e&&1===e.button&&o.onMouseMiddleClick(e)})),o.viewListeners.push(r["h"](o.wrapper,"click",function(e){return o.onClick(e)})),o.viewListeners.push(r["h"](o.domNode,"contextmenu",function(e){return o.onContextMenu(e)})),o.viewListeners.push(r["h"](o.wrapper,R["a"].Tap,function(e){return o.onTap(e)})),o.viewListeners.push(r["h"](o.wrapper,R["a"].Change,function(e){return o.onTouchChange(e)})),T["j"]&&(o.viewListeners.push(r["h"](o.wrapper,"MSPointerDown",function(e){return o.onMsPointerDown(e)})),o.viewListeners.push(r["h"](o.wrapper,"MSGestureTap",function(e){return o.onMsGestureTap(e)})),o.viewListeners.push(r["j"](o.wrapper,"MSGestureChange",function(e){return o.onThrottledMsGestureChange(e)},function(e,t){t.stopPropagation(),t.preventDefault();var n={translationY:t.translationY,translationX:t.translationX};return e&&(n.translationY+=e.translationY,n.translationX+=e.translationX),n}))),o.viewListeners.push(r["h"](window,"dragover",function(e){return o.onDragOver(e)})),o.viewListeners.push(r["h"](o.wrapper,"drop",function(e){return o.onDrop(e)})),o.viewListeners.push(r["h"](window,"dragend",function(e){return o.onDragEnd(e)})),o.viewListeners.push(r["h"](window,"dragleave",function(e){return o.onDragOver(e)})),o.wrapper.appendChild(o.rowsContainer),o.domNode.appendChild(o.scrollableElement.getDomNode()),i.appendChild(o.domNode),o.lastRenderTop=0,o.lastRenderHeight=0,o.didJustPressContextMenuKey=!1,o.currentDropTarget=null,o.currentDropTargets=[],o.shouldInvalidateDropReaction=!1,o.dragAndDropScrollInterval=null,o.dragAndDropScrollTimeout=null,o.onRowsChanged(),o.layout(),o.setupMSGesture(),o.applyStyles(n.options),o}return $(t,e),t.prototype.applyStyles=function(e){this.treeStyler.style(e)},t.prototype.createViewItem=function(e){return new ee(this.context,e)},t.prototype.getHTMLElement=function(){return this.domNode},t.prototype.focus=function(){this.domNode.focus()},t.prototype.isFocused=function(){return document.activeElement===this.domNode},t.prototype.blur=function(){this.domNode.blur()},t.prototype.setupMSGesture=function(){var e=this;window.MSGesture&&(this.msGesture=new MSGesture,setTimeout(function(){return e.msGesture.target=e.wrapper},100))},t.prototype.isTreeVisible=function(){return null===this.onHiddenScrollTop},t.prototype.layout=function(e,t){this.isTreeVisible()&&(this.viewHeight=e||r["v"](this.wrapper),this.scrollHeight=this.getContentHeight(),this.horizontalScrolling&&(this.viewWidth=t||r["w"](this.wrapper)))},t.prototype.render=function(e,t,n,i,o){var r,s,a=e,u=e+t,l=this.lastRenderTop+this.lastRenderHeight;for(r=this.indexAfter(u)-1,s=this.indexAt(Math.max(l,a));r>=s;r--)this.insertItemInDOM(this.itemAtIndex(r));for(r=Math.min(this.indexAt(this.lastRenderTop),this.indexAfter(u))-1,s=this.indexAt(a);r>=s;r--)this.insertItemInDOM(this.itemAtIndex(r));for(r=this.indexAt(this.lastRenderTop),s=Math.min(this.indexAt(a),this.indexAfter(l));r1e3,l=[],c=!1;if(!u){var d=new P["a"]({getLength:function(){return o.length},getElementAtIndex:function(e){return o[e]}},{getLength:function(){return r.length},getElementAtIndex:function(e){return r[e].id}},null);l=d.ComputeDiff(!1),c=l.some(function(e){if(e.modifiedLength>0)for(var n=e.modifiedStart,i=e.modifiedStart+e.modifiedLength;n0&&this.onRemoveItems(new H["a"](o,f.originalStart,f.originalStart+f.originalLength)),f.modifiedLength>0){var g=r[f.modifiedStart-1]||n;g=g.getDepth()>0?g:null,this.onInsertItems(new H["a"](r,f.modifiedStart,f.modifiedStart+f.modifiedLength),g?g.id:null)}}else(u||l.length)&&(this.onRemoveItems(new H["a"](o)),this.onInsertItems(new H["a"](r),n.getDepth()>0?n.id:null));(u||l.length)&&this.onRowsChanged()}},t.prototype.onItemRefresh=function(e){this.onItemsRefresh([e])},t.prototype.onItemsRefresh=function(e){var t=this;this.onRefreshItemSet(e.filter(function(e){return t.items.hasOwnProperty(e.id)})),this.onRowsChanged()},t.prototype.onItemExpanding=function(e){var t=this.items[e.item.id];t&&(t.expanded=!0)},t.prototype.onItemExpanded=function(e){var t=e.item,n=this.items[t.id];if(n){n.expanded=!0;var i=this.onInsertItems(t.getNavigator(),t.id)||0,o=this.scrollTop;n.top+n.height<=this.scrollTop&&(o+=i),this.onRowsChanged(o)}},t.prototype.onItemCollapsing=function(e){var t=e.item,n=this.items[t.id];n&&(n.expanded=!1,this.onRemoveItems(new H["e"](t.getNavigator(),function(e){return e&&e.id})),this.onRowsChanged())},t.prototype.onItemReveal=function(e){var t=e.item,n=e.relativeTop,i=this.items[t.id];if(i)if(null!==n){n=n<0?0:n,n=n>1?1:n;var o=i.height-this.viewHeight;this.scrollTop=o*n+i.top}else{var r=i.top+i.height,s=this.scrollTop+this.viewHeight;i.top=s&&(this.scrollTop=r-this.viewHeight)}},t.prototype.onItemAddTrait=function(e){var t=e.item,n=e.trait,i=this.items[t.id];i&&i.addClass(n),"highlighted"===n&&(r["f"](this.domNode,n),i&&(this.highlightedItemWasDraggable=!!i.draggable,i.draggable&&(i.draggable=!1)))},t.prototype.onItemRemoveTrait=function(e){var t=e.item,n=e.trait,i=this.items[t.id];i&&i.removeClass(n),"highlighted"===n&&(r["I"](this.domNode,n),this.highlightedItemWasDraggable&&(i.draggable=!0),this.highlightedItemWasDraggable=!1)},t.prototype.onModelFocusChange=function(){var e=this.model&&this.model.getFocus();r["R"](this.domNode,"no-focused-item",!e),e?this.domNode.setAttribute("aria-activedescendant",A["H"](this.context.dataSource.getId(this.context.tree,e))):this.domNode.removeAttribute("aria-activedescendant")},t.prototype.onInsertItem=function(e){var t=this;e.onDragStart=function(n){t.onDragStart(e,n)},e.needsRender=!0,this.refreshViewItem(e),this.items[e.id]=e},t.prototype.onRefreshItem=function(e,t){void 0===t&&(t=!1),e.needsRender=e.needsRender||t,this.refreshViewItem(e)},t.prototype.onRemoveItem=function(e){this.removeItemFromDOM(e),e.dispose(),delete this.items[e.id]},t.prototype.refreshViewItem=function(e){e.render(),this.shouldBeRendered(e)?this.insertItemInDOM(e):this.removeItemFromDOM(e)},t.prototype.onClick=function(e){if(!this.lastPointerType||"mouse"===this.lastPointerType){var t=new F["b"](e),n=this.getItemAround(t.target);n&&(T["j"]&&Date.now()-this.lastClickTimeStamp<300&&(t.detail=2),this.lastClickTimeStamp=Date.now(),this.context.controller.onClick(this.context.tree,n.model.getElement(),t))}},t.prototype.onMouseMiddleClick=function(e){if(this.context.controller.onMouseMiddleClick){var t=new F["b"](e),n=this.getItemAround(t.target);n&&this.context.controller.onMouseMiddleClick(this.context.tree,n.model.getElement(),t)}},t.prototype.onMouseDown=function(e){if(this.didJustPressContextMenuKey=!1,this.context.controller.onMouseDown&&(!this.lastPointerType||"mouse"===this.lastPointerType)){var t=new F["b"](e);if(!(t.ctrlKey&&a["e"]&&a["d"])){var n=this.getItemAround(t.target);n&&this.context.controller.onMouseDown(this.context.tree,n.model.getElement(),t)}}},t.prototype.onMouseUp=function(e){if(this.context.controller.onMouseUp&&(!this.lastPointerType||"mouse"===this.lastPointerType)){var t=new F["b"](e);if(!(t.ctrlKey&&a["e"]&&a["d"])){var n=this.getItemAround(t.target);n&&this.context.controller.onMouseUp(this.context.tree,n.model.getElement(),t)}}},t.prototype.onTap=function(e){var t=this.getItemAround(e.initialTarget);t&&this.context.controller.onTap(this.context.tree,t.model.getElement(),e)},t.prototype.onTouchChange=function(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY},t.prototype.onContextMenu=function(e){var t,n;if(e instanceof KeyboardEvent||this.didJustPressContextMenuKey){this.didJustPressContextMenuKey=!1;var i=new j["a"](e);n=this.model.getFocus();var o=void 0;if(n){var s=this.context.dataSource.getId(this.context.tree,n),a=this.items[s];o=r["x"](a.element)}else n=this.model.getInput(),o=r["x"](this.inputItem.element);t=new Z(o.left+o.width,o.top,i)}else{var u=new F["b"](e),l=this.getItemAround(u.target);if(!l)return;n=l.model.getElement(),t=new G(u)}this.context.controller.onContextMenu(this.context.tree,n,t)},t.prototype.onKeyDown=function(e){var t=new j["a"](e);this.didJustPressContextMenuKey=58===t.keyCode||t.shiftKey&&68===t.keyCode,t.target&&t.target.tagName&&"input"===t.target.tagName.toLowerCase()||(this.didJustPressContextMenuKey&&(t.preventDefault(),t.stopPropagation()),this.context.controller.onKeyDown(this.context.tree,t))},t.prototype.onKeyUp=function(e){this.didJustPressContextMenuKey&&this.onContextMenu(e),this.didJustPressContextMenuKey=!1,this.context.controller.onKeyUp(this.context.tree,new j["a"](e))},t.prototype.onDragStart=function(e,t){if(!this.model.getHighlight()){var n,i=e.model.getElement(),o=this.model.getSelection();if(n=o.indexOf(i)>-1?o:[i],t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setData(Y["a"].RESOURCES,JSON.stringify([e.uri])),t.dataTransfer.setDragImage){var r=void 0;r=this.context.dnd.getDragLabel?this.context.dnd.getDragLabel(this.context.tree,n):String(n.length);var s=document.createElement("div");s.className="monaco-tree-drag-image",s.textContent=r,document.body.appendChild(s),t.dataTransfer.setDragImage(s,-10,-10),setTimeout(function(){return document.body.removeChild(s)},0)}this.currentDragAndDropData=new W(n),Y["c"].CurrentDragAndDropData=new V(n),this.context.dnd.onDragStart(this.context.tree,this.currentDragAndDropData,new F["a"](t))}},t.prototype.setupDragAndDropScrollInterval=function(){var e=this,t=r["z"](this.wrapper).top;this.dragAndDropScrollInterval||(this.dragAndDropScrollInterval=window.setInterval(function(){if(null!==e.dragAndDropMouseY){var n=e.dragAndDropMouseY-t,i=0,o=e.viewHeight-35;n<35?i=Math.max(-14,.2*(n-35)):n>o&&(i=Math.min(14,.2*(n-o))),e.scrollTop+=i}},10),this.cancelDragAndDropScrollTimeout(),this.dragAndDropScrollTimeout=window.setTimeout(function(){e.cancelDragAndDropScrollInterval(),e.dragAndDropScrollTimeout=null},1e3))},t.prototype.cancelDragAndDropScrollInterval=function(){this.dragAndDropScrollInterval&&(window.clearInterval(this.dragAndDropScrollInterval),this.dragAndDropScrollInterval=null),this.cancelDragAndDropScrollTimeout()},t.prototype.cancelDragAndDropScrollTimeout=function(){this.dragAndDropScrollTimeout&&(window.clearTimeout(this.dragAndDropScrollTimeout),this.dragAndDropScrollTimeout=null)},t.prototype.onDragOver=function(e){var t=this;e.preventDefault();var n,i=new F["a"](e),o=this.getItemAround(i.target);if(!o||0===i.posx&&0===i.posy&&i.browserEvent.type===r["d"].DRAG_LEAVE)return this.currentDropTarget&&(this.currentDropTargets.forEach(function(e){return e.dropTarget=!1}),this.currentDropTargets=[],this.currentDropDisposable.dispose()),this.cancelDragAndDropScrollInterval(),this.currentDropTarget=null,this.currentDropElement=null,this.dragAndDropMouseY=null,!1;if(this.setupDragAndDropScrollInterval(),this.dragAndDropMouseY=i.posy,!this.currentDragAndDropData)if(Y["c"].CurrentDragAndDropData)this.currentDragAndDropData=Y["c"].CurrentDragAndDropData;else{if(!i.dataTransfer.types)return!1;this.currentDragAndDropData=new B}this.currentDragAndDropData.update(i.browserEvent.dataTransfer);var s,a=o.model;do{if(n=a?a.getElement():this.model.getInput(),s=this.context.dnd.onDragOver(this.context.tree,this.currentDragAndDropData,n,i),!s||1!==s.bubble)break;a=a&&a.parent}while(a);if(!a)return this.currentDropElement=null,!1;var u=s&&s.accept;u?(this.currentDropElement=a.getElement(),i.preventDefault(),i.dataTransfer.dropEffect=0===s.effect?"copy":"move"):this.currentDropElement=null;var l=a.id===this.inputItem.id?this.inputItem:this.items[a.id];if((this.shouldInvalidateDropReaction||this.currentDropTarget!==l||!ne(this.currentDropElementReaction,s))&&(this.shouldInvalidateDropReaction=!1,this.currentDropTarget&&(this.currentDropTargets.forEach(function(e){return e.dropTarget=!1}),this.currentDropTargets=[],this.currentDropDisposable.dispose()),this.currentDropTarget=l,this.currentDropElementReaction=s,u)){if(this.currentDropTarget&&(this.currentDropTarget.dropTarget=!0,this.currentDropTargets.push(this.currentDropTarget)),0===s.bubble){var c=a.getNavigator(),d=void 0;while(d=c.next())o=this.items[d.id],o&&(o.dropTarget=!0,this.currentDropTargets.push(o))}if(s.autoExpand){var h=Object(X["l"])(500);this.currentDropDisposable=S["h"](function(){return h.cancel()}),h.then(function(){return t.context.tree.expand(t.currentDropElement)}).then(function(){return t.shouldInvalidateDropReaction=!0})}}return!0},t.prototype.onDrop=function(e){if(this.currentDropElement){var t=new F["a"](e);t.preventDefault(),this.currentDragAndDropData.update(t.browserEvent.dataTransfer),this.context.dnd.drop(this.context.tree,this.currentDragAndDropData,this.currentDropElement,t),this.onDragEnd(e)}this.cancelDragAndDropScrollInterval()},t.prototype.onDragEnd=function(e){this.currentDropTarget&&(this.currentDropTargets.forEach(function(e){return e.dropTarget=!1}),this.currentDropTargets=[]),this.currentDropDisposable.dispose(),this.cancelDragAndDropScrollInterval(),this.currentDragAndDropData=null,Y["c"].CurrentDragAndDropData=void 0,this.currentDropElement=null,this.currentDropTarget=null,this.dragAndDropMouseY=null},t.prototype.onFocus=function(){this.context.options.alwaysFocused||r["f"](this.domNode,"focused"),this._onDOMFocus.fire()},t.prototype.onBlur=function(){this.context.options.alwaysFocused||r["I"](this.domNode,"focused"),this.domNode.removeAttribute("aria-activedescendant"),this._onDOMBlur.fire()},t.prototype.onMsPointerDown=function(e){if(this.msGesture){var t=e.pointerType;t!==(e.MSPOINTER_TYPE_MOUSE||"mouse")?t===(e.MSPOINTER_TYPE_TOUCH||"touch")&&(this.lastPointerType="touch",e.stopPropagation(),e.preventDefault(),this.msGesture.addPointer(e.pointerId)):this.lastPointerType="mouse"}},t.prototype.onThrottledMsGestureChange=function(e){this.scrollTop-=e.translationY},t.prototype.onMsGestureTap=function(e){e.initialTarget=document.elementFromPoint(e.clientX,e.clientY),this.onTap(e)},t.prototype.insertItemInDOM=function(e){var t=null,n=this.itemAfter(e);n&&n.element&&(t=n.element),e.insertInDOM(this.rowsContainer,t)},t.prototype.removeItemFromDOM=function(e){e&&e.removeFromDOM()},t.prototype.shouldBeRendered=function(e){return e.topthis.lastRenderTop},t.prototype.getItemAround=function(e){var n=this.inputItem,i=e;do{if(i[t.BINDING]&&(n=i[t.BINDING]),i===this.wrapper||i===this.domNode)return n;if(i===this.scrollableElement.getDomNode()||i===document.body)return}while(i=i.parentElement)},t.prototype.releaseModel=function(){this.model&&(this.modelListeners=S["f"](this.modelListeners),this.model=null)},t.prototype.dispose=function(){var t=this;this.scrollableElement.dispose(),this.releaseModel(),this.viewListeners=S["f"](this.viewListeners),this._onDOMFocus.dispose(),this._onDOMBlur.dispose(),this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.items&&Object.keys(this.items).forEach(function(e){return t.items[e].removeFromDOM()}),this.context.cache&&this.context.cache.dispose(),e.prototype.dispose.call(this)},t.BINDING="monaco-tree-row",t.LOADING_DECORATION_DELAY=800,t.counter=0,t}(U),oe=n("ceb8"),re=n("aa3d"),se=function(){function e(e,t,n){if(void 0===n&&(n={}),this.tree=e,this.configuration=t,this.options=n,!t.dataSource)throw new Error("You must provide a Data Source to the tree.");this.dataSource=t.dataSource,this.renderer=t.renderer,this.controller=t.controller||new v({clickBehavior:1,keyboardSupport:"boolean"!==typeof n.keyboardSupport||n.keyboardSupport}),this.dnd=t.dnd||new _,this.filter=t.filter||new b,this.sorter=t.sorter,this.accessibilityProvider=t.accessibilityProvider||new y,this.styler=t.styler}return e}(),ae={listFocusBackground:oe["a"].fromHex("#073655"),listActiveSelectionBackground:oe["a"].fromHex("#0E639C"),listActiveSelectionForeground:oe["a"].fromHex("#FFFFFF"),listFocusAndSelectionBackground:oe["a"].fromHex("#094771"),listFocusAndSelectionForeground:oe["a"].fromHex("#FFFFFF"),listInactiveSelectionBackground:oe["a"].fromHex("#3F3F46"),listHoverBackground:oe["a"].fromHex("#2A2D2E"),listDropBackground:oe["a"].fromHex("#383B3D")},ue=function(){function e(e,t,n){void 0===n&&(n={}),this._onDidChangeFocus=new L["f"],this.onDidChangeFocus=this._onDidChangeFocus.event,this._onDidChangeSelection=new L["f"],this.onDidChangeSelection=this._onDidChangeSelection.event,this._onHighlightChange=new L["f"],this._onDidExpandItem=new L["f"],this._onDidCollapseItem=new L["f"],this._onDispose=new L["a"],this.onDidDispose=this._onDispose.event,this.container=e,Object(re["g"])(n,ae,!1),n.twistiePixels="number"===typeof n.twistiePixels?n.twistiePixels:32,n.showTwistie=!1!==n.showTwistie,n.indentPixels="number"===typeof n.indentPixels?n.indentPixels:12,n.alwaysFocused=!0===n.alwaysFocused,n.useShadows=!1!==n.useShadows,n.paddingOnRow=!1!==n.paddingOnRow,n.showLoading=!1!==n.showLoading,this.context=new se(this,t,n),this.model=new M(this.context),this.view=new ie(this.context,this.container),this.view.setModel(this.model),this._onDidChangeFocus.input=this.model.onDidFocus,this._onDidChangeSelection.input=this.model.onDidSelect,this._onHighlightChange.input=this.model.onDidHighlight,this._onDidExpandItem.input=this.model.onDidExpandItem,this._onDidCollapseItem.input=this.model.onDidCollapseItem}return e.prototype.style=function(e){this.view.applyStyles(e)},Object.defineProperty(e.prototype,"onDidFocus",{get:function(){return this.view&&this.view.onDOMFocus},enumerable:!0,configurable:!0}),e.prototype.getHTMLElement=function(){return this.view.getHTMLElement()},e.prototype.layout=function(e,t){this.view.layout(e,t)},e.prototype.domFocus=function(){this.view.focus()},e.prototype.isDOMFocused=function(){return this.view.isFocused()},e.prototype.domBlur=function(){this.view.blur()},e.prototype.setInput=function(e){return this.model.setInput(e)},e.prototype.getInput=function(){return this.model.getInput()},e.prototype.expand=function(e){return this.model.expand(e)},e.prototype.collapse=function(e,t){return void 0===t&&(t=!1),this.model.collapse(e,t)},e.prototype.toggleExpansion=function(e,t){return void 0===t&&(t=!1),this.model.toggleExpansion(e,t)},e.prototype.isExpanded=function(e){return this.model.isExpanded(e)},e.prototype.reveal=function(e,t){return void 0===t&&(t=null),this.model.reveal(e,t)},e.prototype.getHighlight=function(){return this.model.getHighlight()},e.prototype.clearHighlight=function(e){this.model.setHighlight(null,e)},e.prototype.setSelection=function(e,t){this.model.setSelection(e,t)},e.prototype.getSelection=function(){return this.model.getSelection()},e.prototype.clearSelection=function(e){this.model.setSelection([],e)},e.prototype.setFocus=function(e,t){this.model.setFocus(e,t)},e.prototype.getFocus=function(){return this.model.getFocus()},e.prototype.focusNext=function(e,t){this.model.focusNext(e,t)},e.prototype.focusPrevious=function(e,t){this.model.focusPrevious(e,t)},e.prototype.focusParent=function(e){this.model.focusParent(e)},e.prototype.focusFirstChild=function(e){this.model.focusFirstChild(e)},e.prototype.focusFirst=function(e,t){this.model.focusFirst(e,t)},e.prototype.focusNth=function(e,t){this.model.focusNth(e,t)},e.prototype.focusLast=function(e,t){this.model.focusLast(e,t)},e.prototype.focusNextPage=function(e){this.view.focusNextPage(e)},e.prototype.focusPreviousPage=function(e){this.view.focusPreviousPage(e)},e.prototype.clearFocus=function(e){this.model.setFocus(null,e)},e.prototype.dispose=function(){this._onDispose.fire(),null!==this.model&&(this.model.dispose(),this.model=null),null!==this.view&&(this.view.dispose(),this.view=null),this._onDidChangeFocus.dispose(),this._onDidChangeSelection.dispose(),this._onHighlightChange.dispose(),this._onDidExpandItem.dispose(),this._onDidCollapseItem.dispose(),this._onDispose.dispose()},e}(),le=(n("1f26"),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}()),ce="done",de="active",he="infinite",pe="discrete",fe="monaco-progress-container",ge="progress-bit",me={progressBarBackground:oe["a"].fromHex("#0E70C0")},ve=function(e){function t(t,n){var i=e.call(this)||this;return i.options=n||Object.create(null),Object(re["g"])(i.options,me,!1),i.workedVal=0,i.progressBarBackground=i.options.progressBarBackground,i._register(i.showDelayedScheduler=new X["d"](function(){return Object(r["Q"])(i.element)},0)),i.create(t),i}return le(t,e),t.prototype.create=function(e){this.element=document.createElement("div"),Object(r["f"])(this.element,fe),e.appendChild(this.element),this.bit=document.createElement("div"),Object(r["f"])(this.bit,ge),this.element.appendChild(this.bit),this.applyStyles()},t.prototype.off=function(){this.bit.style.width="inherit",this.bit.style.opacity="1",Object(r["J"])(this.element,de,he,pe),this.workedVal=0,this.totalWork=void 0},t.prototype.stop=function(){return this.doDone(!1)},t.prototype.doDone=function(e){var t=this;return Object(r["f"])(this.element,ce),Object(r["C"])(this.element,he)?(this.bit.style.opacity="0",e?setTimeout(function(){return t.off()},200):this.off()):(this.bit.style.width="inherit",e?setTimeout(function(){return t.off()},200):this.off()),this},t.prototype.hide=function(){Object(r["D"])(this.element),this.showDelayedScheduler.cancel()},t.prototype.style=function(e){this.progressBarBackground=e.progressBarBackground,this.applyStyles()},t.prototype.applyStyles=function(){if(this.bit){var e=this.progressBarBackground?this.progressBarBackground.toString():null;this.bit.style.backgroundColor=e}},t}(S["a"]),_e=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),be=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return _e(t,e),t.prototype.onContextMenu=function(t,n,i){return a["d"]?this.onLeftClick(t,n,i):e.prototype.onContextMenu.call(this,t,n,i)},t}(v),ye={background:oe["a"].fromHex("#1E1E1E"),foreground:oe["a"].fromHex("#CCCCCC"),pickerGroupForeground:oe["a"].fromHex("#0097FB"),pickerGroupBorder:oe["a"].fromHex("#3F3F46"),widgetShadow:oe["a"].fromHex("#000000"),progressBarBackground:oe["a"].fromHex("#0E70C0")},we=s["a"]("quickOpenAriaLabel","Quick picker. Type to narrow down results."),Ce=function(e){function t(t,n,i){var o=e.call(this)||this;return o.isDisposed=!1,o.container=t,o.callbacks=n,o.options=i,o.styles=i||Object.create(null),Object(re["g"])(o.styles,ye,!1),o.model=null,o}return _e(t,e),t.prototype.getModel=function(){return this.model},t.prototype.create=function(){var e=this;this.element=document.createElement("div"),r["f"](this.element,"monaco-quick-open-widget"),this.container.appendChild(this.element),this._register(r["h"](this.element,r["d"].CONTEXT_MENU,function(e){return r["c"].stop(e,!0)})),this._register(r["h"](this.element,r["d"].FOCUS,function(t){return e.gainingFocus()},!0)),this._register(r["h"](this.element,r["d"].BLUR,function(t){return e.loosingFocus(t)},!0)),this._register(r["h"](this.element,r["d"].KEY_DOWN,function(t){var n=new j["a"](t);if(9===n.keyCode)r["c"].stop(t,!0),e.hide(2);else if(2===n.keyCode&&!n.altKey&&!n.ctrlKey&&!n.metaKey){var i=t.currentTarget.querySelectorAll("input, .monaco-tree, .monaco-tree-row.focused .action-label.icon");n.shiftKey&&n.target===i[0]?(r["c"].stop(t,!0),i[i.length-1].focus()):n.shiftKey||n.target!==i[i.length-1]||(r["c"].stop(t,!0),i[0].focus())}})),this.progressBar=this._register(new ve(this.element,{progressBarBackground:this.styles.progressBarBackground})),this.progressBar.hide(),this.inputContainer=document.createElement("div"),r["f"](this.inputContainer,"quick-open-input"),this.element.appendChild(this.inputContainer),this.inputBox=this._register(new p["b"](this.inputContainer,void 0,{placeholder:this.options.inputPlaceHolder||"",ariaLabel:we,inputBackground:this.styles.inputBackground,inputForeground:this.styles.inputForeground,inputBorder:this.styles.inputBorder,inputValidationInfoBackground:this.styles.inputValidationInfoBackground,inputValidationInfoForeground:this.styles.inputValidationInfoForeground,inputValidationInfoBorder:this.styles.inputValidationInfoBorder,inputValidationWarningBackground:this.styles.inputValidationWarningBackground,inputValidationWarningForeground:this.styles.inputValidationWarningForeground,inputValidationWarningBorder:this.styles.inputValidationWarningBorder,inputValidationErrorBackground:this.styles.inputValidationErrorBackground,inputValidationErrorForeground:this.styles.inputValidationErrorForeground,inputValidationErrorBorder:this.styles.inputValidationErrorBorder})),this.inputElement=this.inputBox.inputElement,this.inputElement.setAttribute("role","combobox"),this.inputElement.setAttribute("aria-haspopup","false"),this.inputElement.setAttribute("aria-autocomplete","list"),this._register(r["h"](this.inputBox.inputElement,r["d"].INPUT,function(t){return e.onType()})),this._register(r["h"](this.inputBox.inputElement,r["d"].KEY_DOWN,function(t){var n=new j["a"](t),i=e.shouldOpenInBackground(n);if(2!==n.keyCode)if(18===n.keyCode||16===n.keyCode||12===n.keyCode||11===n.keyCode)r["c"].stop(t,!0),e.navigateInTree(n.keyCode,n.shiftKey),e.inputBox.inputElement.selectionStart===e.inputBox.inputElement.selectionEnd&&(e.inputBox.inputElement.selectionStart=e.inputBox.value.length);else if(3===n.keyCode||i){r["c"].stop(t,!0);var o=e.tree.getFocus();o&&e.elementSelected(o,t,i?2:1)}})),this.resultCount=document.createElement("div"),r["f"](this.resultCount,"quick-open-result-count"),this.resultCount.setAttribute("aria-live","polite"),this.resultCount.setAttribute("aria-atomic","true"),this.element.appendChild(this.resultCount),this.treeContainer=document.createElement("div"),r["f"](this.treeContainer,"quick-open-tree"),this.element.appendChild(this.treeContainer);var t=this.options.treeCreator||function(e,t,n){return new ue(e,t,n)};return this.tree=this._register(t(this.treeContainer,{dataSource:new l(this),controller:new be({clickBehavior:1,keyboardSupport:this.options.keyboardSupport}),renderer:this.renderer=new h(this,this.styles),filter:new d(this),accessibilityProvider:new c(this)},{twistiePixels:11,indentPixels:0,alwaysFocused:!0,verticalScrollMode:3,horizontalScrollMode:2,ariaLabel:s["a"]("treeAriaLabel","Quick Picker"),keyboardSupport:this.options.keyboardSupport,preventRootFocus:!1})),this.treeElement=this.tree.getHTMLElement(),this._register(this.tree.onDidChangeFocus(function(t){e.elementFocused(t.focus,t)})),this._register(this.tree.onDidChangeSelection(function(t){if(t.selection&&t.selection.length>0){var n=t.payload&&t.payload.originalEvent instanceof F["b"]?t.payload.originalEvent:void 0,i=!!n&&e.shouldOpenInBackground(n);e.elementSelected(t.selection[0],t,i?2:1)}})),this._register(r["h"](this.treeContainer,r["d"].KEY_DOWN,function(t){var n=new j["a"](t);e.quickNavigateConfiguration&&(18!==n.keyCode&&16!==n.keyCode&&12!==n.keyCode&&11!==n.keyCode||(r["c"].stop(t,!0),e.navigateInTree(n.keyCode)))})),this._register(r["h"](this.treeContainer,r["d"].KEY_UP,function(t){var n=new j["a"](t),i=n.keyCode;if(e.quickNavigateConfiguration){var o=e.quickNavigateConfiguration.keybindings,r=3===i||o.some(function(e){var t=e.getParts(),o=t[0],r=t[1];return!r&&(o.shiftKey&&4===i?!(n.ctrlKey||n.altKey||n.metaKey):!(!o.altKey||6!==i)||(!(!o.ctrlKey||5!==i)||!(!o.metaKey||57!==i)))});if(r){var s=e.tree.getFocus();s&&e.elementSelected(s,t)}}})),this.layoutDimensions&&this.layout(this.layoutDimensions),this.applyStyles(),this._register(r["h"](this.treeContainer,r["d"].KEY_DOWN,function(t){var n=new j["a"](t);e.quickNavigateConfiguration||18!==n.keyCode&&16!==n.keyCode&&12!==n.keyCode&&11!==n.keyCode||(r["c"].stop(t,!0),e.navigateInTree(n.keyCode,n.shiftKey),e.treeElement.focus())})),this.element},t.prototype.style=function(e){this.styles=e,this.applyStyles()},t.prototype.applyStyles=function(){if(this.element){var e=this.styles.foreground?this.styles.foreground.toString():null,t=this.styles.background?this.styles.background.toString():null,n=this.styles.borderColor?this.styles.borderColor.toString():null,i=this.styles.widgetShadow?this.styles.widgetShadow.toString():null;this.element.style.color=e,this.element.style.backgroundColor=t,this.element.style.borderColor=n,this.element.style.borderWidth=n?"1px":null,this.element.style.borderStyle=n?"solid":null,this.element.style.boxShadow=i?"0 5px 8px "+i:null}this.progressBar&&this.progressBar.style({progressBarBackground:this.styles.progressBarBackground}),this.inputBox&&this.inputBox.style({inputBackground:this.styles.inputBackground,inputForeground:this.styles.inputForeground,inputBorder:this.styles.inputBorder,inputValidationInfoBackground:this.styles.inputValidationInfoBackground,inputValidationInfoForeground:this.styles.inputValidationInfoForeground,inputValidationInfoBorder:this.styles.inputValidationInfoBorder,inputValidationWarningBackground:this.styles.inputValidationWarningBackground,inputValidationWarningForeground:this.styles.inputValidationWarningForeground,inputValidationWarningBorder:this.styles.inputValidationWarningBorder,inputValidationErrorBackground:this.styles.inputValidationErrorBackground,inputValidationErrorForeground:this.styles.inputValidationErrorForeground,inputValidationErrorBorder:this.styles.inputValidationErrorBorder}),this.tree&&!this.options.treeCreator&&this.tree.style(this.styles),this.renderer&&this.renderer.updateStyles(this.styles)},t.prototype.shouldOpenInBackground=function(e){if(e instanceof j["a"]){if(17!==e.keyCode)return!1;if(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return!1;var t=this.inputBox.inputElement;return t.selectionEnd===this.inputBox.value.length&&t.selectionStart===t.selectionEnd}return e.middleButton},t.prototype.onType=function(){var e=this.inputBox.value;this.helpText&&(e?r["D"](this.helpText):r["Q"](this.helpText)),this.callbacks.onType(e)},t.prototype.navigateInTree=function(e,t){var n=this.tree.getInput(),i=n?n.entries:[],o=this.tree.getFocus();switch(e){case 18:this.tree.focusNext();break;case 16:this.tree.focusPrevious();break;case 12:this.tree.focusNextPage();break;case 11:this.tree.focusPreviousPage();break;case 2:t?this.tree.focusPrevious():this.tree.focusNext();break}var r=this.tree.getFocus();i.length>1&&o===r&&(16===e||2===e&&t?this.tree.focusLast():(18===e||2===e&&!t)&&this.tree.focusFirst()),r=this.tree.getFocus(),r&&this.tree.reveal(r)},t.prototype.elementFocused=function(e,t){if(e&&this.isVisible()){var n=this.treeElement.getAttribute("aria-activedescendant");n?this.inputElement.setAttribute("aria-activedescendant",n):this.inputElement.removeAttribute("aria-activedescendant");var i={event:t,keymods:this.extractKeyMods(t),quickNavigateConfiguration:this.quickNavigateConfiguration};this.model.runner.run(e,0,i)}},t.prototype.elementSelected=function(e,t,n){var i=!0;if(this.isVisible()){var o=n||1,r={event:t,keymods:this.extractKeyMods(t),quickNavigateConfiguration:this.quickNavigateConfiguration};i=this.model.runner.run(e,o,r)}i&&this.hide(0)},t.prototype.extractKeyMods=function(e){return{ctrlCmd:e&&(e.ctrlKey||e.metaKey||e.payload&&e.payload.originalEvent&&(e.payload.originalEvent.ctrlKey||e.payload.originalEvent.metaKey)),alt:e&&(e.altKey||e.payload&&e.payload.originalEvent&&e.payload.originalEvent.altKey)}},t.prototype.show=function(e,t){this.visible=!0,this.isLoosingFocus=!1,this.quickNavigateConfiguration=t?t.quickNavigateConfiguration:void 0,this.quickNavigateConfiguration?(r["D"](this.inputContainer),r["Q"](this.element),this.tree.domFocus()):(r["Q"](this.inputContainer),r["Q"](this.element),this.inputBox.focus()),this.helpText&&(this.quickNavigateConfiguration||u["i"](e)?r["D"](this.helpText):r["Q"](this.helpText)),u["i"](e)?this.doShowWithPrefix(e):(t&&t.value&&this.restoreLastInput(t.value),this.doShowWithInput(e,t&&t.autoFocus?t.autoFocus:{})),t&&t.inputSelection&&!this.quickNavigateConfiguration&&this.inputBox.select(t.inputSelection),this.callbacks.onShow&&this.callbacks.onShow()},t.prototype.restoreLastInput=function(e){this.inputBox.value=e,this.inputBox.select(),this.callbacks.onType(e)},t.prototype.doShowWithPrefix=function(e){this.inputBox.value=e,this.callbacks.onType(e)},t.prototype.doShowWithInput=function(e,t){this.setInput(e,t)},t.prototype.setInputAndLayout=function(e,t){var n=this;this.treeContainer.style.height=this.getHeight(e)+"px",this.tree.setInput(null).then(function(){return n.model=e,n.inputElement.setAttribute("aria-haspopup",String(e&&e.entries&&e.entries.length>0)),n.tree.setInput(e)}).then(function(){n.tree.layout();var i=e?e.entries.filter(function(t){return n.isElementVisible(e,t)}):[];n.updateResultCount(i.length),i.length&&n.autoFocus(e,i,t)})},t.prototype.isElementVisible=function(e,t){return!e.filter||e.filter.isVisible(t)},t.prototype.autoFocus=function(e,t,n){if(void 0===n&&(n={}),n.autoFocusPrefixMatch){for(var i=void 0,o=void 0,r=n.autoFocusPrefixMatch,s=r.toLowerCase(),a=0,u=t;an.autoFocusIndex&&(this.tree.focusNth(n.autoFocusIndex),this.tree.reveal(this.tree.getFocus())):n.autoFocusSecondEntry?t.length>1&&this.tree.focusNth(1):n.autoFocusLastEntry&&t.length>1&&this.tree.focusLast()},t.prototype.getHeight=function(e){var n=this,i=e.renderer;if(!e){var o=i.getHeight(null);return this.options.minItemsToShow?this.options.minItemsToShow*o:0}var r,s=0;this.layoutDimensions&&this.layoutDimensions.height&&(r=.4*(this.layoutDimensions.height-50)),(!r||r>t.MAX_ITEMS_HEIGHT)&&(r=t.MAX_ITEMS_HEIGHT);for(var a=e.entries.filter(function(t){return n.isElementVisible(e,t)}),u=this.options.maxItemsToShow||a.length,l=0;l=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},ke=function(e,t){return function(n,i){t(n,i,e)}},Ie=function(){function e(e,t){this.themeService=t,this.widget=null,this.rangeHighlightDecorationId=null,this.lastKnownEditorSelection=null,this.editor=e}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this.widget&&(this.widget.destroy(),this.widget=null)},e.prototype.run=function(e){var t=this;this.widget&&(this.widget.destroy(),this.widget=null);var n=function(e){t.clearDecorations(),e&&t.lastKnownEditorSelection&&(t.editor.setSelection(t.lastKnownEditorSelection),t.editor.revealRangeInCenterIfOutsideViewport(t.lastKnownEditorSelection,0)),t.lastKnownEditorSelection=null,document.activeElement!==document.body&&e||t.editor.focus()};this.widget=new Oe(this.editor,function(){return n(!1)},function(){return n(!0)},function(n){t.widget.setInput(e.getModel(n),e.getAutoFocus(n))},{inputAriaLabel:e.inputAriaLabel},this.themeService),this.lastKnownEditorSelection||(this.lastKnownEditorSelection=this.editor.getSelection()),this.widget.show("")},e.prototype.decorateLine=function(t,n){var i=[];this.rangeHighlightDecorationId&&(i.push(this.rangeHighlightDecorationId),this.rangeHighlightDecorationId=null);var o=[{range:t,options:e._RANGE_HIGHLIGHT_DECORATION}],r=n.deltaDecorations(i,o);this.rangeHighlightDecorationId=r[0]},e.prototype.clearDecorations=function(){this.rangeHighlightDecorationId&&(this.editor.deltaDecorations([this.rangeHighlightDecorationId],[]),this.rangeHighlightDecorationId=null)},e.ID="editor.controller.quickOpenController",e._RANGE_HIGHLIGHT_DECORATION=o["a"].register({className:"rangeHighlight",isWholeLine:!0}),e=De([ke(1,xe["c"])],e),e}(),Ee=function(e){function t(t,n){var i=e.call(this,n)||this;return i._inputAriaLabel=t,i}return Ne(t,e),t.prototype.getController=function(e){return Ie.get(e)},t.prototype._show=function(e,t){e.run({inputAriaLabel:this._inputAriaLabel,getModel:function(e){return t.getModel(e)},getAutoFocus:function(e){return t.getAutoFocus(e)}})},t}(i["b"]);Object(i["h"])(Ie)},af40:function(e,t,n){"use strict";n.d(t,"a",function(){return i});var i=function(){function e(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=!1),this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=n}return e}()},b055:function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("8ae8");function o(e){return!(!e||"function"!==typeof e.getEditorType)&&e.getEditorType()===i["a"].ICodeEditor}},b0cd:function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return s});var i=n("4b76"),o=n("0a0f"),r=(i["a"],Object(o["c"])("notificationService")),s=function(){function e(){}return e}()},b1ca:function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("0a0f"),o=Object(i["c"])("themeService")},b223:function(e,t,n){},b272:function(e,t,n){"use strict";n.d(t,"a",function(){return u});var i=n("3742"),o=n("2c29"),r=n("2e5d"),s=n("f85a"),a=n("6a89"),u=function(){function e(){}return e.deleteRight=function(e,t,n,i){for(var r=[],u=3!==e,l=0,c=i.length;l1){var m=n.getLineContent(g.lineNumber),v=i["q"](m),_=-1===v?m.length+1:v+1;if(g.column<=_){var b=r["a"].visibleColumnFromColumn2(t,n,g),y=r["a"].prevIndentTabStop(b,t.indentSize),w=r["a"].columnFromVisibleColumn2(t,n,g.lineNumber,y);f=new a["a"](g.lineNumber,w,g.lineNumber,g.column)}else f=new a["a"](g.lineNumber,g.column-1,g.lineNumber,g.column)}else{var C=s["a"].left(t,n,g.lineNumber,g.column);f=new a["a"](C.lineNumber,C.column,g.lineNumber,g.column)}}f.isEmpty()?l[d]=null:(f.startLineNumber!==f.endLineNumber&&(c=!0),l[d]=new o["a"](f,""))}return[c,l]},e.cut=function(e,t,n){for(var i=[],s=0,u=n.length;s1?(d=c.lineNumber-1,h=t.getLineMaxColumn(c.lineNumber-1),p=c.lineNumber,f=t.getLineMaxColumn(c.lineNumber)):(d=c.lineNumber,h=1,p=c.lineNumber,f=t.getLineMaxColumn(c.lineNumber));var g=new a["a"](d,h,p,f);g.isEmpty()?i[s]=null:i[s]=new o["a"](g,"")}else i[s]=null;else i[s]=new o["a"](l,"")}return new r["e"](0,i,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})},e}()},b2cc:function(e,t,n){"use strict";n.d(t,"a",function(){return _}),n.d(t,"c",function(){return b}),n.d(t,"b",function(){return y}),n.d(t,"j",function(){return w}),n.d(t,"e",function(){return C}),n.d(t,"g",function(){return S}),n.d(t,"f",function(){return L}),n.d(t,"i",function(){return O}),n.d(t,"h",function(){return x}),n.d(t,"d",function(){return i});var i,o=n("fdcc"),r=n("6d8e"),s=n("5717"),a=n("7061"),u=n("1b69"),l=n("b78f"),c=n("7e32"),d=n("9e74"),h=n("4fc3"),p=n("9eb8"),f=n("89cd"),g=n("5d75"),m=n("ef8e"),v=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),_=function(){function e(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menubarOpts=e.menubarOpts,this._description=e.description}return e.prototype.register=function(){var e=this;if(this._menubarOpts&&c["c"].appendMenuItem(this._menubarOpts.menuId,{group:this._menubarOpts.group,command:{id:this.id,title:this._menubarOpts.title},when:this._menubarOpts.when,order:this._menubarOpts.order}),this._kbOpts){var t=this._kbOpts.kbExpr;this.precondition&&(t=t?h["a"].and(t,this.precondition):this.precondition),p["a"].registerCommandAndKeybindingRule({id:this.id,handler:function(t,n){return e.runCommand(t,n)},weight:this._kbOpts.weight,when:t,primary:this._kbOpts.primary,secondary:this._kbOpts.secondary,win:this._kbOpts.win,linux:this._kbOpts.linux,mac:this._kbOpts.mac,description:this._description})}else d["a"].registerCommand({id:this.id,handler:function(t,n){return e.runCommand(t,n)},description:this._description})},e}(),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return v(t,e),t.bindToContribution=function(e){return function(t){function n(e){var n=t.call(this,e)||this;return n._callback=e.handler,n}return v(n,t),n.prototype.runEditorCommand=function(t,n,i){var o=e(n);o&&this._callback(e(n),i)},n}(t)},t.prototype.runCommand=function(e,t){var n=this,i=e.get(s["a"]),o=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(o)return o.invokeWithinContext(function(e){var i=e.get(h["c"]);if(i.contextMatchesRules(Object(m["m"])(n.precondition)))return n.runEditorCommand(e,o,t)})},t}(_),y=function(e){function t(t){var n=e.call(this,t)||this;return n.label=t.label,n.alias=t.alias,n.menuOpts=t.menuOpts,n}return v(t,e),t.prototype.register=function(){this.menuOpts&&c["c"].appendMenuItem(7,{command:{id:this.id,title:this.label},when:h["a"].and(this.precondition,this.menuOpts.when),group:this.menuOpts.group,order:this.menuOpts.order}),e.prototype.register.call(this)},t.prototype.runEditorCommand=function(e,t,n){return this.reportTelemetry(e,t),this.run(e,t,n||{})},t.prototype.reportTelemetry=function(e,t){e.get(g["a"]).publicLog2("editorActionInvoked",{name:this.label,id:this.id})},t}(b);function w(e,t){d["a"].registerCommand(e,function(e,n){return t(e,n||{})})}function C(e,t){w(e,function(e,n){var i=n.resource,s=n.position;if(!(i instanceof r["a"]))throw Object(o["b"])("resource");if(!a["a"].isIPosition(s))throw Object(o["b"])("position");var c=e.get(u["a"]).getModel(i);if(c){var d=a["a"].lift(s);return t(c,d,n)}return e.get(l["a"]).createModelReference(i).then(function(e){return new Promise(function(i,o){try{var r=t(e.object.textEditorModel,a["a"].lift(s),n);i(r)}catch(u){o(u)}}).finally(function(){e.dispose()})})})}function S(e){return D.INSTANCE.registerEditorCommand(e),e}function L(e){D.INSTANCE.registerEditorAction(new e)}function O(e){D.INSTANCE.registerEditorAction(e)}function x(e){D.INSTANCE.registerEditorContribution(e)}(function(e){function t(e){return D.INSTANCE.getEditorCommand(e)}function n(){return D.INSTANCE.getEditorActions()}function i(){return D.INSTANCE.getEditorContributions()}e.getEditorCommand=t,e.getEditorActions=n,e.getEditorContributions=i})(i||(i={}));var N={EditorCommonContributions:"editor.contributions"},D=function(){function e(){this.editorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}return e.prototype.registerEditorContribution=function(e){this.editorContributions.push(e)},e.prototype.registerEditorAction=function(e){e.register(),this.editorActions.push(e)},e.prototype.getEditorContributions=function(){return this.editorContributions.slice(0)},e.prototype.getEditorActions=function(){return this.editorActions.slice(0)},e.prototype.registerEditorCommand=function(e){e.register(),this.editorCommands[e.id]=e},e.prototype.getEditorCommand=function(e){return this.editorCommands[e]||null},e.INSTANCE=new e,e}();f["a"].add(N.EditorCommonContributions,D.INSTANCE)},b329:function(e,t,n){},b3b2:function(e,t,n){"use strict";n.r(t),n.d(t,"MoveWordCommand",function(){return m}),n.d(t,"WordLeftCommand",function(){return v}),n.d(t,"WordRightCommand",function(){return _}),n.d(t,"CursorWordStartLeft",function(){return b}),n.d(t,"CursorWordEndLeft",function(){return y}),n.d(t,"CursorWordLeft",function(){return w}),n.d(t,"CursorWordStartLeftSelect",function(){return C}),n.d(t,"CursorWordEndLeftSelect",function(){return S}),n.d(t,"CursorWordLeftSelect",function(){return L}),n.d(t,"CursorWordAccessibilityLeft",function(){return O}),n.d(t,"CursorWordAccessibilityLeftSelect",function(){return x}),n.d(t,"CursorWordStartRight",function(){return N}),n.d(t,"CursorWordEndRight",function(){return D}),n.d(t,"CursorWordRight",function(){return k}),n.d(t,"CursorWordStartRightSelect",function(){return I}),n.d(t,"CursorWordEndRightSelect",function(){return E}),n.d(t,"CursorWordRightSelect",function(){return M}),n.d(t,"CursorWordAccessibilityRight",function(){return T}),n.d(t,"CursorWordAccessibilityRightSelect",function(){return P}),n.d(t,"DeleteWordCommand",function(){return R}),n.d(t,"DeleteWordLeftCommand",function(){return A}),n.d(t,"DeleteWordRightCommand",function(){return F}),n.d(t,"DeleteWordStartLeft",function(){return j}),n.d(t,"DeleteWordEndLeft",function(){return W}),n.d(t,"DeleteWordLeft",function(){return V}),n.d(t,"DeleteWordStartRight",function(){return B}),n.d(t,"DeleteWordEndRight",function(){return H}),n.d(t,"DeleteWordRight",function(){return z});var i=n("b2cc"),o=n("2c29"),r=n("2e5d"),s=n("d48d"),a=n("e6ff"),u=n("7061"),l=n("6a89"),c=n("8025"),d=n("c101"),h=n("4779"),p=n("4fc3"),f=n("fd49"),g=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),m=function(e){function t(t){var n=e.call(this,t)||this;return n._inSelectionMode=t.inSelectionMode,n._wordNavigationType=t.wordNavigationType,n}return g(t,e),t.prototype.runEditorCommand=function(e,t,n){var i=this;if(t.hasModel()){var o=t.getConfiguration(),s=Object(a["a"])(o.wordSeparators),l=t.getModel(),c=t.getSelections(),d=c.map(function(e){var t=new u["a"](e.positionLineNumber,e.positionColumn),n=i._move(s,l,t,i._wordNavigationType);return i._moveTo(e,n,i._inSelectionMode)});if(t._getCursors().setStates("moveWordCommand",0,d.map(function(e){return r["d"].fromModelSelection(e)})),1===d.length){var h=new u["a"](d[0].positionLineNumber,d[0].positionColumn);t.revealPosition(h,0)}}},t.prototype._moveTo=function(e,t,n){return n?new c["a"](e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new c["a"](t.lineNumber,t.column,t.lineNumber,t.column)},t}(i["c"]),v=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return g(t,e),t.prototype._move=function(e,t,n,i){return s["a"].moveWordLeft(e,t,n,i)},t}(m),_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return g(t,e),t.prototype._move=function(e,t,n,i){return s["a"].moveWordRight(e,t,n,i)},t}(m),b=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0,kbOpts:{kbExpr:d["a"].textInputFocus,primary:2063,mac:{primary:527},weight:100}})||this}return g(t,e),t}(v),y=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})||this}return g(t,e),t}(v),w=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0})||this}return g(t,e),t}(v),C=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0,kbOpts:{kbExpr:d["a"].textInputFocus,primary:3087,mac:{primary:1551},weight:100}})||this}return g(t,e),t}(v),S=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})||this}return g(t,e),t}(v),L=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0})||this}return g(t,e),t}(v),O=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0,kbOpts:{kbExpr:p["a"].and(d["a"].textInputFocus,h["a"]),primary:2063,mac:{primary:527},weight:101}})||this}return g(t,e),t.prototype._move=function(t,n,i,o){return e.prototype._move.call(this,Object(a["a"])(f["a"].wordSeparators),n,i,o)},t}(v),x=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0,kbOpts:{kbExpr:p["a"].and(d["a"].textInputFocus,h["a"]),primary:3087,mac:{primary:1551},weight:101}})||this}return g(t,e),t.prototype._move=function(t,n,i,o){return e.prototype._move.call(this,Object(a["a"])(f["a"].wordSeparators),n,i,o)},t}(v),N=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})||this}return g(t,e),t}(_),D=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:d["a"].textInputFocus,primary:2065,mac:{primary:529},weight:100}})||this}return g(t,e),t}(_),k=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})||this}return g(t,e),t}(_),I=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})||this}return g(t,e),t}(_),E=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:d["a"].textInputFocus,primary:3089,mac:{primary:1553},weight:100}})||this}return g(t,e),t}(_),M=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})||this}return g(t,e),t}(_),T=function(e){function t(){return e.call(this,{inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0,kbOpts:{kbExpr:p["a"].and(d["a"].textInputFocus,h["a"]),primary:2065,mac:{primary:529},weight:101}})||this}return g(t,e),t.prototype._move=function(t,n,i,o){return e.prototype._move.call(this,Object(a["a"])(f["a"].wordSeparators),n,i,o)},t}(_),P=function(e){function t(){return e.call(this,{inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0,kbOpts:{kbExpr:p["a"].and(d["a"].textInputFocus,h["a"]),primary:3089,mac:{primary:1553},weight:101}})||this}return g(t,e),t.prototype._move=function(t,n,i,o){return e.prototype._move.call(this,Object(a["a"])(f["a"].wordSeparators),n,i,o)},t}(_),R=function(e){function t(t){var n=e.call(this,t)||this;return n._whitespaceHeuristics=t.whitespaceHeuristics,n._wordNavigationType=t.wordNavigationType,n}return g(t,e),t.prototype.runEditorCommand=function(e,t,n){var i=this;if(t.hasModel()){var r=t.getConfiguration(),s=Object(a["a"])(r.wordSeparators),u=t.getModel(),l=t.getSelections(),c=l.map(function(e){var t=i._delete(s,u,e,i._whitespaceHeuristics,i._wordNavigationType);return new o["a"](t,"")});t.pushUndoStop(),t.executeCommands(this.id,c),t.pushUndoStop()}},t}(i["c"]),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return g(t,e),t.prototype._delete=function(e,t,n,i,o){var r=s["a"].deleteWordLeft(e,t,n,i,o);return r||new l["a"](1,1,1,1)},t}(R),F=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return g(t,e),t.prototype._delete=function(e,t,n,i,o){var r=s["a"].deleteWordRight(e,t,n,i,o);if(r)return r;var a=t.getLineCount(),u=t.getLineMaxColumn(a);return new l["a"](a,u,a,u)},t}(R),j=function(e){function t(){return e.call(this,{whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:d["a"].writable})||this}return g(t,e),t}(A),W=function(e){function t(){return e.call(this,{whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:d["a"].writable})||this}return g(t,e),t}(A),V=function(e){function t(){return e.call(this,{whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:d["a"].writable,kbOpts:{kbExpr:d["a"].textInputFocus,primary:2049,mac:{primary:513},weight:100}})||this}return g(t,e),t}(A),B=function(e){function t(){return e.call(this,{whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:d["a"].writable})||this}return g(t,e),t}(F),H=function(e){function t(){return e.call(this,{whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:d["a"].writable})||this}return g(t,e),t}(F),z=function(e){function t(){return e.call(this,{whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:d["a"].writable,kbOpts:{kbExpr:d["a"].textInputFocus,primary:2068,mac:{primary:532},weight:100}})||this}return g(t,e),t}(F);Object(i["g"])(new b),Object(i["g"])(new y),Object(i["g"])(new w),Object(i["g"])(new C),Object(i["g"])(new S),Object(i["g"])(new L),Object(i["g"])(new N),Object(i["g"])(new D),Object(i["g"])(new k),Object(i["g"])(new I),Object(i["g"])(new E),Object(i["g"])(new M),Object(i["g"])(new O),Object(i["g"])(new x),Object(i["g"])(new T),Object(i["g"])(new P),Object(i["g"])(new j),Object(i["g"])(new W),Object(i["g"])(new V),Object(i["g"])(new B),Object(i["g"])(new H),Object(i["g"])(new z)},b400:function(e,t,n){"use strict";n.d(t,"c",function(){return i}),n.d(t,"a",function(){return o}),n.d(t,"b",function(){return u});var i,o,r=n("0a0f"),s=n("dff7"),a=n("4b76");(function(e){e[e["Hint"]=1]="Hint",e[e["Info"]=2]="Info",e[e["Warning"]=4]="Warning",e[e["Error"]=8]="Error"})(i||(i={})),function(e){function t(e,t){return t-e}e.compare=t;var n=Object.create(null);function i(e){return n[e]||""}function o(t){switch(t){case a["a"].Error:return e.Error;case a["a"].Warning:return e.Warning;case a["a"].Info:return e.Info;case a["a"].Ignore:return e.Hint}}function r(t){switch(t){case e.Error:return a["a"].Error;case e.Warning:return a["a"].Warning;case e.Info:return a["a"].Info;case e.Hint:return a["a"].Ignore}}n[e.Error]=Object(s["a"])("sev.error","Error"),n[e.Warning]=Object(s["a"])("sev.warning","Warning"),n[e.Info]=Object(s["a"])("sev.info","Info"),e.toString=i,e.fromSeverity=o,e.toSeverity=r}(i||(i={})),function(e){var t="";function n(e){return o(e,!0)}function o(e,n){var o=[t];return e.source?o.push(e.source.replace("¦","¦")):o.push(t),e.code?o.push(e.code.replace("¦","¦")):o.push(t),void 0!==e.severity&&null!==e.severity?o.push(i.toString(e.severity)):o.push(t),e.message&&n?o.push(e.message.replace("¦","¦")):o.push(t),void 0!==e.startLineNumber&&null!==e.startLineNumber?o.push(e.startLineNumber.toString()):o.push(t),void 0!==e.startColumn&&null!==e.startColumn?o.push(e.startColumn.toString()):o.push(t),void 0!==e.endLineNumber&&null!==e.endLineNumber?o.push(e.endLineNumber.toString()):o.push(t),void 0!==e.endColumn&&null!==e.endColumn?o.push(e.endColumn.toString()):o.push(t),o.push(t),o.join("¦")}e.makeKey=n,e.makeKeyOptionalMessage=o}(o||(o={}));var u=Object(r["c"])("markerService")},b539:function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("0a0f"),o=Object(i["c"])("editorProgressService")},b574:function(e,t,n){"use strict";n.r(t);var i=n("a666"),o=n("3742"),r=n("b2cc"),s=n("6a89"),a=n("8025"),u=n("c101"),l=n("4153"),c=n("4fc3"),d=n("d3d7"),h=n("e8e3"),p=(n("7457"),n("d3f49")),f=n("b57f"),g=n("f577"),m=n("1165"),v=n("0a0f"),_=n("b800"),b=n("dff7"),y=n("32b8"),w=n("82c9"),C=n("70cb"),S=n("6d8e"),L="code-workspace";function O(e){return e instanceof S["a"]}function x(e){return e.configuration?{configPath:e.configuration,id:e.id}:1===e.folders.length?e.folders[0].uri:void 0}var N=function(){function e(e){this._delegates=e}return e.prototype.resolve=function(e){for(var t=0,n=this._delegates;t=0){for(var i=[],o=0,r=this._placeholderGroups[this._placeholderGroupsIdx];o0&&this._editor.executeEdits("snippet.placeholderTransform",i)}var d=!1;!0===t&&this._placeholderGroupsIdx0&&(this._placeholderGroupsIdx-=1,d=!0);var h=this._editor.getModel().changeDecorations(function(t){for(var i=new Set,o=[],r=0,s=n._placeholderGroups[n._placeholderGroupsIdx];r0)return!0}t=t.parent}return!1},Object.defineProperty(e.prototype,"isAtFirstPlaceholder",{get:function(){return this._placeholderGroupsIdx<=0||0===this._placeholderGroups.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isAtLastPlaceholder",{get:function(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasPlaceholder",{get:function(){return this._snippet.placeholders.length>0},enumerable:!0,configurable:!0}),e.prototype.computePossibleSelections=function(){for(var e=new Map,t=0,n=this._placeholderGroups;t0&&S!==d.getLineFirstNonWhitespaceColumn(R.positionLineNumber))&&e.adjustWhitespace(d,z,H),H.resolveVariables(new N([f,new I(u,j,L.length),new D(d,R),new E(d),new M,new T(h)]));var U=d.getOffsetAt(z)+y;y+=H.toString().length-d.getValueLengthInRange(B),l[j]=p["a"].replace(B,H.toString()),c[j]=new F(t,H,U)}return{edits:l,snippets:c}},e.prototype.dispose=function(){Object(i["f"])(this._snippets)},e.prototype._logInfo=function(){return'template="'+this._template+'", merged_templates="'+this._templateMerges.join(" -> ")+'"'},e.prototype.insert=function(){var t=this;if(this._editor.hasModel()){var n=e.createEditsAndSnippets(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText),i=n.edits,o=n.snippets;this._snippets=o,this._editor.executeEdits("snippet",i,function(e){return t._snippets[0].hasPlaceholder?t._move(!0):e.map(function(e){return a["a"].fromPositions(e.range.getEndPosition())})}),this._editor.revealRange(this._editor.getSelections()[0])}},e.prototype.merge=function(t,n){var i=this;if(void 0===n&&(n=j),this._editor.hasModel()){this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,t]);var o=e.createEditsAndSnippets(this._editor,t,n.overwriteBefore,n.overwriteAfter,!0,n.adjustWhitespace,n.clipboardText),r=o.edits,s=o.snippets;this._editor.executeEdits("snippet",r,function(e){for(var t=0,n=i._snippets;t0},e}();n.d(t,"SnippetController2",function(){return U});var V=function(){return V=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},H=function(e,t){return function(n,i){t(n,i,e)}},z={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0},U=function(){function e(t,n,o){this._editor=t,this._logService=n,this._snippetListener=new i["b"],this._modelVersionId=-1,this._inSnippet=e.InSnippetMode.bindTo(o),this._hasNextTabstop=e.HasNextTabstop.bindTo(o),this._hasPrevTabstop=e.HasPrevTabstop.bindTo(o)}return e.get=function(e){return e.getContribution("snippetController2")},e.prototype.dispose=function(){this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),Object(i["f"])(this._session),this._snippetListener.dispose()},e.prototype.getId=function(){return"snippetController2"},e.prototype.insert=function(e,t){try{this._doInsert(e,"undefined"===typeof t?z:V({},z,t))}catch(n){this.cancel(),this._logService.error(n),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"")}},e.prototype._doInsert=function(e,t){var n=this;this._editor.hasModel()&&(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session?this._session.merge(e,t):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new W(this._editor,e,t),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent(function(e){return e.isFlush&&n.cancel()})),this._snippetListener.add(this._editor.onDidChangeModel(function(){return n.cancel()})),this._snippetListener.add(this._editor.onDidChangeCursorSelection(function(){return n._updateState()})))},e.prototype._updateState=function(){if(this._session&&this._editor.hasModel()){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}},e.prototype._handleChoice=function(){var e=this;if(this._session&&this._editor.hasModel()){var t=this._session.choice;if(t){if(this._currentChoice!==t){this._currentChoice=t,this._editor.setSelections(this._editor.getSelections().map(function(e){return a["a"].fromPositions(e.getStartPosition())}));var n=t.options[0];Object(l["f"])(this._editor,t.options.map(function(t,i){return{kind:13,label:t.value,insertText:t.value,sortText:Object(o["F"])("a",i+1),range:s["a"].fromPositions(e._editor.getPosition(),e._editor.getPosition().delta(0,n.value.length))}}))}}else this._currentChoice=void 0}else this._currentChoice=void 0},e.prototype.finish=function(){while(this._inSnippet.get())this.next()},e.prototype.cancel=function(e){void 0===e&&(e=!1),this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),Object(i["f"])(this._session),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])},e.prototype.prev=function(){this._session&&this._session.prev(),this._updateState()},e.prototype.next=function(){this._session&&this._session.next(),this._updateState()},e.prototype.isInSnippet=function(){return Boolean(this._inSnippet.get())},e.InSnippetMode=new c["d"]("inSnippetMode",!1),e.HasNextTabstop=new c["d"]("hasNextTabstop",!1),e.HasPrevTabstop=new c["d"]("hasPrevTabstop",!1),e=B([H(1,d["a"]),H(2,c["c"])],e),e}();Object(r["h"])(U);var K=r["c"].bindToContribution(U.get);Object(r["g"])(new K({id:"jumpToNextSnippetPlaceholder",precondition:c["a"].and(U.InSnippetMode,U.HasNextTabstop),handler:function(e){return e.next()},kbOpts:{weight:130,kbExpr:u["a"].editorTextFocus,primary:2}})),Object(r["g"])(new K({id:"jumpToPrevSnippetPlaceholder",precondition:c["a"].and(U.InSnippetMode,U.HasPrevTabstop),handler:function(e){return e.prev()},kbOpts:{weight:130,kbExpr:u["a"].editorTextFocus,primary:1026}})),Object(r["g"])(new K({id:"leaveSnippet",precondition:U.InSnippetMode,handler:function(e){return e.cancel(!0)},kbOpts:{weight:130,kbExpr:u["a"].editorTextFocus,primary:9,secondary:[1033]}})),Object(r["g"])(new K({id:"acceptSnippet",precondition:U.InSnippetMode,handler:function(e){return e.finish()}}))},b57f:function(e,t,n){"use strict";var i=n("fdcc"),o=n("308f"),r=n("a666"),s=n("3742"),a=n("6d8e"),u=n("fd49"),l=n("7061"),c=n("6a89"),d=n("8025"),h=n("3352"),p=function(){function e(e,t){this.beforeVersionId=e,this.beforeCursorState=t,this.afterCursorState=null,this.afterVersionId=-1,this.editOperations=[]}return e.prototype.undo=function(e){for(var t=this.editOperations.length-1;t>=0;t--)this.editOperations[t]={operations:e.applyEdits(this.editOperations[t].operations)}},e.prototype.redo=function(e){for(var t=0;t0){var e=this.past.pop();try{e.undo(this.model)}catch(t){return Object(i["e"])(t),this.clear(),null}return this.future.push(e),{selections:e.beforeCursorState,recordedVersionId:e.beforeVersionId}}return null},e.prototype.canUndo=function(){return this.past.length>0||null!==this.currentOpenStackElement},e.prototype.redo=function(){if(this.future.length>0){var e=this.future.pop();try{e.redo(this.model)}catch(t){return Object(i["e"])(t),this.clear(),null}return this.past.push(e),{selections:e.afterCursorState,recordedVersionId:e.afterVersionId}}return null},e.prototype.canRedo=function(){return this.future.length>0},e}(),v=function(){function e(){this.spacesDiff=0,this.looksLikeAlignment=!1}return e}();function _(e,t,n,i,o){var r;for(o.spacesDiff=0,o.looksLikeAlignment=!1,r=0;r0&&l>0)&&!(d>0&&h>0)){var p=Math.abs(l-h),f=Math.abs(u-d);if(0===p)return o.spacesDiff=f,void(f>0&&0<=d-1&&d-10?o++:y>1&&r++,_(s,a,f,b,d),!d.looksLikeAlignment||n&&t===d.spacesDiff)){var O=d.spacesDiff;O<=l&&c[O]++,s=f,a=b}}var x=n;o!==r&&(x=oD&&(D=t,N=e)}),4===N&&c[4]>0&&c[2]>0&&c[2]>=c[4]/2&&(N=2)}return{insertSpaces:x,tabSize:N}}function y(e){return(1&e.metadata)>>>0}function w(e,t){e.metadata=254&e.metadata|t<<0}function C(e){return(2&e.metadata)>>>1===1}function S(e,t){e.metadata=253&e.metadata|(t?1:0)<<1}function L(e){return(4&e.metadata)>>>2===1}function O(e,t){e.metadata=251&e.metadata|(t?1:0)<<2}function x(e){return(8&e.metadata)>>>3===1}function N(e,t){e.metadata=247&e.metadata|(t?1:0)<<3}function D(e){return(48&e.metadata)>>>4}function k(e,t){e.metadata=207&e.metadata|t<<4}function I(e){return(64&e.metadata)>>>6===1}function E(e,t){e.metadata=191&e.metadata|(t?1:0)<<6}var M=function(){function e(e,t,n){this.metadata=0,this.parent=this,this.left=this,this.right=this,w(this,1),this.start=t,this.end=n,this.delta=0,this.maxEnd=n,this.id=e,this.ownerId=0,this.options=null,O(this,!1),k(this,1),N(this,!1),E(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=n,this.range=null,S(this,!1)}return e.prototype.reset=function(e,t,n,i){this.start=t,this.end=n,this.maxEnd=n,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=n,this.range=i},e.prototype.setOptions=function(e){this.options=e;var t=this.options.className;O(this,"squiggly-error"===t||"squiggly-warning"===t||"squiggly-info"===t),k(this,this.options.stickiness),N(this,!(!this.options.overviewRuler||!this.options.overviewRuler.color)),E(this,this.options.collapseOnReplaceEdit)},e.prototype.setCachedOffsets=function(e,t,n){this.cachedVersionId!==n&&(this.range=null),this.cachedVersionId=n,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t},e.prototype.detach=function(){this.parent=null,this.left=null,this.right=null},e}(),T=new M(null,0,0);T.parent=T,T.left=T,T.right=T,w(T,0);var P=function(){function e(){this.root=T,this.requestNormalizeDelta=!1}return e.prototype.intervalSearch=function(e,t,n,i,o){return this.root===T?[]:z(this,e,t,n,i,o)},e.prototype.search=function(e,t,n){return this.root===T?[]:H(this,e,t,n)},e.prototype.collectNodesFromOwner=function(e){return V(this,e)},e.prototype.collectNodesPostOrder=function(){return B(this)},e.prototype.insert=function(e){U(this,e),this._normalizeDeltaIfNecessary()},e.prototype.delete=function(e){q(this,e),this._normalizeDeltaIfNecessary()},e.prototype.resolveNode=function(e,t){var n=e,i=0;while(e!==this.root)e===e.parent.right&&(i+=e.parent.delta),e=e.parent;var o=n.start+i,r=n.end+i;n.setCachedOffsets(o,r,t)},e.prototype.acceptReplace=function(e,t,n,i){for(var o=j(this,e,e+t),r=0,s=o.length;rn)&&(1!==i&&(2===i||t))}function F(e,t,n,i,o){var r=D(e),s=0===r||2===r,a=1===r||2===r,u=n-t,l=i,c=Math.min(u,l),d=e.start,h=!1,p=e.end,f=!1;t<=d&&p<=n&&I(e)&&(e.start=t,h=!0,e.end=t,f=!0);var g=o?1:u>0?2:0;if(!h&&A(d,s,t,g)&&(h=!0),!f&&A(p,a,t,g)&&(f=!0),c>0&&!o){g=u>l?2:0;!h&&A(d,s,t+c,g)&&(h=!0),!f&&A(p,a,t+c,g)&&(f=!0)}g=o?1:0;!h&&A(d,s,n,g)&&(e.start=t+l,h=!0),!f&&A(p,a,n,g)&&(e.end=t+l,f=!0);var m=l-u;h||(e.start=Math.max(0,d+m)),f||(e.end=Math.max(0,p+m)),e.start>e.end&&(e.end=e.start)}function j(e,t,n){var i=e.root,o=0,r=0,s=0,a=0,u=[],l=0;while(i!==T)if(C(i))S(i.left,!1),S(i.right,!1),i===i.parent.right&&(o-=i.parent.delta),i=i.parent;else{if(!C(i.left)){if(r=o+i.maxEnd,rn?S(i,!0):(a=o+i.end,a>=t&&(i.setCachedOffsets(s,a,0),u[l++]=i),S(i,!0),i.right===T||C(i.right)||(o+=i.delta,i=i.right))}return S(e.root,!1),u}function W(e,t,n,i){var o=e.root,r=0,s=0,a=0,u=i-(n-t);while(o!==T)if(C(o))S(o.left,!1),S(o.right,!1),o===o.parent.right&&(r-=o.parent.delta),Q(o),o=o.parent;else{if(!C(o.left)){if(s=r+o.maxEnd,sn?(o.start+=u,o.end+=u,o.delta+=u,(o.delta<-1073741824||o.delta>1073741824)&&(e.requestNormalizeDelta=!0),S(o,!0)):(S(o,!0),o.right===T||C(o.right)||(r+=o.delta,o=o.right))}S(e.root,!1)}function V(e,t){var n=e.root,i=[],o=0;while(n!==T)C(n)?(S(n.left,!1),S(n.right,!1),n=n.parent):n.left===T||C(n.left)?(n.ownerId===t&&(i[o++]=n),S(n,!0),n.right===T||C(n.right)||(n=n.right)):n=n.left;return S(e.root,!1),i}function B(e){var t=e.root,n=[],i=0;while(t!==T)C(t)?(S(t.left,!1),S(t.right,!1),t=t.parent):t.left===T||C(t.left)?t.right===T||C(t.right)?(n[i++]=t,S(t,!0)):t=t.right:t=t.left;return S(e.root,!1),n}function H(e,t,n,i){var o=e.root,r=0,s=0,a=0,u=[],l=0;while(o!==T)if(C(o))S(o.left,!1),S(o.right,!1),o===o.parent.right&&(r-=o.parent.delta),o=o.parent;else if(o.left===T||C(o.left)){s=r+o.start,a=r+o.end,o.setCachedOffsets(s,a,i);var c=!0;t&&o.ownerId&&o.ownerId!==t&&(c=!1),n&&L(o)&&(c=!1),c&&(u[l++]=o),S(o,!0),o.right===T||C(o.right)||(r+=o.delta,o=o.right)}else o=o.left;return S(e.root,!1),u}function z(e,t,n,i,o,r){var s=e.root,a=0,u=0,l=0,c=0,d=[],h=0;while(s!==T)if(C(s))S(s.left,!1),S(s.right,!1),s===s.parent.right&&(a-=s.parent.delta),s=s.parent;else{if(!C(s.left)){if(u=a+s.maxEnd,un)S(s,!0);else{if(c=a+s.end,c>=t){s.setCachedOffsets(l,c,r);var p=!0;i&&s.ownerId&&s.ownerId!==i&&(p=!1),o&&L(s)&&(p=!1),p&&(d[h++]=s)}S(s,!0),s.right===T||C(s.right)||(a+=s.delta,s=s.right)}}return S(e.root,!1),d}function U(e,t){if(e.root===T)return t.parent=T,t.left=T,t.right=T,w(t,0),e.root=t,e.root;K(e,t),J(t.parent);var n=t;while(n!==e.root&&1===y(n.parent))if(n.parent===n.parent.parent.left){var i=n.parent.parent.right;1===y(i)?(w(n.parent,0),w(i,0),w(n.parent.parent,1),n=n.parent.parent):(n===n.parent.right&&(n=n.parent,Y(e,n)),w(n.parent,0),w(n.parent.parent,1),X(e,n.parent.parent))}else{i=n.parent.parent.left;1===y(i)?(w(n.parent,0),w(i,0),w(n.parent.parent,1),n=n.parent.parent):(n===n.parent.left&&(n=n.parent,X(e,n)),w(n.parent,0),w(n.parent.parent,1),Y(e,n.parent.parent))}return w(e.root,0),t}function K(e,t){var n=0,i=e.root,o=t.start,r=t.end;while(1){var s=ee(o,r,i.start+n,i.end+n);if(s<0){if(i.left===T){t.start-=n,t.end-=n,t.maxEnd-=n,i.left=t;break}i=i.left}else{if(i.right===T){t.start-=n+i.delta,t.end-=n+i.delta,t.maxEnd-=n+i.delta,i.right=t;break}n+=i.delta,i=i.right}}t.parent=i,t.left=T,t.right=T,w(t,1)}function q(e,t){var n,i;if(t.left===T?(n=t.right,i=t,n.delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta):t.right===T?(n=t.left,i=t):(i=G(t.right),n=i.right,n.start+=i.delta,n.end+=i.delta,n.delta+=i.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta,i.delta=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0)),i===e.root)return e.root=n,w(n,0),t.detach(),Z(),Q(n),void(e.root.parent=T);var o,r=1===y(i);if(i===i.parent.left?i.parent.left=n:i.parent.right=n,i===t?n.parent=i.parent:(i.parent===t?n.parent=i:n.parent=i.parent,i.left=t.left,i.right=t.right,i.parent=t.parent,w(i,y(t)),t===e.root?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left!==T&&(i.left.parent=i),i.right!==T&&(i.right.parent=i)),t.detach(),r)return J(n.parent),i!==t&&(J(i),J(i.parent)),void Z();J(n),J(n.parent),i!==t&&(J(i),J(i.parent));while(n!==e.root&&0===y(n))n===n.parent.left?(o=n.parent.right,1===y(o)&&(w(o,0),w(n.parent,1),Y(e,n.parent),o=n.parent.right),0===y(o.left)&&0===y(o.right)?(w(o,1),n=n.parent):(0===y(o.right)&&(w(o.left,0),w(o,1),X(e,o),o=n.parent.right),w(o,y(n.parent)),w(n.parent,0),w(o.right,0),Y(e,n.parent),n=e.root)):(o=n.parent.left,1===y(o)&&(w(o,0),w(n.parent,1),X(e,n.parent),o=n.parent.left),0===y(o.left)&&0===y(o.right)?(w(o,1),n=n.parent):(0===y(o.left)&&(w(o.right,0),w(o,1),Y(e,o),o=n.parent.left),w(o,y(n.parent)),w(n.parent,0),w(o.left,0),X(e,n.parent),n=e.root));w(n,0),Z()}function G(e){while(e.left!==T)e=e.left;return e}function Z(){T.parent=T,T.delta=0,T.start=0,T.end=0}function Y(e,t){var n=t.right;n.delta+=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta,t.right=n.left,n.left!==T&&(n.left.parent=t),n.parent=t.parent,t.parent===T?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left=t,t.parent=n,Q(t),Q(n)}function X(e,t){var n=t.left;t.delta-=n.delta,(t.delta<-1073741824||t.delta>1073741824)&&(e.requestNormalizeDelta=!0),t.start-=n.delta,t.end-=n.delta,t.left=n.right,n.right!==T&&(n.right.parent=t),n.parent=t.parent,t.parent===T?e.root=n:t===t.parent.right?t.parent.right=n:t.parent.left=n,n.right=t,t.parent=n,Q(t),Q(n)}function $(e){var t=e.end;if(e.left!==T){var n=e.left.maxEnd;n>t&&(t=n)}if(e.right!==T){var i=e.right.maxEnd+e.delta;i>t&&(t=i)}return t}function Q(e){e.maxEnd=$(e)}function J(e){while(e!==T){var t=$(e);if(e.maxEnd===t)return;e.maxEnd=t,e=e.parent}}function ee(e,t,n,i){return e===n?t-i:e-n}var te=function(){function e(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}return e.prototype.next=function(){if(this.right!==ne)return ie(this.right);var e=this;while(e.parent!==ne){if(e.parent.left===e)break;e=e.parent}return e.parent===ne?ne:e.parent},e.prototype.prev=function(){if(this.left!==ne)return oe(this.left);var e=this;while(e.parent!==ne){if(e.parent.right===e)break;e=e.parent}return e.parent===ne?ne:e.parent},e.prototype.detach=function(){this.parent=null,this.left=null,this.right=null},e}(),ne=new te(null,0);function ie(e){while(e.left!==ne)e=e.left;return e}function oe(e){while(e.right!==ne)e=e.right;return e}function re(e){return e===ne?0:e.size_left+e.piece.length+re(e.right)}function se(e){return e===ne?0:e.lf_left+e.piece.lineFeedCnt+se(e.right)}function ae(){ne.parent=ne}function ue(e,t){var n=t.right;n.size_left+=t.size_left+(t.piece?t.piece.length:0),n.lf_left+=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),t.right=n.left,n.left!==ne&&(n.left.parent=t),n.parent=t.parent,t.parent===ne?e.root=n:t.parent.left===t?t.parent.left=n:t.parent.right=n,n.left=t,t.parent=n}function le(e,t){var n=t.left;t.left=n.right,n.right!==ne&&(n.right.parent=t),n.parent=t.parent,t.size_left-=n.size_left+(n.piece?n.piece.length:0),t.lf_left-=n.lf_left+(n.piece?n.piece.lineFeedCnt:0),t.parent===ne?e.root=n:t===t.parent.right?t.parent.right=n:t.parent.left=n,n.right=t,t.parent=n}function ce(e,t){var n,i;if(t.left===ne?(i=t,n=i.right):t.right===ne?(i=t,n=i.left):(i=ie(t.right),n=i.right),i===e.root)return e.root=n,n.color=0,t.detach(),ae(),void(e.root.parent=ne);var o=1===i.color;if(i===i.parent.left?i.parent.left=n:i.parent.right=n,i===t?(n.parent=i.parent,pe(e,n)):(i.parent===t?n.parent=i:n.parent=i.parent,pe(e,n),i.left=t.left,i.right=t.right,i.parent=t.parent,i.color=t.color,t===e.root?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left!==ne&&(i.left.parent=i),i.right!==ne&&(i.right.parent=i),i.size_left=t.size_left,i.lf_left=t.lf_left,pe(e,i)),t.detach(),n.parent.left===n){var r=re(n),s=se(n);if(r!==n.parent.size_left||s!==n.parent.lf_left){var a=r-n.parent.size_left,u=s-n.parent.lf_left;n.parent.size_left=r,n.parent.lf_left=s,he(e,n.parent,a,u)}}if(pe(e,n.parent),o)ae();else{var l;while(n!==e.root&&0===n.color)n===n.parent.left?(l=n.parent.right,1===l.color&&(l.color=0,n.parent.color=1,ue(e,n.parent),l=n.parent.right),0===l.left.color&&0===l.right.color?(l.color=1,n=n.parent):(0===l.right.color&&(l.left.color=0,l.color=1,le(e,l),l=n.parent.right),l.color=n.parent.color,n.parent.color=0,l.right.color=0,ue(e,n.parent),n=e.root)):(l=n.parent.left,1===l.color&&(l.color=0,n.parent.color=1,le(e,n.parent),l=n.parent.left),0===l.left.color&&0===l.right.color?(l.color=1,n=n.parent):(0===l.left.color&&(l.right.color=0,l.color=1,ue(e,l),l=n.parent.left),l.color=n.parent.color,n.parent.color=0,l.left.color=0,le(e,n.parent),n=e.root));n.color=0,ae()}}function de(e,t){pe(e,t);while(t!==e.root&&1===t.parent.color)if(t.parent===t.parent.parent.left){var n=t.parent.parent.right;1===n.color?(t.parent.color=0,n.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&(t=t.parent,ue(e,t)),t.parent.color=0,t.parent.parent.color=1,le(e,t.parent.parent))}else{n=t.parent.parent.left;1===n.color?(t.parent.color=0,n.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&(t=t.parent,le(e,t)),t.parent.color=0,t.parent.parent.color=1,ue(e,t.parent.parent))}e.root.color=0}function he(e,t,n,i){while(t!==e.root&&t!==ne)t.parent.left===t&&(t.parent.size_left+=n,t.parent.lf_left+=i),t=t.parent}function pe(e,t){var n=0,i=0;if(t!==e.root){if(0===n){while(t!==e.root&&t===t.parent.right)t=t.parent;if(t===e.root)return;t=t.parent,n=re(t.left)-t.size_left,i=se(t.left)-t.lf_left,t.size_left+=n,t.lf_left+=i}while(t!==e.root&&(0!==n||0!==i))t.parent.left===t&&(t.parent.size_left+=n,t.parent.lf_left+=i),t=t.parent}}ne.parent=ne,ne.left=ne,ne.right=ne,ne.color=0;var fe=n("8c02"),ge=65535;function me(e){var t;return t=e[e.length-1]<65536?new Uint16Array(e.length):new Uint32Array(e.length),t.set(e,0),t}var ve=function(){function e(e,t,n,i,o){this.lineStarts=e,this.cr=t,this.lf=n,this.crlf=i,this.isBasicASCII=o}return e}();function _e(e,t){void 0===t&&(t=!0);for(var n=[0],i=1,o=0,r=e.length;o126)&&(s=!1)}var c=new ve(me(e),i,o,r,s);return e.length=0,c}var ye=function(){function e(e,t,n,i,o){this.bufferIndex=e,this.start=t,this.end=n,this.lineFeedCnt=i,this.length=o}return e}(),we=function(){function e(e,t){this.buffer=e,this.lineStarts=t}return e}(),Ce=function(){function e(e){this._limit=e,this._cache=[]}return e.prototype.get=function(e){for(var t=this._cache.length-1;t>=0;t--){var n=this._cache[t];if(n.nodeStartOffset<=e&&n.nodeStartOffset+n.node.piece.length>=e)return n}return null},e.prototype.get2=function(e){for(var t=this._cache.length-1;t>=0;t--){var n=this._cache[t];if(n.nodeStartLineNumber&&n.nodeStartLineNumber=e)return n}return null},e.prototype.set=function(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)},e.prototype.valdiate=function(e){for(var t=!1,n=this._cache,i=0;i=e)&&(n[i]=null,t=!0)}if(t){for(var r=[],s=0,a=n;s0){e[o].lineStarts||(e[o].lineStarts=_e(e[o].buffer));var s=new ye(o+1,{line:0,column:0},{line:e[o].lineStarts.length-1,column:e[o].buffer.length-e[o].lineStarts[e[o].lineStarts.length-1]},e[o].lineStarts.length-1,e[o].buffer.length);this._buffers.push(e[o]),i=this.rbInsertRight(i,s)}this._searchCache=new Ce(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()},e.prototype.normalizeEOL=function(e){var t=this,n=ge,i=n-Math.floor(n/3),o=2*i,r="",s=0,a=[];if(this.iterate(this.root,function(n){var u=t.getNodeContent(n),l=u.length;if(s<=i||s+l0){var u=r.replace(/\r\n|\r|\n/g,e);a.push(new we(u,_e(u)))}this.create(a,e,!0)},e.prototype.getEOL=function(){return this._EOL},e.prototype.setEOL=function(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)},e.prototype.getOffsetAt=function(e,t){var n=0,i=this.root;while(i!==ne)if(i.left!==ne&&i.lf_left+1>=e)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt+1>=e){n+=i.size_left;var o=this.getAccumulatedValue(i,e-i.lf_left-2);return n+(o+t-1)}e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right}return n},e.prototype.getPositionAt=function(e){e=Math.floor(e),e=Math.max(0,e);var t=this.root,n=0,i=e;while(t!==ne)if(0!==t.size_left&&t.size_left>=e)t=t.left;else{if(t.size_left+t.piece.length>=e){var o=this.getIndexOf(t,e-t.size_left);if(n+=t.lf_left+o.index,0===o.index){var r=this.getOffsetAt(n+1,1),s=i-r;return new l["a"](n+1,s+1)}return new l["a"](n+1,o.remainder+1)}if(e-=t.size_left+t.piece.length,n+=t.lf_left+t.piece.lineFeedCnt,t.right===ne){r=this.getOffsetAt(n+1,1),s=i-e-r;return new l["a"](n+1,s+1)}t=t.right}return new l["a"](1,1)},e.prototype.getValueInRange=function(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";var n=this.nodeAt2(e.startLineNumber,e.startColumn),i=this.nodeAt2(e.endLineNumber,e.endColumn),o=this.getValueInRange2(n,i);return t?t===this._EOL&&this._EOLNormalized&&t===this.getEOL()&&this._EOLNormalized?o:o.replace(/\r\n|\r|\n/g,t):o},e.prototype.getValueInRange2=function(e,t){if(e.node===t.node){var n=e.node,i=this._buffers[n.piece.bufferIndex].buffer,o=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return i.substring(o+e.remainder,o+t.remainder)}var r=e.node,s=this._buffers[r.piece.bufferIndex].buffer,a=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start),u=s.substring(a+e.remainder,a+r.piece.length);r=r.next();while(r!==ne){var l=this._buffers[r.piece.bufferIndex].buffer,c=this.offsetInBuffer(r.piece.bufferIndex,r.piece.start);if(r===t.node){u+=l.substring(c,c+t.remainder);break}u+=l.substr(c,r.piece.length),r=r.next()}return u},e.prototype.getLinesContent=function(){return this.getContentOfSubTree(this.root).split(/\r\n|\r|\n/)},e.prototype.getLength=function(){return this._length},e.prototype.getLineCount=function(){return this._lineCnt},e.prototype.getLineContent=function(e){return this._lastVisitedLine.lineNumber===e?this._lastVisitedLine.value:(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,""),this._lastVisitedLine.value)},e.prototype.getLineCharCode=function(e,t){var n=this.nodeAt2(e,t+1);if(n.remainder===n.node.piece.length){var i=n.node.next();if(!i)return 0;var o=this._buffers[i.piece.bufferIndex],r=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return o.buffer.charCodeAt(r)}o=this._buffers[n.node.piece.bufferIndex],r=this.offsetInBuffer(n.node.piece.bufferIndex,n.node.piece.start);var s=r+n.remainder;return o.buffer.charCodeAt(s)},e.prototype.getLineLength=function(e){if(e===this.getLineCount()){var t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength},e.prototype.findMatchesInNode=function(e,t,n,i,o,r,s,a,u,l,d){var h,p=this._buffers[e.piece.bufferIndex],f=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),g=this.offsetInBuffer(e.piece.bufferIndex,o),m=this.offsetInBuffer(e.piece.bufferIndex,r);t.reset(g);var v={line:0,column:0};do{if(h=t.next(p.buffer),h){if(h.index>=m)return l;this.positionInBuffer(e,h.index-f,v);var _=this.getLineFeedCnt(e.piece.bufferIndex,o,v),b=v.line===o.line?v.column-o.column+i:v.column+1,y=b+h[0].length;if(d[l++]=Object(fe["d"])(new c["a"](n+_,b,n+_,y),h,a),h.index+h[0].length>=m)return l;if(l>=u)return l}}while(h);return l},e.prototype.findMatchesLineByLine=function(e,t,n,i){var o=[],r=0,s=new fe["b"](t.wordSeparators,t.regex),a=this.nodeAt2(e.startLineNumber,e.startColumn);if(null===a)return[];var u=this.nodeAt2(e.endLineNumber,e.endColumn);if(null===u)return[];var l=this.positionInBuffer(a.node,a.remainder),c=this.positionInBuffer(u.node,u.remainder);if(a.node===u.node)return this.findMatchesInNode(a.node,s,e.startLineNumber,e.startColumn,l,c,t,n,i,r,o),o;var d=e.startLineNumber,h=a.node;while(h!==u.node){var p=this.getLineFeedCnt(h.piece.bufferIndex,l,h.piece.end);if(p>=1){var f=this._buffers[h.piece.bufferIndex].lineStarts,g=this.offsetInBuffer(h.piece.bufferIndex,h.piece.start),m=f[l.line+p],v=d===e.startLineNumber?e.startColumn:1;if(r=this.findMatchesInNode(h,s,d,v,l,this.positionInBuffer(h,m-g),t,n,i,r,o),r>=i)return o;d+=p}var _=d===e.startLineNumber?e.startColumn-1:0;if(d===e.endLineNumber){var b=this.getLineContent(d).substring(_,e.endColumn-1);return r=this._findMatchesInLine(t,s,b,e.endLineNumber,_,r,o,n,i),o}if(r=this._findMatchesInLine(t,s,this.getLineContent(d).substr(_),d,_,r,o,n,i),r>=i)return o;d++,a=this.nodeAt2(d,1),h=a.node,l=this.positionInBuffer(a.node,a.remainder)}if(d===e.endLineNumber){var y=d===e.startLineNumber?e.startColumn-1:0;b=this.getLineContent(d).substring(y,e.endColumn-1);return r=this._findMatchesInLine(t,s,b,e.endLineNumber,y,r,o,n,i),o}var w=d===e.startLineNumber?e.startColumn:1;return r=this.findMatchesInNode(u.node,s,d,w,l,c,t,n,i,r,o),o},e.prototype._findMatchesInLine=function(e,t,n,i,o,r,s,a,u){var l,d=e.wordSeparators;if(!a&&e.simpleSearch){var p=e.simpleSearch,f=p.length,g=n.length,m=-f;while(-1!==(m=n.indexOf(p,m+f)))if((!d||Object(fe["e"])(d,n,g,m,f))&&(s[r++]=new h["b"](new c["a"](i,m+1+o,i,m+1+f+o),null),r>=u))return r;return r}t.reset(0);do{if(l=t.next(n),l&&(s[r++]=Object(fe["d"])(new c["a"](i,l.index+1+o,i,l.index+1+l[0].length+o),l,a),r>=u))return r}while(l);return r},e.prototype.insert=function(e,t,n){if(void 0===n&&(n=!1),this._EOLNormalized=this._EOLNormalized&&n,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==ne){var i=this.nodeAt(e),o=i.node,r=i.remainder,s=i.nodeStartOffset,a=o.piece,u=a.bufferIndex,l=this.positionInBuffer(o,r);if(0===o.piece.bufferIndex&&a.end.line===this._lastChangeBufferPos.line&&a.end.column===this._lastChangeBufferPos.column&&s+a.length===e&&t.lengthe){var c=[],d=new ye(a.bufferIndex,l,a.end,this.getLineFeedCnt(a.bufferIndex,l,a.end),this.offsetInBuffer(u,a.end)-this.offsetInBuffer(u,l));if(this.shouldCheckCRLF()&&this.endWithCR(t)){var h=this.nodeCharCodeAt(o,r);if(10===h){var p={line:d.start.line+1,column:0};d=new ye(d.bufferIndex,p,d.end,this.getLineFeedCnt(d.bufferIndex,p,d.end),d.length-1),t+="\n"}}if(this.shouldCheckCRLF()&&this.startWithLF(t)){var f=this.nodeCharCodeAt(o,r-1);if(13===f){var g=this.positionInBuffer(o,r-1);this.deleteNodeTail(o,g),t="\r"+t,0===o.piece.length&&c.push(o)}else this.deleteNodeTail(o,l)}else this.deleteNodeTail(o,l);var m=this.createNewPieces(t);d.length>0&&this.rbInsertRight(o,d);for(var v=o,_=0;_=0;u--)a=this.rbInsertLeft(a,s[u]);this.validateCRLFWithPrevNode(a),this.deleteNodes(n)},e.prototype.insertContentToNodeRight=function(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+="\n");for(var n=this.createNewPieces(e),i=this.rbInsertRight(t,n[0]),o=i,r=1;r=d))break;u=c+1}}return n?(n.line=c,n.column=a-h,null):{line:c,column:a-h}},e.prototype.getLineFeedCnt=function(e,t,n){if(0===n.column)return n.line-t.line;var i=this._buffers[e].lineStarts;if(n.line===i.length-1)return n.line-t.line;var o=i[n.line+1],r=i[n.line]+n.column;if(o>r+1)return n.line-t.line;var s=r-1,a=this._buffers[e].buffer;return 13===a.charCodeAt(s)?n.line-t.line+1:n.line-t.line},e.prototype.offsetInBuffer=function(e,t){var n=this._buffers[e].lineStarts;return n[t.line]+t.column},e.prototype.deleteNodes=function(e){for(var t=0;tge){var t=[];while(e.length>ge){var n=e.charCodeAt(ge-1),i=void 0;13===n||n>=55296&&n<=56319?(i=e.substring(0,ge-1),e=e.substring(ge-1)):(i=e.substring(0,ge),e=e.substring(ge));var o=_e(i);t.push(new ye(this._buffers.length,{line:0,column:0},{line:o.length-1,column:i.length-o[o.length-1]},o.length-1,i.length)),this._buffers.push(new we(i,o))}var r=_e(e);return t.push(new ye(this._buffers.length,{line:0,column:0},{line:r.length-1,column:e.length-r[r.length-1]},r.length-1,e.length)),this._buffers.push(new we(e,r)),t}var s=this._buffers[0].buffer.length,a=_e(e,!1),u=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===s&&0!==s&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},u=this._lastChangeBufferPos;for(var l=0;l=e-1)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt>e-1){r=this.getAccumulatedValue(n,e-n.lf_left-2),u=this.getAccumulatedValue(n,e-n.lf_left-1),s=this._buffers[n.piece.bufferIndex].buffer,a=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return l+=n.size_left,this._searchCache.set({node:n,nodeStartOffset:l,nodeStartLineNumber:c-(e-1-n.lf_left)}),s.substring(a+r,a+u-t)}if(n.lf_left+n.piece.lineFeedCnt===e-1){r=this.getAccumulatedValue(n,e-n.lf_left-2),s=this._buffers[n.piece.bufferIndex].buffer,a=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);i=s.substring(a+r,a+n.piece.length);break}e-=n.lf_left+n.piece.lineFeedCnt,l+=n.size_left+n.piece.length,n=n.right}}n=n.next();while(n!==ne){s=this._buffers[n.piece.bufferIndex].buffer;if(n.piece.lineFeedCnt>0){u=this.getAccumulatedValue(n,0),a=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);return i+=s.substring(a,a+u-t),i}a=this.offsetInBuffer(n.piece.bufferIndex,n.piece.start);i+=s.substr(a,n.piece.length),n=n.next()}return i},e.prototype.computeBufferMetadata=function(){var e=this.root,t=1,n=0;while(e!==ne)t+=e.lf_left+e.piece.lineFeedCnt,n+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=n,this._searchCache.valdiate(this._length)},e.prototype.getIndexOf=function(e,t){var n=e.piece,i=this.positionInBuffer(e,t),o=i.line-n.start.line;if(this.offsetInBuffer(n.bufferIndex,n.end)-this.offsetInBuffer(n.bufferIndex,n.start)===t){var r=this.getLineFeedCnt(e.piece.bufferIndex,n.start,i);if(r!==o)return{index:r,remainder:0}}return{index:o,remainder:i.column}},e.prototype.getAccumulatedValue=function(e,t){if(t<0)return 0;var n=e.piece,i=this._buffers[n.bufferIndex].lineStarts,o=n.start.line+t+1;return o>n.end.line?i[n.end.line]+n.end.column-i[n.start.line]-n.start.column:i[o]-i[n.start.line]-n.start.column},e.prototype.deleteNodeTail=function(e,t){var n=e.piece,i=n.lineFeedCnt,o=this.offsetInBuffer(n.bufferIndex,n.end),r=t,s=this.offsetInBuffer(n.bufferIndex,r),a=this.getLineFeedCnt(n.bufferIndex,n.start,r),u=a-i,l=s-o,c=n.length+l;e.piece=new ye(n.bufferIndex,n.start,r,a,c),he(this,e,l,u)},e.prototype.deleteNodeHead=function(e,t){var n=e.piece,i=n.lineFeedCnt,o=this.offsetInBuffer(n.bufferIndex,n.start),r=t,s=this.getLineFeedCnt(n.bufferIndex,r,n.end),a=this.offsetInBuffer(n.bufferIndex,r),u=s-i,l=o-a,c=n.length+l;e.piece=new ye(n.bufferIndex,r,n.end,s,c),he(this,e,l,u)},e.prototype.shrinkNode=function(e,t,n){var i=e.piece,o=i.start,r=i.end,s=i.length,a=i.lineFeedCnt,u=t,l=this.getLineFeedCnt(i.bufferIndex,i.start,u),c=this.offsetInBuffer(i.bufferIndex,t)-this.offsetInBuffer(i.bufferIndex,o);e.piece=new ye(i.bufferIndex,i.start,u,l,c),he(this,e,c-s,l-a);var d=new ye(i.bufferIndex,n,r,this.getLineFeedCnt(i.bufferIndex,n,r),this.offsetInBuffer(i.bufferIndex,r)-this.offsetInBuffer(i.bufferIndex,n)),h=this.rbInsertRight(e,d);this.validateCRLFWithPrevNode(h)},e.prototype.appendToNode=function(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+="\n");var n=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),i=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;for(var o=_e(t,!1),r=0;re)t=t.left;else{if(t.size_left+t.piece.length>=e){i+=t.size_left;var o={node:t,remainder:e-t.size_left,nodeStartOffset:i};return this._searchCache.set(o),o}e-=t.size_left+t.piece.length,i+=t.size_left+t.piece.length,t=t.right}return null},e.prototype.nodeAt2=function(e,t){var n=this.root,i=0;while(n!==ne)if(n.left!==ne&&n.lf_left>=e-1)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt>e-1){var o=this.getAccumulatedValue(n,e-n.lf_left-2),r=this.getAccumulatedValue(n,e-n.lf_left-1);return i+=n.size_left,{node:n,remainder:Math.min(o+t-1,r),nodeStartOffset:i}}if(n.lf_left+n.piece.lineFeedCnt===e-1){o=this.getAccumulatedValue(n,e-n.lf_left-2);if(o+t-1<=n.piece.length)return{node:n,remainder:o+t-1,nodeStartOffset:i};t-=n.piece.length-o;break}e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right}n=n.next();while(n!==ne){if(n.piece.lineFeedCnt>0){r=this.getAccumulatedValue(n,0);var s=this.offsetOfNode(n);return{node:n,remainder:Math.min(t-1,r),nodeStartOffset:s}}if(n.piece.length>=t-1){var a=this.offsetOfNode(n);return{node:n,remainder:t-1,nodeStartOffset:a}}t-=n.piece.length,n=n.next()}return null},e.prototype.nodeCharCodeAt=function(e,t){if(e.piece.lineFeedCnt<1)return-1;var n=this._buffers[e.piece.bufferIndex],i=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return n.buffer.charCodeAt(i)},e.prototype.offsetOfNode=function(e){if(!e)return 0;var t=e.size_left;while(e!==this.root)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t},e.prototype.shouldCheckCRLF=function(){return!(this._EOLNormalized&&"\n"===this._EOL)},e.prototype.startWithLF=function(e){if("string"===typeof e)return 10===e.charCodeAt(0);if(e===ne||0===e.piece.lineFeedCnt)return!1;var t=e.piece,n=this._buffers[t.bufferIndex].lineStarts,i=t.start.line,o=n[i]+t.start.column;if(i===n.length-1)return!1;var r=n[i+1];return!(r>o+1)&&10===this._buffers[t.bufferIndex].buffer.charCodeAt(o)},e.prototype.endWithCR=function(e){return"string"===typeof e?13===e.charCodeAt(e.length-1):e!==ne&&0!==e.piece.lineFeedCnt&&13===this.nodeCharCodeAt(e,e.piece.length-1)},e.prototype.validateCRLFWithPrevNode=function(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){var t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}},e.prototype.validateCRLFWithNextNode=function(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){var t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}},e.prototype.fixCRLF=function(e,t){var n,i=[],o=this._buffers[e.piece.bufferIndex].lineStarts;n=0===e.piece.end.column?{line:e.piece.end.line-1,column:o[e.piece.end.line]-o[e.piece.end.line-1]-1}:{line:e.piece.end.line,column:e.piece.end.column-1};var r=e.piece.length-1,s=e.piece.lineFeedCnt-1;e.piece=new ye(e.piece.bufferIndex,e.piece.start,n,s,r),he(this,e,-1,-1),0===e.piece.length&&i.push(e);var a={line:t.piece.start.line+1,column:0},u=t.piece.length-1,l=this.getLineFeedCnt(t.piece.bufferIndex,a,t.piece.end);t.piece=new ye(t.piece.bufferIndex,a,t.piece.end,l,u),he(this,t,-1,-1),0===t.piece.length&&i.push(t);var c=this.createNewPieces("\r\n");this.rbInsertRight(e,c[0]);for(var d=0;d0){v.sort(function(e,t){return t.lineNumber-e.lineNumber}),S=[];u=0;for(var L=v.length;u0&&v[u-1].lineNumber===b)){var O=v[u].oldContent,x=this.getLineContent(b);0!==x.length&&x!==O&&-1===s["q"](x)&&S.push(b)}}}return new h["a"](w,C,S)},e.prototype._reduceOperations=function(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]},e.prototype._toSingleEditOperation=function(e){for(var t=!1,n=e[0].range,i=e[e.length-1].range,o=new c["a"](n.startLineNumber,n.startColumn,i.endLineNumber,i.endColumn),r=n.startLineNumber,s=n.startColumn,a=[],u=0,l=e.length;u0){var h=a.lines.length,p=a.lines[0],f=a.lines[h-1];d=1===h?new c["a"](u,l,u,l+p.length):new c["a"](u,l,u+h-1,f.length+1)}else d=new c["a"](u,l,u,l);n=d.endLineNumber,i=d.endColumn,t.push(d),o=a}return t},e._sortOpsAscending=function(e,t){var n=c["a"].compareRangesUsingEnds(e.range,t.range);return 0===n?e.sortIndex-t.sortIndex:n},e._sortOpsDescending=function(e,t){var n=c["a"].compareRangesUsingEnds(e.range,t.range);return 0===n?t.sortIndex-e.sortIndex:-n},e}(),Oe=function(){function e(e,t,n,i,o,r,s,a){this._chunks=e,this._bom=t,this._cr=n,this._lf=i,this._crlf=o,this._containsRTL=r,this._isBasicASCII=s,this._normalizeEOL=a}return e.prototype._getEOL=function(e){var t=this._cr+this._lf+this._crlf,n=this._cr+this._crlf;return 0===t?1===e?"\n":"\r\n":n>t/2?"\r\n":"\n"},e.prototype.create=function(e){var t=this._getEOL(e),n=this._chunks;if(this._normalizeEOL&&("\r\n"===t&&(this._cr>0||this._lf>0)||"\n"===t&&(this._cr>0||this._crlf>0)))for(var i=0,o=n.length;i=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}},e.prototype._acceptChunk1=function(e,t){(t||0!==e.length)&&(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))},e.prototype._acceptChunk2=function(e){var t=be(this._tmpLineStarts,e);this.chunks.push(new we(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,this.isBasicASCII&&(this.isBasicASCII=t.isBasicASCII),this.isBasicASCII||this.containsRTL||(this.containsRTL=s["h"](e))},e.prototype.finish=function(e){return void 0===e&&(e=!0),this._finish(),new Oe(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.isBasicASCII,e)},e.prototype._finish=function(){if(0===this.chunks.length&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;var e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);var t=_e(e.buffer);e.lineStarts=t,13===this._previousChar&&this.cr++}},e}(),Ne=function(){function e(){this.changeType=1}return e}(),De=function(){function e(e,t){this.changeType=2,this.lineNumber=e,this.detail=t}return e}(),ke=function(){function e(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}return e}(),Ie=function(){function e(e,t,n){this.changeType=4,this.fromLineNumber=e,this.toLineNumber=t,this.detail=n}return e}(),Ee=function(){function e(){this.changeType=5}return e}(),Me=function(){function e(e,t,n,i){this.changes=e,this.versionId=t,this.isUndoing=n,this.isRedoing=i}return e.prototype.containsEvent=function(e){for(var t=0,n=this.changes.length;t>>0}var Be=new Uint32Array(0).buffer,He=function(){function e(){this.tokens=[]}return e.prototype.add=function(e,t){if(this.tokens.length>0){var n=this.tokens[this.tokens.length-1],i=n.startLineNumber+n.tokens.length-1;if(i+1===e)return void n.tokens.push(t)}this.tokens.push(new ze(e,[t]))},e}(),ze=function(){function e(e,t){this.startLineNumber=e,this.tokens=t}return e}();function Ue(e){return e instanceof Uint32Array?e:new Uint32Array(e)}var Ke=function(){function e(){this._lineTokens=[],this._len=0}return e.prototype.flush=function(){this._lineTokens=[],this._len=0},e.prototype.getTokens=function(e,t,n){var i=null;if(t1&&(o=Ae["x"].getLanguageId(i[1])!==e),!o)return Be}if(!i||0===i.length){var r=new Uint32Array(2);return r[0]=t,r[1]=Ve(e),r.buffer}return i[i.length-2]=t,0===i.byteOffset&&i.byteLength===i.buffer.byteLength?i.buffer:i},e.prototype._ensureLine=function(e){while(e>=this._len)this._lineTokens[this._len]=null,this._len++},e.prototype._deleteLines=function(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)},e.prototype._insertLines=function(e,t){if(0!==t){for(var n=[],i=0;i=this._len))if(t.startLineNumber!==t.endLineNumber){this._lineTokens[n]=e._deleteEnding(this._lineTokens[n],t.startColumn-1);var i=t.endLineNumber-1,o=null;i=this._len||(0!==n?(this._lineTokens[o]=e._deleteEnding(this._lineTokens[o],t.column-1),this._lineTokens[o]=e._insert(this._lineTokens[o],t.column-1,i),this._insertLines(t.lineNumber,n)):this._lineTokens[o]=e._insert(this._lineTokens[o],t.column-1,i))}},e._deleteBeginning=function(t,n){return null===t||t===Be?t:e._delete(t,0,n)},e._deleteEnding=function(t,n){if(null===t||t===Be)return t;var i=Ue(t),o=i[i.length-2];return e._delete(t,n,o)},e._delete=function(e,t,n){if(null===e||e===Be||t===n)return e;var i=Ue(e),o=i.length>>>1;if(0===t&&i[i.length-2]===n)return Be;var r,s,a=Re["a"].findIndexInTokensArray(i,t),u=a>0?i[a-1<<1]:0,l=i[a<<1];if(ns&&(i[r++]=f,i[r++]=i[1+(p<<1)],s=f)}if(r===i.length)return e;var g=new Uint32Array(r);return g.set(i.subarray(0,r),0),g.buffer},e._append=function(e,t){if(t===Be)return e;if(e===Be)return t;if(null===e)return e;if(null===t)return null;var n=Ue(e),i=Ue(t),o=i.length>>>1,r=new Uint32Array(n.length+i.length);r.set(n,0);for(var s=n.length,a=n[n.length-2],u=0;u>>1,r=Re["a"].findIndexInTokensArray(i,t);if(r>0){var s=i[r-1<<1];s===t&&r--}for(var a=r;a=this._len)this._beginState[this._len]=null,this._valid[this._len]=!1,this._len++},e.prototype._deleteLines=function(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._beginState.splice(e,t),this._valid.splice(e,t),this._len-=t)},e.prototype._insertLines=function(e,t){if(0!==t){for(var n=[],i=[],o=0;o=0;r--)this._invalidateLine(e.startLineNumber+r-1);this._acceptDeleteRange(e),this._acceptInsertText(new l["a"](e.startLineNumber,e.startColumn),t)},e.prototype._acceptDeleteRange=function(e){var t=e.startLineNumber-1;t>=this._len||this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)},e.prototype._acceptInsertText=function(e,t){var n=e.lineNumber-1;n>=this._len||this._insertLines(e.lineNumber,t)},e}(),Ze=function(e){function t(t){var n=e.call(this)||this;return n._textModel=t,n._tokenizationStateStore=new Ge,n._revalidateTokensTimeout=-1,n._tokenizationSupport=null,n._register(Ae["y"].onDidChange(function(e){var t=n._textModel.getLanguageIdentifier();-1!==e.changedLanguages.indexOf(t.language)&&(n._resetTokenizationState(),n._textModel.clearTokens())})),n._register(n._textModel.onDidChangeRawContentFast(function(e){e.containsEvent(1)&&n._resetTokenizationState()})),n._register(n._textModel.onDidChangeContentFast(function(e){for(var t=0,i=e.changes.length;tt)break;var o=this._tokenizeOneInvalidLine(n);if(o>=e)break}this._beginBackgroundTokenization(),this._textModel.setTokens(n.tokens)},t.prototype.tokenizeViewport=function(e,t){var n=new He;this._tokenizeViewport(n,e,t),this._textModel.setTokens(n.tokens)},t.prototype.reset=function(){this._resetTokenizationState(),this._textModel.clearTokens()},t.prototype.forceTokenization=function(e){var t=new He;this._updateTokensUntilLine(t,e),this._textModel.setTokens(t.tokens)},t.prototype.isCheapToTokenize=function(e){if(!this._tokenizationSupport)return!0;var t=this._tokenizationStateStore.invalidLineStartIndex+1;return!(e>t)&&(e0&&s>=1;s--){var a=this._textModel.getLineFirstNonWhitespaceColumn(s);if(0!==a&&a=0;s--){var c=Xe(u,this._tokenizationSupport,o[s],l);l=c.endState}for(var d=t;d<=n;d++){var h=this._textModel.getLineContent(d);c=Xe(u,this._tokenizationSupport,h,l);e.add(d,c.tokens),this._tokenizationStateStore.setFakeTokens(d-1),l=c.endState}}},t}(r["a"]);function Ye(e){var t=e.getLanguageIdentifier(),n=e.isTooLargeForTokenization()?null:Ae["y"].get(t.language),o=null;if(n)try{o=n.getInitialState()}catch(r){Object(i["e"])(r),n=null}return[n,o]}function Xe(e,t,n,o){var r=null;if(t)try{r=t.tokenize2(n,o.clone(),0)}catch(s){Object(i["e"])(s)}return r||(r=Object(Fe["e"])(e.id,n,o,0)),Re["a"].convertToEndOffset(r.tokens,n.length),r}var $e=n("d093"),Qe=n("70cb"),Je=n("045b"),et=n("1080"),tt=n("ef8e"),nt=n("ceb8");n.d(t,"b",function(){return dt}),n.d(t,"a",function(){return vt});var it=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function ot(){return new xe}function rt(e){var t=ot();return t.acceptChunk(e),t.finish()}function st(e,t){var n="string"===typeof e?rt(e):e;return n.create(t)}var at=0,ut=999,lt=1e4,ct=function(){throw new Error("Invalid change accessor")},dt=function(e){function t(n,i,r,u){void 0===u&&(u=null);var l=e.call(this)||this;l._onWillDispose=l._register(new o["a"]),l.onWillDispose=l._onWillDispose.event,l._onDidChangeDecorations=l._register(new yt),l.onDidChangeDecorations=l._onDidChangeDecorations.event,l._onDidChangeLanguage=l._register(new o["a"]),l.onDidChangeLanguage=l._onDidChangeLanguage.event,l._onDidChangeLanguageConfiguration=l._register(new o["a"]),l.onDidChangeLanguageConfiguration=l._onDidChangeLanguageConfiguration.event,l._onDidChangeTokens=l._register(new o["a"]),l.onDidChangeTokens=l._onDidChangeTokens.event,l._onDidChangeOptions=l._register(new o["a"]),l.onDidChangeOptions=l._onDidChangeOptions.event,l._onDidChangeAttached=l._register(new o["a"]),l.onDidChangeAttached=l._onDidChangeAttached.event,l._eventEmitter=l._register(new wt),at++,l.id="$model"+at,l.isForSimpleWidget=i.isForSimpleWidget,l._associatedResource="undefined"===typeof u||null===u?a["a"].parse("inmemory://model/"+at):u,l._attachedEditorCount=0,l._buffer=st(n,i.defaultEOL),l._options=t.resolveOptions(l._buffer,i);var d=l._buffer.getLineCount(),h=l._buffer.getValueLengthInRange(new c["a"](1,1,d,l._buffer.getLineLength(d)+1),0);return i.largeFileOptimizations?l._isTooLargeForTokenization=h>t.LARGE_FILE_SIZE_THRESHOLD||d>t.LARGE_FILE_LINE_COUNT_THRESHOLD:l._isTooLargeForTokenization=!1,l._isTooLargeForSyncing=h>t.MODEL_SYNC_LIMIT,l._versionId=1,l._alternativeVersionId=1,l._isDisposed=!1,l._isDisposing=!1,l._languageIdentifier=r||Fe["a"],l._languageRegistryListener=Qe["a"].onDidChange(function(e){e.languageIdentifier.id===l._languageIdentifier.id&&l._onDidChangeLanguageConfiguration.fire({})}),l._instanceId=s["I"](at),l._lastDecorationId=0,l._decorations=Object.create(null),l._decorationsTree=new ht,l._commandManager=new m(l),l._isUndoing=!1,l._isRedoing=!1,l._trimAutoWhitespaceLines=null,l._tokens=new Ke,l._tokenization=new Ze(l),l}return it(t,e),t.createFromString=function(e,n,i,o){return void 0===n&&(n=t.DEFAULT_CREATION_OPTIONS),void 0===i&&(i=null),void 0===o&&(o=null),new t(e,n,i,o)},t.resolveOptions=function(e,t){if(t.detectIndentation){var n=b(e,t.tabSize,t.insertSpaces);return new h["e"]({tabSize:n.tabSize,indentSize:n.tabSize,insertSpaces:n.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})}return new h["e"]({tabSize:t.tabSize,indentSize:t.indentSize,insertSpaces:t.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})},t.prototype.onDidChangeRawContentFast=function(e){return this._eventEmitter.fastEvent(function(t){return e(t.rawContentChangedEvent)})},t.prototype.onDidChangeRawContent=function(e){return this._eventEmitter.slowEvent(function(t){return e(t.rawContentChangedEvent)})},t.prototype.onDidChangeContentFast=function(e){return this._eventEmitter.fastEvent(function(t){return e(t.contentChangedEvent)})},t.prototype.onDidChangeContent=function(e){return this._eventEmitter.slowEvent(function(t){return e(t.contentChangedEvent)})},t.prototype.dispose=function(){this._isDisposing=!0,this._onWillDispose.fire(),this._languageRegistryListener.dispose(),this._tokenization.dispose(),this._isDisposed=!0,e.prototype.dispose.call(this),this._isDisposing=!1},t.prototype._assertNotDisposed=function(){if(this._isDisposed)throw new Error("Model is disposed!")},t.prototype._emitContentChangedEvent=function(e,t){this._isDisposing||this._eventEmitter.fire(new Te(e,t))},t.prototype.setValue=function(e){if(this._assertNotDisposed(),null!==e){var t=st(e,this._options.defaultEOL);this.setValueFromTextBuffer(t)}},t.prototype._createContentChanged2=function(e,t,n,i,o,r,s){return{changes:[{range:e,rangeOffset:t,rangeLength:n,text:i}],eol:this._buffer.getEOL(),versionId:this.getVersionId(),isUndoing:o,isRedoing:r,isFlush:s}},t.prototype.setValueFromTextBuffer=function(e){if(this._assertNotDisposed(),null!==e){var t=this.getFullModelRange(),n=this.getValueLengthInRange(t),i=this.getLineCount(),o=this.getLineMaxColumn(i);this._buffer=e,this._increaseVersionId(),this._tokens.flush(),this._decorations=Object.create(null),this._decorationsTree=new ht,this._commandManager=new m(this),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new Me([new Ne],this._versionId,!1,!1),this._createContentChanged2(new c["a"](1,1,i,o),0,n,this.getValue(),!1,!1,!0))}},t.prototype.setEOL=function(e){this._assertNotDisposed();var t=1===e?"\r\n":"\n";if(this._buffer.getEOL()!==t){var n=this.getFullModelRange(),i=this.getValueLengthInRange(n),o=this.getLineCount(),r=this.getLineMaxColumn(o);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new Me([new Ee],this._versionId,!1,!1),this._createContentChanged2(new c["a"](1,1,o,r),0,i,this.getValue(),!1,!1,!1))}},t.prototype._onBeforeEOLChange=function(){var e=this.getVersionId(),t=this._decorationsTree.search(0,!1,!1,e);this._ensureNodesHaveRanges(t)},t.prototype._onAfterEOLChange=function(){for(var e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder(),n=0,i=t.length;n0},t.prototype.getAttachedEditorCount=function(){return this._attachedEditorCount},t.prototype.isTooLargeForSyncing=function(){return this._isTooLargeForSyncing},t.prototype.isTooLargeForTokenization=function(){return this._isTooLargeForTokenization},t.prototype.isDisposed=function(){return this._isDisposed},t.prototype.isDominatedByLongLines=function(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;for(var e=0,t=0,n=this._buffer.getLineCount(),i=1;i<=n;i++){var o=this._buffer.getLineLength(i);o>=lt?t+=o:e+=o}return t>e},Object.defineProperty(t.prototype,"uri",{get:function(){return this._associatedResource},enumerable:!0,configurable:!0}),t.prototype.getOptions=function(){return this._assertNotDisposed(),this._options},t.prototype.getFormattingOptions=function(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}},t.prototype.updateOptions=function(e){this._assertNotDisposed();var t="undefined"!==typeof e.tabSize?e.tabSize:this._options.tabSize,n="undefined"!==typeof e.indentSize?e.indentSize:this._options.indentSize,i="undefined"!==typeof e.insertSpaces?e.insertSpaces:this._options.insertSpaces,o="undefined"!==typeof e.trimAutoWhitespace?e.trimAutoWhitespace:this._options.trimAutoWhitespace,r=new h["e"]({tabSize:t,indentSize:n,insertSpaces:i,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:o});if(!this._options.equals(r)){var s=this._options.createChangeEvent(r);this._options=r,this._onDidChangeOptions.fire(s)}},t.prototype.detectIndentation=function(e,t){this._assertNotDisposed();var n=b(this._buffer,t,e);this.updateOptions({insertSpaces:n.insertSpaces,tabSize:n.tabSize,indentSize:n.tabSize})},t._normalizeIndentationFromWhitespace=function(e,t,n){for(var i=0,o=0;othis.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineContent(e)},t.prototype.getLineLength=function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)},t.prototype.getLinesContent=function(){return this._assertNotDisposed(),this._buffer.getLinesContent()},t.prototype.getEOL=function(){return this._assertNotDisposed(),this._buffer.getEOL()},t.prototype.getLineMinColumn=function(e){return this._assertNotDisposed(),1},t.prototype.getLineMaxColumn=function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1},t.prototype.getLineFirstNonWhitespaceColumn=function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)},t.prototype.getLineLastNonWhitespaceColumn=function(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)},t.prototype._validateRangeRelaxedNoAllocations=function(e){var t,n,i=this._buffer.getLineCount(),o=e.startLineNumber,r=e.startColumn;if(o<1)t=1,n=1;else if(o>i)t=i,n=this.getLineMaxColumn(t);else if(t=0|o,r<=1)n=1;else{var s=this.getLineMaxColumn(t);n=r>=s?s:0|r}var a,u,l=e.endLineNumber,h=e.endColumn;if(l<1)a=1,u=1;else if(l>i)a=i,u=this.getLineMaxColumn(a);else if(a=0|l,h<=1)u=1;else{s=this.getLineMaxColumn(a);u=h>=s?s:0|h}return o===t&&r===n&&l===a&&h===u&&e instanceof c["a"]&&!(e instanceof d["a"])?e:new c["a"](t,n,a,u)},t.prototype._isValidPosition=function(e,t,n){if("number"!==typeof e||"number"!==typeof t)return!1;if(isNaN(e)||isNaN(t))return!1;if(e<1||t<1)return!1;if((0|e)!==e||(0|t)!==t)return!1;var i=this._buffer.getLineCount();if(e>i)return!1;var o=this.getLineMaxColumn(e);if(t>o)return!1;if(n&&t>1){var r=this._buffer.getLineCharCode(e,t-2);if(s["w"](r))return!1}return!0},t.prototype._validatePosition=function(e,t,n){var i=Math.floor("number"!==typeof e||isNaN(e)?1:e),o=Math.floor("number"!==typeof t||isNaN(t)?1:t),r=this._buffer.getLineCount();if(i<1)return new l["a"](1,1);if(i>r)return new l["a"](r,this.getLineMaxColumn(r));if(o<=1)return new l["a"](i,1);var a=this.getLineMaxColumn(i);if(o>=a)return new l["a"](i,a);if(n){var u=this._buffer.getLineCharCode(i,o-2);if(s["w"](u))return new l["a"](i,o-1)}return new l["a"](i,o)},t.prototype.validatePosition=function(e){return this._assertNotDisposed(),e instanceof l["a"]&&this._isValidPosition(e.lineNumber,e.column,!0)?e:this._validatePosition(e.lineNumber,e.column,!0)},t.prototype._isValidRange=function(e,t){var n=e.startLineNumber,i=e.startColumn,o=e.endLineNumber,r=e.endColumn;if(!this._isValidPosition(n,i,!1))return!1;if(!this._isValidPosition(o,r,!1))return!1;if(t){var a=i>1?this._buffer.getLineCharCode(n,i-2):0,u=r>1&&r<=this._buffer.getLineLength(o)?this._buffer.getLineCharCode(o,r-2):0,l=s["w"](a),c=s["w"](u);return!l&&!c}return!0},t.prototype.validateRange=function(e){if(this._assertNotDisposed(),e instanceof c["a"]&&!(e instanceof d["a"])&&this._isValidRange(e,!0))return e;var t=this._validatePosition(e.startLineNumber,e.startColumn,!1),n=this._validatePosition(e.endLineNumber,e.endColumn,!1),i=t.lineNumber,o=t.column,r=n.lineNumber,a=n.column,u=o>1?this._buffer.getLineCharCode(i,o-2):0,l=a>1&&a<=this._buffer.getLineLength(r)?this._buffer.getLineCharCode(r,a-2):0,h=s["w"](u),p=s["w"](l);return h||p?i===r&&o===a?new c["a"](i,o-1,r,a-1):h&&p?new c["a"](i,o-1,r,a+1):h?new c["a"](i,o-1,r,a):new c["a"](i,o,r,a+1):new c["a"](i,o,r,a)},t.prototype.modifyPosition=function(e,t){this._assertNotDisposed();var n=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,n)))},t.prototype.getFullModelRange=function(){this._assertNotDisposed();var e=this.getLineCount();return new c["a"](1,1,e,this.getLineMaxColumn(e))},t.prototype.findMatchesLineByLine=function(e,t,n,i){return this._buffer.findMatchesLineByLine(e,t,n,i)},t.prototype.findMatches=function(e,t,n,i,o,r,s){var a;if(void 0===s&&(s=ut),this._assertNotDisposed(),a=c["a"].isIRange(t)?this.validateRange(t):this.getFullModelRange(),!n&&e.indexOf("\n")<0){var u=new fe["a"](e,n,i,o),l=u.parseSearchRequest();return l?this.findMatchesLineByLine(a,l,r,s):[]}return fe["c"].findMatches(this,new fe["a"](e,n,i,o),a,r,s)},t.prototype.findNextMatch=function(e,t,n,i,o,r){this._assertNotDisposed();var s=this.validatePosition(t);if(!n&&e.indexOf("\n")<0){var a=new fe["a"](e,n,i,o),u=a.parseSearchRequest();if(!u)return null;var l=this.getLineCount(),d=new c["a"](s.lineNumber,s.column,l,this.getLineMaxColumn(l)),h=this.findMatchesLineByLine(d,u,r,1);return fe["c"].findNextMatch(this,new fe["a"](e,n,i,o),s,r),h.length>0?h[0]:(d=new c["a"](1,1,s.lineNumber,this.getLineMaxColumn(s.lineNumber)),h=this.findMatchesLineByLine(d,u,r,1),h.length>0?h[0]:null)}return fe["c"].findNextMatch(this,new fe["a"](e,n,i,o),s,r)},t.prototype.findPreviousMatch=function(e,t,n,i,o,r){this._assertNotDisposed();var s=this.validatePosition(t);return fe["c"].findPreviousMatch(this,new fe["a"](e,n,i,o),s,r)},t.prototype.pushStackElement=function(){this._commandManager.pushStackElement()},t.prototype.pushEOL=function(e){var t="\n"===this.getEOL()?0:1;if(t!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}},t.prototype.pushEditOperations=function(e,t,n){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,t,n)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}},t.prototype._pushEditOperations=function(e,t,n){var i=this;if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){for(var o=t.map(function(e){return{range:i.validateRange(e.range),text:e.text}}),r=!0,s=0,a=e.length;su.endLineNumber,g=u.startLineNumber>p.endLineNumber;if(!f&&!g){l=!0;break}}if(!l){r=!1;break}}if(r)for(s=0,a=this._trimAutoWhitespaceLines.length;sp.endLineNumber)&&(!(m===p.startLineNumber&&p.startColumn===v&&p.isEmpty()&&b&&b.length>0&&"\n"===b.charAt(0))&&!(m===p.startLineNumber&&1===p.startColumn&&p.isEmpty()&&b&&b.length>0&&"\n"===b.charAt(b.length-1)))){_=!1;break}}_&&t.push({range:new c["a"](m,1,m,v),text:null})}this._trimAutoWhitespaceLines=null}return this._commandManager.pushEditOperation(e,t,n)},t.prototype.applyEdits=function(e){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._applyEdits(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}},t.prototype._applyEdits=function(e){for(var t=0,n=e.length;t=0;b--){var y=p+b,w=r-u-_+y;a.push(new De(y,this.getLineContent(w)))}if(vthis.getLineCount()?[]:this.getLinesDecorations(e,e,t,n)},t.prototype.getLinesDecorations=function(e,t,n,i){void 0===n&&(n=0),void 0===i&&(i=!1);var o=this.getLineCount(),r=Math.min(o,Math.max(1,e)),s=Math.min(o,Math.max(1,t)),a=this.getLineMaxColumn(s);return this._getDecorationsInRange(new c["a"](r,1,s,a),n,i)},t.prototype.getDecorationsInRange=function(e,t,n){void 0===t&&(t=0),void 0===n&&(n=!1);var i=this.validateRange(e);return this._getDecorationsInRange(i,t,n)},t.prototype.getOverviewRulerDecorations=function(e,t){void 0===e&&(e=0),void 0===t&&(t=!1);var n=this.getVersionId(),i=this._decorationsTree.search(e,t,!0,n);return this._ensureNodesHaveRanges(i)},t.prototype.getAllDecorations=function(e,t){void 0===e&&(e=0),void 0===t&&(t=!1);var n=this.getVersionId(),i=this._decorationsTree.search(e,t,!1,n);return this._ensureNodesHaveRanges(i)},t.prototype._getDecorationsInRange=function(e,t,n){var i=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),o=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn),r=this.getVersionId(),s=this._decorationsTree.intervalSearch(i,o,t,n,r);return this._ensureNodesHaveRanges(s)},t.prototype._ensureNodesHaveRanges=function(e){for(var t=0,n=e.length;tthis.getLineCount())throw new Error("Illegal value for lineNumber");this._tokens.setTokens(this._languageIdentifier.id,e-1,this._buffer.getLineLength(e),t)},t.prototype.setTokens=function(e){if(0!==e.length){for(var t=[],n=0,i=e.length;nthis.getLineCount())throw new Error("Illegal value for lineNumber");this._tokenization.forceTokenization(e)},t.prototype.isCheapToTokenize=function(e){return this._tokenization.isCheapToTokenize(e)},t.prototype.tokenizeIfCheap=function(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)},t.prototype.getLineTokens=function(e){if(e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._getLineTokens(e)},t.prototype._getLineTokens=function(e){var t=this.getLineContent(e);return this._tokens.getTokens(this._languageIdentifier.id,e-1,t)},t.prototype.getLanguageIdentifier=function(){return this._languageIdentifier},t.prototype.getModeId=function(){return this._languageIdentifier.language},t.prototype.setMode=function(e){if(this._languageIdentifier.id!==e.id){var t={oldLanguage:this._languageIdentifier.language,newLanguage:e.language};this._languageIdentifier=e,this._onDidChangeLanguage.fire(t),this._onDidChangeLanguageConfiguration.fire({})}},t.prototype.getLanguageIdAtPosition=function(e,t){var n=this.validatePosition(new l["a"](e,t)),i=this.getLineTokens(n.lineNumber);return i.getLanguageId(i.findTokenIndexAtOffset(n.column-1))},t.prototype.getWordAtPosition=function(e){this._assertNotDisposed();var n=this.validatePosition(e),i=this.getLineContent(n.lineNumber),o=this._getLineTokens(n.lineNumber),r=o.findTokenIndexAtOffset(n.column-1),s=t._findLanguageBoundaries(o,r),a=s[0],u=s[1],l=Object($e["d"])(n.column,Qe["a"].getWordDefinition(o.getLanguageId(r)),i.substring(a,u),a);if(l&&l.startColumn<=e.column&&e.column<=l.endColumn)return l;if(r>0&&a===n.column-1){var c=t._findLanguageBoundaries(o,r-1),d=c[0],h=c[1],p=Object($e["d"])(n.column,Qe["a"].getWordDefinition(o.getLanguageId(r-1)),i.substring(d,h),d);if(p&&p.startColumn<=e.column&&e.column<=p.endColumn)return p}return null},t._findLanguageBoundaries=function(e,t){for(var n=e.getLanguageId(t),i=0,o=t;o>=0&&e.getLanguageId(o)===n;o--)i=e.getStartOffset(o);for(var r=e.getLineContent().length,s=(o=t,e.getCount());o0&&n.getStartOffset(o)===e.column-1){a=n.getStartOffset(o);o--;var h=Qe["a"].getBracketsSupport(n.getLanguageId(o));if(h&&!Object(Je["b"])(n.getStandardTokenType(o))){s=Math.max(n.getStartOffset(o),e.column-1-h.maxBracketLength),l=et["a"].findPrevBracketInToken(h.reversedRegex,t,i,s,a);if(l&&l.startColumn<=e.column&&e.column<=l.endColumn){c=i.substring(l.startColumn-1,l.endColumn-1);c=c.toLowerCase();d=this._matchFoundBracket(l,h.textIsBracket[c],h.textIsOpenBracket[c]);if(d)return d}}}return null},t.prototype._matchFoundBracket=function(e,t,n){if(!t)return null;if(n){var i=this._findMatchingBracketDown(t,e.getEndPosition());if(i)return[e,i]}else{i=this._findMatchingBracketUp(t,e.getStartPosition());if(i)return[e,i]}return null},t.prototype._findMatchingBracketUp=function(e,t){for(var n=e.languageIdentifier.id,i=e.reversedRegex,o=-1,r=t.lineNumber;r>=1;r--){var s=this._getLineTokens(r),a=s.getCount(),u=this._buffer.getLineContent(r),l=a-1,c=-1;for(r===t.lineNumber&&(l=s.findTokenIndexAtOffset(t.column-1),c=t.column-1);l>=0;l--){var d=s.getLanguageId(l),h=s.getStandardTokenType(l),p=s.getStartOffset(l),f=s.getEndOffset(l);if(-1===c&&(c=f),d===n&&!Object(Je["b"])(h))while(1){var g=et["a"].findPrevBracketInToken(i,r,u,p,c);if(!g)break;var m=u.substring(g.startColumn-1,g.endColumn-1);if(m=m.toLowerCase(),m===e.open?o++:m===e.close&&o--,0===o)return g;c=g.startColumn-1}c=-1}}return null},t.prototype._findMatchingBracketDown=function(e,t){for(var n=e.languageIdentifier.id,i=e.forwardRegex,o=1,r=t.lineNumber,s=this.getLineCount();r<=s;r++){var a=this._getLineTokens(r),u=a.getCount(),l=this._buffer.getLineContent(r),c=0,d=0;for(r===t.lineNumber&&(c=a.findTokenIndexAtOffset(t.column-1),d=t.column-1);c=1;o--){var r=this._getLineTokens(o),s=r.getCount(),a=this._buffer.getLineContent(o),u=s-1,l=-1;for(o===t.lineNumber&&(u=r.findTokenIndexAtOffset(t.column-1),l=t.column-1);u>=0;u--){var c=r.getLanguageId(u),d=r.getStandardTokenType(u),h=r.getStartOffset(u),p=r.getEndOffset(u);if(-1===l&&(l=p),n!==c&&(n=c,i=Qe["a"].getBracketsSupport(n)),i&&!Object(Je["b"])(d)){var f=et["a"].findPrevBracketInToken(i.reversedRegex,o,a,h,l);if(f)return this._toFoundBracket(i,f)}l=-1}}return null},t.prototype.findNextBracket=function(e){for(var t=this.validatePosition(e),n=-1,i=null,o=t.lineNumber,r=this.getLineCount();o<=r;o++){var s=this._getLineTokens(o),a=s.getCount(),u=this._buffer.getLineContent(o),l=0,c=0;for(o===t.lineNumber&&(l=s.findTokenIndexAtOffset(t.column-1),c=t.column-1);lo)throw new Error("Illegal value for lineNumber");for(var r=Qe["a"].getFoldingRules(this._languageIdentifier.id),s=Boolean(r&&r.offSide),a=-2,u=-1,l=-2,c=-1,d=function(e){if(-1!==a&&(-2===a||a>e-1)){a=-1,u=-1;for(var t=e-2;t>=0;t--){var n=i._computeIndentLevel(t);if(n>=0){a=t,u=n;break}}}if(-2===l){l=-1,c=-1;for(t=e;t=0){l=t,c=r;break}}}},h=-2,p=-1,f=-2,g=-1,m=function(e){if(-2===h){h=-1,p=-1;for(var t=e-2;t>=0;t--){var n=i._computeIndentLevel(t);if(n>=0){h=t,p=n;break}}}if(-1!==f&&(-2===f||f=0){f=t,g=r;break}}}},v=0,_=!0,b=0,y=!0,w=0,C=0;_||y;C++){var S=e-C,L=e+C;if(0!==C&&(S<1||So||L>n)&&(y=!1),C>5e4&&(_=!1,y=!1),_){var O=void 0,x=this._computeIndentLevel(S-1);if(x>=0?(l=S-1,c=x,O=Math.ceil(x/this._options.indentSize)):(d(S),O=this._getIndentLevelForWhitespaceLine(s,u,c)),0===C){if(v=S,b=L,w=O,0===w)return{startLineNumber:v,endLineNumber:b,indent:w};continue}O>=w?v=S:_=!1}if(y){var N=void 0;x=this._computeIndentLevel(L-1);x>=0?(h=L-1,p=x,N=Math.ceil(x/this._options.indentSize)):(m(L),N=this._getIndentLevelForWhitespaceLine(s,p,g)),N>=w?b=L:y=!1}}return{startLineNumber:v,endLineNumber:b,indent:w}},t.prototype.getLinesIndentGuides=function(e,t){this._assertNotDisposed();var n=this.getLineCount();if(e<1||e>n)throw new Error("Illegal value for startLineNumber");if(t<1||t>n)throw new Error("Illegal value for endLineNumber");for(var i=Qe["a"].getFoldingRules(this._languageIdentifier.id),o=Boolean(i&&i.offSide),r=new Array(t-e+1),s=-2,a=-1,u=-2,l=-1,c=e;c<=t;c++){var d=c-e,h=this._computeIndentLevel(c-1);if(h>=0)s=c-1,a=h,r[d]=Math.ceil(h/this._options.indentSize);else{if(-2===s){s=-1,a=-1;for(var p=c-2;p>=0;p--){var f=this._computeIndentLevel(p);if(f>=0){s=p,a=f;break}}}if(-1!==u&&(-2===u||u=0){u=p,l=f;break}}}r[d]=this._getIndentLevelForWhitespaceLine(o,a,l)}}return r},t.prototype._getIndentLevelForWhitespaceLine=function(e,t,n){return-1===t||-1===n?0:t0?this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e:(this._fastEmitter.fire(e),this._slowEmitter.fire(e))},t}(r["a"])},b589:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"a",function(){return a});var i,o=n("6d8e"),r=n("30db");(function(e){e.inMemory="inmemory",e.vscode="vscode",e.internal="private",e.walkThrough="walkThrough",e.walkThroughSnippet="walkThroughSnippet",e.http="http",e.https="https",e.file="file",e.mailto="mailto",e.untitled="untitled",e.data="data",e.command="command",e.vscodeRemote="vscode-remote",e.vscodeRemoteResource="vscode-remote-resource",e.userData="vscode-userdata"})(i||(i={}));var s=function(){function e(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http"}return e.prototype.setPreferredWebSchema=function(e){this._preferredWebSchema=e},e.prototype.rewrite=function(e,t){var n=this._hosts[e],s=this._ports[e],a=this._connectionTokens[e];return o["a"].from({scheme:r["f"]?this._preferredWebSchema:i.vscodeRemoteResource,authority:n+":"+s,path:"/vscode-remote-resource",query:"path="+encodeURIComponent(t)+"&tkn="+encodeURIComponent(a)})},e}(),a=new s},b707:function(e,t,n){"use strict";var i=n("ef8e"),o=n("6d8e"),r=n("6a89"),s=n("308f"),a=n("a666"),u=n("9768");function l(e,t,n,i){if(Array.isArray(e)){for(var o=0,r=0,s=e;ro&&(o=c)}return o}if("string"===typeof e)return i?"*"===e?5:e===n?10:0:0;if(e){var d=e.language,h=e.pattern,p=e.scheme,f=e.hasAccessToAllModels;if(!i&&!f)return 0;o=0;if(p)if(p===t.scheme)o=10;else{if("*"!==p)return 0;o=5}if(d)if(d===n)o=10;else{if("*"!==d)return 0;o=Math.max(o,5)}if(h){if(h!==t.fsPath&&!Object(u["a"])(h,t.fsPath))return 0;o=10}return o}return 0}var c=n("1b69");function d(e){return"string"!==typeof e&&(Array.isArray(e)?e.every(d):!!e.exclusive)}var h=function(){function e(){this._clock=0,this._entries=[],this._onDidChange=new s["a"]}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!0,configurable:!0}),e.prototype.register=function(e,t){var n=this,i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),Object(a["h"])(function(){if(i){var e=n._entries.indexOf(i);e>=0&&(n._entries.splice(e,1),n._lastCandidate=void 0,n._onDidChange.fire(n._entries.length),i=void 0)}})},e.prototype.has=function(e){return this.all(e).length>0},e.prototype.all=function(e){if(!e)return[];this._updateScores(e);for(var t=[],n=0,i=this._entries;n0&&t.push(o.provider)}return t},e.prototype.ordered=function(e){var t=[];return this._orderedForEach(e,function(e){return t.push(e.provider)}),t},e.prototype.orderedGroups=function(e){var t,n,i=[];return this._orderedForEach(e,function(e){t&&n===e._score?t.push(e.provider):(n=e._score,t=[e.provider],i.push(t))}),i},e.prototype._orderedForEach=function(e,t){if(e){this._updateScores(e);for(var n=0,i=this._entries;n0&&t(o)}}},e.prototype._updateScores=function(t){var n={uri:t.uri.toString(),language:t.getLanguageIdentifier().language};if(!this._lastCandidate||this._lastCandidate.language!==n.language||this._lastCandidate.uri!==n.uri){this._lastCandidate=n;for(var i=0,o=this._entries;i0){for(var s=0,a=this._entries;st._score?-1:e._timet._time?-1:0},e}(),p=n("4035"),f=function(){function e(){this._map=new Map,this._promises=new Map,this._onDidChange=new s["a"],this.onDidChange=this._onDidChange.event,this._colorMap=null}return e.prototype.fire=function(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})},e.prototype.register=function(e,t){var n=this;return this._map.set(e,t),this.fire([e]),Object(a["h"])(function(){n._map.get(e)===t&&(n._map.delete(e),n.fire([e]))})},e.prototype.registerPromise=function(e,t){var n=this,i=null,o=!1;return this._promises.set(e,t.then(function(t){n._promises.delete(e),!o&&t&&(i=n.register(e,t))})),Object(a["h"])(function(){o=!0,i&&i.dispose()})},e.prototype.getPromise=function(e){var t=this,n=this.get(e);if(n)return Promise.resolve(n);var i=this._promises.get(e);return i?i.then(function(n){return t.get(e)}):null},e.prototype.get=function(e){return Object(i["n"])(this._map.get(e))},e.prototype.setColorMap=function(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Object(p["d"])(this._map),changedColorMap:!0})},e.prototype.getColorMap=function(){return this._colorMap},e.prototype.getDefaultBackground=function(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null},e}();n.d(t,"p",function(){return v}),n.d(t,"x",function(){return _}),n.d(t,"B",function(){return b}),n.d(t,"A",function(){return y}),n.d(t,"w",function(){return g}),n.d(t,"h",function(){return m}),n.d(t,"C",function(){return w}),n.d(t,"E",function(){return C}),n.d(t,"l",function(){return S}),n.d(t,"D",function(){return L}),n.d(t,"s",function(){return O}),n.d(t,"t",function(){return x}),n.d(t,"d",function(){return N}),n.d(t,"v",function(){return D}),n.d(t,"n",function(){return k}),n.d(t,"k",function(){return I}),n.d(t,"i",function(){return E}),n.d(t,"f",function(){return M}),n.d(t,"e",function(){return T}),n.d(t,"o",function(){return P}),n.d(t,"z",function(){return R}),n.d(t,"b",function(){return A}),n.d(t,"a",function(){return F}),n.d(t,"g",function(){return j}),n.d(t,"j",function(){return W}),n.d(t,"r",function(){return V}),n.d(t,"q",function(){return B}),n.d(t,"c",function(){return H}),n.d(t,"u",function(){return z}),n.d(t,"m",function(){return U}),n.d(t,"y",function(){return K});var g,m,v=function(){function e(e,t){this.language=e,this.id=t}return e}(),_=function(){function e(){}return e.getLanguageId=function(e){return(255&e)>>>0},e.getTokenType=function(e){return(1792&e)>>>8},e.getFontStyle=function(e){return(14336&e)>>>11},e.getForeground=function(e){return(8372224&e)>>>14},e.getBackground=function(e){return(4286578688&e)>>>23},e.getClassNameFromMetadata=function(e){var t=this.getForeground(e),n="mtk"+t,i=this.getFontStyle(e);return 1&i&&(n+=" mtki"),2&i&&(n+=" mtkb"),4&i&&(n+=" mtku"),n},e.getInlineStyleFromMetadata=function(e,t){var n=this.getForeground(e),i=this.getFontStyle(e),o="color: "+t[n]+";";return 1&i&&(o+="font-style: italic;"),2&i&&(o+="font-weight: bold;"),4&i&&(o+="text-decoration: underline;"),o},e}(),b=function(){var e=Object.create(null);return e[0]="method",e[1]="function",e[2]="constructor",e[3]="field",e[4]="variable",e[5]="class",e[6]="struct",e[7]="interface",e[8]="module",e[9]="property",e[10]="event",e[11]="operator",e[12]="unit",e[13]="value",e[14]="constant",e[15]="enum",e[16]="enum-member",e[17]="keyword",e[25]="snippet",e[18]="text",e[19]="color",e[20]="file",e[21]="reference",e[22]="customcolor",e[23]="folder",e[24]="type-parameter",function(t){return e[t]||"property"}}(),y=function(){var e=Object.create(null);return e["method"]=0,e["function"]=1,e["constructor"]=2,e["field"]=3,e["variable"]=4,e["class"]=5,e["struct"]=6,e["interface"]=7,e["module"]=8,e["property"]=9,e["event"]=10,e["operator"]=11,e["unit"]=12,e["value"]=13,e["constant"]=14,e["enum"]=15,e["enum-member"]=16,e["enumMember"]=16,e["keyword"]=17,e["snippet"]=25,e["text"]=18,e["color"]=19,e["file"]=20,e["reference"]=21,e["customcolor"]=22,e["folder"]=23,e["type-parameter"]=24,e["typeParameter"]=24,function(t,n){var i=e[t];return"undefined"!==typeof i||n||(i=9),i}}();function w(e){return e&&o["a"].isUri(e.uri)&&r["a"].isIRange(e.range)&&(r["a"].isIRange(e.originSelectionRange)||r["a"].isIRange(e.targetSelectionRange))}(function(e){e[e["Invoke"]=1]="Invoke",e[e["TriggerCharacter"]=2]="TriggerCharacter",e[e["ContentChange"]=3]="ContentChange"})(g||(g={})),function(e){e[e["Text"]=0]="Text",e[e["Read"]=1]="Read",e[e["Write"]=2]="Write"}(m||(m={}));var C=function(){var e=Object.create(null);return e[0]="file",e[1]="module",e[2]="namespace",e[3]="package",e[4]="class",e[5]="method",e[6]="property",e[7]="field",e[8]="constructor",e[9]="enum",e[10]="interface",e[11]="function",e[12]="variable",e[13]="constant",e[14]="string",e[15]="number",e[16]="boolean",e[17]="array",e[18]="object",e[19]="key",e[20]="null",e[21]="enum-member",e[22]="struct",e[23]="event",e[24]="operator",e[25]="type-parameter",function(t,n){return"symbol-icon "+(n?"inline":"block")+" "+(e[t]||"property")}}(),S=function(){function e(e){this.value=e}return e.Comment=new e("comment"),e.Imports=new e("imports"),e.Region=new e("region"),e}();function L(e){return Object(i["h"])(e)&&e.resource&&Array.isArray(e.edits)}var O=new h,x=new h,N=new h,D=new h,k=new h,I=new h,E=new h,M=new h,T=new h,P=new h,R=new h,A=new h,F=new h,j=new h,W=new h,V=new h,B=new h,H=new h,z=new h,U=new h,K=new f},b768:function(e,t,n){},b78f:function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("0a0f"),o=Object(i["c"])("textModelService")},b7d0:function(e,t,n){"use strict";n.d(t,"c",function(){return a}),n.d(t,"g",function(){return u}),n.d(t,"d",function(){return c}),n.d(t,"b",function(){return d}),n.d(t,"e",function(){return h}),n.d(t,"a",function(){return p}),n.d(t,"f",function(){return m});var i=n("0a0f"),o=n("a666"),r=n("89cd"),s=n("308f"),a=Object(i["c"])("themeService");function u(e){return{id:e}}var l="dark",c="light",d="hc";function h(e){switch(e){case l:return"vs-dark";case d:return"hc-black";default:return"vs"}}var p={ThemingContribution:"base.contributions.theming"},f=function(){function e(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new s["a"]}return e.prototype.onThemeChange=function(e){var t=this;return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),Object(o["h"])(function(){var n=t.themingParticipants.indexOf(e);t.themingParticipants.splice(n,1)})},e.prototype.getThemingParticipants=function(){return this.themingParticipants},e}(),g=new f;function m(e){return g.onThemeChange(e)}r["a"].add(p.ThemingContribution,g)},b800:function(e,t,n){"use strict";n.d(t,"d",function(){return a}),n.d(t,"b",function(){return l}),n.d(t,"a",function(){return c}),n.d(t,"c",function(){return m});var i,o=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),r=function(){function e(){this.value="",this.pos=0}return e.isDigitCharacter=function(e){return e>=48&&e<=57},e.isVariableCharacter=function(e){return 95===e||e>=97&&e<=122||e>=65&&e<=90},e.prototype.text=function(e){this.value=e,this.pos=0},e.prototype.tokenText=function(e){return this.value.substr(e.pos,e.len)},e.prototype.next=function(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};var t,n=this.pos,i=0,o=this.value.charCodeAt(n);if(t=e._table[o],"number"===typeof t)return this.pos+=1,{type:t,pos:n,len:1};if(e.isDigitCharacter(o)){t=8;do{i+=1,o=this.value.charCodeAt(n+i)}while(e.isDigitCharacter(o));return this.pos+=i,{type:t,pos:n,len:i}}if(e.isVariableCharacter(o)){t=9;do{o=this.value.charCodeAt(n+ ++i)}while(e.isVariableCharacter(o)||e.isDigitCharacter(o));return this.pos+=i,{type:t,pos:n,len:i}}t=10;do{i+=1,o=this.value.charCodeAt(n+i)}while(!isNaN(o)&&"undefined"===typeof e._table[o]&&!e.isDigitCharacter(o)&&!e.isVariableCharacter(o));return this.pos+=i,{type:t,pos:n,len:i}},e._table=(i={},i[36]=0,i[58]=1,i[44]=2,i[123]=3,i[125]=4,i[92]=5,i[47]=6,i[124]=7,i[43]=11,i[45]=12,i[63]=13,i),e}(),s=function(){function e(){this._children=[]}return e.prototype.appendChild=function(e){return e instanceof a&&this._children[this._children.length-1]instanceof a?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this},e.prototype.replace=function(e,t){var n=e.parent,i=n.children.indexOf(e),o=n.children.slice(0);o.splice.apply(o,[i,1].concat(t)),n._children=o,function e(t,n){for(var i=0,o=t;it.index?1:0},Object.defineProperty(t.prototype,"isFinalTabstop",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"choice",{get:function(){return 1===this._children.length&&this._children[0]instanceof c?this._children[0]:void 0},enumerable:!0,configurable:!0}),t.prototype.clone=function(){var e=new t(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map(function(e){return e.clone()}),e},t}(u),c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.options=[],t}return o(t,e),t.prototype.appendChild=function(e){return e instanceof a&&(e.parent=this,this.options.push(e)),this},t.prototype.toString=function(){return this.options[0].value},t.prototype.len=function(){return this.options[0].len()},t.prototype.clone=function(){var e=new t;return this.options.forEach(e.appendChild,e),e},t}(s),d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.regexp=new RegExp(""),t}return o(t,e),t.prototype.resolve=function(e){var t=this,n=!1,i=e.replace(this.regexp,function(){return n=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))});return!n&&this._children.some(function(e){return e instanceof h&&Boolean(e.elseValue)})&&(i=this._replace([])),i},t.prototype._replace=function(e){for(var t="",n=0,i=this._children;n0){var i=n.shift(),o=t(i);if(!o)break;n.unshift.apply(n,i.children)}}var g=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),Object.defineProperty(t.prototype,"placeholderInfo",{get:function(){if(!this._placeholders){var e,t=[];this.walk(function(n){return n instanceof l&&(t.push(n),e=!e||e.index0?o.set(e.index,e.children):r.push(e)),!0});for(var a=0,u=r;a0&&t),!o.has(0)&&n&&i.appendChild(new l(0)),i},e.prototype._accept=function(e,t){if(void 0===e||this._token.type===e){var n=!t||this._scanner.tokenText(this._token);return this._token=this._scanner.next(),n}return!1},e.prototype._backTo=function(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1},e.prototype._until=function(e){if(14===this._token.type)return!1;var t="",n=this._token.pos,i={type:14,pos:0,len:0};while(this._token.type!==e||5===i.type)if(this._token.type===e&&(t+=this._scanner.value.substring(n,i.pos),n=this._token.pos),i=this._token,this._token=this._scanner.next(),14===this._token.type)return!1;return t+=this._scanner.value.substring(n,this._token.pos),this._token=this._scanner.next(),t},e.prototype._parse=function(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)},e.prototype._parseEscaped=function(e){var t;return!!(t=this._accept(5,!0))&&(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new a(t)),!0)},e.prototype._parseTabstopOrVariableName=function(e){var t,n=this._token,i=this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0));return i?(e.appendChild(/^\d+$/.test(t)?new l(Number(t)):new p(t)),!0):this._backTo(n)},e.prototype._parseComplexPlaceholder=function(e){var t,n=this._token,i=this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0));if(!i)return this._backTo(n);var o=new l(Number(t));if(this._accept(1))while(1){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new a("${"+t+":")),o.children.forEach(e.appendChild,e),!0}else{if(!(o.index>0&&this._accept(7)))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(n),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(n);var r=new c;while(1){if(this._parseChoiceElement(r)){if(this._accept(2))continue;if(this._accept(7)&&(o.appendChild(r),this._accept(4)))return e.appendChild(o),!0}return this._backTo(n),!1}}},e.prototype._parseChoiceElement=function(e){var t=this._token,n=[];while(1){if(2===this._token.type||7===this._token.type)break;var i=void 0;if(i=(i=this._accept(5,!0))?this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||i:this._accept(void 0,!0),!i)return this._backTo(t),!1;n.push(i)}return 0===n.length?(this._backTo(t),!1):(e.appendChild(new a(n.join(""))),!0)},e.prototype._parseComplexVariable=function(e){var t,n=this._token,i=this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0));if(!i)return this._backTo(n);var o=new p(t);if(!this._accept(1))return this._accept(6)?this._parseTransform(o)?(e.appendChild(o),!0):(this._backTo(n),!1):this._accept(4)?(e.appendChild(o),!0):this._backTo(n);while(1){if(this._accept(4))return e.appendChild(o),!0;if(!this._parse(o))return e.appendChild(new a("${"+t+":")),o.children.forEach(e.appendChild,e),!0}},e.prototype._parseTransform=function(e){var t=new d,n="",i="";while(1){if(this._accept(6))break;var o=void 0;if(o=this._accept(5,!0))o=this._accept(6,!0)||o,n+=o;else{if(14===this._token.type)return!1;n+=this._accept(void 0,!0)}}while(1){if(this._accept(6))break;o=void 0;if(o=this._accept(5,!0))o=this._accept(5,!0)||this._accept(6,!0)||o,t.appendChild(new a(o));else if(!this._parseFormatString(t)&&!this._parseAnything(t))return!1}while(1){if(this._accept(4))break;if(14===this._token.type)return!1;i+=this._accept(void 0,!0)}try{t.regexp=new RegExp(n,i)}catch(r){return!1}return e.transform=t,!0},e.prototype._parseFormatString=function(e){var t=this._token;if(!this._accept(0))return!1;var n=!1;this._accept(3)&&(n=!0);var i=this._accept(8,!0);if(!i)return this._backTo(t),!1;if(!n)return e.appendChild(new h(Number(i))),!0;if(this._accept(4))return e.appendChild(new h(Number(i))),!0;if(!this._accept(1))return this._backTo(t),!1;if(this._accept(6)){var o=this._accept(9,!0);return o&&this._accept(4)?(e.appendChild(new h(Number(i),o)),!0):(this._backTo(t),!1)}if(this._accept(11)){var r=this._until(4);if(r)return e.appendChild(new h(Number(i),void 0,r,void 0)),!0}else if(this._accept(12)){var s=this._until(4);if(s)return e.appendChild(new h(Number(i),void 0,void 0,s)),!0}else if(this._accept(13)){r=this._until(1);if(r){s=this._until(4);if(s)return e.appendChild(new h(Number(i),void 0,r,s)),!0}}else{s=this._until(4);if(s)return e.appendChild(new h(Number(i),void 0,void 0,s)),!0}return this._backTo(t),!1},e.prototype._parseAnything=function(e){return 14!==this._token.type&&(e.appendChild(new a(this._scanner.tokenText(this._token))),this._accept(void 0),!0)},e}()},b805:function(e,t,n){},b835:function(e,t,n){"use strict";n.d(t,"a",function(){return p});var i=n("0f70"),o=n("fe45"),r=n("30db"),s=new Array(230),a=new Array(112);function u(e){if(e.charCode){var t=String.fromCharCode(e.charCode).toUpperCase();return o["b"].fromString(t)}return s[e.keyCode]||0}(function(){for(var e=0;e0){n=o[0].getStartPosition();var r=t.getTopForPosition(n.lineNumber,n.column);i=t.getScrollTop()-r}}return new e(n,i)},e.prototype.restore=function(e){if(this._visiblePosition){var t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}},e}()},bcc1:function(e,t,n){},bd50:function(e,t,n){"use strict";n.r(t);var i=n("b2cc"),o=n("b1ca"),r=n("03d9"),s=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),a=function(e){function t(){var t=e.call(this,{id:"editor.action.toggleHighContrast",label:r["h"].toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0})||this;return t._originalThemeName=null,t}return s(t,e),t.prototype.run=function(e,t){var n=e.get(o["a"]);this._originalThemeName?(n.setTheme(this._originalThemeName),this._originalThemeName=null):(this._originalThemeName=n.getTheme().themeName,n.setTheme("hc-black"))},t}(i["b"]);Object(i["f"])(a)},be5f:function(e,t,n){"use strict";n.d(t,"d",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"c",function(){return s}),n.d(t,"a",function(){return a});var i=Object.prototype.hasOwnProperty;function o(e){var t=[];for(var n in e)i.call(e,n)&&t.push(e[n]);return t}function r(e){for(var t in e)if(i.call(e,t))return e[t]}function s(e,t){var n=function(n){if(i.call(e,n)){var o=t({key:n,value:e[n]},function(){delete e[n]});if(!1===o)return{value:void 0}}};for(var o in e){var r=n(o);if("object"===typeof r)return r.value}}var a=function(){function e(){this.map=new Map}return e.prototype.add=function(e,t){var n=this.map.get(e);n||(n=new Set,this.map.set(e,n)),n.add(t)},e.prototype.delete=function(e,t){var n=this.map.get(e);n&&(n.delete(t),0===n.size&&this.map.delete(e))},e.prototype.forEach=function(e,t){var n=this.map.get(e);n&&n.forEach(t)},e}()},bfe0:function(e,t,n){"use strict";n.r(t),n.d(t,"EditorActionCommandEntry",function(){return f}),n.d(t,"QuickCommandAction",function(){return g});var i=n("3742"),o=n("0f70"),r=n("fdcc"),s=n("7e93"),a=n("469c"),u=n("b2cc"),l=n("c101"),c=n("af33"),d=n("6dec"),h=n("03d9"),p=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),f=function(e){function t(t,n,i,o,r){var s=e.call(this)||this;return s.key=t,s.keyAriaLabel=n,s.setHighlights(i),s.action=o,s.editor=r,s}return p(t,e),t.prototype.getLabel=function(){return this.action.label},t.prototype.getAriaLabel=function(){return this.keyAriaLabel?i["r"](h["d"].ariaLabelEntryWithKey,this.getLabel(),this.keyAriaLabel):i["r"](h["d"].ariaLabelEntry,this.getLabel())},t.prototype.getGroupLabel=function(){return this.key},t.prototype.run=function(e,t){var n=this;return 1===e&&(setTimeout(function(){n.editor.focus();try{var e=n.action.run()||Promise.resolve();e.then(void 0,r["e"])}catch(t){Object(r["e"])(t)}},50),!0)},t}(a["b"]),g=function(e){function t(){return e.call(this,h["d"].quickCommandActionInput,{id:"editor.action.quickCommand",label:h["d"].quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:l["a"].focus,primary:o["j"]?571:59,weight:100},menuOpts:{group:"z_commands",order:1}})||this}return p(t,e),t.prototype.run=function(e,t){var n=this,i=e.get(d["a"]);this._show(this.getController(t),{getModel:function(e){return new a["c"](n._editorActionsToEntries(i,t,e))},getAutoFocus:function(e){return{autoFocusFirstEntry:!0,autoFocusPrefixMatch:e}}})},t.prototype._sort=function(e,t){var n=(e.getLabel()||"").toLowerCase(),i=(t.getLabel()||"").toLowerCase();return n.localeCompare(i)},t.prototype._editorActionsToEntries=function(e,t,n){for(var i=t.getSupportedActions(),o=[],r=0,a=i;r1){var y=o["a"].visibleColumnFromColumn(_,b+1,d);if(y%h!==0&&t.isCheapToTokenize(v-1)){var w=a["a"].getRawEnterActionAtPosition(t,v-1,t.getLineMaxColumn(v-1));if(w){if(m=g,w.appendText)for(var C=0,S=w.appendText.length;C0){switch(l=Math.min(c<=.5?d/(2*c):d/(2-2*c),1),s){case n:u=(i-o)/d+(i1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},e.toRGBA=function(t){var n,i,r,s=t.h/360,a=t.s,u=t.l,l=t.a;if(0===a)n=i=r=u;else{var c=u<.5?u*(1+a):u+a-u*a,d=2*u-c;n=e._hue2rgb(d,c,s+1/3),i=e._hue2rgb(d,c,s),r=e._hue2rgb(d,c,s-1/3)}return new o(Math.round(255*n),Math.round(255*i),Math.round(255*r),l)},e}(),s=function(){function e(e,t,n,o){this.h=0|Math.max(Math.min(360,e),0),this.s=i(Math.max(Math.min(1,t),0),3),this.v=i(Math.max(Math.min(1,n),0),3),this.a=i(Math.max(Math.min(1,o),0),3)}return e.equals=function(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a},e.fromRGBA=function(t){var n,i=t.r/255,o=t.g/255,r=t.b/255,s=Math.max(i,o,r),a=Math.min(i,o,r),u=s-a,l=0===s?0:u/s;return n=0===u?0:s===i?((o-r)/u%6+6)%6:s===o?(r-i)/u+2:(i-o)/u+4,new e(Math.round(60*n),l,s,t.a)},e.toRGBA=function(e){var t=e.h,n=e.s,i=e.v,r=e.a,s=i*n,a=s*(1-Math.abs(t/60%2-1)),u=i-s,l=[0,0,0],c=l[0],d=l[1],h=l[2];return t<60?(c=s,d=a):t<120?(c=a,d=s):t<180?(d=s,h=a):t<240?(d=a,h=s):t<300?(c=a,h=s):t<360&&(c=s,h=a),c=Math.round(255*(c+u)),d=Math.round(255*(d+u)),h=Math.round(255*(h+u)),new o(c,d,h,r)},e}(),a=function(){function e(e){if(!e)throw new Error("Color needs a value");if(e instanceof o)this.rgba=e;else if(e instanceof r)this._hsla=e,this.rgba=r.toRGBA(e);else{if(!(e instanceof s))throw new Error("Invalid color ctor argument");this._hsva=e,this.rgba=s.toRGBA(e)}}return e.fromHex=function(t){return e.Format.CSS.parseHex(t)||e.red},Object.defineProperty(e.prototype,"hsla",{get:function(){return this._hsla?this._hsla:r.fromRGBA(this.rgba)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hsva",{get:function(){return this._hsva?this._hsva:s.fromRGBA(this.rgba)},enumerable:!0,configurable:!0}),e.prototype.equals=function(e){return!!e&&o.equals(this.rgba,e.rgba)&&r.equals(this.hsla,e.hsla)&&s.equals(this.hsva,e.hsva)},e.prototype.getRelativeLuminance=function(){var t=e._relativeLuminanceForComponent(this.rgba.r),n=e._relativeLuminanceForComponent(this.rgba.g),o=e._relativeLuminanceForComponent(this.rgba.b),r=.2126*t+.7152*n+.0722*o;return i(r,4)},e._relativeLuminanceForComponent=function(e){var t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)},e.prototype.isLighter=function(){var e=(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3;return e>=128},e.prototype.isLighterThan=function(e){var t=this.getRelativeLuminance(),n=e.getRelativeLuminance();return t>n},e.prototype.isDarkerThan=function(e){var t=this.getRelativeLuminance(),n=e.getRelativeLuminance();return t/?";function o(e){void 0===e&&(e="");for(var t="(-?\\d*\\.\\d\\w*)|([^",n=0,o=i;n=0||(t+="\\"+r)}return t+="\\s]+)",new RegExp(t,"g")}var r=o();function s(e){var t=r;if(e&&e instanceof RegExp)if(e.global)t=e;else{var n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}function a(e,t,n,i){var o,r=e-1-i,s=n.lastIndexOf(" ",r-1)+1;t.lastIndex=s;while(o=t.exec(n)){var a=o.index||0;if(a<=r&&t.lastIndex>=r)return{word:o[0],startColumn:i+1+a,endColumn:i+1+t.lastIndex}}return null}function u(e,t,n,i){var o,r=e-1-i;t.lastIndex=0;while(o=t.exec(n)){var s=o.index||0;if(s>r)return null;if(t.lastIndex>=r)return{word:o[0],startColumn:i+1+s,endColumn:i+1+t.lastIndex}}return null}function l(e,t,n,i){t.lastIndex=0;var o=t.exec(n);if(!o)return null;var r=o[0].indexOf(" ")>=0?u(e,t,n,i):a(e,t,n,i);return t.lastIndex=0,r}},d379:function(e,t,n){"use strict";n.d(t,"a",function(){return g});var i=n("aa3d"),o=n("5717"),r=n("9c1d"),s=n("9e74"),a=n("4fc3"),u=n("0a0f"),l=n("b0cd"),c=n("b7d0"),d=n("4779"),h=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),p=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},f=function(e,t){return function(n,i){t(n,i,e)}},g=function(e){function t(t,n,i,o,r,s,a,u,l,c){var d=e.call(this,t,i.getRawConfiguration(),{},o,r,s,a,u,l,c)||this;return d._parentEditor=i,d._overwriteOptions=n,e.prototype.updateOptions.call(d,d._overwriteOptions),d._register(i.onDidChangeConfiguration(function(e){return d._onParentConfigurationChanged(e)})),d}return h(t,e),t.prototype.getParentEditor=function(){return this._parentEditor},t.prototype._onParentConfigurationChanged=function(t){e.prototype.updateOptions.call(this,this._parentEditor.getRawConfiguration()),e.prototype.updateOptions.call(this,this._overwriteOptions)},t.prototype.updateOptions=function(t){i["g"](this._overwriteOptions,t,!0),e.prototype.updateOptions.call(this,this._overwriteOptions)},t=p([f(3,u["a"]),f(4,o["a"]),f(5,s["b"]),f(6,a["c"]),f(7,c["c"]),f(8,l["a"]),f(9,d["b"])],t),t}(r["a"])},d3d7:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=n("0a0f"),o=Object(i["c"])("logService"),r=function(){function e(){}return e.prototype.trace=function(e){for(var t=[],n=1;nthis._limit&&this._initialize(e.slice(e.length-this._limit))},e.prototype._initialize=function(e){this._history=new Set;for(var t=0,n=e;t=0;o--){var r=e.charCodeAt(o),s=t.get(r);if(0===s){if(2===i)return this._createWord(e,i,s,o+1,this._findEndOfWord(e,t,i,o+1));i=1}else if(2===s){if(1===i)return this._createWord(e,i,s,o+1,this._findEndOfWord(e,t,i,o+1));i=2}else if(1===s&&0!==i)return this._createWord(e,i,s,o+1,this._findEndOfWord(e,t,i,o+1))}return 0!==i?this._createWord(e,i,1,0,this._findEndOfWord(e,t,i,0)):null},e._findEndOfWord=function(e,t,n,i){for(var o=e.length,r=i;r=0;o--){var r=e.charCodeAt(o),s=t.get(r);if(1===s)return o+1;if(1===n&&2===s)return o+1;if(2===n&&0===s)return o+1}return 0},e.moveWordLeft=function(t,n,i,o){var r=i.lineNumber,a=i.column,u=!1;1===a&&r>1&&(u=!0,r-=1,a=n.getLineMaxColumn(r));var l=e._findPreviousWordOnLine(t,n,new s["a"](r,a));if(0===o){if(l&&!u){var c=n.getLineLastNonWhitespaceColumn(r);if(c1?new s["a"](n-1,e.getLineMaxColumn(n-1)):t;for(var r=e.getLineContent(n),a=t.column-1;a>1;a--){var u=r.charCodeAt(a-2),l=r.charCodeAt(a-1);if(95!==u&&95===l)return new s["a"](n,a);if(i["y"](u)&&i["z"](l))return new s["a"](n,a);if(i["z"](u)&&i["z"](l)&&a+1=l.start+1&&(l=e._findNextWordOnLine(t,n,new s["a"](r,l.end+1))),a=l?l.start+1:n.getLineMaxColumn(r);return new s["a"](r,a)},e._moveWordPartRight=function(e,t){var n=t.lineNumber,o=e.getLineMaxColumn(n);if(t.column===o)return n1?c=1:(l--,c=n.getLineMaxColumn(l)):(h&&c<=h.end+1&&(h=e._findPreviousWordOnLine(t,n,new s["a"](l,h.start+1))),h?c=h.end+1:c>1?c=1:(l--,c=n.getLineMaxColumn(l))),new a["a"](l,c,u.lineNumber,u.column)},e._deleteWordPartLeft=function(t,n){if(!n.isEmpty())return n;var i=n.getPosition(),o=e._moveWordPartLeft(t,i);return new a["a"](i.lineNumber,i.column,o.lineNumber,o.column)},e._findFirstNonWhitespaceChar=function(e,t){for(var n=e.length,i=t;i=f.start+1&&(f=e._findNextWordOnLine(t,n,new s["a"](l,f.end+1))),f?c=f.start+1:co,d=i>r,h=ir)continue;if(bi)continue;if(_1&&o--,e.columnSelect(t,n,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,o)},e.columnSelectRight=function(e,t,n){for(var i=0,o=Math.min(n.fromViewLineNumber,n.toViewLineNumber),r=Math.max(n.fromViewLineNumber,n.toViewLineNumber),s=o;s<=r;s++){var l=t.getLineMaxColumn(s),c=a["a"].visibleColumnFromColumn2(e,t,new u["a"](s,l));i=Math.max(i,c)}var d=n.toViewVisualColumn;return d1)for(var r=n.modelState?n.modelState.position:null,s=n.viewState?n.viewState.position:null,a=0,u=o.length;ao&&(i=o);var r=new l["a"](i,1,i,e.context.model.getLineMaxColumn(i)),s=0;if(n.at)switch(n.at){case _.RawAtArgument.Top:s=3;break;case _.RawAtArgument.Center:s=1;break;case _.RawAtArgument.Bottom:s=4;break;default:break}var a=e.context.convertModelRangeToViewRange(r);e.revealRange(!1,a,s,0)},t}(S))),e.SelectAll=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"selectAll",precondition:void 0})||this}return w(t,e),t.prototype.runCoreEditorCommand=function(e,t){e.context.model.pushStackElement(),e.setStates(t.source,3,[h["b"].selectAll(e.context,e.getPrimaryCursor())])},t}(S))),e.SetSelection=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"setSelection",precondition:void 0})||this}return w(t,e),t.prototype.runCoreEditorCommand=function(e,t){e.context.model.pushStackElement(),e.setStates(t.source,3,[a["d"].fromModelSelection(t.selection)])},t}(S)))}(b||(b={})),function(e){var t=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t.prototype.runEditorCommand=function(e,t,n){var i=t._getCursors();i&&this.runCoreEditingCommand(t,i,n||{})},t}(r["c"]);e.CoreEditingCommand=t,e.LineBreakInsert=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"lineBreakInsert",precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:g["a"].textInputFocus,primary:0,mac:{primary:301}}})||this}return w(t,e),t.prototype.runCoreEditingCommand=function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,p["a"].lineBreakInsert(t.context.config,t.context.model,t.getAll().map(function(e){return e.modelState.selection})))},t}(t))),e.Outdent=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"outdent",precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:m["a"].and(g["a"].editorTextFocus,g["a"].tabDoesNotMoveFocus),primary:1026}})||this}return w(t,e),t.prototype.runCoreEditingCommand=function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,p["a"].outdent(t.context.config,t.context.model,t.getAll().map(function(e){return e.modelState.selection}))),e.pushUndoStop()},t}(t))),e.Tab=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"tab",precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:m["a"].and(g["a"].editorTextFocus,g["a"].tabDoesNotMoveFocus),primary:2}})||this}return w(t,e),t.prototype.runCoreEditingCommand=function(e,t,n){e.pushUndoStop(),e.executeCommands(this.id,p["a"].tab(t.context.config,t.context.model,t.getAll().map(function(e){return e.modelState.selection}))),e.pushUndoStop()},t}(t))),e.DeleteLeft=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"deleteLeft",precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:g["a"].textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})||this}return w(t,e),t.prototype.runCoreEditingCommand=function(e,t,n){var i=d["a"].deleteLeft(t.getPrevEditOperationType(),t.context.config,t.context.model,t.getAll().map(function(e){return e.modelState.selection})),o=i[0],r=i[1];o&&e.pushUndoStop(),e.executeCommands(this.id,r),t.setPrevEditOperationType(2)},t}(t))),e.DeleteRight=Object(r["g"])(new(function(e){function t(){return e.call(this,{id:"deleteRight",precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:g["a"].textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})||this}return w(t,e),t.prototype.runCoreEditingCommand=function(e,t,n){var i=d["a"].deleteRight(t.getPrevEditOperationType(),t.context.config,t.context.model,t.getAll().map(function(e){return e.modelState.selection})),o=i[0],r=i[1];o&&e.pushUndoStop(),e.executeCommands(this.id,r),t.setPrevEditOperationType(3)},t}(t)))}(y||(y={}));var O=function(e){function t(t){var n=e.call(this,t)||this;return n._editorHandler=t.editorHandler,n._inputHandler=t.inputHandler,n}return w(t,e),t.prototype.runCommand=function(e,t){var n=e.get(s["a"]).getFocusedCodeEditor();if(n&&n.hasTextFocus())return this._runEditorHandler(e,n,t);var i=document.activeElement;if(!(i&&["input","textarea"].indexOf(i.tagName.toLowerCase())>=0)){var o=e.get(s["a"]).getActiveCodeEditor();return o?(o.focus(),this._runEditorHandler(e,o,t)):void 0}document.execCommand(this._inputHandler)},t.prototype._runEditorHandler=function(e,t,n){var i=this._editorHandler;"string"===typeof i?t.trigger("keyboard",i,n):(n=n||{},n.source="keyboard",i.runEditorCommand(e,t,n))},t}(r["a"]),x=function(e){function t(t,n,i){var o=e.call(this,{id:t,precondition:void 0,description:i})||this;return o._handlerId=n,o}return w(t,e),t.prototype.runCommand=function(e,t){var n=e.get(s["a"]).getFocusedCodeEditor();n&&n.trigger("keyboard",this._handlerId,t)},t}(r["a"]);function N(e,t){L(new x("default:"+e,e)),L(new x(e,e,t))}L(new O({editorHandler:b.SelectAll,inputHandler:"selectAll",id:"editor.action.selectAll",precondition:g["a"].textInputFocus,kbOpts:{weight:C,kbExpr:null,primary:2079},menubarOpts:{menuId:22,group:"1_basic",title:i["a"]({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1}})),L(new O({editorHandler:f["b"].Undo,inputHandler:"undo",id:f["b"].Undo,precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:g["a"].textInputFocus,primary:2104},menubarOpts:{menuId:14,group:"1_do",title:i["a"]({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1}})),L(new x("default:"+f["b"].Undo,f["b"].Undo)),L(new O({editorHandler:f["b"].Redo,inputHandler:"redo",id:f["b"].Redo,precondition:g["a"].writable,kbOpts:{weight:C,kbExpr:g["a"].textInputFocus,primary:2103,secondary:[3128],mac:{primary:3128}},menubarOpts:{menuId:14,group:"1_do",title:i["a"]({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2}})),L(new x("default:"+f["b"].Redo,f["b"].Redo)),N(f["b"].Type,{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]}),N(f["b"].ReplacePreviousChar),N(f["b"].CompositionStart),N(f["b"].CompositionEnd),N(f["b"].Paste),N(f["b"].Cut)},d741:function(e,t,n){"use strict";n.r(t);var i=n("e8e3"),o=n("2504"),r=n("b2cc"),s=n("7061"),a=n("6a89"),u=n("8025"),l=n("c101"),c=n("b707"),d=n("dff7"),h=n("a666"),p=n("3742"),f=function(){function e(){}return e.prototype.provideSelectionRanges=function(e,t){for(var n=[],i=0,o=t;i=0;u--){var d=o.charCodeAt(u);if(95===d||45===d)break;if(Object(p["y"])(d)&&Object(p["z"])(c))break;c=d}for(u+=1;l0&&0===t.getLineFirstNonWhitespaceColumn(n.lineNumber)&&0===t.getLineLastNonWhitespaceColumn(n.lineNumber)&&e.push({range:new a["a"](n.lineNumber,1,n.lineNumber,t.getLineMaxColumn(n.lineNumber))})},e}(),g=n("67b4"),m=n("9e74"),v=n("fdcc");n.d(t,"provideSelectionRanges",function(){return x});var _=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),b=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},y=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=this.ranges.length)return this;var i=new e(n,this.ranges);return i.ranges[n].equalsRange(this.ranges[this.index])?i.mov(t):i},e}(),C=function(){function e(e){this._ignoreSelection=!1,this._editor=e}return e.get=function(t){return t.getContribution(e._id)},e.prototype.dispose=function(){Object(h["f"])(this._selectionListener)},e.prototype.getId=function(){return e._id},e.prototype.run=function(e){var t=this;if(this._editor.hasModel()){var n=this._editor.getSelections(),r=this._editor.getModel();if(c["u"].has(r)){var s=Promise.resolve(void 0);return this._state||(s=x(r,n.map(function(e){return e.getPosition()}),o["a"].None).then(function(e){if(i["n"](e)&&e.length===n.length&&t._editor.hasModel()&&i["g"](t._editor.getSelections(),n,function(e,t){return e.equalsSelection(t)})){for(var o=function(t){e[t]=e[t].filter(function(e){return e.containsPosition(n[t].getStartPosition())&&e.containsPosition(n[t].getEndPosition())}),e[t].unshift(n[t])},r=0;r0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},T=function(e,t){return function(n,i){t(n,i,e)}},P=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},R=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0&&"#"===e.charAt(e.length-1)?e.substring(0,e.length-1):e}var a=function(){function e(){this._onDidChangeSchema=new o["a"],this.schemasById={}}return e.prototype.registerSchema=function(e,t){this.schemasById[s(e)]=t,this._onDidChangeSchema.fire(e)},e.prototype.notifySchemaChanged=function(e){this._onDidChangeSchema.fire(e)},e}(),u=new a;i["a"].add(r.JSONContribution,u)},dde9:function(e,t,n){},dea0:function(e,t,n){"use strict";var i,o=n("11f7"),r=n("31df"),s=n("fdcc"),a=n("78bc"),u=n("9c3e");(function(e){var t={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:v,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,nptable:v,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,table:v,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,text:/^[^\n]+/};function n(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||C.defaults,this.rules=t.normal,this.options.pedantic?this.rules=t.pedantic:this.options.gfm&&(this.options.tables?this.rules=t.tables:this.rules=t.gfm)}t._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,t._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,t.def=h(t.def).replace("label",t._label).replace("title",t._title).getRegex(),t.bullet=/(?:[*+-]|\d{1,9}\.)/,t.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,t.item=h(t.item,"gm").replace(/bull/g,t.bullet).getRegex(),t.list=h(t.list).replace(/bull/g,t.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+t.def.source+")").getRegex(),t._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",t._comment=//,t.html=h(t.html,"i").replace("comment",t._comment).replace("tag",t._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),t.paragraph=h(t.paragraph).replace("hr",t.hr).replace("heading",t.heading).replace("lheading",t.lheading).replace("tag",t._tag).getRegex(),t.blockquote=h(t.blockquote).replace("paragraph",t.paragraph).getRegex(),t.normal=_({},t),t.gfm=_({},t.normal,{fences:/^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),t.gfm.paragraph=h(t.paragraph).replace("(?!","(?!"+t.gfm.fences.source.replace("\\1","\\2")+"|"+t.list.source.replace("\\1","\\3")+"|").getRegex(),t.tables=_({},t.gfm,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),t.pedantic=_({},t.normal,{html:h("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",t._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/}),n.rules=t,n.lex=function(e,t){var i=new n(t);return i.lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,n){var i,o,r,s,a,u,l,c,d,h,p,f,g,m,v,_;e=e.replace(/^ +$/gm,"");while(e)if((r=this.rules.newline.exec(e))&&(e=e.substring(r[0].length),r[0].length>1&&this.tokens.push({type:"space"})),r=this.rules.code.exec(e))e=e.substring(r[0].length),r=r[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",text:this.options.pedantic?r:y(r,"\n")});else if(r=this.rules.fences.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"code",lang:r[2]?r[2].trim():r[2],text:r[3]||""});else if(r=this.rules.heading.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"heading",depth:r[1].length,text:r[2]});else if((r=this.rules.nptable.exec(e))&&(u={type:"table",header:b(r[1].replace(/^ *| *\| *$/g,"")),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:r[3]?r[3].replace(/\n$/,"").split("\n"):[]},u.header.length===u.align.length)){for(e=e.substring(r[0].length),p=0;p ?/gm,""),this.token(r,n),this.tokens.push({type:"blockquote_end"});else if(r=this.rules.list.exec(e)){for(e=e.substring(r[0].length),s=r[2],m=s.length>1,l={type:"list_start",ordered:m,start:m?+s:"",loose:!1},this.tokens.push(l),r=r[0].match(this.rules.item),c=[],i=!1,g=r.length,p=0;p1?1===a.length:a.length>1||this.options.smartLists&&a!==s)&&(e=r.slice(p+1).join("\n")+e,p=g-1)),o=i||/\n\n(?!\s*$)/.test(u),p!==g-1&&(i="\n"===u.charAt(u.length-1),o||(o=i)),o&&(l.loose=!0),v=/^\[[ xX]\] /.test(u),_=void 0,v&&(_=" "!==u[1],u=u.replace(/^\[[ xX]\] +/,"")),d={type:"list_item_start",task:v,checked:_,loose:o},c.push(d),this.tokens.push(d),this.token(u,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(g=c.length,p=0;p?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:v,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:v,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",o.em=h(o.em).replace(/punctuation/g,o._punctuation).getRegex(),o._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,o._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,o._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,o.autolink=h(o.autolink).replace("scheme",o._scheme).replace("email",o._email).getRegex(),o._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,o.tag=h(o.tag).replace("comment",t._comment).replace("attribute",o._attribute).getRegex(),o._label=/(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|`(?!`)|[^\[\]\\`])*?/,o._href=/\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/,o._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,o.link=h(o.link).replace("label",o._label).replace("href",o._href).replace("title",o._title).getRegex(),o.reflink=h(o.reflink).replace("label",o._label).getRegex(),o.normal=_({},o),o.pedantic=_({},o.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:h(/^!?\[(label)\]\((.*?)\)/).replace("label",o._label).getRegex(),reflink:h(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",o._label).getRegex()}),o.gfm=_({},o.normal,{escape:h(o.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(s[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(s[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(s[0])&&(this.inRawBlock=!1),e=e.substring(s[0].length),u+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(s[0]):c(s[0]):s[0];else if(s=this.rules.link.exec(e)){var l=w(s[2],"()");if(l>-1){var d=s[0].length-(s[2].length-l)-(s[3]||"").length;s[2]=s[2].substring(0,l),s[0]=s[0].substring(0,d).trim(),s[3]=""}e=e.substring(s[0].length),this.inLink=!0,i=s[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i),t?(i=t[1],o=t[3]):o=""):o=s[3]?s[3].slice(1,-1):"",i=i.trim().replace(/^<([\s\S]*)>$/,"$1"),u+=this.outputLink(s,{href:r.escapes(i),title:r.escapes(o)}),this.inLink=!1}else if((s=this.rules.reflink.exec(e))||(s=this.rules.nolink.exec(e))){if(e=e.substring(s[0].length),t=(s[2]||s[1]).replace(/\s+/g," "),t=this.links[t.toLowerCase()],!t||!t.href){u+=s[0].charAt(0),e=s[0].substring(1)+e;continue}this.inLink=!0,u+=this.outputLink(s,t),this.inLink=!1}else if(s=this.rules.strong.exec(e))e=e.substring(s[0].length),u+=this.renderer.strong(this.output(s[4]||s[3]||s[2]||s[1]));else if(s=this.rules.em.exec(e))e=e.substring(s[0].length),u+=this.renderer.em(this.output(s[6]||s[5]||s[4]||s[3]||s[2]||s[1]));else if(s=this.rules.code.exec(e))e=e.substring(s[0].length),u+=this.renderer.codespan(c(s[2].trim(),!0));else if(s=this.rules.br.exec(e))e=e.substring(s[0].length),u+=this.renderer.br();else if(s=this.rules.del.exec(e))e=e.substring(s[0].length),u+=this.renderer.del(this.output(s[1]));else if(s=this.rules.autolink.exec(e))e=e.substring(s[0].length),"@"===s[2]?(n=c(this.mangle(s[1])),i="mailto:"+n):(n=c(s[1]),i=n),u+=this.renderer.link(i,null,n);else if(this.inLink||!(s=this.rules.url.exec(e))){if(s=this.rules.text.exec(e))e=e.substring(s[0].length),this.inRawBlock?u+=this.renderer.text(s[0]):u+=this.renderer.text(c(this.smartypants(s[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===s[2])n=c(s[0]),i="mailto:"+n;else{do{a=s[0],s[0]=this.rules._backpedal.exec(s[0])[0]}while(a!==s[0]);n=c(s[0]),i="www."===s[1]?"http://"+n:n}e=e.substring(s[0].length),u+=this.renderer.link(i,null,n)}return u},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var n=t.href,i=t.title?c(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,i,this.output(e[1])):this.renderer.image(n,i,c(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",i=e.length,o=0;o.5&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},s.prototype.code=function(e,t,n){var i=(t||"").match(/\S*/)[0];if(this.options.highlight){var o=this.options.highlight(e,i);null!=o&&o!==e&&(n=!0,e=o)}return i?'
    '+(n?e:c(e,!0))+"
    \n":"
    "+(n?e:c(e,!0))+"
    "},s.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},s.prototype.html=function(e){return e},s.prototype.heading=function(e,t,n,i){return this.options.headerIds?"'+e+"\n":""+e+"\n"},s.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},s.prototype.list=function(e,t,n){var i=t?"ol":"ul",o=t&&1!==n?' start="'+n+'"':"";return"<"+i+o+">\n"+e+"\n"},s.prototype.listitem=function(e){return"
  1. "+e+"
  2. \n"},s.prototype.checkbox=function(e){return" "},s.prototype.paragraph=function(e){return"

    "+e+"

    \n"},s.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},s.prototype.tablerow=function(e){return"\n"+e+"\n"},s.prototype.tablecell=function(e,t){var n=t.header?"th":"td",i=t.align?"<"+n+' align="'+t.align+'">':"<"+n+">";return i+e+"\n"},s.prototype.strong=function(e){return""+e+""},s.prototype.em=function(e){return""+e+""},s.prototype.codespan=function(e){return""+e+""},s.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},s.prototype.del=function(e){return""+e+""},s.prototype.link=function(e,t,n){if(e=p(this.options.sanitize,this.options.baseUrl,e),null===e)return n;var i='",i},s.prototype.image=function(e,t,n){if(e=p(this.options.sanitize,this.options.baseUrl,e),null===e)return n;var i=''+n+'":">",i},s.prototype.text=function(e){return e},a.prototype.strong=a.prototype.em=a.prototype.codespan=a.prototype.del=a.prototype.text=function(e){return e},a.prototype.link=a.prototype.image=function(e,t,n){return""+n},a.prototype.br=function(){return""},u.parse=function(e,t){var n=new u(t);return n.parse(e)},u.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,_({},this.options,{renderer:new a})),this.tokens=e.reverse();var t="";while(this.next())t+=this.tok();return t},u.prototype.next=function(){return this.token=this.tokens.pop()},u.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},u.prototype.parseText=function(){var e=this.token.text;while("text"===this.peek().type)e+="\n"+this.next().text;return this.inline.output(e)},u.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,d(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,i,o="",r="";for(n="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var n=t;do{this.seen[n]++,t=n+"-"+this.seen[n]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},c.escapeTest=/[&<>"']/,c.escapeReplace=/[&<>"']/g,c.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},c.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,c.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var g={},m=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function v(){}function _(e){for(var t,n,i=1;i=0&&"\\"===n[o])i=!i;return i?"|":" |"}),i=n.split(/ \|/),o=0;if(i.length>t)i.splice(t);else while(i.lengthAn error occurred:

    "+c(d.message+"",!0)+"
    ";throw d}}v.exec=v,C.options=C.setOptions=function(e){return _(C.defaults,e),C},C.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new s,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tables:!0,xhtml:!1}},C.defaults=C.getDefaults(),C.Parser=u,C.parser=u.parse,C.Renderer=s,C.TextRenderer=a,C.Lexer=n,C.lexer=n.lex,C.InlineLexer=r,C.inlineLexer=r.output,C.Slugger=l,C.parse=C,i=C}).call(void 0);i.Parser,i.parser;var l,c=i.Renderer,d=(i.TextRenderer,i.Lexer,i.lexer,i.InlineLexer,i.inlineLexer,i.parse);let h;(function(){function e(t,n,i){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof l&&l;if(!a&&u)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[s]={exports:{}};t[s][0].call(d.exports,function(e){var n=t[s][1][e];return o(n||e)},d,d.exports,e,t,n,i)}return n[s].exports}for(var r="function"==typeof l&&l,s=0;s\s]+))?)*)\s*(\/?)\s*>/,a=/^<\s*\/\s*([\w:-]+)[^>]*>/,u=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,l=/^=0&&(t.comment&&t.comment(e.substring(4,i)),e=e.substring(i+3),n=!1)}function _(){if(n){var i,o=e.indexOf("<");o>=0?(i=e.substring(0,o),e=e.substring(o)):(i=e,e=""),t.chars&&t.chars(i)}}function b(e,n,s,a){var l={},c=o(n),d=r.voids[c]||!!a;function p(e,t,n,o,r){l[t]=void 0===n&&void 0===o&&void 0===r?void 0:i.decode(n||o||r||"")}s.replace(u,p),d||h.push(c),t.start&&t.start(c,l,d)}function y(e,n){var i,r=0,s=o(n);if(s)for(r=h.length-1;r>=0;r--)if(h[r]===s)break;if(r>=0){for(i=h.length-1;i>=r;i--)t.end&&t.end(h[i]);h.length=r}}y()}t.exports=h},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],8:[function(e,t,n){var i=e("he"),o=e("./lowercase"),r=e("./attributes"),s=e("./elements");function a(e,t){var n,a=t||{};return g(),{start:l,end:c,chars:h};function u(t){e.push(t)}function l(e,t,s){var l=o(e);function c(e){var n,s=t[e],c=(a.allowedClasses||{})[l]||[],h=(a.allowedAttributes||{})[l]||[];h=h.concat((a.allowedAttributes||{})["*"]||[]);var p=o(e);function f(e){return c&&-1!==c.indexOf(e)}"class"===p&&-1===h.indexOf(p)?(s=s.split(" ").filter(f).join(" ").trim(),n=s.length):n=-1!==h.indexOf(p)&&(!0!==r.uris[p]||d(s)),n&&(u(" "),u(e),"string"===typeof s&&(u('="'),u(i.encode(s)),u('"')))}n.ignoring?p(l):-1!==(a.allowedTags||[]).indexOf(l)&&(!a.filter||a.filter({tag:l,attrs:t}))?(u("<"),u(l),Object.keys(t).forEach(c),u(s?"/>":">")):p(l)}function c(e){var t=o(e),i=-1!==(a.allowedTags||[]).indexOf(t);i&&!1===n.ignoring?(u("")):f(t)}function d(e){var t=e[0];if("#"===t||"/"===t)return!0;var n=e.indexOf(":");if(-1===n)return!0;var i=e.indexOf("?");if(-1!==i&&n>i)return!0;var o=e.indexOf("#");return-1!==o&&n>o||a.allowedSchemes.some(r);function r(t){return 0===e.indexOf(t+":")}}function h(e){!1===n.ignoring&&u(a.transformText?a.transformText(e):e)}function p(e){s.voids[e]||(!1===n.ignoring?n={ignoring:e,depth:1}:n.ignoring===e&&n.depth++)}function f(e){n.ignoring===e&&--n.depth<=0&&g()}function g(){n={ignoring:!1,depth:0}}}t.exports=a},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],9:[function(e,t,n){var i={"&":"&","<":"<",">":">",'"':""","'":"'"},o={"&":"&","<":"<",">":">",""":'"',"'":"'"},r=/(&|<|>|"|')/g,s=/[&<>"']/g;function a(e){return i[e]}function u(e){return o[e]}function l(e){return null==e?"":String(e).replace(s,a)}function c(e){return null==e?"":String(e).replace(r,u)}l.options=c.options={},t.exports={encode:l,escape:l,decode:c,unescape:c,version:"1.0.0-browser"}},{}],10:[function(e,t,n){function i(e){return e.reduce(o,{})}function o(e,t){return e[t]=!0,e}t.exports=i},{}]},{},[4]);var p=h,f=n("438a"),g=n("aa3d"),m=n("3742"),v=n("6d8e");function _(e,t){void 0===t&&(t={});var n,i=Object(r["a"])(t),l=function(t){var n;try{n=Object(f["a"])(decodeURIComponent(t))}catch(i){}return n?(n=Object(g["b"])(n,function(t){return e.uris&&e.uris[t]?v["a"].revive(e.uris[t]):void 0}),encodeURIComponent(JSON.stringify(n))):t},h=function(t,n){var i=e.uris&&e.uris[t];if(!i)return t;var r=v["a"].revive(i);return n&&(r=o["o"](r)),r.query&&(r=r.with({query:l(r.query)})),i&&(t=r.toString(!0)),t},_=new Promise(function(e){return n=e}),b=new c;b.image=function(e,t,n){var i,o=[],r=[];return e&&(i=Object(a["d"])(e),e=i.href,o=i.dimensions,e=h(e,!0),r.push('src="'+e+'"')),n&&r.push('alt="'+n+'"'),t&&r.push('title="'+t+'"'),o.length&&(r=r.concat(o)),""},b.link=function(t,n,i){return t===i&&(i=Object(a["e"])(i)),t=h(t,!1),n=Object(a["e"])(n),t=Object(a["e"])(t),!t||t.match(/^data:|javascript:/i)||t.match(/^command:/i)&&!e.isTrusted||t.match(/^command:(\/\/\/)?_workbench\.downloadResource/i)?i:(t=t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"),'
    '+i+"")},b.paragraph=function(e){return"

    "+e+"

    "},t.codeBlockRenderer&&(b.code=function(e,n){var o=t.codeBlockRenderer(n,e),r=u["b"].nextId(),s=Promise.all([o,_]).then(function(e){var t=e[0],n=i.querySelector('div[data-code="'+r+'"]');n&&(n.innerHTML=t)}).catch(function(e){});return t.codeBlockRenderCallback&&s.then(t.codeBlockRenderCallback),'
    '+Object(m["o"])(e)+"
    "});var y=t.actionHandler;y&&y.disposeables.add(o["k"](i,"click",function(e){var t=e.target;if("A"===t.tagName||(t=t.parentElement,t&&"A"===t.tagName))try{var n=t.dataset["href"];n&&y.callback(n,e)}catch(i){Object(s["e"])(i)}finally{e.preventDefault()}}));var w={sanitize:!0,renderer:b},C=["http","https","mailto","data"];e.isTrusted&&C.push("command");var S=d(e.value,w);return i.innerHTML=p(S,{allowedSchemes:C,allowedAttributes:{a:["href","name","target","data-href"],iframe:["allowfullscreen","frameborder","src"],img:["src","title","alt","width","height"],div:["class","data-code"]}}),n(),i}var b=n("5bd7"),y=n("5818"),w=n("4d05"),C=n("0a0f"),S=n("308f"),L=n("a666"),O=n("b707");n.d(t,"a",function(){return k});var x=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),N=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},D=function(e,t){return function(n,i){t(n,i,e)}},k=function(e){function t(t,n,i){void 0===i&&(i=b["b"]);var o=e.call(this)||this;return o._editor=t,o._modeService=n,o._openerService=i,o._onDidRenderCodeBlock=o._register(new S["a"]),o.onDidRenderCodeBlock=o._onDidRenderCodeBlock.event,o}return x(t,e),t.prototype.getOptions=function(e){var t=this;return{codeBlockRenderer:function(e,n){var i=null;if(e)i=t._modeService.getModeIdForLanguageName(e);else{var o=t._editor.getModel();o&&(i=o.getLanguageIdentifier().language)}return t._modeService.triggerMode(i||""),Promise.resolve(!0).then(function(e){var t=O["y"].getPromise(i||"");return t?t.then(function(e){return Object(w["b"])(n,e)}):Object(w["b"])(n,void 0)}).then(function(e){return''+e+""})},codeBlockRenderCallback:function(){return t._onDidRenderCodeBlock.fire()},actionHandler:{callback:function(e){var n;try{n=v["a"].parse(e)}catch(i){}n&&t._openerService&&t._openerService.open(n).catch(s["e"])},disposeables:e}}},t.prototype.render=function(e){var t,n=new L["b"];return t=e?_(e,this.getOptions(n)):document.createElement("span"),{element:t,dispose:function(){return n.dispose()}}},t=N([D(1,y["a"]),D(2,Object(C["d"])(b["a"]))],t),t}(L["a"])},debc:function(e,t,n){"use strict";n.d(t,"b",function(){return l}),n.d(t,"a",function(){return c});var i=n("6d8e"),o=n("32b8"),r=n("3742"),s=n("b589"),a=n("30db"),u=n("82c9");function l(e,t,n){if("string"===typeof e&&(e=i["a"].file(e)),n){var r=n.getWorkspaceFolder(e);if(r){var l=n.getWorkspace().folders.length>1,c=void 0;if(c=Object(u["e"])(r.uri,e)?"":Object(u["h"])(r.uri,e),l){var p=r&&r.name?r.name:Object(u["b"])(r.uri);c=c?p+" • "+c:p}return c}}if(e.scheme!==s["b"].file&&e.scheme!==s["b"].untitled)return e.with({query:null,fragment:null}).toString(!0);if(d(e.fsPath))return Object(o["normalize"])(h(e.fsPath));var g=Object(o["normalize"])(e.fsPath);return!a["g"]&&t&&(g=f(g,t.userHome)),g}function c(e){if(e){"string"===typeof e&&(e=i["a"].file(e));var t=Object(u["b"])(e)||(e.scheme===s["b"].file?e.fsPath:e.path);return d(t)?h(t):t}}function d(e){return!(!a["g"]||!e||":"!==e[1])}function h(e){return d(e)?e.charAt(0).toUpperCase()+e.slice(1):e}var p=Object.create(null);function f(e,t){if(a["g"]||!e||!t)return e;var n=p.original===t?p.normalized:void 0;return n||(n=""+Object(r["G"])(t,o["posix"].sep)+o["posix"].sep,p={original:t,normalized:n}),(a["c"]?Object(r["J"])(e,n):Object(r["K"])(e,n))&&(e="~/"+e.substr(n.length)),e}},dff7:function(e,t,n){"use strict";function i(e,t){var n;return n=0===t.length?e:e.replace(/\{(\d+)\}/g,function(e,n){var i=n[0];return"undefined"!==typeof t[i]?t[i]:e}),n}function o(e,t){for(var n=[],o=2;o>>1,this._text=t}return e.prototype.equals=function(t){return t instanceof e&&this.slicedEquals(t,0,this._tokensCount)},e.prototype.slicedEquals=function(e,t,n){if(this._text!==e._text)return!1;if(this._tokensCount!==e._tokensCount)return!1;for(var i=t<<1,o=i+(n<<1),r=i;r0?this._tokens[e-1<<1]:0},e.prototype.getLanguageId=function(e){var t=this._tokens[1+(e<<1)];return i["x"].getLanguageId(t)},e.prototype.getStandardTokenType=function(e){var t=this._tokens[1+(e<<1)];return i["x"].getTokenType(t)},e.prototype.getForeground=function(e){var t=this._tokens[1+(e<<1)];return i["x"].getForeground(t)},e.prototype.getClassName=function(e){var t=this._tokens[1+(e<<1)];return i["x"].getClassNameFromMetadata(t)},e.prototype.getInlineStyle=function(e,t){var n=this._tokens[1+(e<<1)];return i["x"].getInlineStyleFromMetadata(n,t)},e.prototype.getEndOffset=function(e){return this._tokens[e<<1]},e.prototype.findTokenIndexAtOffset=function(t){return e.findIndexInTokensArray(this._tokens,t)},e.prototype.inflate=function(){return this},e.prototype.sliceAndInflate=function(e,t,n){return new r(this,e,t,n)},e.convertToEndOffset=function(e,t){for(var n=e.length>>>1,i=n-1,o=0;o>>1)-1;while(nt&&(i=o)}return n},e}(),r=function(){function e(e,t,n,i){this._source=e,this._startOffset=t,this._endOffset=n,this._deltaOffset=i,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this._tokensCount=0;for(var o=this._firstTokenIndex,r=e.getCount();o=n)break;this._tokensCount++}}return e.prototype.equals=function(t){return t instanceof e&&(this._startOffset===t._startOffset&&this._endOffset===t._endOffset&&this._deltaOffset===t._deltaOffset&&this._source.slicedEquals(t._source,this._firstTokenIndex,this._tokensCount))},e.prototype.getCount=function(){return this._tokensCount},e.prototype.getForeground=function(e){return this._source.getForeground(this._firstTokenIndex+e)},e.prototype.getEndOffset=function(e){var t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset},e.prototype.getClassName=function(e){return this._source.getClassName(this._firstTokenIndex+e)},e.prototype.getInlineStyle=function(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)},e.prototype.findTokenIndexAtOffset=function(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex},e}()},e2b8:function(e,t,n){},e2c2:function(e,t,n){"use strict";n.r(t),n.d(t,"StandaloneReferencesController",function(){return f});var i=n("b2cc"),o=n("5717"),r=n("aa43"),s=n("fbba"),a=n("4fc3"),u=n("0a0f"),l=n("b0cd"),c=n("03e8"),d=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),h=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},p=function(e,t){return function(n,i){t(n,i,e)}},f=function(e){function t(t,n,i,o,r,s,a){return e.call(this,!0,t,n,i,o,r,s,a)||this}return d(t,e),t=h([p(1,a["c"]),p(2,o["a"]),p(3,l["a"]),p(4,u["a"]),p(5,c["a"]),p(6,s["a"])],t),t}(r["a"]);Object(i["h"])(f)},e32d:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=n("308f"),o=function(e,t,n){var o=function(e){return r.fire(e)},r=new i["a"]({onFirstListenerAdd:function(){e.addEventListener(t,o,n)},onLastListenerRemove:function(){e.removeEventListener(t,o,n)}});return r.event};function r(e){return i["b"].map(e,function(e){return e.preventDefault(),e.stopPropagation(),e})}},e431:function(e,t,n){},e516:function(e,t,n){"use strict";n.r(t),n.d(t,"CursorUndoController",function(){return l}),n.d(t,"CursorUndo",function(){return c});var i=n("dff7"),o=n("a666"),r=n("b2cc"),s=n("c101"),a=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),u=function(){function e(e){this.selections=e}return e.prototype.equals=function(e){var t=this.selections.length,n=e.selections.length;if(t!==n)return!1;for(var i=0;i50&&n._undoStack.shift()),n._prevState=n._readState()})),n}return a(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype._readState=function(){return this._editor.hasModel()?new u(this._editor.getSelections()):null},t.prototype.getId=function(){return t.ID},t.prototype.cursorUndo=function(){if(this._editor.hasModel()){var e=new u(this._editor.getSelections());while(this._undoStack.length>0){var t=this._undoStack.pop();if(!t.equals(e))return this._isCursorUndo=!0,this._editor.setSelections(t.selections),this._editor.revealRangeInCenterIfOutsideViewport(t.selections[0],0),void(this._isCursorUndo=!1)}}},t.ID="editor.contrib.cursorUndoController",t}(o["a"]),c=function(e){function t(){return e.call(this,{id:"cursorUndo",label:i["a"]("cursor.undo","Soft Undo"),alias:"Soft Undo",precondition:void 0,kbOpts:{kbExpr:s["a"].textInputFocus,primary:2099,weight:100}})||this}return a(t,e),t.prototype.run=function(e,t,n){l.get(t).cursorUndo()},t}(r["b"]);Object(r["h"])(l),Object(r["f"])(c)},e53c:function(e,t,n){"use strict";n.d(t,"a",function(){return p}),n.d(t,"b",function(){return f});var i=n("0f70"),o=n("11f7"),r=n("5fe7"),s=n("308f"),a=n("a666"),u=n("30db"),l=n("3742"),c=n("0a89"),d=n("8025"),h=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),p={forceCopyWithSyntaxHighlighting:!1},f=function(e){function t(t,n){var a=e.call(this)||this;a._onFocus=a._register(new s["a"]),a.onFocus=a._onFocus.event,a._onBlur=a._register(new s["a"]),a.onBlur=a._onBlur.event,a._onKeyDown=a._register(new s["a"]),a.onKeyDown=a._onKeyDown.event,a._onKeyUp=a._register(new s["a"]),a.onKeyUp=a._onKeyUp.event,a._onCut=a._register(new s["a"]),a.onCut=a._onCut.event,a._onPaste=a._register(new s["a"]),a.onPaste=a._onPaste.event,a._onType=a._register(new s["a"]),a.onType=a._onType.event,a._onCompositionStart=a._register(new s["a"]),a.onCompositionStart=a._onCompositionStart.event,a._onCompositionUpdate=a._register(new s["a"]),a.onCompositionUpdate=a._onCompositionUpdate.event,a._onCompositionEnd=a._register(new s["a"]),a.onCompositionEnd=a._onCompositionEnd.event,a._onSelectionChangeRequest=a._register(new s["a"]),a.onSelectionChangeRequest=a._onSelectionChangeRequest.event,a._host=t,a._textArea=a._register(new m(n)),a._lastTextAreaEvent=0,a._asyncTriggerCut=a._register(new r["d"](function(){return a._onCut.fire()},0)),a._textAreaState=c["b"].EMPTY,a._selectionChangeListener=null,a.writeScreenReaderContent("ctor"),a._hasFocus=!1,a._isDoingComposition=!1,a._nextCommand=0,a._register(o["k"](n.domNode,"keydown",function(e){!a._isDoingComposition||109!==e.keyCode&&1!==e.keyCode||e.stopPropagation(),e.equals(9)&&e.preventDefault(),a._onKeyDown.fire(e)})),a._register(o["k"](n.domNode,"keyup",function(e){a._onKeyUp.fire(e)})),a._register(o["h"](n.domNode,"compositionstart",function(e){a._lastTextAreaEvent=1,a._isDoingComposition||(a._isDoingComposition=!0,i["g"]||a._setAndWriteTextAreaState("compositionstart",c["b"].EMPTY),a._onCompositionStart.fire())}));var d=function(e,t){var n=a._textAreaState,i=c["b"].readFromTextArea(a._textArea);return[i,c["b"].deduceInput(n,i,e,t)]},h=function(e){var t=a._textAreaState,n=c["b"].selectedText(e),i={text:n.value,replaceCharCnt:t.selectionEnd-t.selectionStart};return[n,i]},p=function(e){return!(!i["g"]||"ja"!==e)||!(!i["j"]||0!==e.indexOf("zh-Han"))};return a._register(o["h"](n.domNode,"compositionupdate",function(e){if(a._lastTextAreaEvent=2,p(e.locale)){var t=d(!1,!1),n=t[0],i=t[1];return a._textAreaState=n,a._onType.fire(i),void a._onCompositionUpdate.fire(e)}var o=h(e.data),r=o[0],s=o[1];a._textAreaState=r,a._onType.fire(s),a._onCompositionUpdate.fire(e)})),a._register(o["h"](n.domNode,"compositionend",function(e){if(a._lastTextAreaEvent=3,p(e.locale)){var t=d(!1,!1),n=t[0],o=t[1];a._textAreaState=n,a._onType.fire(o)}else{var r=h(e.data);n=r[0],o=r[1];a._textAreaState=n,a._onType.fire(o)}(i["g"]||i["e"])&&(a._textAreaState=c["b"].readFromTextArea(a._textArea)),a._isDoingComposition&&(a._isDoingComposition=!1,a._onCompositionEnd.fire())})),a._register(o["h"](n.domNode,"input",function(){var e=8===a._lastTextAreaEvent;if(a._lastTextAreaEvent=4,a._textArea.setIgnoreSelectionChangeTime("received input event"),!a._isDoingComposition){var t=d(u["d"],e&&u["d"]),n=t[0],i=t[1];0===i.replaceCharCnt&&1===i.text.length&&l["w"](i.text.charCodeAt(0))||(a._textAreaState=n,0===a._nextCommand?""!==i.text&&a._onType.fire(i):(""!==i.text&&a._onPaste.fire({text:i.text}),a._nextCommand=0))}})),a._register(o["h"](n.domNode,"cut",function(e){a._lastTextAreaEvent=5,a._textArea.setIgnoreSelectionChangeTime("received cut event"),a._ensureClipboardGetsEditorSelection(e),a._asyncTriggerCut.schedule()})),a._register(o["h"](n.domNode,"copy",function(e){a._lastTextAreaEvent=6,a._ensureClipboardGetsEditorSelection(e)})),a._register(o["h"](n.domNode,"paste",function(e){if(a._lastTextAreaEvent=7,a._textArea.setIgnoreSelectionChangeTime("received paste event"),g.canUseTextData(e)){var t=g.getTextData(e);""!==t&&a._onPaste.fire({text:t})}else a._textArea.getSelectionStart()!==a._textArea.getSelectionEnd()&&a._setAndWriteTextAreaState("paste",c["b"].EMPTY),a._nextCommand=1})),a._register(o["h"](n.domNode,"focus",function(){a._lastTextAreaEvent=8,a._setHasFocus(!0)})),a._register(o["h"](n.domNode,"blur",function(){a._lastTextAreaEvent=9,a._setHasFocus(!1)})),a}return h(t,e),t.prototype._installSelectionChangeListener=function(){var e=this,t=0;return o["h"](document,"selectionchange",function(n){if(e._hasFocus&&!e._isDoingComposition&&i["e"]&&u["g"]){var o=Date.now(),r=o-t;if(t=o,!(r<5)){var s=o-e._textArea.getIgnoreSelectionChangeTime();if(e._textArea.resetSelectionChangeTime(),!(s<100)&&e._textAreaState.selectionStartPosition&&e._textAreaState.selectionEndPosition){var a=e._textArea.getValue();if(e._textAreaState.value===a){var l=e._textArea.getSelectionStart(),c=e._textArea.getSelectionEnd();if(e._textAreaState.selectionStart!==l||e._textAreaState.selectionEnd!==c){var h=e._textAreaState.deduceEditorPosition(l),p=e._host.deduceModelPosition(h[0],h[1],h[2]),f=e._textAreaState.deduceEditorPosition(c),g=e._host.deduceModelPosition(f[0],f[1],f[2]),m=new d["a"](p.lineNumber,p.column,g.lineNumber,g.column);e._onSelectionChangeRequest.fire(m)}}}}}})},t.prototype.dispose=function(){e.prototype.dispose.call(this),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)},t.prototype.focusTextArea=function(){this._setHasFocus(!0)},t.prototype.isFocused=function(){return this._hasFocus},t.prototype._setHasFocus=function(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&(i["f"]?this._setAndWriteTextAreaState("focusgain",c["b"].EMPTY):this.writeScreenReaderContent("focusgain")),this._hasFocus?this._onFocus.fire():this._onBlur.fire())},t.prototype._setAndWriteTextAreaState=function(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t},t.prototype.writeScreenReaderContent=function(e){this._isDoingComposition||this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent(this._textAreaState))},t.prototype._ensureClipboardGetsEditorSelection=function(e){var t=this._host.getPlainTextToCopy();if(g.canUseTextData(e)){var n=null;i["d"]()&&(t.length<65536||p.forceCopyWithSyntaxHighlighting)&&(n=this._host.getHTMLToCopy()),g.setTextData(e,t,n)}else this._setAndWriteTextAreaState("copy or cut",c["b"].selectedText(t))},t}(a["a"]),g=function(){function e(){}return e.canUseTextData=function(e){return!!e.clipboardData||!!window.clipboardData},e.getTextData=function(e){if(e.clipboardData)return e.preventDefault(),e.clipboardData.getData("text/plain");if(window.clipboardData)return e.preventDefault(),window.clipboardData.getData("Text");throw new Error("ClipboardEventUtils.getTextData: Cannot use text data!")},e.setTextData=function(e,t,n){if(e.clipboardData)return e.clipboardData.setData("text/plain",t),null!==n&&e.clipboardData.setData("text/html",n),void e.preventDefault();if(window.clipboardData)return window.clipboardData.setData("Text",t),void e.preventDefault();throw new Error("ClipboardEventUtils.setTextData: Cannot use text data!")},e}(),m=function(e){function t(t){var n=e.call(this)||this;return n._actual=t,n._ignoreSelectionChangeTime=0,n}return h(t,e),t.prototype.setIgnoreSelectionChangeTime=function(e){this._ignoreSelectionChangeTime=Date.now()},t.prototype.getIgnoreSelectionChangeTime=function(){return this._ignoreSelectionChangeTime},t.prototype.resetSelectionChangeTime=function(){this._ignoreSelectionChangeTime=0},t.prototype.getValue=function(){return this._actual.domNode.value},t.prototype.setValue=function(e,t){var n=this._actual.domNode;n.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),n.value=t)},t.prototype.getSelectionStart=function(){return this._actual.domNode.selectionStart},t.prototype.getSelectionEnd=function(){return this._actual.domNode.selectionEnd},t.prototype.setSelectionRange=function(e,t,n){var r=this._actual.domNode,s=document.activeElement===r,a=r.selectionStart,u=r.selectionEnd;if(s&&a===t&&u===n)i["i"]&&window.parent!==window&&r.focus();else{if(s)return this.setIgnoreSelectionChangeTime("setSelectionRange"),r.setSelectionRange(t,n),void(i["i"]&&window.parent!==window&&r.focus());try{var l=o["O"](r);this.setIgnoreSelectionChangeTime("setSelectionRange"),r.focus(),r.setSelectionRange(t,n),o["M"](r,l)}catch(c){}}},t}(a["a"])},e58e:function(e,t,n){"use strict";n.d(t,"a",function(){return r});var i=n("30db"),o=i["b"].performance&&"function"===typeof i["b"].performance.now,r=function(){function e(e){this._highResolution=o&&e,this._startTime=this._now(),this._stopTime=-1}return e.create=function(t){return void 0===t&&(t=!0),new e(t)},e.prototype.stop=function(){this._stopTime=this._now()},e.prototype.elapsed=function(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime},e.prototype._now=function(){return this._highResolution?i["b"].performance.now():(new Date).getTime()},e}()},e5aa:function(e,t,n){"use strict";var i=n("11f7"),o=n("5aa5"),r=n("f070"),s=n("ceb8"),a=n("308f"),u=n("aa3d"),l=n("3742"),c=(n("dde9"),n("5717")),d=n("d379"),h=(n("b968"),n("70c3")),p=n("9c3e"),f=n("a666"),g=n("6a89"),m=n("b57f"),v=new s["a"](new s["c"](0,122,204)),_={showArrow:!0,showFrame:!0,className:"",frameColor:v,arrowColor:v,keepEditorSelection:!1},b="vs.editor.contrib.zoneWidget",y=function(){function e(e,t,n,i,o,r){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=n,this.heightInLines=i,this._onDomNodeTop=o,this._onComputedHeight=r}return e.prototype.onDomNodeTop=function(e){this._onDomNodeTop(e)},e.prototype.onComputedHeight=function(e){this._onComputedHeight(e)},e}(),w=function(){function e(e,t){this._id=e,this._domNode=t}return e.prototype.getId=function(){return this._id},e.prototype.getDomNode=function(){return this._domNode},e.prototype.getPosition=function(){return null},e}(),C=function(){function e(t){this._editor=t,this._ruleName=e._IdGenerator.nextId(),this._decorations=[],this._color=null,this._height=-1}return e.prototype.dispose=function(){this.hide(),i["H"](this._ruleName)},Object.defineProperty(e.prototype,"color",{set:function(e){this._color!==e&&(this._color=e,this._updateStyle())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"height",{set:function(e){this._height!==e&&(this._height=e,this._updateStyle())},enumerable:!0,configurable:!0}),e.prototype._updateStyle=function(){i["H"](this._ruleName),i["r"](".monaco-editor "+this._ruleName,"border-style: solid; border-color: transparent; border-bottom-color: "+this._color+"; border-width: "+this._height+"px; bottom: -"+this._height+"px; margin-left: -"+this._height+"px; ")},e.prototype.show=function(e){this._decorations=this._editor.deltaDecorations(this._decorations,[{range:g["a"].fromPositions(e),options:{className:this._ruleName,stickiness:1}}])},e.prototype.hide=function(){this._editor.deltaDecorations(this._decorations,[])},e._IdGenerator=new p["a"](".arrow-decoration-"),e}(),S=function(){function e(e,t){var n=this;void 0===t&&(t={}),this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._positionMarkerId=[],this._viewZone=null,this._disposables=new f["b"],this.container=null,this._isShowing=!1,this.editor=e,this.options=u["c"](t),u["g"](this.options,_,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange(function(e){var t=n._getWidth(e);n.domNode.style.width=t+"px",n.domNode.style.left=n._getLeft(e)+"px",n._onWidth(t)}))}return e.prototype.dispose=function(){var e=this;this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones(function(t){e._viewZone&&t.removeZone(e._viewZone.id),e._viewZone=null}),this.editor.deltaDecorations(this._positionMarkerId,[]),this._positionMarkerId=[],this._disposables.dispose()},e.prototype.create=function(){i["f"](this.domNode,"zone-widget"),this.options.className&&i["f"](this.domNode,this.options.className),this.container=document.createElement("div"),i["f"](this.container,"zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new C(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()},e.prototype.style=function(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()},e.prototype._applyStyles=function(){if(this.container&&this.options.frameColor){var e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){var t=this.options.arrowColor.toString();this._arrow.color=t}},e.prototype._getWidth=function(e){return e.width-e.minimapWidth-e.verticalScrollbarWidth},e.prototype._getLeft=function(e){return e.minimapWidth>0&&0===e.minimapLeft?e.minimapWidth:0},e.prototype._onViewZoneTop=function(e){this.domNode.style.top=e+"px"},e.prototype._onViewZoneHeight=function(e){if(this.domNode.style.height=e+"px",this.container){var t=e-this._decoratingElementsHeight();this.container.style.height=t+"px";var n=this.editor.getLayoutInfo();this._doLayout(t,this._getWidth(n))}this._resizeSash&&this._resizeSash.layout()},Object.defineProperty(e.prototype,"position",{get:function(){var e=this._positionMarkerId[0];if(e){var t=this.editor.getModel();if(t){var n=t.getDecorationRange(e);if(n)return n.getStartPosition()}}},enumerable:!0,configurable:!0}),e.prototype.show=function(e,t){var n=g["a"].isIRange(e)?e:new g["a"](e.lineNumber,e.column,e.lineNumber,e.column);this._isShowing=!0,this._showImpl(n,t),this._isShowing=!1,this._positionMarkerId=this.editor.deltaDecorations(this._positionMarkerId,[{range:n,options:m["a"].EMPTY}])},e.prototype.hide=function(){var e=this;this._viewZone&&(this.editor.changeViewZones(function(t){e._viewZone&&t.removeZone(e._viewZone.id)}),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._arrow&&this._arrow.hide()},e.prototype._decoratingElementsHeight=function(){var e=this.editor.getConfiguration().lineHeight,t=0;if(this.options.showArrow){var n=Math.round(e/3);t+=2*n}if(this.options.showFrame){var i=Math.round(e/9);t+=2*i}return t},e.prototype._showImpl=function(e,t){var n=this,i={lineNumber:e.startLineNumber,column:e.startColumn},o=this.editor.getLayoutInfo(),r=this._getWidth(o);this.domNode.style.width=r+"px",this.domNode.style.left=this._getLeft(o)+"px";var s=document.createElement("div");s.style.overflow="hidden";var a=this.editor.getConfiguration().lineHeight,u=this.editor.getLayoutInfo().height/a*.8;t>=u&&(t=u);var l=0,c=0;if(this._arrow&&this.options.showArrow&&(l=Math.round(a/3),this._arrow.height=l,this._arrow.show(i)),this.options.showFrame&&(c=Math.round(a/9)),this.editor.changeViewZones(function(e){n._viewZone&&e.removeZone(n._viewZone.id),n._overlayWidget&&(n.editor.removeOverlayWidget(n._overlayWidget),n._overlayWidget=null),n.domNode.style.top="-1000px",n._viewZone=new y(s,i.lineNumber,i.column,t,function(e){return n._onViewZoneTop(e)},function(e){return n._onViewZoneHeight(e)}),n._viewZone.id=e.addZone(n._viewZone),n._overlayWidget=new w(b+n._viewZone.id,n.domNode),n.editor.addOverlayWidget(n._overlayWidget)}),this.container&&this.options.showFrame){var d=this.options.frameWidth?this.options.frameWidth:c;this.container.style.borderTopWidth=d+"px",this.container.style.borderBottomWidth=d+"px"}var h=t*a-this._decoratingElementsHeight();this.container&&(this.container.style.top=l+"px",this.container.style.height=h+"px",this.container.style.overflow="hidden"),this._doLayout(h,r),this.options.keepEditorSelection||this.editor.setSelection(e);var p=this.editor.getModel();if(p){var f=Math.min(p.getLineCount(),Math.max(1,e.endLineNumber+1));this.revealLine(f)}},e.prototype.revealLine=function(e){this.editor.revealLine(e,0)},e.prototype.setCssClass=function(e,t){this.container&&(t&&this.container.classList.remove(t),i["f"](this.container,e))},e.prototype._onWidth=function(e){},e.prototype._doLayout=function(e,t){},e.prototype._relayout=function(e){var t=this;this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones(function(n){t._viewZone&&(t._viewZone.heightInLines=e,n.layoutZone(t._viewZone.id))})},e.prototype._initSash=function(){var e,t=this;this._resizeSash||(this._resizeSash=this._disposables.add(new h["a"](this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.hide(),this._resizeSash.state=0),this._disposables.add(this._resizeSash.onDidStart(function(n){t._viewZone&&(e={startY:n.startY,heightInLines:t._viewZone.heightInLines})})),this._disposables.add(this._resizeSash.onDidEnd(function(){e=void 0})),this._disposables.add(this._resizeSash.onDidChange(function(n){if(e){var i=(n.currentY-e.startY)/t.editor.getConfiguration().lineHeight,o=i<0?Math.ceil(i):Math.floor(i),r=e.heightInLines+o;r>5&&r<35&&t._relayout(r)}})))},e.prototype.getHorizontalSashLeft=function(){return 0},e.prototype.getHorizontalSashTop=function(){return(null===this.domNode.style.height?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2},e.prototype.getHorizontalSashWidth=function(){var e=this.editor.getLayoutInfo();return e.width-e.minimapWidth},e}(),L=n("dff7"),O=n("4fc3"),x=n("0a0f"),N=n("f5f3");n.d(t,"a",function(){return I}),n.d(t,"b",function(){return D}),n.d(t,"d",function(){return E}),n.d(t,"c",function(){return T});var D,k=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),I=Object(x["c"])("IPeekViewService");function E(e){var t=e.get(c["a"]).getFocusedCodeEditor();return t instanceof d["a"]?t.getParentEditor():t}Object(N["b"])(I,function(){function e(){this._widgets=new Map}return e.prototype.addExclusiveWidget=function(e,t){var n=this,i=this._widgets.get(e);i&&(i.listener.dispose(),i.widget.dispose());var o=function(){var i=n._widgets.get(e);i&&i.widget===t&&(i.listener.dispose(),n._widgets.delete(e))};this._widgets.set(e,{widget:t,listener:t.onDidClose(o)})},e}()),function(e){e.inPeekEditor=new O["d"]("inReferenceSearchEditor",!0),e.notInPeekEditor=e.inPeekEditor.toNegated()}(D||(D={}));var M={headerBackgroundColor:s["a"].white,primaryHeadingColor:s["a"].fromHex("#333333"),secondaryHeadingColor:s["a"].fromHex("#6c6c6cb3")},T=function(e){function t(t,n){void 0===n&&(n={});var i=e.call(this,t,n)||this;return i._onDidClose=new a["a"],u["g"](i.options,M,!1),i}return k(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),this._onDidClose.fire(this)},Object.defineProperty(t.prototype,"onDidClose",{get:function(){return this._onDidClose.event},enumerable:!0,configurable:!0}),t.prototype.style=function(t){var n=this.options;t.headerBackgroundColor&&(n.headerBackgroundColor=t.headerBackgroundColor),t.primaryHeadingColor&&(n.primaryHeadingColor=t.primaryHeadingColor),t.secondaryHeadingColor&&(n.secondaryHeadingColor=t.secondaryHeadingColor),e.prototype.style.call(this,t)},t.prototype._applyStyles=function(){e.prototype._applyStyles.call(this);var t=this.options;this._headElement&&t.headerBackgroundColor&&(this._headElement.style.backgroundColor=t.headerBackgroundColor.toString()),this._primaryHeading&&t.primaryHeadingColor&&(this._primaryHeading.style.color=t.primaryHeadingColor.toString()),this._secondaryHeading&&t.secondaryHeadingColor&&(this._secondaryHeading.style.color=t.secondaryHeadingColor.toString()),this._bodyElement&&t.frameColor&&(this._bodyElement.style.borderColor=t.frameColor.toString())},t.prototype._fillContainer=function(e){this.setCssClass("peekview-widget"),this._headElement=i["a"](".head"),this._bodyElement=i["a"](".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)},t.prototype._fillHead=function(e){var t=this,n=i["a"](".peekview-title");i["m"](this._headElement,n),i["k"](n,"click",function(e){return t._onTitleClick(e)}),this._fillTitleIcon(n),this._primaryHeading=i["a"]("span.filename"),this._secondaryHeading=i["a"]("span.dirname"),this._metaHeading=i["a"]("span.meta"),i["m"](n,this._primaryHeading,this._secondaryHeading,this._metaHeading);var s=i["a"](".peekview-actions");i["m"](this._headElement,s);var a=this._getActionBarOptions();this._actionbarWidget=new o["a"](s,a),this._disposables.add(this._actionbarWidget),this._actionbarWidget.push(new r["a"]("peekview.close",L["a"]("label.close","Close"),"close-peekview-action",!0,function(){return t.dispose(),Promise.resolve()}),{label:!1,icon:!0})},t.prototype._fillTitleIcon=function(e){},t.prototype._getActionBarOptions=function(){return{}},t.prototype._onTitleClick=function(e){},t.prototype.setTitle=function(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerHTML=l["o"](e),this._primaryHeading.setAttribute("aria-label",e),t?this._secondaryHeading.innerHTML=l["o"](t):i["p"](this._secondaryHeading))},t.prototype.setMetaTitle=function(e){this._metaHeading&&(e?this._metaHeading.innerHTML=l["o"](e):i["p"](this._metaHeading))},t.prototype._doLayout=function(e,t){if(!this._isShowing&&e<0)this.dispose();else{var n=Math.ceil(1.2*this.editor.getConfiguration().lineHeight),i=e-(n+2);this._doLayoutHead(n,t),this._doLayoutBody(i,t)}},t.prototype._doLayoutHead=function(e,t){this._headElement&&(this._headElement.style.height=e+"px",this._headElement.style.lineHeight=this._headElement.style.height)},t.prototype._doLayoutBody=function(e,t){this._bodyElement&&(this._bodyElement.style.height=e+"px")},t}(S)},e6ff:function(e,t,n){"use strict";n.d(t,"a",function(){return a});var i=n("3170"),o=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),r=function(e){function t(t){for(var n=e.call(this,0)||this,i=0,o=t.length;i0))return r;o=r-1}}return-(i+1)}function a(e,t){var n=0,i=e.length;if(0===i)return 0;while(ni?e[u]=r[a++]:a>o?e[u]=r[s++]:t(r[a],r[s])<0?e[u]=r[a++]:e[u]=r[s++]}function c(e,t,n,i,o){if(!(i<=n)){var r=n+(i-n)/2|0;c(e,t,n,r,o),c(e,t,r+1,i,o),t(e[r],e[r+1])<=0||l(e,t,n,r,i,o)}}function d(e,t){for(var n=[],i=void 0,o=0,r=u(e.slice(0),t);o0}function g(e,t){if(!t)return e.filter(function(t,n){return e.indexOf(t)===n});var n=Object.create(null);return e.filter(function(e){var i=t(e);return!n[i]&&(n[i]=!0,!0)})}function m(e){var t=new Set;return e.filter(function(e){return!t.has(e)&&(t.add(e),!0)})}function v(e,t){for(var n=0;nt;o--)i.push(o);return i}function w(e,t,n){var i=e.slice(0,t),o=e.slice(t);return i.concat(n,o)}function C(e,t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),e.unshift(t))}function S(e,t){var n=e.indexOf(t);n>-1&&(e.splice(n,1),e.push(t))}function L(e){return Array.isArray(e)?e:[e]}n.d(t,"s",function(){return i}),n.d(t,"t",function(){return o}),n.d(t,"g",function(){return r}),n.d(t,"c",function(){return s}),n.d(t,"h",function(){return a}),n.d(t,"o",function(){return u}),n.d(t,"l",function(){return d}),n.d(t,"d",function(){return h}),n.d(t,"m",function(){return p}),n.d(t,"n",function(){return f}),n.d(t,"e",function(){return g}),n.d(t,"f",function(){return m}),n.d(t,"j",function(){return v}),n.d(t,"i",function(){return _}),n.d(t,"k",function(){return b}),n.d(t,"r",function(){return y}),n.d(t,"a",function(){return w}),n.d(t,"q",function(){return C}),n.d(t,"p",function(){return S}),n.d(t,"b",function(){return L})},ee56:function(e,t,n){"use strict";var i=n("aa3d"),o=n("3742");function r(e){return Object(o["o"])(e)}n.d(t,"a",function(){return s});var s=function(){function e(e,t){this.supportOcticons=t,this.domNode=document.createElement("span"),this.domNode.className="monaco-highlighted-label",this.didEverRender=!1,e.appendChild(this.domNode)}return Object.defineProperty(e.prototype,"element",{get:function(){return this.domNode},enumerable:!0,configurable:!0}),e.prototype.set=function(t,n,o,r){void 0===n&&(n=[]),void 0===o&&(o=""),t||(t=""),r&&(t=e.escapeNewLines(t,n)),this.didEverRender&&this.text===t&&this.title===o&&i["e"](this.highlights,n)||(Array.isArray(n)||(n=[]),this.text=t,this.title=o,this.highlights=n,this.render())},e.prototype.render=function(){for(var e="",t=0,n=0,i=this.highlights;n";var a=this.text.substring(t,s.start);e+=this.supportOcticons?r(a):Object(o["o"])(a),e+="",t=s.end}e+='';var u=this.text.substring(s.start,s.end);e+=this.supportOcticons?r(u):Object(o["o"])(u),e+="",t=s.end}}if(t";u=this.text.substring(t);e+=this.supportOcticons?r(u):Object(o["o"])(u),e+=""}this.domNode.innerHTML=e,this.domNode.title=this.title,this.didEverRender=!0},e.escapeNewLines=function(e,t){var n=0,i=0;return e.replace(/\r\n|\r|\n/g,function(e,o){i="\r\n"===e?-1:0,o+=n;for(var r=0,s=t;r=o&&(a.start+=i),a.end>=o&&(a.end+=i))}return n+=i,"⏎"})},e}()},ef37:function(e,t,n){},ef8e:function(e,t,n){"use strict";n.d(t,"c",function(){return o}),n.d(t,"i",function(){return r}),n.d(t,"h",function(){return s}),n.d(t,"g",function(){return a}),n.d(t,"d",function(){return u}),n.d(t,"j",function(){return l}),n.d(t,"k",function(){return c}),n.d(t,"e",function(){return h}),n.d(t,"f",function(){return p}),n.d(t,"l",function(){return f}),n.d(t,"b",function(){return v}),n.d(t,"a",function(){return _}),n.d(t,"m",function(){return b}),n.d(t,"n",function(){return y});var i={number:"number",string:"string",undefined:"undefined",object:"object",function:"function"};function o(e){return Array.isArray?Array.isArray(e):!(!e||typeof e.length!==i.number||e.constructor!==Array)}function r(e){return typeof e===i.string||e instanceof String}function s(e){return typeof e===i.object&&null!==e&&!Array.isArray(e)&&!(e instanceof RegExp)&&!(e instanceof Date)}function a(e){return(typeof e===i.number||e instanceof Number)&&!isNaN(e)}function u(e){return!0===e||!1===e}function l(e){return typeof e===i.undefined}function c(e){return l(e)||null===e}var d=Object.prototype.hasOwnProperty;function h(e){if(!s(e))return!1;for(var t in e)if(d.call(e,t))return!1;return!0}function p(e){return typeof e===i.function}function f(e,t){for(var n=Math.min(e.length,t.length),i=0;i0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]1&&n.push(new c["a"](e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}},t.prototype.run=function(e,t){var n=this;if(t.hasModel()){var i=t.getModel(),o=t.getSelections(),r=[];o.forEach(function(e){return n.getCursorsForSelection(e,i,r)}),r.length>0&&t.setSelections(r)}},t}(a["b"]),C=function(e){function t(){return e.call(this,{id:"editor.action.addCursorsToBottom",label:i["a"]("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})||this}return _(t,e),t.prototype.run=function(e,t){if(t.hasModel()){for(var n=t.getSelections(),i=t.getModel().getLineCount(),o=[],r=n[0].startLineNumber;r<=i;r++)o.push(new c["a"](r,n[0].startColumn,r,n[0].endColumn));o.length>0&&t.setSelections(o)}},t}(a["b"]),S=function(e){function t(){return e.call(this,{id:"editor.action.addCursorsToTop",label:i["a"]("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})||this}return _(t,e),t.prototype.run=function(e,t){if(t.hasModel()){for(var n=t.getSelections(),i=[],o=n[0].startLineNumber;o>=1;o--)i.push(new c["a"](o,n[0].startColumn,o,n[0].endColumn));i.length>0&&t.setSelections(i)}},t}(a["b"]),L=function(){function e(e,t,n){this.selections=e,this.revealRange=t,this.revealScrollType=n}return e}(),O=function(){function e(e,t,n,i,o,r,s){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=n,this.searchText=i,this.wholeWord=o,this.matchCase=r,this.currentMatch=s}return e.create=function(t,n){if(!t.hasModel())return null;var i=n.getState();if(!t.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new e(t,n,!1,i.searchString,i.wholeWord,i.matchCase,null);var o,r,s=!1,a=t.getSelections();1===a.length&&a[0].isEmpty()?(s=!0,o=!0,r=!0):(o=i.wholeWord,r=i.matchCase);var u,l=t.getSelection(),d=null;if(l.isEmpty()){var h=t.getModel().getWordAtPosition(l.getStartPosition());if(!h)return null;u=h.word,d=new c["a"](l.startLineNumber,h.startColumn,l.startLineNumber,h.endColumn)}else u=t.getModel().getValueInRange(l).replace(/\r\n/g,"\n");return new e(t,n,s,u,o,r,d)},e.prototype.addSelectionToNextFindMatch=function(){if(!this._editor.hasModel())return null;var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.concat(e),e,0)},e.prototype.moveSelectionToNextFindMatch=function(){if(!this._editor.hasModel())return null;var e=this._getNextMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.slice(0,t.length-1).concat(e),e,0)},e.prototype._getNextMatch=function(){if(!this._editor.hasModel())return null;if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findNextMatch(this.searchText,n.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1);return i?new c["a"](i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null},e.prototype.addSelectionToPreviousFindMatch=function(){if(!this._editor.hasModel())return null;var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.concat(e),e,0)},e.prototype.moveSelectionToPreviousFindMatch=function(){if(!this._editor.hasModel())return null;var e=this._getPreviousMatch();if(!e)return null;var t=this._editor.getSelections();return new L(t.slice(0,t.length-1).concat(e),e,0)},e.prototype._getPreviousMatch=function(){if(!this._editor.hasModel())return null;if(this.currentMatch){var e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();var t=this._editor.getSelections(),n=t[t.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,n.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1);return i?new c["a"](i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null},e.prototype.selectAll=function(){return this._editor.hasModel()?(this.findController.highlightFindOptions(),this._editor.getModel().findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1,1073741824)):[]},e}(),x=function(e){function t(t){var n=e.call(this)||this;return n._sessionDispose=n._register(new s["b"]),n._editor=t,n._ignoreSelectionChange=!1,n._session=null,n}return _(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.dispose=function(){this._endSession(),e.prototype.dispose.call(this)},t.prototype.getId=function(){return t.ID},t.prototype._beginSessionIfNeeded=function(e){var t=this;if(!this._session){var n=O.create(this._editor,e);if(!n)return;this._session=n;var i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection(function(e){t._ignoreSelectionChange||t._endSession()})),this._sessionDispose.add(this._editor.onDidBlurEditorText(function(){t._endSession()})),this._sessionDispose.add(e.getState().onFindReplaceStateChange(function(e){(e.matchCase||e.wholeWord)&&t._endSession()}))}},t.prototype._endSession=function(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){var e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null},t.prototype._setSelections=function(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1},t.prototype._expandEmptyToWord=function(e,t){if(!t.isEmpty())return t;var n=e.getWordAtPosition(t.getStartPosition());return n?new c["a"](t.startLineNumber,n.startColumn,t.startLineNumber,n.endColumn):t},t.prototype._applySessionResult=function(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))},t.prototype.getSession=function(e){return this._session},t.prototype.addSelectionToNextFindMatch=function(e){if(this._editor.hasModel()){if(!this._session){var t=this._editor.getSelections();if(t.length>1){var n=e.getState(),i=n.matchCase,o=A(this._editor.getModel(),t,i);if(!o){for(var r=this._editor.getModel(),s=[],a=0,u=t.length;a0&&n.isRegex)t=this._editor.getModel().findMatches(n.searchString,!0,n.isRegex,n.matchCase,n.wholeWord?this._editor.getConfiguration().wordSeparators:null,!1,1073741824);else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll()}if(t.length>0){for(var i=this._editor.getSelection(),o=0,r=t.length;o1){var a=o.getState(),u=a.matchCase,l=A(t.getModel(),s,u);if(!l)return null}r=O.create(t,o)}if(!r)return null;if(r.currentMatch)return null;if(/^[ \t]+$/.test(r.searchText))return null;if(r.searchText.length>200)return null;var c=o.getState(),d=c.matchCase;if(c.isRevealed){var h=c.searchString;d||(h=h.toLowerCase());var p=r.searchText;if(d||(p=p.toLowerCase()),h===p&&r.matchCase===c.matchCase&&r.wholeWord===c.wholeWord&&!c.isRegex)return null}return new P(r.searchText,r.matchCase,r.wholeWord?t.getConfiguration().wordSeparators:null)},t.prototype._setState=function(e){if(P.softEquals(this.state,e))this.state=e;else if(this.state=e,this.state){if(this.editor.hasModel()){var n=this.editor.getModel();if(!n.isTooLargeForTokenization()){var i=f["i"].has(n),o=n.findMatches(this.state.searchText,!0,!1,this.state.matchCase,this.state.wordSeparators,!1).map(function(e){return e.range});o.sort(l["a"].compareRangesUsingStarts);var r=this.editor.getSelections();r.sort(l["a"].compareRangesUsingStarts);for(var s=[],a=0,u=0,c=o.length,d=r.length;a=d)s.push(h),a++;else{var p=l["a"].compareRangesUsingStarts(h,r[u]);p<0?(!r[u].isEmpty()&&l["a"].areIntersecting(h,r[u])||s.push(h),a++):p>0?u++:(a++,u++)}}var g=s.map(function(e){return{range:e,options:i?t._SELECTION_HIGHLIGHT:t._SELECTION_HIGHLIGHT_OVERVIEW}});this.decorations=this.editor.deltaDecorations(this.decorations,g)}}}else this.decorations=this.editor.deltaDecorations(this.decorations,[])},t.prototype.dispose=function(){this._setState(null),e.prototype.dispose.call(this)},t.ID="editor.contrib.selectionHighlighter",t._SELECTION_HIGHLIGHT_OVERVIEW=p["a"].register({stickiness:1,className:"selectionHighlight",overviewRuler:{color:Object(v["g"])(m["Gb"]),position:h["d"].Center}}),t._SELECTION_HIGHLIGHT=p["a"].register({stickiness:1,className:"selectionHighlight"}),t}(s["a"]);function A(e,t,n){for(var i=F(e,t[0],!n),o=1,r=t.length;o=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},te=function(e,t){return function(n,i){t(n,i,e)}},ne=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},ie=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));var n=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{var i=n.range.getStartPosition();this._editor.setPosition(i),this._editor.revealPositionInCenter(i,t)}finally{this.ignoreSelectionChange=!1}}},t.prototype.canNavigate=function(){return this.ranges&&this.ranges.length>0},t.prototype.next=function(e){void 0===e&&(e=0),this._move(!0,e)},t.prototype.previous=function(e){void 0===e&&(e=0),this._move(!1,e)},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.ranges=[],this.disposed=!0},t}(q["a"]),ce=n("fb71"),de=n("8ae8"),he=n("3352"),pe=n("b707"),fe=n("8bf1"),ge=n("a40b"),me=n("b78f"),ve=n("5fe7"),_e=n("fdcc"),be=n("30db"),ye=n("ef8e"),we=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ce="$initialize",Se=!1;function Le(e){be["f"]&&(Se||(Se=!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))}var Oe=function(){function e(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null)}return e.prototype.setWorkerId=function(e){this._workerId=e},e.prototype.sendMessage=function(e,t){var n=this,i=String(++this._lastSentReq);return new Promise(function(o,r){n._pendingReplies[i]={resolve:o,reject:r},n._send({vsWorker:n._workerId,req:i,method:e,args:t})})},e.prototype.handleMessage=function(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))},e.prototype._handleMessage=function(e){var t=this;if(e.seq){var n=e;if(!this._pendingReplies[n.seq])return void console.warn("Got reply to unknown seq");var i=this._pendingReplies[n.seq];if(delete this._pendingReplies[n.seq],n.err){var o=n.err;return n.err.$isError&&(o=new Error,o.name=n.err.name,o.message=n.err.message,o.stack=n.err.stack),void i.reject(o)}i.resolve(n.res)}else{var r=e,s=r.req,a=this._handler.handleMessage(r.method,r.args);a.then(function(e){t._send({vsWorker:t._workerId,seq:s,res:e,err:void 0})},function(e){e.detail instanceof Error&&(e.detail=Object(_e["g"])(e.detail)),t._send({vsWorker:t._workerId,seq:s,res:void 0,err:Object(_e["g"])(e)})})}},e.prototype._send=function(e){var t=[];if(e.req)for(var n=e,i=0;i1&&f>1){var g=d.charCodeAt(p-2),m=h.charCodeAt(f-2);if(g!==m)break;p--,f--}(p>1||f>1)&&this._pushTrimWhitespaceCharChange(o,r+1,1,p,s+1,1,f);var v=je._getLastNonBlankColumn(d,1),_=je._getLastNonBlankColumn(h,1),b=d.length+1,y=h.length+1;while(vt&&(t=a),s>n&&(n=s),u>n&&(n=u)}t++,n++;var l=new Ze["a"](n,t,0);for(i=0,o=e.length;i=this._maxCharCode?0:this._states.get(e,t)},e}(),Xe=null;function $e(){return null===Xe&&(Xe=new Ye([[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]])),Xe}var Qe=null;function Je(){if(null===Qe){Qe=new Ge["a"](0);for(var e=" \t<>'\"、。。、,.:;?!@#$%&*‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…",t=0;ti);if(i>0){var u=t.charCodeAt(i-1),l=t.charCodeAt(r);(40===u&&41===l||91===u&&93===l||123===u&&125===l)&&r--}return{range:{startLineNumber:n,startColumn:i+1,endLineNumber:n,endColumn:r+2},url:t.substring(i,r+1)}},e.computeLinks=function(t,n){void 0===n&&(n=$e());for(var i=Je(),o=[],r=1,s=t.getLineCount();r<=s;r++){var a=t.getLineContent(r),u=a.length,l=0,c=0,d=0,h=1,p=!1,f=!1,g=!1;while(l=0?(i+=n?1:-1,i<0?i=e.length-1:i%=e.length,e[i]):null},e.INSTANCE=new e,e}(),it=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return it(t,e),Object.defineProperty(t.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"version",{get:function(){return this._versionId},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"eol",{get:function(){return this._eol},enumerable:!0,configurable:!0}),t.prototype.getValue=function(){return this.getText()},t.prototype.getLinesContent=function(){return this._lines.slice(0)},t.prototype.getLineCount=function(){return this._lines.length},t.prototype.getLineContent=function(e){return this._lines[e-1]},t.prototype.getWordAtPosition=function(e,t){var n=Object(qe["d"])(e.column,Object(qe["c"])(t),this._lines[e.lineNumber-1],0);return n?new W["a"](e.lineNumber,n.startColumn,e.lineNumber,n.endColumn):null},t.prototype.getWordUntilPosition=function(e,t){var n=this.getWordAtPosition(e,t);return n?{word:this._lines[e.lineNumber-1].substring(n.startColumn-1,e.column-1),startColumn:n.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}},t.prototype.createWordIterator=function(e){var t,n,i=this,o=0,r=0,s=[],a=function(){if(r=i._lines.length?Pe["c"]:(n=i._lines[o],s=i._wordenize(n,e),r=0,o+=1,a())};return{next:a}},t.prototype.getLineWords=function(e,t){for(var n=this._lines[e-1],i=this._wordenize(n,t),o=[],r=0,s=i;rthis._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,i=!0;else{var o=this._lines[t-1].length+1;n<1?(n=1,i=!0):n>o&&(n=o,i=!0)}return i?{lineNumber:t,column:n}:e},t}(Ke),rt=function(){function e(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}return e.prototype.dispose=function(){this._models=Object.create(null)},e.prototype._getModel=function(e){return this._models[e]},e.prototype._getModels=function(){var e=this,t=[];return Object.keys(this._models).forEach(function(n){return t.push(e._models[n])}),t},e.prototype.acceptNewModel=function(e){this._models[e.url]=new ot(F["a"].parse(e.url),e.lines,e.EOL,e.versionId)},e.prototype.acceptModelChanged=function(e,t){if(this._models[e]){var n=this._models[e];n.onEvents(t)}},e.prototype.acceptRemovedModel=function(e){this._models[e]&&delete this._models[e]},e.prototype.computeDiff=function(e,t,n){var i=this._getModel(e),o=this._getModel(t);if(!i||!o)return Promise.resolve(null);var r=i.getLinesContent(),s=o.getLinesContent(),a=new ze(r,s,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0}),u=a.computeDiff(),l=!(u.length>0)&&this._modelsAreIdentical(i,o);return Promise.resolve({identical:l,changes:u})},e.prototype._modelsAreIdentical=function(e,t){var n=e.getLineCount(),i=t.getLineCount();if(n!==i)return!1;for(var o=1;o<=n;o++){var r=e.getLineContent(o),s=t.getLineContent(o);if(r!==s)return!1}return!0},e.prototype.computeMoreMinimalEdits=function(t,n){var i=this._getModel(t);if(!i)return Promise.resolve(n);var o=[],r=void 0;n=Object(Me["o"])(n,function(e,t){if(e.range&&t.range)return W["a"].compareRangesUsingStarts(e.range,t.range);var n=e.range?0:1,i=t.range?0:1;return n-i});for(var s=0,a=n;se._diffLimit)o.push({range:l,text:c});else for(var p=Object(Te["b"])(h,c,!1),f=i.offsetAt(W["a"].lift(l).getStartPosition()),g=0,m=p;g=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},ft=function(e,t){return function(n,i){t(n,i,e)}},gt=6e4,mt=3e5;function vt(e,t){var n=e.getModel(t);return!!n&&!n.isTooLargeForSyncing()}var _t=function(e){function t(t,n,i){var o=e.call(this)||this;return o._modelService=t,o._workerManager=o._register(new yt(o._modelService)),o._logService=i,o._register(pe["q"].register("*",{provideLinks:function(e,t){return vt(o._modelService,e.uri)?o._workerManager.withWorker().then(function(t){return t.computeLinks(e.uri)}).then(function(e){return e&&{links:e}}):Promise.resolve({links:[]})}})),o._register(pe["d"].register("*",new bt(o._workerManager,n,o._modelService))),o}return ht(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype.canComputeDiff=function(e,t){return vt(this._modelService,e)&&vt(this._modelService,t)},t.prototype.computeDiff=function(e,t,n){return this._workerManager.withWorker().then(function(i){return i.computeDiff(e,t,n)})},t.prototype.computeMoreMinimalEdits=function(e,t){var n=this;if(Object(Me["n"])(t)){if(!vt(this._modelService,e))return Promise.resolve(t);var i=dt["a"].create(!0),o=this._workerManager.withWorker().then(function(n){return n.computeMoreMinimalEdits(e,t)});return o.finally(function(){return n._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),i.elapsed())}),o}return Promise.resolve(void 0)},t.prototype.canNavigateValueSet=function(e){return vt(this._modelService,e)},t.prototype.navigateValueSet=function(e,t,n){return this._workerManager.withWorker().then(function(i){return i.navigateValueSet(e,t,n)})},t.prototype.canComputeWordRanges=function(e){return vt(this._modelService,e)},t.prototype.computeWordRanges=function(e,t){return this._workerManager.withWorker().then(function(n){return n.computeWordRanges(e,t)})},t=pt([ft(0,st["a"]),ft(1,ut),ft(2,ct["a"])],t),t}(q["a"]),bt=function(){function e(e,t,n){this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=n}return e.prototype.provideCompletionItems=function(e,t){var n=this._configurationService.getValue(e.uri,t,"editor").wordBasedSuggestions;if(n&&vt(this._modelService,e.uri))return this._workerManager.withWorker().then(function(n){return n.textualSuggest(e.uri,t)})},e}(),yt=function(e){function t(t){var n=e.call(this)||this;n._modelService=t,n._editorWorkerClient=null,n._lastWorkerUsedTime=(new Date).getTime();var i=n._register(new ve["c"]);return i.cancelAndSet(function(){return n._checkStopIdleWorker()},Math.round(mt/2)),n._register(n._modelService.onModelRemoved(function(e){return n._checkStopEmptyWorker()})),n}return ht(t,e),t.prototype.dispose=function(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),e.prototype.dispose.call(this)},t.prototype._checkStopEmptyWorker=function(){if(this._editorWorkerClient){var e=this._modelService.getModels();0===e.length&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}},t.prototype._checkStopIdleWorker=function(){if(this._editorWorkerClient){var e=(new Date).getTime()-this._lastWorkerUsedTime;e>mt&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}},t.prototype.withWorker=function(){return this._lastWorkerUsedTime=(new Date).getTime(),this._editorWorkerClient||(this._editorWorkerClient=new Lt(this._modelService,"editorWorkerService")),Promise.resolve(this._editorWorkerClient)},t}(q["a"]),wt=function(e){function t(t,n,i){var o=e.call(this)||this;if(o._syncedModels=Object.create(null),o._syncedModelsLastUsedTime=Object.create(null),o._proxy=t,o._modelService=n,!i){var r=new ve["c"];r.cancelAndSet(function(){return o._checkStopModelSync()},Math.round(gt/2)),o._register(r)}return o}return ht(t,e),t.prototype.dispose=function(){for(var t in this._syncedModels)Object(q["f"])(this._syncedModels[t]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),e.prototype.dispose.call(this)},t.prototype.ensureSyncedResources=function(e){for(var t=0,n=e;tgt&&t.push(n)}for(var o=0,r=t;o'"_]/g,"-")}function jt(e,t){console.log(e.languageId+": "+t)}function Wt(e,t){return new Error(e.languageId+": "+t)}function Vt(e,t,n,i,o){var r=/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g,s=null;return t.replace(r,function(t,r,a,u,l,c,d,h,p){return Rt(a)?Rt(u)?!Rt(l)&&l0){var i=e.tokenizer[n];if(i)return i;var o=n.lastIndexOf(".");n=o<0?null:n.substr(0,o)}return null}function Ht(e,t){var n=t;while(n&&n.length>0){var i=e.stateNames[n];if(i)return!0;var o=n.lastIndexOf(".");n=o<0?null:n.substr(0,o)}return!1}var zt=5,Ut=function(){function e(e){this._maxCacheDepth=e,this._entries=Object.create(null)}return e.create=function(e,t){return this._INSTANCE.create(e,t)},e.prototype.create=function(e,t){if(null!==e&&e.depth>=this._maxCacheDepth)return new Kt(e,t);var n=Kt.getStackElementId(e);n.length>0&&(n+="|"),n+=t;var i=this._entries[n];return i||(i=new Kt(e,t),this._entries[n]=i,i)},e._INSTANCE=new e(zt),e}(),Kt=function(){function e(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}return e.getStackElementId=function(e){var t="";while(null!==e)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t},e._equals=function(e,t){while(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},e.prototype.equals=function(t){return e._equals(this,t)},e.prototype.push=function(e){return Ut.create(this,e)},e.prototype.pop=function(){return this.parent},e.prototype.popall=function(){var e=this;while(e.parent)e=e.parent;return e},e.prototype.switchTo=function(e){return Ut.create(this.parent,e)},e}(),qt=function(){function e(e,t){this.modeId=e,this.state=t}return e.prototype.equals=function(e){return this.modeId===e.modeId&&this.state.equals(e.state)},e.prototype.clone=function(){var t=this.state.clone();return t===this.state?this:new e(this.modeId,this.state)},e}(),Gt=function(){function e(e){this._maxCacheDepth=e,this._entries=Object.create(null)}return e.create=function(e,t){return this._INSTANCE.create(e,t)},e.prototype.create=function(e,t){if(null!==t)return new Zt(e,t);if(null!==e&&e.depth>=this._maxCacheDepth)return new Zt(e,t);var n=Kt.getStackElementId(e),i=this._entries[n];return i||(i=new Zt(e,null),this._entries[n]=i,i)},e._INSTANCE=new e(zt),e}(),Zt=function(){function e(e,t){this.stack=e,this.embeddedModeData=t}return e.prototype.clone=function(){var e=this.embeddedModeData?this.embeddedModeData.clone():null;return e===this.embeddedModeData?this:Gt.create(this.stack,this.embeddedModeData)},e.prototype.equals=function(t){return t instanceof e&&(!!this.stack.equals(t.stack)&&(null===this.embeddedModeData&&null===t.embeddedModeData||null!==this.embeddedModeData&&null!==t.embeddedModeData&&this.embeddedModeData.equals(t.embeddedModeData)))},e}(),Yt=function(){function e(){this._tokens=[],this._language=null,this._lastTokenType=null,this._lastTokenLanguage=null}return e.prototype.enterMode=function(e,t){this._language=t},e.prototype.emit=function(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._language||(this._lastTokenType=t,this._lastTokenLanguage=this._language,this._tokens.push(new B["a"](e,t,this._language)))},e.prototype.nestedModeTokenize=function(e,t,n){var i=t.modeId,o=t.state,r=pe["y"].get(i);if(!r)return this.enterMode(n,i),this.emit(n,""),o;var s=r.tokenize(e,o,n);return this._tokens=this._tokens.concat(s.tokens),this._lastTokenType=null,this._lastTokenLanguage=null,this._language=null,s.endState},e.prototype.finalize=function(e){return new B["b"](this._tokens,e)},e}(),Xt=function(){function e(e,t){this._modeService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}return e.prototype.enterMode=function(e,t){this._currentLanguageId=this._modeService.getLanguageIdentifier(t).id},e.prototype.emit=function(e,t){var n=this._theme.match(this._currentLanguageId,t);this._lastTokenMetadata!==n&&(this._lastTokenMetadata=n,this._tokens.push(e),this._tokens.push(n))},e._merge=function(e,t,n){var i=null!==e?e.length:0,o=t.length,r=null!==n?n.length:0;if(0===i&&0===o&&0===r)return new Uint32Array(0);if(0===i&&0===o)return n;if(0===o&&0===r)return e;var s=new Uint32Array(i+o+r);null!==e&&s.set(e);for(var a=0;a0&&i.nestedModeTokenize(s,t.embeddedModeData,n);var a=e.substring(o);return this._myTokenize(a,t,n+o,i)},e.prototype._safeRuleName=function(e){return e?e.name:"(unknown)"},e.prototype._myTokenize=function(e,t,n,i){i.enterMode(n,this._modeId);var o=e.length,r=t.embeddedModeData,s=t.stack,a=0,u=null,l=!0;while(l||a=o)break;l=!1;var y=this._lexer.tokenizer[p];if(!y&&(y=Bt(this._lexer,p),!y))throw Wt(this._lexer,"tokenizer state is not defined: "+p);for(var w=e.substr(a),C=0,S=y;C=this._lexer.maxStack)throw Wt(this._lexer,"maximum tokenizer stack size reached: ["+s.state+","+s.parent.state+",...]");s=s.push(p)}else if("@pop"===m.next){if(s.depth<=1)throw Wt(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(v));s=s.pop()}else if("@popall"===m.next)s=s.popall();else{x=Vt(this._lexer,m.next,g,f,p);if("@"===x[0]&&(x=x.substr(1)),!Bt(this._lexer,x))throw Wt(this._lexer,"trying to set a next state '"+x+"' that is undefined in rule: "+this._safeRuleName(v));s=s.push(x)}}m.log&&"string"===typeof m.log&&jt(this._lexer,this._lexer.languageId+": "+Vt(this._lexer,m.log,g,f,p))}if(null===O)throw Wt(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(v));if(Array.isArray(O)){if(u&&u.groups.length>0)throw Wt(this._lexer,"groups cannot be nested: "+this._safeRuleName(v));if(f.length!==O.length+1)throw Wt(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(v));for(var N=0,D=1;D=0&&a()})})},e.colorizeLine=function(e,t,n,i,o){void 0===o&&(o=4);var r=It["d"].isBasicASCII(e,t),s=It["d"].containsRTL(e,r,n),a=Object(kt["e"])(new kt["c"](!1,!0,e,!1,r,s,0,i,[],o,0,-1,"none",!1,!1,null));return a.html},e.colorizeModelLine=function(e,t,n){void 0===n&&(n=4);var i=e.getLineContent(t);e.forceTokenization(t);var o=e.getLineTokens(t),r=o.inflate();return this.colorizeLine(i,e.mightContainNonBasicASCII(),e.mightContainRTL(),r,n)},e}();function tn(e,t,n){return new Promise(function(i,o){var r=function(){var s=on(e,t,n);if(n instanceof $t){var a=n.getLoadStatus();if(!1===a.loaded)return void a.promise.then(r,o)}i(s)};r()})}function nn(e,t){var n=[],i=16793600,o=new Uint32Array(2);o[0]=0,o[1]=i;for(var r=0,s=e.length;r")}return n.join("")}function on(e,t,n){for(var i=[],o=n.getInitialState(),r=0,s=e.length;r"),o=u.endState}return i.join("")}var rn=n("b835"),sn=n("4b76"),an=n("b055"),un=n("8830"),ln=n("d3f49"),cn=n("fbba"),dn=n("4035"),hn=n("0910"),pn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),fn=function(){function e(e,t,n){void 0===e&&(e={}),void 0===t&&(t=[]),void 0===n&&(n=[]),this._contents=e,this._keys=t,this._overrides=n,this.isFrozen=!1}return Object.defineProperty(e.prototype,"contents",{get:function(){return this.checkAndFreeze(this._contents)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"overrides",{get:function(){return this.checkAndFreeze(this._overrides)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"keys",{get:function(){return this.checkAndFreeze(this._keys)},enumerable:!0,configurable:!0}),e.prototype.isEmpty=function(){return 0===this._keys.length&&0===Object.keys(this._contents).length&&0===this._overrides.length},e.prototype.getValue=function(e){return e?Object(cn["d"])(this.contents,e):this.contents},e.prototype.override=function(t){var n=this.getContentsForOverrideIdentifer(t);if(!n||"object"!==typeof n||!Object.keys(n).length)return this;for(var i={},o=0,r=Me["e"](Object.keys(this.contents).concat(Object.keys(n)));o5e3&&n._leaveChordMode():n._leaveChordMode()},500)},t.prototype._leaveChordMode=function(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChord=null},t.prototype._dispatch=function(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t)},t.prototype._doDispatch=function(e,t){var n=this,i=!1;if(e.isChord())return console.warn("Unexpected keyboard event mapped to a chord"),!1;var o=e.getDispatchParts()[0];if(null===o)return i;var r=this._contextKeyService.getContext(t),s=this._currentChord?this._currentChord.keypress:null,a=e.getLabel(),u=this._getResolver().resolve(r,s,o);return u&&u.enterChord?(i=!0,this._enterChordMode(o,a),i):(this._currentChord&&(u&&u.commandId||(this._notificationService.status(vn["a"]("missing.chord","The key combination ({0}, {1}) is not a command.",this._currentChord.label,a),{hideAfter:1e4}),i=!0)),this._leaveChordMode(),u&&u.commandId&&(u.bubble||(i=!0),"undefined"===typeof u.commandArgs?this._commandService.executeCommand(u.commandId).then(void 0,function(e){return n._notificationService.warn(e)}):this._commandService.executeCommand(u.commandId,u.commandArgs).then(void 0,function(e){return n._notificationService.warn(e)}),this._telemetryService.publicLog2("workbenchActionExecuted",{id:u.commandId,from:"keybinding"})),i)},t.prototype.mightProducePrintableCharacter=function(e){return!e.ctrlKey&&!e.metaKey&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30)},t}(q["a"]),yn=n("4fc3"),wn=function(){function e(t,n){this._defaultKeybindings=t,this._defaultBoundCommands=new Map;for(var i=0,o=t.length;i=0;c--)this._isTargetedForRemoval(e[c],a,u,s,l)&&e.splice(c,1);else n.push(r)}return e.concat(n)},e.prototype._addKeyPress=function(t,n){var i=this._map.get(t);if("undefined"===typeof i)return this._map.set(t,[n]),void this._addToLookupMap(n);for(var o=i.length-1;o>=0;o--){var r=i[o];if(r.command!==n.command){var s=r.keypressParts.length>1,a=n.keypressParts.length>1;s&&a&&r.keypressParts[1]!==n.keypressParts[1]||e.whenIsEntirelyIncluded(r.when,n.when)&&this._removeFromLookupMap(r)}}i.push(n),this._addToLookupMap(n)},e.prototype._addToLookupMap=function(e){if(e.command){var t=this._lookupMap.get(e.command);"undefined"===typeof t?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}},e.prototype._removeFromLookupMap=function(e){if(e.command){var t=this._lookupMap.get(e.command);if("undefined"!==typeof t)for(var n=0,i=t.length;n1&&null!==u.keypressParts[1]?{enterChord:!0,commandId:null,commandArgs:null,bubble:!1}:{enterChord:!1,commandId:u.command,commandArgs:u.commandArgs,bubble:u.bubble}:null},e.prototype._findCommand=function(t,n){for(var i=n.length-1;i>=0;i--){var o=n[i];if(e.contextMatchesRules(t,o.when))return o}return null},e.contextMatchesRules=function(e,t){return!t||t.evaluate(e)},e}(),Cn=n("9eb8"),Sn=function(){function e(e,t,n,i,o){this.resolvedKeybinding=e,this.keypressParts=e?Ln(e.getDispatchParts()):[],this.bubble=!!t&&94===t.charCodeAt(0),this.command=this.bubble?t.substr(1):t,this.commandArgs=n,this.when=i,this.isDefault=o}return e}();function Ln(e){for(var t=[],n=0,i=e.length;n1},t.prototype.getParts=function(){var e=this;return this._parts.map(function(t){return e._getPart(t)})},t.prototype._getPart=function(e){return new A["d"](e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))},t.prototype.getDispatchParts=function(){var e=this;return this._parts.map(function(t){return e._getDispatchPart(t)})},t}(A["c"]),Dn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),kn=function(e){function t(t,n){return e.call(this,n,t.parts)||this}return Dn(t,e),t.prototype._keyCodeToUILabel=function(e){if(2===this._os)switch(e){case 15:return"←";case 16:return"↑";case 17:return"→";case 18:return"↓"}return A["b"].toString(e)},t.prototype._getLabel=function(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)},t.prototype._getAriaLabel=function(e){return e.isDuplicateModifierCase()?"":A["b"].toString(e.keyCode)},t.prototype._getDispatchPart=function(e){return t.getDispatchStr(e)},t.getDispatchStr=function(e){if(e.isModifierKey())return null;var t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=A["b"].toString(e.keyCode),t},t}(Nn),In=n("b0cd"),En=n("1165"),Mn=n("03d9"),Tn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Pn=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Rn=function(e,t){return function(n,i){t(n,i,e)}},An=function(){function e(e){this.model=e,this._onDispose=new R["a"]}return Object.defineProperty(e.prototype,"textEditorModel",{get:function(){return this.model},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._onDispose.fire()},e}();function Fn(e,t,n){return Object(an["a"])(e)?t(e):n(e)}var jn=function(){function e(){}return e.prototype.setEditor=function(e){this.editor=e},e.prototype.createModelReference=function(e){var t=this,n=null;return this.editor&&(n=Fn(this.editor,function(n){return t.findModel(n,e)},function(n){return t.findModel(n.getOriginalEditor(),e)||t.findModel(n.getModifiedEditor(),e)})),n?Promise.resolve(new q["c"](new An(n))):Promise.reject(new Error("Model not found"))},e.prototype.findModel=function(e,t){var n=e.getModel();return n&&n.uri.toString()!==t.toString()?null:n},e}(),Wn=function(){function e(){}return e.prototype.showWhile=function(e,t){return Promise.resolve(void 0)},e}(),Vn=function(){function e(){}return e}(),Bn=function(){function e(){}return e.prototype.info=function(e){return this.notify({severity:sn["a"].Info,message:e})},e.prototype.warn=function(e){return this.notify({severity:sn["a"].Warning,message:e})},e.prototype.error=function(e){return this.notify({severity:sn["a"].Error,message:e})},e.prototype.notify=function(t){switch(t.severity){case sn["a"].Error:console.error(t.message);break;case sn["a"].Warning:console.warn(t.message);break;default:console.log(t.message);break}return e.NO_OP},e.prototype.status=function(e,t){return q["a"].None},e.NO_OP=new In["b"],e}(),Hn=function(){function e(e){this._onWillExecuteCommand=new R["a"],this._onDidExecuteCommand=new R["a"],this._instantiationService=e,this._dynamicCommands=Object.create(null)}return e.prototype.addCommand=function(e){var t=this,n=e.id;return this._dynamicCommands[n]=e,Object(q["h"])(function(){delete t._dynamicCommands[n]})},e.prototype.executeCommand=function(e){for(var t=[],n=1;n0){var _=e[r-1];m=0===_.originalEndLineNumber?_.originalStartLineNumber+1:_.originalEndLineNumber+1,v=0===_.modifiedEndLineNumber?_.modifiedStartLineNumber+1:_.modifiedEndLineNumber+1}var b=f-gi+1,y=g-gi+1;if(bL){w=L-N;N+=w,D+=w}if(D>O){w=O-D;N+=w,D+=w}h[p++]=new mi(C,N,S,D),i[o++]=new vi(h)}var k=i[0].entries,I=[],E=0;for(r=1,s=i.length;rd)&&(d=_),0!==b&&(0===h||bp)&&(p=y)}var w=document.createElement("div");w.className="diff-review-row";var C=document.createElement("div");C.className="diff-review-cell diff-review-summary";var S=d-c+1,L=p-h+1;C.appendChild(document.createTextNode(a+1+"/"+this._diffs.length+": @@ -"+c+","+S+" +"+h+","+L+" @@")),w.setAttribute("data-line",String(h));var O=function(e){return 0===e?vn["a"]("no_lines","no lines"):1===e?vn["a"]("one_line","1 line"):vn["a"]("more_lines","{0} lines",e)},x=O(S),N=O(L);w.setAttribute("aria-label",vn["a"]({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines", "1 line" or "X lines", localized separately.']},"Difference {0} of {1}: original {2}, {3}, modified {4}, {5}",a+1,this._diffs.length,c,x,h,N)),w.appendChild(C),w.setAttribute("role","listitem"),l.appendChild(w);var D=h;for(f=0,g=u.length;f0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]o.modifiedStartLineNumber?vn["a"]("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):vn["a"]("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"),void 0,!0,function(){return ki(a,void 0,void 0,function(){return Ii(this,function(e){switch(e.label){case 0:return[4,this._clipboardService.writeText(o.originalContent.join(l)+l)];case 1:return e.sent(),[2]}})})}));var d=0,h=void 0;o.originalEndLineNumber>o.modifiedStartLineNumber&&(h=new li["a"]("diff.clipboard.copyDeletedLineContent",vn["a"]("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",o.originalStartLineNumber),void 0,!0,function(){return ki(a,void 0,void 0,function(){return Ii(this,function(e){switch(e.label){case 0:return[4,this._clipboardService.writeText(o.originalContent[d])];case 1:return e.sent(),[2]}})})}),c.push(h));var p=i.getConfiguration().readOnly;return p||c.push(new li["a"]("diff.inline.revertChange",vn["a"]("diff.inline.revertChange.label","Revert this change"),void 0,!0,function(){return ki(a,void 0,void 0,function(){var e;return Ii(this,function(t){return 0===o.modifiedEndLineNumber?(e=i.getModel().getLineMaxColumn(o.modifiedStartLineNumber),i.executeEdits("diffEditor",[{range:new W["a"](o.modifiedStartLineNumber,e,o.modifiedStartLineNumber,e),text:l+o.originalContent.join(l)}])):(e=i.getModel().getLineMaxColumn(o.modifiedEndLineNumber),i.executeEdits("diffEditor",[{range:new W["a"](o.modifiedStartLineNumber,1,o.modifiedEndLineNumber,e),text:o.originalContent.join(l)}])),[2]})})})),a._register(K["k"](a._diffActions,"mousedown",function(e){var t=K["x"](a._diffActions),n=t.top,i=t.height,r=Math.floor(u/3);e.preventDefault(),a._contextMenuService.showContextMenu({getAnchor:function(){return{x:e.posx,y:n+i+r}},getActions:function(){return h&&(h.label=vn["a"]("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",o.originalStartLineNumber+d)),c},autoSelectFirstItem:!0})})),a._register(i.onMouseMove(function(e){if(8===e.target.type||5===e.target.type){var t=e.target.detail.viewZoneId;t===a._viewZoneId?(a.visibility=!0,d=a._updateLightBulbPosition(a._marginDomNode,e.event.browserEvent.y,u)):a.visibility=!1}else a.visibility=!1})),a}return Di(t,e),Object.defineProperty(t.prototype,"visibility",{get:function(){return this._visibility},set:function(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")},enumerable:!0,configurable:!0}),t.prototype._updateLightBulbPosition=function(e,t,n){var i=K["x"](e).top,o=t-i,r=Math.floor(o/n),s=r*n;return this._diffActions.style.top=s+"px",r},t}(q["a"]),Mi=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ti=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Pi=function(e,t){return function(n,i){t(n,i,e)}},Ri=function(){function e(e,t){this._contextMenuService=e,this._clipboardService=t,this._zones=[],this.inlineDiffMargins=[],this._zonesMap={},this._decorations=[]}return e.prototype.getForeignViewZones=function(e){var t=this;return e.filter(function(e){return!t._zonesMap[String(e.id)]})},e.prototype.clean=function(e){var t=this;this._zones.length>0&&e.changeViewZones(function(e){for(var n=0,i=t._zones.length;n0?o/n:0,s=Math.max(0,Math.floor(e.contentHeight*r)),a=Math.floor(t*r);return{height:s,top:a}},t.prototype._createDataSource=function(){var e=this;return{getWidth:function(){return e._width},getHeight:function(){return e._height-e._reviewHeight},getContainerDomNode:function(){return e._containerDomElement},relayoutEditors:function(){e._doLayout()},getOriginalEditor:function(){return e.originalEditor},getModifiedEditor:function(){return e.modifiedEditor}}},t.prototype._setStrategy=function(e){this._strategy&&this._strategy.dispose(),this._strategy=e,e.applyColors(this._themeService.getTheme()),this._diffComputationResult&&this._updateDecorations(),this._measureDomElement(!0)},t.prototype._getLineChangeAtOrBeforeLineNumber=function(e,t){var n=this._diffComputationResult?this._diffComputationResult.changes:[];if(0===n.length||e=a?i=r+1:(i=r,o=r)}return n[i]},t.prototype._getEquivalentLineForOriginalLineNumber=function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,function(e){return e.originalStartLineNumber});if(!t)return e;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),o=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,r=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,s=e-n;return s<=o?i+Math.min(s,r):i+r-o+s},t.prototype._getEquivalentLineForModifiedLineNumber=function(e){var t=this._getLineChangeAtOrBeforeLineNumber(e,function(e){return e.modifiedStartLineNumber});if(!t)return e;var n=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),i=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),o=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,r=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,s=e-i;return s<=r?n+Math.min(s,o):n+o-r+s},t.prototype.getDiffLineInformationForOriginal=function(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForOriginalLineNumber(e)}:null},t.prototype.getDiffLineInformationForModified=function(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForModifiedLineNumber(e)}:null},t.ONE_OVERVIEW_WIDTH=15,t.ENTIRE_DIFF_OVERVIEW_WIDTH=30,t.UPDATE_DIFF_DECORATIONS_DELAY=200,t=Ti([Pi(3,ge["a"]),Pi(4,yn["c"]),Pi(5,at["a"]),Pi(6,U["a"]),Pi(7,pi["c"]),Pi(8,In["a"]),Pi(9,Ni["a"])],t),t}(q["a"]),ji=function(e){function t(t){var n=e.call(this)||this;return n._dataSource=t,n._insertColor=null,n._removeColor=null,n}return Mi(t,e),t.prototype.applyColors=function(e){var t=(e.getColor(hi["j"])||hi["g"]).transparent(2),n=(e.getColor(hi["l"])||hi["h"]).transparent(2),i=!t.equals(this._insertColor)||!n.equals(this._removeColor);return this._insertColor=t,this._removeColor=n,i},t.prototype.getEditorsDiffDecorations=function(e,t,n,i,o,r,s){o=o.sort(function(e,t){return e.afterLineNumber-t.afterLineNumber}),i=i.sort(function(e,t){return e.afterLineNumber-t.afterLineNumber});var a=this._getViewZones(e,i,o,r,s,n),u=this._getOriginalEditorDecorations(e,t,n,r,s),l=this._getModifiedEditorDecorations(e,t,n,r,s);return{original:{decorations:u.decorations,overviewZones:u.overviewZones,zones:a.original},modified:{decorations:l.decorations,overviewZones:l.overviewZones,zones:a.modified}}},t}(q["a"]),Wi=function(){function e(e){this._source=e,this._index=-1,this.current=null,this.advance()}return e.prototype.advance=function(){this._index++,this._index0){var n=e[e.length-1];if(n.afterLineNumber===t.afterLineNumber&&null===n.domNode)return void(n.heightInLines+=t.heightInLines)}e.push(t)},c=new Wi(this.modifiedForeignVZ),d=new Wi(this.originalForeignVZ),h=0,p=this.lineChanges.length;h<=p;h++){var f=h0?-1:0),r=f.modifiedStartLineNumber+(f.modifiedEndLineNumber>0?-1:0),i=f.originalEndLineNumber>0?f.originalEndLineNumber-f.originalStartLineNumber+1:0,n=f.modifiedEndLineNumber>0?f.modifiedEndLineNumber-f.modifiedStartLineNumber+1:0,s=Math.max(f.originalStartLineNumber,f.originalEndLineNumber),a=Math.max(f.modifiedStartLineNumber,f.modifiedEndLineNumber)):(o+=1e7+i,r+=1e7+n,s=o,a=r);var g=[],m=[];while(c.current&&c.current.afterLineNumber<=a){var v=void 0;v=c.current.afterLineNumber<=r?o-r+c.current.afterLineNumber:s;var _=null;f&&f.modifiedStartLineNumber<=c.current.afterLineNumber&&c.current.afterLineNumber<=f.modifiedEndLineNumber&&(_=this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()),g.push({afterLineNumber:v,heightInLines:c.current.heightInLines,domNode:null,marginDomNode:_}),c.advance()}while(d.current&&d.current.afterLineNumber<=s){v=void 0;v=d.current.afterLineNumber<=o?r-o+d.current.afterLineNumber:a,m.push({afterLineNumber:v,heightInLines:d.current.heightInLines,domNode:null}),d.advance()}if(null!==f&&Gi(f)){var b=this._produceOriginalFromDiff(f,i,n);b&&g.push(b)}if(null!==f&&Zi(f)){b=this._produceModifiedFromDiff(f,i,n);b&&m.push(b)}var y=0,w=0;g=g.sort(u),m=m.sort(u);while(y=S.heightInLines?(C.heightInLines-=S.heightInLines,w++):(S.heightInLines-=C.heightInLines,y++)}while(y2*t.MINIMUM_EDITOR_WIDTH?(oi-t.MINIMUM_EDITOR_WIDTH&&(o=i-t.MINIMUM_EDITOR_WIDTH)):o=r,this._sashPosition!==o&&(this._sashPosition=o,this._sash.layout()),this._sashPosition},t.prototype.onSashDragStart=function(){this._startSashPosition=this._sashPosition},t.prototype.onSashDrag=function(e){var t=this._dataSource.getWidth(),n=t-Fi.ENTIRE_DIFF_OVERVIEW_WIDTH,i=this.layout((this._startSashPosition+(e.currentX-e.startX))/n);this._sashRatio=i/n,this._dataSource.relayoutEditors()},t.prototype.onSashDragEnd=function(){this._sash.layout()},t.prototype.onSashReset=function(){this._sashRatio=.5,this._dataSource.relayoutEditors(),this._sash.layout()},t.prototype.getVerticalSashTop=function(e){return 0},t.prototype.getVerticalSashLeft=function(e){return this._sashPosition},t.prototype.getVerticalSashHeight=function(e){return this._dataSource.getHeight()},t.prototype._getViewZones=function(e,t,n,i,o){var r=new Ui(e,t,n);return r.getViewZones()},t.prototype._getOriginalEditorDecorations=function(e,t,n,i,o){for(var r=String(this._removeColor),s={decorations:[],overviewZones:[]},a=i.getModel(),u=0,l=e.length;ut?{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:n-t,domNode:null}:null},t.prototype._produceModifiedFromDiff=function(e,t,n){return t>n?{afterLineNumber:Math.max(e.modifiedStartLineNumber,e.modifiedEndLineNumber),heightInLines:t-n,domNode:null}:null},t}(Vi),Ki=function(e){function t(t,n){var i=e.call(this,t)||this;return i.decorationsLeft=t.getOriginalEditor().getLayoutInfo().decorationsLeft,i._register(t.getOriginalEditor().onDidLayoutChange(function(e){i.decorationsLeft!==e.decorationsLeft&&(i.decorationsLeft=e.decorationsLeft,t.relayoutEditors())})),i}return Mi(t,e),t.prototype.setEnableSplitViewResizing=function(e){},t.prototype._getViewZones=function(e,t,n,i,o,r){var s=new qi(e,t,n,i,o,r);return s.getViewZones()},t.prototype._getOriginalEditorDecorations=function(e,t,n,i,o){for(var r=String(this._removeColor),s={decorations:[],overviewZones:[]},a=0,u=e.length;a'])}h+=this.modifiedEditorConfiguration.viewInfo.scrollBeyondLastColumn;var m=document.createElement("div");m.className="view-lines line-delete",m.innerHTML=a.build(),ri["a"].applyFontInfoSlow(m,this.modifiedEditorConfiguration.fontInfo);var v=document.createElement("div");return v.className="inline-deleted-margin-view-zone",v.innerHTML=u.join(""),ri["a"].applyFontInfoSlow(v,this.modifiedEditorConfiguration.fontInfo),{shouldNotShrink:!0,afterLineNumber:0===e.modifiedEndLineNumber?e.modifiedStartLineNumber:e.modifiedStartLineNumber-1,heightInLines:t,minWidthInPx:h*d,domNode:m,marginDomNode:v,diff:{originalStartLineNumber:e.originalStartLineNumber,originalEndLineNumber:e.originalEndLineNumber,modifiedStartLineNumber:e.modifiedStartLineNumber,modifiedEndLineNumber:e.modifiedEndLineNumber,originalContent:p}}},t.prototype._renderOriginalLine=function(e,t,n,i,o,r,s){var a=t.getLineTokens(o),u=a.getLineContent(),l=Oi["a"].filter(r,o,1,u.length+1);s.appendASCIIString('
    ');var c=It["d"].isBasicASCII(u,t.mightContainNonBasicASCII()),d=It["d"].containsRTL(u,c,t.mightContainRTL()),h=Object(kt["d"])(new kt["c"](n.fontInfo.isMonospace&&!n.viewInfo.disableMonospaceOptimizations,n.fontInfo.canUseHalfwidthRightwardsArrow,u,!1,c,d,0,a,l,i,n.fontInfo.spaceWidth,n.viewInfo.stopRenderingLineAfter,n.viewInfo.renderWhitespace,n.viewInfo.renderControlCharacters,n.viewInfo.fontLigatures,null),s);s.appendASCIIString("
    ");var p=h.characterMapping.getAbsoluteOffsets();return p.length>0?p[p.length-1]:0},t}(Vi);function Gi(e){return e.modifiedEndLineNumber>0}function Zi(e){return e.originalEndLineNumber>0}function Yi(){var e=document.createElement("div");return e.className="diagonal-fill",e}Object(pi["f"])(function(e,t){var n=e.getColor(hi["j"]);n&&(t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { background-color: "+n+"; }"),t.addRule(".monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: "+n+"; }"),t.addRule(".monaco-editor .inline-added-margin-view-zone { background-color: "+n+"; }"));var i=e.getColor(hi["l"]);i&&(t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { background-color: "+i+"; }"),t.addRule(".monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: "+i+"; }"),t.addRule(".monaco-editor .inline-deleted-margin-view-zone { background-color: "+i+"; }"));var o=e.getColor(hi["k"]);o&&t.addRule(".monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+o+"; }");var r=e.getColor(hi["m"]);r&&t.addRule(".monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px "+("hc"===e.type?"dashed":"solid")+" "+r+"; }");var s=e.getColor(hi["Lb"]);s&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px "+s+"; }");var a=e.getColor(hi["i"]);a&&t.addRule(".monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid "+a+"; }")});var Xi=n("f58f"),$i=n("b1ca"),Qi=n("7e32"),Ji=n("6dec"),eo=n("4779"),to=n("f577"),no=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),io=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},oo=function(e,t){return function(n,i){t(n,i,e)}},ro=0,so=!1;function ao(){so||(so=!0,ti["b"](document.body))}var uo=function(e){function t(t,n,i,o,r,s,a,u,l,c){var d=this;return n=n||{},n.ariaLabel=n.ariaLabel||Mn["g"].editorViewAccessibleLabel,n.ariaLabel=n.ariaLabel+";"+(ei["j"]?Mn["g"].accessibilityHelpMessageIE:Mn["g"].accessibilityHelpMessage),d=e.call(this,t,n,{},i,o,r,s,u,l,c)||this,d._standaloneKeybindingService=a instanceof zn?a:null,ao(),d}return no(t,e),t.prototype.addCommand=function(e,t,n){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;var i="DYNAMIC_"+ ++ro,o=yn["a"].deserialize(n);return this._standaloneKeybindingService.addDynamicKeybinding(i,e,t,o),i},t.prototype.createContextKey=function(e,t){return this._contextKeyService.createKey(e,t)},t.prototype.addAction=function(e){var t=this;if("string"!==typeof e.id||"string"!==typeof e.label||"function"!==typeof e.run)throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),q["a"].None;var n=e.id,i=e.label,o=yn["a"].and(yn["a"].equals("editorId",this.getId()),yn["a"].deserialize(e.precondition)),r=e.keybindings,s=yn["a"].and(o,yn["a"].deserialize(e.keybindingContext)),a=e.contextMenuGroupId||null,u=e.contextMenuOrder||0,l=function(){return Promise.resolve(e.run(t))},c=new q["b"],d=this.getId()+":"+n;if(c.add(Q["a"].registerCommand(d,l)),a){var h={command:{id:d,title:i},when:o,group:a,order:u};c.add(Qi["c"].appendMenuItem(7,h))}if(Array.isArray(r))for(var p=0,f=r;p> to now point to mime <<"+n.mime+">>"),n.filename&&e.filename===n.filename&&console.warn("Overwriting filename <<"+n.filename+">> to now point to mime <<"+n.mime+">>"),n.filepattern&&e.filepattern===n.filepattern&&console.warn("Overwriting filepattern <<"+n.filepattern+">> to now point to mime <<"+n.mime+">>"),n.firstline&&e.firstline===n.firstline&&console.warn("Overwriting firstline <<"+n.firstline+">> to now point to mime <<"+n.mime+">>"))})}function So(e){return{id:e.id,mime:e.mime,filename:e.filename,extension:e.extension,filepattern:e.filepattern,firstline:e.firstline,userConfigured:e.userConfigured,filenameLowercase:e.filename?e.filename.toLowerCase():void 0,extensionLowercase:e.extension?e.extension.toLowerCase():void 0,filepatternLowercase:e.filepattern?e.filepattern.toLowerCase():void 0,filepatternOnPath:!!e.filepattern&&e.filepattern.indexOf(go["posix"].sep)>=0}}function Lo(e,t){var n;if(e)switch(e.scheme){case Y["b"].file:n=e.fsPath;break;case Y["b"].data:var i=X["a"].parseMetaData(e);n=i.get(X["a"].META_DATA_LABEL);break;default:n=e.path}if(!n)return[_o];n=n.toLowerCase();var o=Object(go["basename"])(n),r=Oo(n,o,wo);if(r)return[r,vo];var s=Oo(n,o,yo);if(s)return[s,vo];if(t){var a=xo(t);if(a)return[a,vo]}return[_o]}function Oo(e,t,n){for(var i=null,o=null,r=null,s=n.length-1;s>=0;s--){var a=n[s];if(t===a.filenameLowercase){i=a;break}if(a.filepattern&&(!o||a.filepattern.length>o.filepattern.length)){var u=a.filepatternOnPath?e:t;Object(mo["a"])(a.filepatternLowercase,u)&&(o=a)}a.extension&&(!r||a.extension.length>r.extension.length)&&Object($["m"])(t,a.extensionLowercase)&&(r=a)}return i?i.mime:o?o.mime:r?r.mime:null}function xo(e){if(Object($["L"])(e)&&(e=e.substr(1)),e.length>0)for(var t=bo.length-1;t>=0;t--){var n=bo[t];if(n.firstline){var i=e.match(n.firstline);if(i&&i.length>0)return n.mime}}return null}var No=n("32a4"),Do=n("89cd"),ko=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Io=Object.prototype.hasOwnProperty,Eo=function(e){function t(t,n){void 0===t&&(t=!0),void 0===n&&(n=!1);var i=e.call(this)||this;return i._onDidChange=i._register(new R["a"]),i.onDidChange=i._onDidChange.event,i._warnOnOverwrite=n,i._nextLanguageId2=1,i._languageIdToLanguage=[],i._languageToLanguageId=Object.create(null),i._languages={},i._mimeTypesMap={},i._nameMap={},i._lowercaseNameMap={},t&&(i._initializeFromRegistry(),i._register(No["a"].onDidChangeLanguages(function(e){return i._initializeFromRegistry()}))),i}return ko(t,e),t.prototype._initializeFromRegistry=function(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={};var e=No["a"].getLanguages();this._registerLanguages(e)},t.prototype._registerLanguages=function(e){for(var t=this,n=0,i=e;n0&&((n=e.mimetypes).push.apply(n,t.mimetypes),o=t.mimetypes[0]),o||(o="text/x-"+i,e.mimetypes.push(o)),Array.isArray(t.extensions))for(var r=0,s=t.extensions;r0){var f=t.firstLine;"^"!==f.charAt(0)&&(f="^"+f);try{var g=new RegExp(f);$["E"](g)||Co({id:i,mime:o,firstline:g},this._warnOnOverwrite)}catch(C){Object(_e["e"])(C)}}e.aliases.push(i);var m=null;if("undefined"!==typeof t.aliases&&Array.isArray(t.aliases)&&(m=0===t.aliases.length?[null]:t.aliases),null!==m)for(var v=0,_=m;v<_.length;v++){var b=_[v];b&&0!==b.length&&e.aliases.push(b)}var y=null!==m&&m.length>0;if(y&&null===m[0]);else{var w=(y?m[0]:null)||i;!y&&e.name||(e.name=w)}t.configuration&&e.configurationFiles.push(t.configuration)},t.prototype.isRegisteredMode=function(e){return!!Io.call(this._mimeTypesMap,e)||Io.call(this._languages,e)},t.prototype.getModeIdForLanguageNameLowercase=function(e){return Io.call(this._lowercaseNameMap,e)?this._lowercaseNameMap[e].language:null},t.prototype.extractModeIds=function(e){var t=this;return e?e.split(",").map(function(e){return e.trim()}).map(function(e){return Io.call(t._mimeTypesMap,e)?t._mimeTypesMap[e].language:e}).filter(function(e){return Io.call(t._languages,e)}):[]},t.prototype.getLanguageIdentifier=function(e){if(e===fe["b"]||0===e)return fe["a"];var t;if("string"===typeof e)t=e;else if(t=this._languageIdToLanguage[e],!t)return null;return Io.call(this._languages,t)?this._languages[t].identifier:null},t.prototype.getModeIdsFromFilepathOrFirstLine=function(e,t){if(!e&&!t)return[];var n=Lo(e,t);return this.extractModeIds(n.join(","))},t}(q["a"]),Mo=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),To=function(e){function t(t,n){var i=e.call(this)||this;return i._onDidChange=i._register(new R["a"]),i.onDidChange=i._onDidChange.event,i._selector=n,i.languageIdentifier=i._selector(),i._register(t(function(){return i._evaluate()})),i}return Mo(t,e),t.prototype._evaluate=function(){var e=this._selector();e.id!==this.languageIdentifier.id&&(this.languageIdentifier=e,this._onDidChange.fire(this.languageIdentifier))},t}(q["a"]),Po=function(){function e(e){var t=this;void 0===e&&(e=!1),this._onDidCreateMode=new R["a"],this.onDidCreateMode=this._onDidCreateMode.event,this._onLanguagesMaybeChanged=new R["a"],this.onLanguagesMaybeChanged=this._onLanguagesMaybeChanged.event,this._instantiatedModes={},this._registry=new Eo(!0,e),this._registry.onDidChange(function(){return t._onLanguagesMaybeChanged.fire()})}return e.prototype.isRegisteredMode=function(e){return this._registry.isRegisteredMode(e)},e.prototype.getModeIdForLanguageName=function(e){return this._registry.getModeIdForLanguageNameLowercase(e)},e.prototype.getModeIdByFilepathOrFirstLine=function(e,t){var n=this._registry.getModeIdsFromFilepathOrFirstLine(e,t);return n.length>0?n[0]:null},e.prototype.getModeId=function(e){var t=this._registry.extractModeIds(e);return t.length>0?t[0]:null},e.prototype.getLanguageIdentifier=function(e){return this._registry.getLanguageIdentifier(e)},e.prototype.create=function(e){var t=this;return new To(this.onLanguagesMaybeChanged,function(){var n=t.getModeId(e);return t._createModeAndGetLanguageIdentifier(n)})},e.prototype.createByFilepathOrFirstLine=function(e,t){var n=this;return new To(this.onLanguagesMaybeChanged,function(){var i=n.getModeIdByFilepathOrFirstLine(e,t);return n._createModeAndGetLanguageIdentifier(i)})},e.prototype._createModeAndGetLanguageIdentifier=function(e){var t=this.getLanguageIdentifier(e||"plaintext")||fe["a"];return this._getOrCreateMode(t.language),t},e.prototype.triggerMode=function(e){var t=this.getModeId(e);this._getOrCreateMode(t||"plaintext")},e.prototype._getOrCreateMode=function(e){if(!this._instantiatedModes.hasOwnProperty(e)){var t=this.getLanguageIdentifier(e)||fe["a"];this._instantiatedModes[e]=new fo(t),this._onDidCreateMode.fire(this._instantiatedModes[e])}return this._instantiatedModes[e]},e}(),Ro=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Ao=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Fo=function(e,t){return function(n,i){t(n,i,e)}};function jo(e){return e.toString()}var Wo=function(){function e(e,t,n){this._modelEventListeners=new q["b"],this.model=e,this._languageSelection=null,this._languageSelectionListener=null,this._modelEventListeners.add(e.onWillDispose(function(){return t(e)})),this._modelEventListeners.add(e.onDidChangeLanguage(function(t){return n(e,t)}))}return e.prototype._disposeLanguageSelection=function(){this._languageSelectionListener&&(this._languageSelectionListener.dispose(),this._languageSelectionListener=null),this._languageSelection&&(this._languageSelection.dispose(),this._languageSelection=null)},e.prototype.dispose=function(){this._modelEventListeners.dispose(),this._disposeLanguageSelection()},e.prototype.setLanguage=function(e){var t=this;this._disposeLanguageSelection(),this._languageSelection=e,this._languageSelectionListener=this._languageSelection.onDidChange(function(){return t.model.setMode(e.languageIdentifier)}),this.model.setMode(e.languageIdentifier)},e}(),Vo=be["c"]||be["d"]?1:2,Bo=function(e){function t(t,n){var i=e.call(this)||this;return i._onModelAdded=i._register(new R["a"]),i.onModelAdded=i._onModelAdded.event,i._onModelRemoved=i._register(new R["a"]),i.onModelRemoved=i._onModelRemoved.event,i._onModelModeChanged=i._register(new R["a"]),i.onModelModeChanged=i._onModelModeChanged.event,i._configurationService=t,i._resourcePropertiesService=n,i._models={},i._modelCreationOptionsByLanguageAndResource=Object.create(null),i._configurationServiceSubscription=i._configurationService.onDidChangeConfiguration(function(e){return i._updateModelOptions()}),i._updateModelOptions(),i}return Ro(t,e),t._readModelOptions=function(e,t){var n=T["c"].tabSize;if(e.editor&&"undefined"!==typeof e.editor.tabSize){var i=parseInt(e.editor.tabSize,10);isNaN(i)||(n=i),n<1&&(n=1)}var o=n;if(e.editor&&"undefined"!==typeof e.editor.indentSize&&"tabSize"!==e.editor.indentSize){var r=parseInt(e.editor.indentSize,10);isNaN(r)||(o=r),o<1&&(o=1)}var s=T["c"].insertSpaces;e.editor&&"undefined"!==typeof e.editor.insertSpaces&&(s="false"!==e.editor.insertSpaces&&Boolean(e.editor.insertSpaces));var a=Vo,u=e.eol;"\r\n"===u?a=2:"\n"===u&&(a=1);var l=T["c"].trimAutoWhitespace;e.editor&&"undefined"!==typeof e.editor.trimAutoWhitespace&&(l="false"!==e.editor.trimAutoWhitespace&&Boolean(e.editor.trimAutoWhitespace));var c=T["c"].detectIndentation;e.editor&&"undefined"!==typeof e.editor.detectIndentation&&(c="false"!==e.editor.detectIndentation&&Boolean(e.editor.detectIndentation));var d=T["c"].largeFileOptimizations;return e.editor&&"undefined"!==typeof e.editor.largeFileOptimizations&&(d="false"!==e.editor.largeFileOptimizations&&Boolean(e.editor.largeFileOptimizations)),{isForSimpleWidget:t,tabSize:n,indentSize:o,insertSpaces:s,detectIndentation:c,defaultEOL:a,trimAutoWhitespace:l,largeFileOptimizations:d}},t.prototype.getCreationOptions=function(e,n,i){var o=this._modelCreationOptionsByLanguageAndResource[e+n];if(!o){var r=this._configurationService.getValue("editor",{overrideIdentifier:e,resource:n}),s=this._resourcePropertiesService.getEOL(n,e);o=t._readModelOptions({editor:r,eol:s},i),this._modelCreationOptionsByLanguageAndResource[e+n]=o}return o},t.prototype._updateModelOptions=function(){var e=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);for(var n=Object.keys(this._models),i=0,o=n.length;i=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},qo=function(e,t){return function(n,i){t(n,i,e)}},Go=function(e){function t(t,n){void 0===n&&(n=K["s"]());var i=e.call(this)||this;return i._decorationOptionProviders=new Map,i._styleSheet=n,i._themeService=t,i}return Uo(t,e),t.prototype.registerDecorationType=function(e,t,n){var i=this._decorationOptionProviders.get(e);if(!i){var o={styleSheet:this._styleSheet,key:e,parentTypeKey:n,options:t||Object.create(null)};i=n?new Zo(this._themeService,o):new Yo(this._themeService,o),this._decorationOptionProviders.set(e,i)}i.refCount++},t.prototype.removeDecorationType=function(e){var t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach(function(t){return t.removeDecorations(e)})))},t.prototype.resolveDecorationOptions=function(e,t){var n=this._decorationOptionProviders.get(e);if(!n)throw new Error("Unknown decoration type key: "+e);return n.getOptions(this,t)},t=Ko([qo(0,pi["c"])],t),t}(zo),Zo=function(){function e(e,t){this._parentTypeKey=t.parentTypeKey,this.refCount=0,this._beforeContentRules=new $o(3,t,e),this._afterContentRules=new $o(4,t,e)}return e.prototype.getOptions=function(e,t){var n=e.resolveDecorationOptions(this._parentTypeKey,!0);return this._beforeContentRules&&(n.beforeContentClassName=this._beforeContentRules.className),this._afterContentRules&&(n.afterContentClassName=this._afterContentRules.className),n},e.prototype.dispose=function(){this._beforeContentRules&&(this._beforeContentRules.dispose(),this._beforeContentRules=null),this._afterContentRules&&(this._afterContentRules.dispose(),this._afterContentRules=null)},e}(),Yo=function(){function e(e,t){var n=this;this._disposables=new q["b"],this.refCount=0;var i=function(i){var o=new $o(i,t,e);if(n._disposables.add(o),o.hasContent)return o.className},o=function(i){var o=new $o(i,t,e);return n._disposables.add(o),o.hasContent?{className:o.className,hasLetterSpacing:o.hasLetterSpacing}:null};this.className=i(0);var r=o(1);r&&(this.inlineClassName=r.className,this.inlineClassNameAffectsLetterSpacing=r.hasLetterSpacing),this.beforeContentClassName=i(3),this.afterContentClassName=i(4),this.glyphMarginClassName=i(2);var s=t.options;this.isWholeLine=Boolean(s.isWholeLine),this.stickiness=s.rangeBehavior;var a=s.light&&s.light.overviewRulerColor||s.overviewRulerColor,u=s.dark&&s.dark.overviewRulerColor||s.overviewRulerColor;"undefined"===typeof a&&"undefined"===typeof u||(this.overviewRuler={color:a||u,darkColor:u||a,position:s.overviewRulerLane||he["d"].Center})}return e.prototype.getOptions=function(e,t){return t?{inlineClassName:this.inlineClassName,beforeContentClassName:this.beforeContentClassName,afterContentClassName:this.afterContentClassName,className:this.className,glyphMarginClassName:this.glyphMarginClassName,isWholeLine:this.isWholeLine,overviewRuler:this.overviewRuler,stickiness:this.stickiness}:this},e.prototype.dispose=function(){this._disposables.dispose()},e}(),Xo={color:"color:{0} !important;",opacity:"opacity:{0};",backgroundColor:"background-color:{0};",outline:"outline:{0};",outlineColor:"outline-color:{0};",outlineStyle:"outline-style:{0};",outlineWidth:"outline-width:{0};",border:"border:{0};",borderColor:"border-color:{0};",borderRadius:"border-radius:{0};",borderSpacing:"border-spacing:{0};",borderStyle:"border-style:{0};",borderWidth:"border-width:{0};",fontStyle:"font-style:{0};",fontWeight:"font-weight:{0};",textDecoration:"text-decoration:{0};",cursor:"cursor:{0};",letterSpacing:"letter-spacing:{0};",gutterIconPath:"background:{0} center center no-repeat;",gutterIconSize:"background-size:{0};",contentText:"content:'{0}';",contentIconPath:"content:{0};",margin:"margin:{0};",width:"width:{0};",height:"height:{0};"},$o=function(){function e(e,t,n){var i=this;this._theme=n.getTheme(),this._ruleType=e,this._providerArgs=t,this._usesThemeColors=!1,this._hasContent=!1,this._hasLetterSpacing=!1;var o=Qo.getClassName(this._providerArgs.key,e);this._providerArgs.parentTypeKey&&(o=o+" "+Qo.getClassName(this._providerArgs.parentTypeKey,e)),this._className=o,this._unThemedSelector=Qo.getSelector(this._providerArgs.key,this._providerArgs.parentTypeKey,e),this._buildCSS(),this._usesThemeColors?this._themeListener=n.onThemeChange(function(e){i._theme=n.getTheme(),i._removeCSS(),i._buildCSS()}):this._themeListener=null}return e.prototype.dispose=function(){this._hasContent&&(this._removeCSS(),this._hasContent=!1),this._themeListener&&(this._themeListener.dispose(),this._themeListener=null)},Object.defineProperty(e.prototype,"hasContent",{get:function(){return this._hasContent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasLetterSpacing",{get:function(){return this._hasLetterSpacing},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),e.prototype._buildCSS=function(){var e,t,n,i=this._providerArgs.options;switch(this._ruleType){case 0:e=this.getCSSTextForModelDecorationClassName(i),t=this.getCSSTextForModelDecorationClassName(i.light),n=this.getCSSTextForModelDecorationClassName(i.dark);break;case 1:e=this.getCSSTextForModelDecorationInlineClassName(i),t=this.getCSSTextForModelDecorationInlineClassName(i.light),n=this.getCSSTextForModelDecorationInlineClassName(i.dark);break;case 2:e=this.getCSSTextForModelDecorationGlyphMarginClassName(i),t=this.getCSSTextForModelDecorationGlyphMarginClassName(i.light),n=this.getCSSTextForModelDecorationGlyphMarginClassName(i.dark);break;case 3:e=this.getCSSTextForModelDecorationContentClassName(i.before),t=this.getCSSTextForModelDecorationContentClassName(i.light&&i.light.before),n=this.getCSSTextForModelDecorationContentClassName(i.dark&&i.dark.before);break;case 4:e=this.getCSSTextForModelDecorationContentClassName(i.after),t=this.getCSSTextForModelDecorationContentClassName(i.light&&i.light.after),n=this.getCSSTextForModelDecorationContentClassName(i.dark&&i.dark.after);break;default:throw new Error("Unknown rule type: "+this._ruleType)}var o=this._providerArgs.styleSheet.sheet,r=!1;e.length>0&&(o.insertRule(this._unThemedSelector+" {"+e+"}",0),r=!0),t.length>0&&(o.insertRule(".vs"+this._unThemedSelector+" {"+t+"}",0),r=!0),n.length>0&&(o.insertRule(".vs-dark"+this._unThemedSelector+", .hc-black"+this._unThemedSelector+" {"+n+"}",0),r=!0),this._hasContent=r},e.prototype._removeCSS=function(){K["H"](this._unThemedSelector,this._providerArgs.styleSheet)},e.prototype.getCSSTextForModelDecorationClassName=function(e){if(!e)return"";var t=[];return this.collectCSSText(e,["backgroundColor"],t),this.collectCSSText(e,["outline","outlineColor","outlineStyle","outlineWidth"],t),this.collectBorderSettingsCSSText(e,t),t.join("")},e.prototype.getCSSTextForModelDecorationInlineClassName=function(e){if(!e)return"";var t=[];return this.collectCSSText(e,["fontStyle","fontWeight","textDecoration","cursor","color","opacity","letterSpacing"],t),e.letterSpacing&&(this._hasLetterSpacing=!0),t.join("")},e.prototype.getCSSTextForModelDecorationContentClassName=function(e){if(!e)return"";var t=[];if("undefined"!==typeof e){if(this.collectBorderSettingsCSSText(e,t),"undefined"!==typeof e.contentIconPath&&t.push($["r"](Xo.contentIconPath,K["n"](F["a"].revive(e.contentIconPath)))),"string"===typeof e.contentText){var n=e.contentText.match(/^.*$/m)[0],i=n.replace(/['\\]/g,"\\$&");t.push($["r"](Xo.contentText,i))}this.collectCSSText(e,["fontStyle","fontWeight","textDecoration","color","opacity","backgroundColor","margin"],t),this.collectCSSText(e,["width","height"],t)&&t.push("display:inline-block;")}return t.join("")},e.prototype.getCSSTextForModelDecorationGlyphMarginClassName=function(e){if(!e)return"";var t=[];return"undefined"!==typeof e.gutterIconPath&&(t.push($["r"](Xo.gutterIconPath,K["n"](F["a"].revive(e.gutterIconPath)))),"undefined"!==typeof e.gutterIconSize&&t.push($["r"](Xo.gutterIconSize,e.gutterIconSize))),t.join("")},e.prototype.collectBorderSettingsCSSText=function(e,t){return!!this.collectCSSText(e,["border","borderColor","borderRadius","borderSpacing","borderStyle","borderWidth"],t)&&(t.push($["r"]("box-sizing: border-box;")),!0)},e.prototype.collectCSSText=function(e,t,n){for(var i=n.length,o=0,r=t;o=1&&""===e[0].token){var r=e.shift();-1!==r.fontStyle&&(n=r.fontStyle),null!==r.foreground&&(i=r.foreground),null!==r.background&&(o=r.background)}for(var s=new sr,a=0,u=t;a>>0,this._cache.set(t,n)}return(n|e<<0)>>>0},e}(),ur=/\b(comment|string|regex|regexp)\b/;function lr(e){var t=e.match(ur);if(!t)return 0;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 4;case"regexp":return 4}throw new Error("Unexpected match for standard token type!")}function cr(e,t){return et?1:0}var dr,hr,pr,fr=function(){function e(e,t,n){this._fontStyle=e,this._foreground=t,this._background=n,this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0}return e.prototype.clone=function(){return new e(this._fontStyle,this._foreground,this._background)},e.prototype.acceptOverwrite=function(e,t,n){-1!==e&&(this._fontStyle=e),0!==t&&(this._foreground=t),0!==n&&(this._background=n),this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0},e}(),gr=function(){function e(e){this._mainRule=e,this._children=new Map}return e.prototype.match=function(e){if(""===e)return this._mainRule;var t,n,i=e.indexOf(".");-1===i?(t=e,n=""):(t=e.substring(0,i),n=e.substring(i+1));var o=this._children.get(t);return"undefined"!==typeof o?o.match(n):this._mainRule},e.prototype.insert=function(t,n,i,o){if(""!==t){var r,s,a=t.indexOf(".");-1===a?(r=t,s=""):(r=t.substring(0,a),s=t.substring(a+1));var u=this._children.get(r);"undefined"===typeof u&&(u=new e(this._mainRule.clone()),this._children.set(r,u)),u.insert(s,n,i,o)}else this._mainRule.acceptOverwrite(n,i,o)},e}();function mr(e){for(var t=[],n=1,i=e.length;n0?(this.id=n+" "+e,this.themeName=e):(this.id=n,this.themeName=n),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}return Object.defineProperty(e.prototype,"base",{get:function(){return this.themeData.base},enumerable:!0,configurable:!0}),e.prototype.notifyBaseUpdated=function(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)},e.prototype.getColors=function(){if(!this.colors){var e=new Map;for(var t in this.themeData.colors)e.set(t,tr["a"].fromHex(this.themeData.colors[t]));if(this.themeData.inherit){var n=Nr(this.themeData.base);for(var t in n.colors)e.has(t)||e.set(t,tr["a"].fromHex(n.colors[t]))}this.colors=e}return this.colors},e.prototype.getColor=function(e,t){var n=this.getColors().get(e);return n||(!1!==t?this.getDefault(e):void 0)},e.prototype.getDefault=function(e){var t=this.defaultColors[e];return t||(t=Sr.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)},e.prototype.defines=function(e){return Object.prototype.hasOwnProperty.call(this.getColors(),e)},Object.defineProperty(e.prototype,"type",{get:function(){switch(this.base){case yr:return"light";case Cr:return"hc";default:return"dark"}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tokenTheme",{get:function(){if(!this._tokenTheme){var e=[],t=[];if(this.themeData.inherit){var n=Nr(this.themeData.base);e=n.rules,n.encodedTokensColors&&(t=n.encodedTokensColors)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=ar.createFromRawTokenTheme(e,t)}return this._tokenTheme},enumerable:!0,configurable:!0}),e}();function xr(e){return e===yr||e===wr||e===Cr}function Nr(e){switch(e){case yr:return vr;case wr:return _r;case Cr:return br}}function Dr(e){var t=Nr(e);return new Or(e,t)}var kr=function(){function e(){this.environment=Object.create(null),this._onThemeChange=new R["a"],this._onIconThemeChange=new R["a"],this._knownThemes=new Map,this._knownThemes.set(yr,Dr(yr)),this._knownThemes.set(wr,Dr(wr)),this._knownThemes.set(Cr,Dr(Cr)),this._styleElement=K["s"](),this._styleElement.className="monaco-colors",this.setTheme(yr)}return Object.defineProperty(e.prototype,"onThemeChange",{get:function(){return this._onThemeChange.event},enumerable:!0,configurable:!0}),e.prototype.defineTheme=function(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!xr(t.base)&&!xr(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new Or(e,t)),xr(e)&&this._knownThemes.forEach(function(t){t.base===e&&t.notifyBaseUpdated()}),this._theme&&this._theme.themeName===e&&this.setTheme(e)},e.prototype.getTheme=function(){return this._theme},e.prototype.setTheme=function(e){var t,n=this;if(t=this._knownThemes.has(e)?this._knownThemes.get(e):this._knownThemes.get(yr),this._theme===t)return t.id;this._theme=t;var i=[],o={},r={addRule:function(e){o[e]||(i.push(e),o[e]=!0)}};Lr.getThemingParticipants().forEach(function(e){return e(t,r,n.environment)});var s=t.tokenTheme,a=s.getColorMap();return r.addRule(mr(a)),this._styleElement.innerHTML=i.join("\n"),pe["y"].setColorMap(a),this._onThemeChange.fire(t),t.id},e.prototype.getIconTheme=function(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}},e}(),Ir=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Er=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Mr=function(e,t){return function(n,i){t(n,i,e)}},Tr="data-keybinding-context",Pr=function(){function e(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value["_contextId"]=e}return e.prototype.setValue=function(e,t){return this._value[e]!==t&&(this._value[e]=t,!0)},e.prototype.removeValue=function(e){return e in this._value&&(delete this._value[e],!0)},e.prototype.getValue=function(e){var t=this._value[e];return"undefined"===typeof t&&this._parent?this._parent.getValue(e):t},e}(),Rr=function(e){function t(){return e.call(this,-1,null)||this}return Ir(t,e),t.prototype.setValue=function(e,t){return!1},t.prototype.removeValue=function(e){return!1},t.prototype.getValue=function(e){},t.INSTANCE=new t,t}(Pr),Ar=function(e){function t(t,n,i){var o=e.call(this,t,null)||this;return o._configurationService=n,o._values=new Map,o._listener=o._configurationService.onDidChangeConfiguration(function(e){if(6===e.source){var t=Object(dn["d"])(o._values);o._values.clear(),i.fire(new Wr(t))}else{for(var n=[],r=0,s=e.affectedKeys;r1){var i=n.shift();i&&(o.focusItemByElement(i.container),n.push(i)),o.mnemonics.set(t,n)}}})),be["c"]&&o._register(Object(K["h"])(r,K["d"].KEY_DOWN,function(e){var t=new rn["a"](e);t.equals(14)||t.equals(11)?(o.focusedItem=o.viewItems.length-1,o.focusNext(),K["c"].stop(e,!0)):(t.equals(13)||t.equals(12))&&(o.focusedItem=0,o.focusPrevious(),K["c"].stop(e,!0))})),o._register(Object(K["h"])(o.domNode,K["d"].MOUSE_OUT,function(e){var t=e.relatedTarget;Object(K["E"])(t,o.domNode)||(o.focusedItem=void 0,o.scrollTopHold=o.menuElement.scrollTop,o.updateFocus(),e.stopPropagation())})),o._register(Object(K["h"])(o.domNode,K["d"].MOUSE_UP,function(e){K["c"].stop(e,!0)})),o._register(Object(K["h"])(o.actionsList,K["d"].MOUSE_OVER,function(e){var t=e.target;if(t&&Object(K["E"])(t,o.actionsList)&&t!==o.actionsList){while(t.parentElement!==o.actionsList&&null!==t.parentElement)t=t.parentElement;if(Object(K["C"])(t,"action-item")){var n=o.focusedItem;o.scrollTopHold=o.menuElement.scrollTop,o.setFocusedItem(t),n!==o.focusedItem&&o.updateFocus()}}}));var s={parent:o};o.mnemonics=new Map,o.push(n,{icon:!0,label:!0,isMenu:!0}),o.scrollableElement=o._register(new ui["a"](r,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));var a=o.scrollableElement.getDomNode();return a.style.position=null,r.style.maxHeight=Math.max(10,window.innerHeight-t.getBoundingClientRect().top-30)+"px",o.menuDisposables.add(o.scrollableElement.onScroll(function(){o._onScroll.fire()},o)),o._register(Object(K["h"])(o.menuElement,K["d"].SCROLL,function(e){void 0!==o.scrollTopHold&&(o.menuElement.scrollTop=o.scrollTopHold,o.scrollTopHold=void 0),o.scrollableElement.scanDomNode()})),t.appendChild(o.scrollableElement.getDomNode()),o.scrollableElement.scanDomNode(),o.viewItems.filter(function(e){return!(e instanceof Qr)}).forEach(function(e,t,n){e.updatePositionInSet(t+1,n.length)}),o}return Kr(t,e),t.prototype.style=function(e){var t=this.getContainer(),n=e.foregroundColor?""+e.foregroundColor:null,i=e.backgroundColor?""+e.backgroundColor:null,o=e.borderColor?"2px solid "+e.borderColor:null,r=e.shadowColor?"0 2px 4px "+e.shadowColor:null;t.style.border=o,this.domNode.style.color=n,this.domNode.style.backgroundColor=i,t.style.boxShadow=r,this.viewItems&&this.viewItems.forEach(function(t){(t instanceof Xr||t instanceof Qr)&&t.style(e)})},t.prototype.getContainer=function(){return this.scrollableElement.getDomNode()},Object.defineProperty(t.prototype,"onScroll",{get:function(){return this._onScroll.event},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scrollOffset",{get:function(){return this.menuElement.scrollTop},enumerable:!0,configurable:!0}),t.prototype.focusItemByElement=function(e){var t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()},t.prototype.setFocusedItem=function(e){for(var t=0;t
    "+e.substr(i.index+i[0].length)),e=e.replace(/&&/g,"&"),this.item.setAttribute("aria-keyshortcuts",(n[1]?n[1]:n[3]).toLocaleLowerCase())}else e=e.replace(/&&/g,"&")}this.label.innerHTML=e.trim()}},t.prototype.updateTooltip=function(){var e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=vn["a"]({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&(this.item.title=e)},t.prototype.updateClass=function(){this.cssClass&&Object(K["J"])(this.item,this.cssClass),this.options.icon?(this.cssClass=this.getAction().class||"",Object(K["f"])(this.label,"icon"),this.cssClass&&Object(K["g"])(this.label,this.cssClass),this.updateEnabled()):Object(K["I"])(this.label,"icon")},t.prototype.updateEnabled=function(){this.getAction().enabled?(this.element&&Object(K["I"])(this.element,"disabled"),Object(K["I"])(this.item,"disabled"),this.item.tabIndex=0):(this.element&&Object(K["f"])(this.element,"disabled"),Object(K["f"])(this.item,"disabled"),Object(K["L"])(this.item))},t.prototype.updateChecked=function(){this.getAction().checked?(Object(K["f"])(this.item,"checked"),this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked","true")):(Object(K["I"])(this.item,"checked"),this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked","false"))},t.prototype.getMnemonic=function(){return this.mnemonic},t.prototype.applyStyle=function(){if(this.menuStyle){var e=this.element&&Object(K["C"])(this.element,"focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,n=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:this.menuStyle.backgroundColor,i=e&&this.menuStyle.selectionBorderColor?"thin solid "+this.menuStyle.selectionBorderColor:null;this.item.style.color=t?""+t:null,this.check.style.backgroundColor=t?""+t:null,this.item.style.backgroundColor=n?""+n:null,this.container.style.border=i}},t.prototype.style=function(e){this.menuStyle=e,this.applyStyle()},t}(ai["c"]),$r=function(e){function t(t,n,i,o){var r=e.call(this,t,t,o)||this;return r.submenuActions=n,r.parentData=i,r.submenuOptions=o,r.submenuDisposables=r._register(new q["b"]),r.showScheduler=new ve["d"](function(){r.mouseOver&&(r.cleanupExistingSubmenu(!1),r.createSubmenu(!1))},250),r.hideScheduler=new ve["d"](function(){r.element&&!Object(K["E"])(document.activeElement,r.element)&&r.parentData.submenu===r.mysubmenu&&(r.parentData.parent.focus(!1),r.cleanupExistingSubmenu(!0))},750),r}return Kr(t,e),t.prototype.render=function(t){var n=this;e.prototype.render.call(this,t),this.element&&(Object(K["f"])(this.item,"monaco-submenu-item"),this.item.setAttribute("aria-haspopup","true"),this.submenuIndicator=Object(K["m"])(this.item,Object(K["a"])("span.submenu-indicator")),this.submenuIndicator.setAttribute("aria-hidden","true"),this._register(Object(K["h"])(this.element,K["d"].KEY_UP,function(e){var t=new rn["a"](e);(t.equals(17)||t.equals(3))&&(K["c"].stop(e,!0),n.createSubmenu(!0))})),this._register(Object(K["h"])(this.element,K["d"].KEY_DOWN,function(e){var t=new rn["a"](e);document.activeElement===n.item&&(t.equals(17)||t.equals(3))&&K["c"].stop(e,!0)})),this._register(Object(K["h"])(this.element,K["d"].MOUSE_OVER,function(e){n.mouseOver||(n.mouseOver=!0,n.showScheduler.schedule())})),this._register(Object(K["h"])(this.element,K["d"].MOUSE_LEAVE,function(e){n.mouseOver=!1})),this._register(Object(K["h"])(this.element,K["d"].FOCUS_OUT,function(e){n.element&&!Object(K["E"])(document.activeElement,n.element)&&n.hideScheduler.schedule()})),this._register(this.parentData.parent.onScroll(function(){n.parentData.parent.focus(!1),n.cleanupExistingSubmenu(!1)})))},t.prototype.onClick=function(e){K["c"].stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!1)},t.prototype.cleanupExistingSubmenu=function(e){this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)&&(this.parentData.submenu.dispose(),this.parentData.submenu=void 0,this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0))},t.prototype.createSubmenu=function(e){var t=this;if(void 0===e&&(e=!0),this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.submenuContainer=Object(K["m"])(this.element,Object(K["a"])("div.monaco-submenu")),Object(K["g"])(this.submenuContainer,"menubar-menu-items-holder","context-view"),this.parentData.submenu=new Yr(this.submenuContainer,this.submenuActions,this.submenuOptions),this.menuStyle&&this.parentData.submenu.style(this.menuStyle);var n=this.element.getBoundingClientRect(),i=this.submenuContainer.getBoundingClientRect(),o=getComputedStyle(this.parentData.parent.domNode),r=parseFloat(o.paddingTop||"0")||0;window.innerWidth<=n.right+i.width?(this.submenuContainer.style.left="10px",this.submenuContainer.style.top=this.element.offsetTop-this.parentData.parent.scrollOffset+n.height+"px"):(this.submenuContainer.style.left=this.element.offsetWidth+"px",this.submenuContainer.style.top=this.element.offsetTop-this.parentData.parent.scrollOffset-r+"px"),this.submenuDisposables.add(Object(K["h"])(this.submenuContainer,K["d"].KEY_UP,function(e){var n=new rn["a"](e);n.equals(15)&&(K["c"].stop(e,!0),t.parentData.parent.focus(),t.parentData.submenu&&(t.parentData.submenu.dispose(),t.parentData.submenu=void 0),t.submenuDisposables.clear(),t.submenuContainer=void 0)})),this.submenuDisposables.add(Object(K["h"])(this.submenuContainer,K["d"].KEY_DOWN,function(e){var t=new rn["a"](e);t.equals(15)&&K["c"].stop(e,!0)})),this.submenuDisposables.add(this.parentData.submenu.onDidCancel(function(){t.parentData.parent.focus(),t.parentData.submenu&&(t.parentData.submenu.dispose(),t.parentData.submenu=void 0),t.submenuDisposables.clear(),t.submenuContainer=void 0})),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}},t.prototype.applyStyle=function(){if(e.prototype.applyStyle.call(this),this.menuStyle){var t=this.element&&Object(K["C"])(this.element,"focused"),n=t&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator.style.backgroundColor=n?""+n:null,this.parentData.submenu&&this.parentData.submenu.style(this.menuStyle)}},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)},t}(Xr),Qr=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Kr(t,e),t.prototype.style=function(e){this.label.style.borderBottomColor=e.separatorColor?""+e.separatorColor:null},t}(ai["b"]);function Jr(e){var t=qr,n=t.exec(e);if(!n)return e;var i=!n[1];return e.replace(t,i?"$2$3":"").trim()}var es=n("a6d7"),ts=n("e32d"),ns=n("5d28"),is=function(){function e(e,t,n,i,o){this.contextViewService=e,this.telemetryService=t,this.notificationService=n,this.keybindingService=i,this.themeService=o,this.options={blockMouse:!0}}return e.prototype.configure=function(e){this.options=e},e.prototype.showContextMenu=function(e){var t,n=this,i=e.getActions();i.length&&(this.focusToReturn=document.activeElement,this.contextViewService.showContextView({getAnchor:function(){return e.getAnchor()},canRelayout:!1,anchorAlignment:e.anchorAlignment,render:function(o){var r=e.getMenuClassName?e.getMenuClassName():"";r&&(o.className+=" "+r),n.options.blockMouse&&(n.block=o.appendChild(Object(K["a"])(".context-view-block")));var s=new q["b"],a=e.actionRunner||new li["b"];return a.onDidBeforeRun(n.onActionRun,n,s),a.onDidRun(n.onDidActionRun,n,s),t=new Yr(o,i,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:a,getKeyBinding:e.getKeyBinding?e.getKeyBinding:function(e){return n.keybindingService.lookupKeybinding(e.id)}}),s.add(Object(es["c"])(t,n.themeService)),t.onDidCancel(function(){return n.contextViewService.hideContextView(!0)},null,s),t.onDidBlur(function(){return n.contextViewService.hideContextView(!0)},null,s),Object(ts["a"])(window,K["d"].BLUR)(function(){n.contextViewService.hideContextView(!0)},null,s),Object(ts["a"])(window,K["d"].MOUSE_DOWN)(function(e){if(!e.defaultPrevented){var t=new ns["b"](e),i=t.target;if(!t.rightButton){while(i){if(i===o)return;i=i.parentElement}n.contextViewService.hideContextView(!0)}}},null,s),Object(q["e"])(s,t)},focus:function(){t&&t.focus(!!e.autoSelectFirstItem)},onHide:function(t){e.onHide&&e.onHide(!!t),n.block&&(Object(K["K"])(n.block),n.block=null),n.focusToReturn&&n.focusToReturn.focus()}}))},e.prototype.onActionRun=function(e){this.telemetryService&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1),this.focusToReturn&&this.focusToReturn.focus()},e.prototype.onDidActionRun=function(e){e.error&&this.notificationService&&this.notificationService.error(e.error)},e}(),os=n("5d75"),rs=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ss=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},as=function(e,t){return function(n,i){t(n,i,e)}},us=function(e){function t(t,n,i,o,r){var s=e.call(this)||this;return s._onDidContextMenu=s._register(new R["a"]),s.contextMenuHandler=new is(i,t,n,o,r),s}return rs(t,e),t.prototype.configure=function(e){this.contextMenuHandler.configure(e)},t.prototype.showContextMenu=function(e){this.contextMenuHandler.showContextMenu(e),this._onDidContextMenu.fire()},t=ss([as(0,os["a"]),as(1,In["a"]),as(2,Ni["b"]),as(3,Ji["a"]),as(4,pi["c"])],t),t}(q["a"]),ls=(n("4d3d"),n("9ee1")),cs=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function ds(e,t,n){var i=n.offset+n.size;return 0===n.position?t<=e-i?i:t<=n.offset?n.offset-t:Math.max(e-t,0):t<=n.offset?n.offset-t:t<=e-i?i:0}var hs=function(e){function t(t){var n=e.call(this)||this;return n.container=null,n.delegate=null,n.toDisposeOnClean=q["a"].None,n.toDisposeOnSetContainer=q["a"].None,n.view=K["a"](".context-view"),K["D"](n.view),n.setContainer(t),n._register(Object(q["h"])(function(){return n.setContainer(null)})),n}return cs(t,e),t.prototype.setContainer=function(e){var n=this;if(this.container&&(this.toDisposeOnSetContainer.dispose(),this.container.removeChild(this.view),this.container=null),e){this.container=e,this.container.appendChild(this.view);var i=new q["b"];t.BUBBLE_UP_EVENTS.forEach(function(e){i.add(K["k"](n.container,e,function(e){n.onDOMEvent(e,!1)}))}),t.BUBBLE_DOWN_EVENTS.forEach(function(e){i.add(K["k"](n.container,e,function(e){n.onDOMEvent(e,!0)},!0))}),this.toDisposeOnSetContainer=i}},t.prototype.show=function(e){this.isVisible()&&this.hide(),K["p"](this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",K["Q"](this.view),this.toDisposeOnClean=e.render(this.view)||q["a"].None,this.delegate=e,this.doLayout(),this.delegate.focus&&this.delegate.focus()},t.prototype.layout=function(){this.isVisible()&&(!1!==this.delegate.canRelayout?(this.delegate.layout&&this.delegate.layout(),this.doLayout()):this.hide())},t.prototype.doLayout=function(){if(this.isVisible()){var e,t=this.delegate.getAnchor();if(K["F"](t)){var n=K["x"](t);e={top:n.top,left:n.left,width:n.width,height:n.height}}else e={top:t.y,left:t.x,width:t.width||1,height:t.height||2};var i,o=K["B"](this.view),r=K["A"](this.view),s=this.delegate.anchorPosition||0,a=this.delegate.anchorAlignment||0,u={offset:e.top-window.pageYOffset,size:e.height,position:0===s?0:1};i=0===a?{offset:e.left,size:0,position:0}:{offset:e.left+e.width,size:0,position:1};var l=ds(window.innerHeight,r,u)+window.pageYOffset;ls["a"].intersects({start:l,end:l+r},{start:u.offset,end:u.offset+u.size})&&(i.size=e.width,1===a&&(i.offset=e.left));var c=ds(window.innerWidth,o,i);K["J"](this.view,"top","bottom","left","right"),K["f"](this.view,0===s?"bottom":"top"),K["f"](this.view,0===a?"left":"right");var d=K["x"](this.container);this.view.style.top=l-d.top+"px",this.view.style.left=c-d.left+"px",this.view.style.width="initial"}},t.prototype.hide=function(e){var t=this.delegate;this.delegate=null,t&&t.onHide&&t.onHide(e),this.toDisposeOnClean.dispose(),K["D"](this.view)},t.prototype.isVisible=function(){return!!this.delegate},t.prototype.onDOMEvent=function(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,document.activeElement):t&&!K["E"](e.target,this.container)&&this.hide())},t.prototype.dispose=function(){this.hide(),e.prototype.dispose.call(this)},t.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],t.BUBBLE_DOWN_EVENTS=["click"],t}(q["a"]),ps=Object(at["c"])("layoutService"),fs=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),gs=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},ms=function(e,t){return function(n,i){t(n,i,e)}},vs=function(e){function t(t){var n=e.call(this)||this;return n.layoutService=t,n.contextView=n._register(new hs(t.container)),n.layout(),n._register(t.onLayout(function(){return n.layout()})),n}return fs(t,e),t.prototype.setContainer=function(e){this.contextView.setContainer(e)},t.prototype.showContextView=function(e){this.contextView.show(e)},t.prototype.layout=function(){this.contextView.layout()},t.prototype.hideContextView=function(e){this.contextView.hide(e)},t=gs([ms(0,ps)],t),t}(q["a"]),_s=Object(at["c"])("dialogService"),bs=n("be5f");function ys(e){return{data:e,incoming:Object.create(null),outgoing:Object.create(null)}}var ws,Cs=function(){function e(e){this._hashFn=e,this._nodes=Object.create(null)}return e.prototype.roots=function(){var e=[];return Object(bs["c"])(this._nodes,function(t){Object(ye["e"])(t.value.outgoing)&&e.push(t.value)}),e},e.prototype.insertEdge=function(e,t){var n=this.lookupOrInsertNode(e),i=this.lookupOrInsertNode(t);n.outgoing[this._hashFn(t)]=i,i.incoming[this._hashFn(e)]=n},e.prototype.removeNode=function(e){var t=this._hashFn(e);delete this._nodes[t],Object(bs["c"])(this._nodes,function(e){delete e.value.outgoing[t],delete e.value.incoming[t]})},e.prototype.lookupOrInsertNode=function(e){var t=this._hashFn(e),n=this._nodes[t];return n||(n=ys(e),this._nodes[t]=n),n},e.prototype.isEmpty=function(){for(var e in this._nodes)return!1;return!0},e.prototype.toString=function(){var e=[];return Object(bs["c"])(this._nodes,function(t){e.push(t.key+", (incoming)["+Object.keys(t.value.incoming).join(", ")+"], (outgoing)["+Object.keys(t.value.outgoing).join(",")+"]")}),e.join("\n")},e}(),Ss=n("af40"),Ls=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Os=!1,xs="function"===typeof Proxy,Ns=function(e){function t(t){var n=e.call(this,"cyclic dependency between services")||this;return n.message=t.toString(),n}return Ls(t,e),t}(Error),Ds=function(){function e(e,t,n){void 0===e&&(e=new xi["a"]),void 0===t&&(t=!1),this._services=e,this._strict=t,this._parent=n,this._services.set(at["a"],this)}return e.prototype.createChild=function(t){return new e(t,this._strict,this)},e.prototype.invokeFunction=function(e){for(var t=this,n=[],i=1;i0?i[0].index:t.length;if(t.length!==l){console.warn("[createInstance] First service dependency of "+e.name+" at position "+(l+1)+" conflicts with "+t.length+" static arguments");var c=l-t.length;t=c>0?t.concat(new Array(c)):t.slice(0,l)}return new(e.bind.apply(e,[void 0].concat(t.concat(o))))},e.prototype._setServiceInstance=function(e,t){if(this._services.get(e)instanceof Ss["a"])this._services.set(e,t);else{if(!this._parent)throw new Error("illegalState - setting UNKNOWN service instance");this._parent._setServiceInstance(e,t)}},e.prototype._getServiceInstanceOrDescriptor=function(e){var t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t},e.prototype._getOrCreateServiceInstance=function(e,t){var n=this._getServiceInstanceOrDescriptor(e);return n instanceof Ss["a"]?this._createAndCacheServiceInstance(e,n,t.branch(e,!0)):(t.branch(e,!1),n)},e.prototype._createAndCacheServiceInstance=function(e,t,n){var i=new Cs(function(e){return e.id.toString()}),o=0,r=[{id:e,desc:t,_trace:n}];while(r.length){var s=r.pop();if(i.lookupOrInsertNode(s),o++>100)throw new Ns(i);for(var a=0,u=at["b"].getServiceDependencies(s.desc.ctor);a "+l);var h=i(e+1,d);h&&o.push(h)}else o.push(r+"uses -> "+l)}return o.join("\n")}var o=[(0===this.type?"CREATE":"CALL")+" "+this.name,""+i(1,this),"DONE, took "+t.toFixed(2)+"ms (grand total "+e._totals.toFixed(2)+"ms)"];(t>2||n)&&console.log(o.join("\n"))},e._None=new(function(e){function t(){return e.call(this,-1,null)||this}return Ls(t,e),t.prototype.stop=function(){},t.prototype.branch=function(){return this},t}(e)),e._totals=0,e}(),Is=n("47cb"),Es=n("93d9"),Ms=n("b400");(function(e){function t(e,t,n){if(e[t])return e[t][n]}function n(e,t,n,i){e[t]||(e[t]=Object.create(null)),e[t][n]=i}function i(e,t,n){return!(!e[t]||!e[t][n])&&(delete e[t][n],Object(ye["e"])(e[t])&&delete e[t],!0)}e.get=t,e.set=n,e.remove=i})(ws||(ws={}));var Ts=function(){function e(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=Object.create(null),this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}return e.prototype.dispose=function(){this._subscription.dispose(),this._data=void 0},e.prototype._update=function(e){if(this._data)for(var t=0,n=e;t0?a:1,u=u>0?u:1,l=l>=a?l:a,c=c>0?c:u,{resource:t,owner:e,code:i,severity:o,message:r,source:s,startLineNumber:a,startColumn:u,endLineNumber:l,endColumn:c,relatedInformation:d,tags:h}},e.prototype.read=function(t){void 0===t&&(t=Object.create(null));var n=t.owner,i=t.resource,o=t.severities,r=t.take;if((!r||r<0)&&(r=-1),n&&i){var s=ws.get(this._byResource,i.toString(),n);if(s){for(var a=[],u=0,l=s;u0&&d===r)break}}return a}return[]}if(n||i){var h=n?this._byOwner[n]:i?this._byResource[i.toString()]:void 0;if(!h)return[];a=[];for(var p in h)for(var f=0,g=h[p];f0&&d===r)return a}}return a}var a=[];for(var m in this._byResource)for(var v in this._byResource[m])for(var _=0,b=this._byResource[m][v];_0&&d===r)return a}}return a},e._accept=function(e,t){return void 0===t||(t&e.severity)===e.severity},e._debouncer=function(t,n){t||(e._dedupeMap=Object.create(null),t=[]);for(var i=0,o=n;i=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Ws=function(e,t){return function(n,i){t(n,i,e)}},Vs=function(){function e(e){this._commandService=e}return e.prototype.createMenu=function(e,t){return new Bs(e,this._commandService,t)},e=js([Ws(0,Q["b"])],e),e}(),Bs=function(e){function t(t,n,i){var o=e.call(this)||this;return o._id=t,o._commandService=n,o._contextKeyService=i,o._onDidChange=o._register(new R["a"]),o._build(),o._register(R["b"].debounce(R["b"].filter(Qi["c"].onDidChangeMenu,function(e){return e===o._id}),function(){},50)(o._build,o)),o._register(R["b"].debounce(o._contextKeyService.onDidChangeContext,function(e,t){return e||t.affectsSome(o._contextKeys)},50)(function(e){return e&&o._onDidChange.fire(void 0)},o)),o}return Fs(t,e),t.prototype._build=function(){this._menuGroups=[],this._contextKeys=new Set;var e,n=Qi["c"].getMenuItems(this._id);n.sort(t._compareMenuItems);for(var i=0,o=n;i0&&t.push([r,a])}return t},t._fillInKbExprKeys=function(e,t){if(e)for(var n=0,i=e.keys();ns)return 1;var a="string"===typeof e.command.title?e.command.title:e.command.title.value,u="string"===typeof t.command.title?t.command.title:t.command.title.value;return a.localeCompare(u)},t=js([Ws(1,Q["b"]),Ws(2,yn["c"])],t),t}(q["a"]),Hs=n("efdb"),zs=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Us=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Ks=function(e,t){return function(n,i){t(n,i,e)}};function qs(e){return e.toString()}var Gs,Zs=function(e){function t(t){var n=e.call(this)||this;return n.model=t,n._markersData=new Map,n._register(Object(q["h"])(function(){n.model.deltaDecorations(Object(dn["d"])(n._markersData),[]),n._markersData.clear()})),n}return zs(t,e),t.prototype.update=function(e,t){for(var n=this.model.deltaDecorations(Object(dn["d"])(this._markersData),t),i=0;i=o?new W["a"](n.startLineNumber,o-1,n.endLineNumber,o):new W["a"](n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn+1))}}else if(t.endColumn===Number.MAX_VALUE&&1===t.startColumn&&n.startLineNumber===n.endLineNumber){var r=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);r=0?"squiggly-unnecessary":"squiggly-hint",n=0;break;case Ms["c"].Warning:t="squiggly-warning",i=Object(pi["g"])(di["r"]),n=20;break;case Ms["c"].Info:t="squiggly-info",i=Object(pi["g"])(di["q"]),n=10;break;case Ms["c"].Error:default:t="squiggly-error",i=Object(pi["g"])(di["p"]),n=30;break}return e.tags&&(-1!==e.tags.indexOf(1)&&(o="squiggly-inline-unnecessary"),-1!==e.tags.indexOf(2)&&(o="squiggly-inline-deprecated")),{stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:i,position:he["d"].Right},zIndex:n,inlineClassName:o}},t=Us([Ks(0,st["a"]),Ks(1,Ms["b"])],t),t}(q["a"]),Xs=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),$s=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Qs=function(e,t){return function(n,i){t(n,i,e)}},Js=function(e){function t(t,n){var i=e.call(this)||this;return i._contextKeyService=t,i._configurationService=n,i._onDidChangeAccessibilitySupport=new R["a"],i.onDidChangeAccessibilitySupport=i._onDidChangeAccessibilitySupport.event,i._accessibilityModeEnabledContext=eo["a"].bindTo(i._contextKeyService),i._register(i._configurationService.onDidChangeConfiguration(function(e){e.affectsConfiguration("editor.accessibilitySupport")&&i._updateContextKey()})),i._updateContextKey(),i.onDidChangeAccessibilitySupport(function(){return i._updateContextKey()}),i}return Xs(t,e),t.prototype._updateContextKey=function(){var e=2===this.getAccessibilitySupport(),t=this._configurationService.getValue("editor.accessibilitySupport");this._accessibilityModeEnabledContext.set("on"===t||"auto"===t&&e)},t=$s([Qs(0,yn["c"]),Qs(1,cn["a"])],t),t}(q["a"]),ea=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),ta=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},na=function(e,t){return function(n,i){t(n,i,e)}},ia=function(e){function t(t,n){var i=e.call(this,t,n)||this;return i.contextKeyService=t,i.configurationService=n,i._accessibilitySupport=0,i}return ea(t,e),t.prototype.getAccessibilitySupport=function(){return this._accessibilitySupport},t=ta([na(0,yn["c"]),na(1,cn["a"])],t),t}(Js),oa=n("f5f3"),ra=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();(function(e){var t=new xi["a"],n=function(){function e(e,t){this._serviceId=e,this._factory=t,this._value=null}return Object.defineProperty(e.prototype,"id",{get:function(){return this._serviceId},enumerable:!0,configurable:!0}),e.prototype.get=function(e){if(!this._value){if(e&&(this._value=e[this._serviceId.toString()]),this._value||(this._value=this._factory(e)),!this._value)throw new Error("Service "+this._serviceId+" is missing!");t.set(this._serviceId,this._value)}return this._value},e}();e.LazyStaticService=n;var i=[];function o(e,t){var o=new n(e,t);return i.push(o),o}function r(e){for(var t=new xi["a"],n=0,o=Object(oa["a"])();n=0&&n<5)n++,t=t.replace(/@(\w+)/g,function(n,i){var o="";if("string"===typeof e[i])o=e[i];else{if(!(e[i]&&e[i]instanceof RegExp))throw void 0===e[i]?Wt(e,"language definition does not contain attribute '"+i+"', used at: "+t):Wt(e,"attribute reference '"+i+"' must be a string, used at: "+t);o=e[i].source}return Rt(o)?"":"(?:"+o+")"});return new RegExp(t,e.ignoreCase?"i":"")}function Wa(e,t,n,i){if(i<0)return e;if(i=100){i-=100;var o=n.split(".");if(o.unshift(n),i=0&&(i.tokenSubst=!0),"string"===typeof n.bracket)if("@open"===n.bracket)i.bracket=1;else{if("@close"!==n.bracket)throw Wt(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);i.bracket=-1}if(n.next){if("string"!==typeof n.next)throw Wt(e,"the next state must be a string value in rule: "+t);var o=n.next;if(!/^(@pop|@push|@popall)$/.test(o)&&("@"===o[0]&&(o=o.substr(1)),o.indexOf("$")<0&&!Ht(e,Vt(e,o,"",[],""))))throw Wt(e,"the next state '"+n.next+"' is not defined in rule: "+t);i.next=o}return"number"===typeof n.goBack&&(i.goBack=n.goBack),"string"===typeof n.switchTo&&(i.switchTo=n.switchTo),"string"===typeof n.log&&(i.log=n.log),"string"===typeof n.nextEmbedded&&(i.nextEmbedded=n.nextEmbedded,e.usesEmbedded=!0),i}if(Array.isArray(n)){for(var r=[],s=0,a=n.length;s0&&"^"===n[0],this.name=this.name+": "+n,this.regex=ja(e,"^(?:"+(this.matchOnlyAtLineStart?n.substr(1):n)+")")},e.prototype.setAction=function(e,t){this.action=Ba(e,this.name,t)},e}();function za(e,t){if(!t||"object"!==typeof t)throw new Error("Monarch: expecting a language definition object");var n={};n.languageId=e,n.noThrow=!1,n.maxStack=100,n.start="string"===typeof t.start?t.start:null,n.ignoreCase=Pa(t.ignoreCase,!1),n.tokenPostfix=Ra(t.tokenPostfix,"."+n.languageId),n.defaultToken=Ra(t.defaultToken,"source"),n.usesEmbedded=!1;var i=t;function o(e,r,s){for(var a=0,u=s;a=1&&l.length<=3)if(d.setRegex(i,l[0]),l.length>=3)if("string"===typeof l[1])d.setAction(i,{token:l[1],next:l[2]});else{if("object"!==typeof l[1])throw Wt(n,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+e);var h=l[1];h.next=l[2],d.setAction(i,h)}else d.setAction(i,l[1]);else{if(!l.regex)throw Wt(n,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+e);l.name&&"string"===typeof l.name&&(d.name=l.name),l.matchOnlyAtStart&&(d.matchOnlyAtLineStart=Pa(l.matchOnlyAtLineStart,!1)),d.setRegex(i,l.regex),d.setAction(i,l.action)}r.push(d)}}}if(i.languageId=e,i.ignoreCase=n.ignoreCase,i.noThrow=n.noThrow,i.usesEmbedded=n.usesEmbedded,i.stateNames=t.tokenizer,i.defaultToken=n.defaultToken,!t.tokenizer||"object"!==typeof t.tokenizer)throw Wt(n,"a language definition must define the 'tokenizer' attribute as an object");for(var r in n.tokenizer=[],t.tokenizer)if(t.tokenizer.hasOwnProperty(r)){n.start||(n.start=r);var s=t.tokenizer[r];n.tokenizer[r]=new Array,o("tokenizer."+r,n.tokenizer[r],s)}if(n.usesEmbedded=i.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw Wt(n,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];for(var a=[],u=0,l=t.brackets;u0&&o[r-1]===c)){var d=l.startIndex;0===a?d=0:dt.getLineMinColumn(n)?i["a"].isLowSurrogate(t,n,o-2)?o-=2:o-=1:n>1&&(n-=1,o=t.getLineMaxColumn(n)),new s(n,o,0)},e.moveLeft=function(t,n,i,o,r){var s,a;if(i.hasSelection()&&!o)s=i.selection.startLineNumber,a=i.selection.startColumn;else{var u=e.left(t,n,i.position.lineNumber,i.position.column-(r-1));s=u.lineNumber,a=u.column}return i.move(o,s,a,0)},e.right=function(e,t,n,o){return oc?(n=c,u?o=t.getLineMaxColumn(n):(o=Math.min(t.getLineMaxColumn(n),o),i["a"].isInsideSurrogatePair(t,n,o)&&(o-=1))):(o=i["a"].columnFromVisibleColumn2(e,t,n,l),i["a"].isInsideSurrogatePair(t,n,o)&&(o-=1)),r=l-i["a"].visibleColumnFromColumn(t.getLineContent(n),o,e.tabSize),new s(n,o,r)},e.moveDown=function(t,n,i,o,r){var s,a;i.hasSelection()&&!o?(s=i.selection.endLineNumber,a=i.selection.endColumn):(s=i.position.lineNumber,a=i.position.column);var u=e.down(t,n,s,a,i.leftoverVisibleColumns,r,!0);return i.move(o,u.lineNumber,u.column,u.leftoverVisibleColumns)},e.translateDown=function(t,n,s){var a=s.selection,u=e.down(t,n,a.selectionStartLineNumber,a.selectionStartColumn,s.selectionStartLeftoverVisibleColumns,1,!1),l=e.down(t,n,a.positionLineNumber,a.positionColumn,s.leftoverVisibleColumns,1,!1);return new i["f"](new r["a"](u.lineNumber,u.column,u.lineNumber,u.column),u.leftoverVisibleColumns,new o["a"](l.lineNumber,l.column),l.leftoverVisibleColumns)},e.up=function(e,t,n,o,r,a,u){var l=i["a"].visibleColumnFromColumn(t.getLineContent(n),o,e.tabSize)+r;return n-=a,n<1?(n=1,u?o=t.getLineMinColumn(n):(o=Math.min(t.getLineMaxColumn(n),o),i["a"].isInsideSurrogatePair(t,n,o)&&(o-=1))):(o=i["a"].columnFromVisibleColumn2(e,t,n,l),i["a"].isInsideSurrogatePair(t,n,o)&&(o-=1)),r=l-i["a"].visibleColumnFromColumn(t.getLineContent(n),o,e.tabSize),new s(n,o,r)},e.moveUp=function(t,n,i,o,r){var s,a;i.hasSelection()&&!o?(s=i.selection.startLineNumber,a=i.selection.startColumn):(s=i.position.lineNumber,a=i.position.column);var u=e.up(t,n,s,a,i.leftoverVisibleColumns,r,!0);return i.move(o,u.lineNumber,u.column,u.leftoverVisibleColumns)},e.translateUp=function(t,n,s){var a=s.selection,u=e.up(t,n,a.selectionStartLineNumber,a.selectionStartColumn,s.selectionStartLeftoverVisibleColumns,1,!1),l=e.up(t,n,a.positionLineNumber,a.positionColumn,s.leftoverVisibleColumns,1,!1);return new i["f"](new r["a"](u.lineNumber,u.column,u.lineNumber,u.column),u.leftoverVisibleColumns,new o["a"](l.lineNumber,l.column),l.leftoverVisibleColumns)},e.moveToBeginningOfLine=function(e,t,n,i){var o,r=n.position.lineNumber,s=t.getLineMinColumn(r),a=t.getLineFirstNonWhitespaceColumn(r)||s,u=n.position.column;return o=u===a?s:a,n.move(i,r,o,0)},e.moveToEndOfLine=function(e,t,n,i){var o=n.position.lineNumber,r=t.getLineMaxColumn(o);return n.move(i,o,r,0)},e.moveToBeginningOfBuffer=function(e,t,n,i){return n.move(i,1,1,0)},e.moveToEndOfBuffer=function(e,t,n,i){var o=t.getLineCount(),r=t.getLineMaxColumn(o);return n.move(i,o,r,0)},e}()},fb71:function(e,t,n){"use strict";n.d(t,"a",function(){return _}),n.d(t,"b",function(){return b});var i=n("30db"),o=n("fd49"),r=n("62bd"),s=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),a=i["d"]?1.5:1.35,u=8,l=100,c=8,d=150,h=-5,p=20;function f(e,t){if("number"===typeof e)return e;if("undefined"===typeof e)return t;var n=parseFloat(e);return isNaN(n)?t:n}function g(e,t){if("number"===typeof e)return Math.round(e);if("undefined"===typeof e)return t;var n=parseInt(e);return isNaN(n)?t:n}function m(e,t,n){return en?n:e}function v(e,t){return"string"!==typeof e?t:e}var _=function(){function e(e){this.zoomLevel=e.zoomLevel,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.lineHeight=0|e.lineHeight,this.letterSpacing=e.letterSpacing}return e.createFromRawSettings=function(t,n,i){void 0===i&&(i=!1);var s=v(t.fontFamily,o["b"].fontFamily),_=v(t.fontWeight,o["b"].fontWeight),b=f(t.fontSize,o["b"].fontSize);b=m(b,0,l),0===b?b=o["b"].fontSize:bthis.selection.endLineNumber?this.targetSelection=new u["a"](this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber=2?(S=v?2:4,M=2/b):(S=v?1:3,M=1/b),O=Math.max(0,Math.floor((E-d-2)*M/(l+M)));var T=O/M;T>_&&(O=Math.floor(_*M)),x=E-O,"left"===m?(L=0,N+=O,D+=O,k+=O,I+=O):L=t-O-d}else L=0,O=0,S=0,x=E;var P=Math.max(1,Math.floor((x-d-2)/l)),R=h?p:0;return{width:t,height:n,glyphMarginLeft:N,glyphMarginWidth:C,glyphMarginHeight:n,lineNumbersLeft:D,lineNumbersWidth:y,lineNumbersHeight:n,decorationsLeft:k,decorationsWidth:u,decorationsHeight:n,contentLeft:I,contentWidth:x,contentHeight:n,renderMinimap:S,minimapLeft:L,minimapWidth:O,viewportColumn:P,verticalScrollbarWidth:d,horizontalScrollbarHeight:f,overviewRuler:{top:R,width:d,height:n-2*R,right:0}}},e}(),N="Consolas, 'Courier New', monospace",D="Menlo, Monaco, 'Courier New', monospace",k="'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'",I={fontFamily:a["d"]?D:a["c"]?k:N,fontWeight:"normal",fontSize:a["d"]?12:14,lineHeight:0,letterSpacing:0},E={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0},M={inDiffEditor:!1,wordSeparators:u["b"],lineNumbersMinChars:5,lineDecorationsWidth:10,readOnly:!1,mouseStyle:"text",disableLayerHinting:!1,automaticLayout:!1,wordWrap:"off",wordWrapColumn:80,wordWrapMinified:!0,wrappingIndent:1,wordWrapBreakBeforeCharacters:"([{‘“〈《「『【〔([{「£¥$£¥++",wordWrapBreakAfterCharacters:" \t})]?|/&,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」",wordWrapBreakObtrusiveCharacters:".",autoClosingBrackets:"languageDefined",autoClosingQuotes:"languageDefined",autoClosingOvertype:"auto",autoSurround:"languageDefined",autoIndent:!0,dragAndDrop:!0,emptySelectionClipboard:!0,copyWithSyntaxHighlighting:!0,useTabStops:!0,multiCursorModifier:"altKey",multiCursorMergeOverlapping:!0,accessibilitySupport:"auto",showUnused:!0,viewInfo:{extraEditorClassName:"",disableMonospaceOptimizations:!1,rulers:[],ariaLabel:o["a"]("editorViewAccessibleLabel","Editor content"),renderLineNumbers:1,renderCustomLineNumbers:null,cursorSurroundingLines:0,renderFinalNewline:!0,selectOnLineNumbers:!0,glyphMargin:!0,revealHorizontalRightPadding:30,roundedSelection:!0,overviewRulerLanes:2,overviewRulerBorder:!0,cursorBlinking:1,mouseWheelZoom:!1,cursorSmoothCaretAnimation:!1,cursorStyle:i.Line,cursorWidth:0,hideCursorInOverviewRuler:!1,scrollBeyondLastLine:!0,scrollBeyondLastColumn:5,smoothScrolling:!1,stopRenderingLineAfter:1e4,renderWhitespace:"none",renderControlCharacters:!1,fontLigatures:!1,renderIndentGuides:!0,highlightActiveIndentGuide:!0,renderLineHighlight:"line",scrollbar:{vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:10,horizontalSliderSize:10,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,mouseWheelScrollSensitivity:1,fastScrollSensitivity:5},minimap:{enabled:!0,side:"right",showSlider:"mouseover",renderCharacters:!0,maxColumn:120},fixedOverflowWidgets:!1},contribInfo:{selectionClipboard:!0,hover:{enabled:!0,delay:300,sticky:!0},links:!0,contextmenu:!0,quickSuggestions:{other:!0,comments:!1,strings:!1},quickSuggestionsDelay:10,parameterHints:{enabled:!0,cycle:!1},formatOnType:!1,formatOnPaste:!1,suggestOnTriggerCharacters:!0,acceptSuggestionOnEnter:"on",acceptSuggestionOnCommitCharacter:!0,wordBasedSuggestions:!0,suggestSelection:"recentlyUsed",suggestFontSize:0,suggestLineHeight:0,tabCompletion:"off",suggest:{filterGraceful:!0,snippets:"inline",snippetsPreventQuickSuggestions:!0,localityBonus:!1,shareSuggestSelections:!1,showIcons:!0,maxVisibleSuggestions:12,filteredTypes:Object.create(null)},gotoLocation:{multiple:"peek"},selectionHighlight:!0,occurrencesHighlight:!0,codeLens:!0,folding:!0,foldingStrategy:"auto",showFoldingControls:"mouseover",matchBrackets:!0,find:{seedSearchStringFromSelection:!0,autoFindInSelection:!1,globalFindClipboard:!1,addExtraSpaceOnTop:!0},colorDecorators:!0,lightbulbEnabled:!0,codeActionsOnSave:{},codeActionsOnSaveTimeout:750}}},fdcc:function(e,t,n){"use strict";n.d(t,"e",function(){return r}),n.d(t,"f",function(){return s}),n.d(t,"g",function(){return a}),n.d(t,"d",function(){return l}),n.d(t,"a",function(){return c}),n.d(t,"b",function(){return d}),n.d(t,"c",function(){return h});var i=function(){function e(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(function(){if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e},0)}}return e.prototype.emit=function(e){this.listeners.forEach(function(t){t(e)})},e.prototype.onUnexpectedError=function(e){this.unexpectedErrorHandler(e),this.emit(e)},e.prototype.onUnexpectedExternalError=function(e){this.unexpectedErrorHandler(e)},e}(),o=new i;function r(e){l(e)||o.onUnexpectedError(e)}function s(e){l(e)||o.onUnexpectedExternalError(e)}function a(e){if(e instanceof Error){var t=e.name,n=e.message,i=e.stacktrace||e.stack;return{$isError:!0,name:t,message:n,stack:i}}return e}var u="Canceled";function l(e){return e instanceof Error&&e.name===u&&e.message===u}function c(){var e=new Error(u);return e.name=e.message,e}function d(e){return e?new Error("Illegal argument: "+e):new Error("Illegal argument")}function h(e){return e?new Error("Illegal state: "+e):new Error("Illegal state")}},fe45:function(e,t,n){"use strict";n.d(t,"b",function(){return i}),n.d(t,"a",function(){return l}),n.d(t,"f",function(){return c}),n.d(t,"e",function(){return h}),n.d(t,"d",function(){return f}),n.d(t,"c",function(){return g});var i,o=n("fdcc"),r=function(){function e(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}return e.prototype.define=function(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e},e.prototype.keyCodeToStr=function(e){return this._keyCodeToStr[e]},e.prototype.strToKeyCode=function(e){return this._strToKeyCode[e.toLowerCase()]||0},e}(),s=new r,a=new r,u=new r;function l(e,t){var n=(65535&t)<<16>>>0;return(e|n)>>>0}function c(e,t){if(0===e)return null;var n=(65535&e)>>>0,i=(4294901760&e)>>>16;return new p(0!==i?[d(n,t),d(i,t)]:[d(n,t)])}function d(e,t){var n=!!(2048&e),i=!!(256&e),o=2===t?i:n,r=!!(1024&e),s=!!(512&e),a=2===t?n:i,u=255&e;return new h(o,r,s,a,u)}(function(){function e(e,t,n,i){void 0===n&&(n=t),void 0===i&&(i=n),s.define(e,t),a.define(e,n),u.define(e,i)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")})(),function(e){function t(e){return s.keyCodeToStr(e)}function n(e){return s.strToKeyCode(e)}function i(e){return a.keyCodeToStr(e)}function o(e){return u.keyCodeToStr(e)}function r(e){return a.strToKeyCode(e)||u.strToKeyCode(e)}e.toString=t,e.fromString=n,e.toUserSettingsUS=i,e.toUserSettingsGeneral=o,e.fromUserSettings=r}(i||(i={}));var h=function(){function e(e,t,n,i,o){this.ctrlKey=e,this.shiftKey=t,this.altKey=n,this.metaKey=i,this.keyCode=o}return e.prototype.equals=function(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode},e.prototype.isModifierKey=function(){return 0===this.keyCode||5===this.keyCode||57===this.keyCode||6===this.keyCode||4===this.keyCode},e.prototype.toChord=function(){return new p([this])},e.prototype.isDuplicateModifierCase=function(){return this.ctrlKey&&5===this.keyCode||this.shiftKey&&4===this.keyCode||this.altKey&&6===this.keyCode||this.metaKey&&57===this.keyCode},e}(),p=function(){function e(e){if(0===e.length)throw Object(o["b"])("parts");this.parts=e}return e.prototype.equals=function(e){if(null===e)return!1;if(this.parts.length!==e.parts.length)return!1;for(var t=0;t0?"-":"+")+l(100*Math.floor(Math.abs(D)/60)+Math.abs(D)%60,4),S:["th","st","nd","rd"][p%10>3?0:(p%100-p%10!=10)*p%10],W:_,N:A};return n.replace(e,function(e){return e in w?w[e]:e.slice(1,e.length-1)})}}();function l(e,t){e=String(e),t=t||2;while(e.length0&&void 0!==r[0]?r[0]:{fillI18n:!1},e.next=3,i["a"].get("/actions");case 3:if(n=e.sent,t.fillI18n){e.next=6;break}return e.abrupt("return",n);case 6:return e.abrupt("return",Object(s["c"])(n,["title","description"]));case 7:case"end":return e.stop()}},e)})),h.apply(this,arguments)}function v(e){return i["a"].delete("/rules/".concat(e))}function g(e){return i["a"].delete("/resources/".concat(e))}function m(e){return i["a"].post("/resources/".concat(e))}function w(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules?test=true",e,{params:{_m:!1}})}function b(){return _.apply(this,arguments)}function _(){return _=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:{},e.next=3,i["a"].get("/actions",{params:t});case 3:return n=e.sent,e.abrupt("return",n.map(function(e){return e=Object(s["c"])(e,["title","description"]),e.params=Object(s["c"])(e.params,!0),e}));case 5:case"end":return e.stop()}},e)})),_.apply(this,arguments)}function y(){return R.apply(this,arguments)}function R(){return R=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i["a"].get("/resource_types");case 2:return t=e.sent,t=Object(s["c"])(t,["title","description"]).map(function(e){return e.params=Object(s["c"])(e.params,!0),e}),e.abrupt("return",t);case 5:case"end":return e.stop()}},e)})),R.apply(this,arguments)}var x={};function C(){return k.apply(this,arguments)}function k(){return k=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=s.length>0&&void 0!==s[0]?s[0]:{},0!==Object.keys(x).length){e.next=6;break}return e.next=4,y();case 4:n=e.sent,n.forEach(function(e){x[e.name]=e});case 6:return e.next=8,i["a"].get("/resources",{params:t});case 8:return r=e.sent,e.abrupt("return",r.map(function(e){var t=e.config;return e.configVal=t,e.config=x[e.type]||{},e}));case 10:case"end":return e.stop()}},e)})),k.apply(this,arguments)}function j(e){return $.apply(this,arguments)}function $(){return $=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==Object.keys(x).length){e.next=5;break}return e.next=3,y();case 3:n=e.sent,n.forEach(function(e){x[e.name]=e});case 5:return e.prev=5,e.next=8,i["a"].get("/resources/".concat(t));case 8:return r=e.sent,r.typeInfo=x[r.type]||{},r._config=[],Object.keys(r.config).forEach(function(e){var t=r.config[e],n=r.typeInfo.params[e]||{},i=n.title,s=n.description;r._config.push({key:e,value:t,title:i||t,description:s})}),e.abrupt("return",r);case 15:return e.prev=15,e.t0=e["catch"](5),console.error(e.t0),e.abrupt("return",!1);case 19:case"end":return e.stop()}},e,null,[[5,15]])})),$.apply(this,arguments)}function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i["a"].post("/resources",e,{params:{test:t?"true":void 0}})}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].put("/resources/".concat(e.id),e)}function I(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules",e)}function D(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i["a"].put("/rules/".concat(e),t)}},d7a3:function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"resources-node"},e._l(e.value.status,function(t,r){return n("li",{key:r},[n("a-badge",{attrs:{"is-dot":"",status:t.is_alive?"success":"error"}}),n("span",{staticClass:"node-name"},[e._v(e._s(t.node))]),t.is_alive?e._e():n("el-button",{attrs:{type:"danger",size:"mini",loading:t.loading},on:{click:function(n){return e.resourceReconnect(t)}}},[e._v("\n "+e._s(e.$t("RuleEngine.reconnect"))+"\n ")])],1)}),0)},i=[],s=n("bd43"),a={name:"ResourceNode",components:{},props:{value:{type:Object,required:!0}},data:function(){return{}},created:function(){},methods:{resourceReconnect:function(e){var t=this;this.$set(e,"loading",!0),Object(s["o"])(this.value.id).then(function(){t.$set(e,"loading",!1),t.$emit("change",t.value,!0)}).catch(function(){t.$set(e,"loading",!1)})}}},c=a,o=(n("9144"),n("2877")),u=Object(o["a"])(c,r,i,!1,null,null,null);t["a"]=u.exports},e642:function(e,t,n){},f11d:function(e,t,n){}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-4aeced56.f76dfa1e.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-4aeced56.f76dfa1e.js new file mode 100644 index 000000000..c18d8ab61 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-4aeced56.f76dfa1e.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4aeced56"],{"2df0":function(e,r,t){"use strict";var s=t("fbec"),a=t.n(s);a.a},"8ebf":function(e,r,t){"use strict";t.r(r);var s=function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("div",{staticClass:"login"},[e.isNeedAuth?t("a-card",{staticClass:"login-card emq-list-card"},[t("div",{staticClass:"split-wrapper"},[t("div",{staticClass:"logo-wrapper"}),t("div",{staticClass:"login-wrapper",attrs:{span:12}},[t("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("Base.signIn"))+"\n "),t("div",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("Base.loginUserAccount"))+"\n "),t("a",{attrs:{href:e.$t("Base.userCreate"),target:"_blank"}},[e._v("\n "+e._s(e.$t("Base.forgetPassword"))+"\n ")])])]),t("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules,"hide-required-asterisk":"","show-message":!1},nativeOn:{keyup:function(r){return!r.type.indexOf("key")&&e._k(r.keyCode,"enter",13,r.key,"Enter")?null:e.nativeLogin(r)}}},[e.loginError?t("el-alert",{attrs:{title:e.loginError,type:"error"},on:{close:function(r){e.loginError=""}}}):e._e(),t("el-form-item",{attrs:{prop:"username"}},[t("el-input",{attrs:{placeholder:e.$t("Base.userName")},model:{value:e.record.username,callback:function(r){e.$set(e.record,"username",r)},expression:"record.username"}})],1),t("el-form-item",{attrs:{prop:"password"}},[t("el-input",{attrs:{type:"password",placeholder:e.$t("Base.password")},model:{value:e.record.password,callback:function(r){e.$set(e.record,"password",r)},expression:"record.password"}})],1),t("el-checkbox",{model:{value:e.record.remember,callback:function(r){e.$set(e.record,"remember",r)},expression:"record.remember"}},[e._v(e._s(e.$t("Base.remember")))]),t("el-form-item",{staticClass:"oper-wrapper",attrs:{label:""}},[t("el-button",{staticClass:"sub-btn",attrs:{type:"primary"},on:{click:e.nativeLogin}},[e._v(e._s(e.$t("Base.signIn")))])],1)],1)],1)])]):e._e()],1)},a=[],n=(t("96cf"),t("3b8d")),o=(t("a481"),t("2934")),i=t("90b9"),l=t("a47b"),u={name:"Login",components:{},props:{},data:function(){return{record:{username:"",password:"",remember:!1},loginError:"",rules:{username:{required:!0},password:{required:!0}},isNeedAuth:!0,fullLoading:!1,fromCloud:!1}},computed:{lang:function(){return this.$store.state.lang}},created:function(){"/dashboard"===l["a"].state.config.baseURL&&(this.fromCloud=!0);var e=this.$route.query.lang;-1!==["en","zh"].indexOf(e)&&this.language!==e&&this.fromCloud&&(document.querySelector("html").setAttribute("lang",e),localStorage.setItem("language",e),this.$i18n.locale=e),this.$store.dispatch("UPDATE_USER_INFO",{logOut:!0}),this.autoLogin()},methods:{login:function(){var e=this,r=this.record,t=r.username,s=r.password,a=r.remember;Object(o["a"])({username:t,password:s}).then(function(r){r&&(e.loginError="",e.$store.dispatch("UPDATE_USER_INFO",{username:t,password:s,remember:a}),setTimeout(function(){var r=e.$route.query.to,t=void 0===r?e.fromCloud?"/users_and_acl":"/":r;e.$router.replace({path:t}),e.isNeedAuth||e.fullLoading.close()},500))}).catch(function(r){e.isNeedAuth||e.fullLoading.close(),e.isNeedAuth=!0,e.loginError=r})},nativeLogin:function(){var e=Object(n["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(i["a"])(this.$refs.record.validate());case 2:if(e.sent){e.next=4;break}return e.abrupt("return");case 4:this.login();case 5:case"end":return e.stop()}},e,this)}));function r(){return e.apply(this,arguments)}return r}(),autoLogin:function(){var e=this.$route.params,r=e.username,t=e.password;this.isNeedAuth=!(r&&t),this.isNeedAuth||(this.fullLoading=this.$loading({lock:!0,text:this.$t("Base.loging"),spinner:"el-icon-loading",background:"#fff"}),this.record.username=r,this.record.password=t,this.login())}}},c=u,d=(t("2df0"),t("2877")),p=Object(d["a"])(c,s,a,!1,null,null,null);r["default"]=p.exports},fbec:function(e,r,t){}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-53e9a7a2.98b8cd9d.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-53e9a7a2.98b8cd9d.js new file mode 100644 index 000000000..46759d763 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-53e9a7a2.98b8cd9d.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-53e9a7a2"],{"86fd":function(t,e,i){"use strict";var s=i("e17e"),n=i.n(s);n.a},"9de9":function(t,e,i){},a68b:function(t,e,i){"use strict";var s=i("9de9"),n=i.n(s);n.a},b62e:function(t,e,i){"use strict";i.r(e);var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"client-details"},[i("page-header",[i("div",{staticClass:"page-header-title-view"},[i("div",{staticStyle:{display:"flex","align-items":"center"}},[i("span",{staticClass:"title"},[t._v("\n "+t._s(t.clientId)+"\n ")]),i("a-badge",{attrs:{status:t.connStatus,text:t.connStatusText}})],1)]),i("div",{staticClass:"page-header-top-start btn"},[t.record.connected?i("el-button",{attrs:{type:"danger",size:"small"},on:{click:t.handleDisconnect}},[t._v("\n "+t._s(t.$t("Clients.kickOut"))+"\n ")]):i("el-button",{attrs:{type:"danger",size:"small"},on:{click:t.handleDisconnect}},[t._v("\n "+t._s(t.$t("Clients.cleanSession"))+"\n ")])],1)]),i("div",{staticClass:"app-wrapper"},[i("el-tabs",{attrs:{type:"card"},on:{"tab-click":t.handleTabClick},model:{value:t.activeName,callback:function(e){t.activeName=e},expression:"activeName"}},[i("el-tab-pane",{attrs:{label:t.$t("Clients.basicInfo"),name:"detail"}},["detail"===t.activeName?i("a-card",{staticClass:"detail-card"},[i("el-row",{attrs:{gutter:40}},[i("el-col",{attrs:{span:12}},[i("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Clients.connectionInfo"))+"\n ")]),i("ul",{staticClass:"field-info connection"},[i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.accessNode"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.node))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.clientId")))]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.clientid))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.username"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.username))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.protocolType"))+":")]),"MQTT"===t.record.proto_name?[i("span",{staticClass:"field-value"},[t._v(t._s(t.record.proto_name)+" "+t._s(t.mqttVersionMap[t.record.proto_ver]))])]:[i("span",{staticClass:"field-value"},[t._v(t._s(t.record.proto_name)+"\n "),t.record.proto_ver?i("span",[t._v(" v"+t._s(t.record.proto_ver))]):t._e()])]],2),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.ipAddress"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.ip_address))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.port"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.port))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.keepalive"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.keepalive))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.bridge"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.is_bridge))])]),t.record.connected?i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.connectionAt"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.connected_at))])]):i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.disConnectionAt"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.disconnected_at))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.zone"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.zone))])])])]),i("el-col",{attrs:{span:12}},[i("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Clients.sessionInfo"))+"\n ")]),i("ul",{staticClass:"field-info session"},[i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(5===t.record.proto_ver?"Clean Start":"Clean Session")+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.clean_start))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.expiryInterval"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.expiry_interval))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.createdAt"))+":")]),i("span",{staticClass:"field-value"},[t._v(t._s(t.record.created_at))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.subscription"))+":")]),i("span",[t._v(" "+t._s(t.record.subscriptions_cnt)+" / "+t._s(t._f("transToUnlimit")(t.record.max_subscriptions))+" ")])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.mqueue"))+":")]),i("span",[t._v(t._s(t.record.mqueue_len)+" / "+t._s(t.record.max_mqueue))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.inflight"))+":")]),i("span",[t._v(" "+t._s(t.record.inflight)+" / "+t._s(t.record.max_inflight)+" ")])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.heapSize"))+":")]),i("span",[t._v(t._s(t.record.heap_size))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.reductions"))+":")]),i("span",[t._v(t._s(t.record.reductions))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.awaiting_rel"))+":")]),i("span",[t._v(t._s(t.record.awaiting_rel))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.max_awaiting_rel")))]),i("span",[t._v(t._s(t.record.max_awaiting_rel))])])])])],1),i("div",{staticClass:"view-more"},[i("a",{attrs:{href:"javascript:;"},on:{click:function(e){t.showMore=!t.showMore}}},[t._v("\n "+t._s(t.showMore?t.$t("Base.collapse"):t.$t("Base.viewMore"))+"\n "),i("i",{class:t.showMore?"el-icon-arrow-up":"el-icon-arrow-down"})])]),i("el-collapse-transition",[t.showMore?i("el-row",{attrs:{gutter:40}},[i("el-col",{attrs:{span:12}},[i("ul",{staticClass:"field-info more-info"},[i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.recv_cnt_desc"))+":")]),i("span",[t._v(t._s(t.record.recv_cnt))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.recv_msg_desc"))+":")]),i("span",[t._v(t._s(t.record.recv_msg))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.recv_oct_desc"))+":")]),i("span",[t._v(t._s(t.record.recv_oct))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.recv_pkt_desc"))+":")]),i("span",[t._v(t._s(t.record.recv_pkt))])])])]),i("el-col",{attrs:{span:12}},[i("ul",{staticClass:"field-info more-info"},[i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.send_cnt_desc"))+":")]),i("span",[t._v(t._s(t.record.send_cnt))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.send_msg_desc"))+":")]),i("span",[t._v(t._s(t.record.send_msg))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.send_oct_desc"))+":")]),i("span",[t._v(t._s(t.record.send_oct))])]),i("li",{staticClass:"field-info-item"},[i("div",{staticClass:"field-title"},[t._v(t._s(t.$t("Clients.send_pkt_desc"))+":")]),i("span",[t._v(t._s(t.record.send_pkt))])])])])],1):t._e()],1)],1):t._e()],1),i("el-tab-pane",{attrs:{label:t.$t("Clients.subscriptions"),name:"subscriptions"}},["subscriptions"===t.activeName?i("a-card",[i("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Clients.currentSubscription"))+"\n "),i("div",{staticClass:"subscriptions-header"},[i("el-button",{attrs:{plain:"",size:"mini",icon:"el-icon-refresh"},on:{click:t.loadData}},[t._v("\n "+t._s(t.$t("Clients.refresh"))+"\n ")]),i("el-button",{attrs:{plain:"",size:"mini",icon:"el-icon-plus"},on:{click:t.handlePreAdd}},[t._v("\n "+t._s(t.$t("Clients.addASubscription"))+"\n ")])],1)]),i("el-table",{staticClass:"data-list",attrs:{data:t.subscriptions}},[i("el-table-column",{attrs:{prop:"topic","min-width":"110px","show-overflow-tooltip":"",label:"Topic"}}),i("el-table-column",{attrs:{prop:"qos","min-width":"110px",label:"QoS"}}),i("el-table-column",{attrs:{prop:"node","min-width":"80px",label:t.$t("Clients.node")}}),i("el-table-column",{attrs:{prop:"clientid",width:"100px"},scopedSlots:t._u([{key:"default",fn:function(e){var s=e.row;return[i("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(e){return t.handleUnSubscription(s)}}},[t._v("\n "+t._s(t.$t("Clients.unsubscribe"))+"\n ")])]}}],null,!1,1114816536)})],1)],1):t._e()],1)],1)],1),i("create-subscribe",{attrs:{visible:t.dialogVisible,"client-id":t.record.clientid},on:{"update:visible":function(e){t.dialogVisible=e},created:t.loadData}})],1)},n=[],a=(i("96cf"),i("3b8d")),l=i("d19d"),c=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("el-dialog",t._g(t._b({staticClass:"create-subscribe",attrs:{title:t.$t("Clients.addASubscription"),width:"400px",visible:t.rawVisible},on:{"update:visible":function(e){t.rawVisible=e},close:t.close,open:t.open}},"el-dialog",t.$attrs,!1),t.$listeners),[i("el-form",{ref:"record",attrs:{model:t.record,rules:t.rules,size:"small","label-position":"top"}},[t.clientId?t._e():i("el-form-item",{attrs:{prop:"clientid",label:"Client ID"}},[i("el-input",{attrs:{placeholder:"Client ID"},model:{value:t.record.clientid,callback:function(e){t.$set(t.record,"clientid",e)},expression:"record.clientid"}})],1),i("el-form-item",{attrs:{prop:"topic",label:"Topic"}},[i("el-input",{attrs:{placeholder:"Topic"},model:{value:t.record.topic,callback:function(e){t.$set(t.record,"topic",e)},expression:"record.topic"}})],1),i("el-form-item",{attrs:{prop:"qos",label:"QoS"}},[i("emq-select",{attrs:{field:{list:[0,1,2]}},model:{value:t.record.qos,callback:function(e){t.$set(t.record,"qos",e)},expression:"record.qos"}})],1)],1),i("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[i("el-button",{attrs:{plain:"",size:"small"},on:{click:t.close}},[t._v(t._s(t.$t("Base.cancel")))]),i("el-button",{attrs:{type:"primary",size:"small"},on:{click:t.handleAdd}},[t._v(t._s(t.$t("Clients.add")))])],1)],1)},r=[],o={name:"CreateSubscribe",components:{},inheritAttrs:!1,props:{visible:{type:Boolean,required:!0},clientId:{type:String,default:""}},data:function(){return{record:{clientid:this.clientid,qos:0,topic:""},rules:{clientid:{required:!0,message:this.$t("Clients.pleaseEnter")},topic:{required:!0,message:this.$t("Clients.pleaseEnter")}}}},computed:{rawVisible:{get:function(){return this.visible},set:function(t){this.$emit("update:visible",t)}}},created:function(){},methods:{open:function(){this.record.clientid=this.clientId},handleAdd:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.$refs.record.validate();case 2:if(e=t.sent,e){t.next=5;break}return t.abrupt("return");case 5:return t.next=7,Object(l["e"])(this.record);case 7:this.$emit("created",!0),this.close();case 9:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),close:function(){this.$refs.record.resetFields(),this.$emit("update:visible",!1)}}},d=o,u=(i("a68b"),i("2877")),_=Object(u["a"])(d,c,r,!1,null,null,null),f=_.exports,p={name:"ClientDetails",components:{CreateSubscribe:f},filters:{transToUnlimit:function(t){return 0===t?"Unlimited":t}},props:{},data:function(){return{dialogVisible:!1,showMore:!1,activeName:"detail",searchValue:"",record:{clean_start:!0,clientid:"mqttjs_ccf2ae3e",conn_mod:"emqx_channel",connected_at:"2019-07-01 12:11:48",heap_size:987,ip_address:"127.0.0.1",is_bridge:!1,keepalive:60,mailbox_len:0,node:"emqx@127.0.0.1",peercert:"nossl",port:60386,proto_name:"MQTT",proto_ver:4,recv_cnt:98,recv_msg:0,recv_oct:223,recv_pkt:98,reductions:153061,send_cnt:98,send_msg:0,send_oct:198,send_pend:0,send_pkt:98,username:"undefined",zone:"external",connected:!1},mqttVersionMap:{3:"v3.1",4:"v3.1.1",5:"v5.0"},subscriptions:[]}},computed:{clientId:function(){return this.$route.query.clientid},connStatus:function(){return this.record.connected?"success":"error"},connStatusText:function(){return this.record.connected?this.$t("Clients.onLine"):this.$t("Clients.disconnected")}},watch:{$route:function(){this.loadData()}},created:function(){this.loadData()},methods:{handleDisconnect:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e,i,s=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:e=this.$t("Clients.willDisconnectTheConnection"),i=this.$t("Clients.successfulDisconnection"),this.record.connected||(e=this.$t("Clients.willCleanSession"),i=this.$t("Clients.successfulCleanSession")),this.$msgbox.confirm(e,{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function t(){return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(l["a"])(s.record.clientid);case 2:s.$set(s.record,"connected",!1),s.$message.success(i),setTimeout(function(){s.$router.push({path:"/clients"})},500);case 5:case"end":return t.stop()}},t)}))).catch(function(){});case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),handlePreAdd:function(){this.dialogVisible=!0},loadData:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(this.clientId){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,Object(l["c"])(this.clientId);case 4:return this.record=t.sent,e=this.record.node,t.next=8,Object(l["d"])(e,this.clientId);case 8:this.subscriptions=t.sent;case 9:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),handleTabClick:function(){this.loadData()},handleUnSubscription:function(t){var e=this,i=this.$t("Clients.unsubscribeTitle");this.$msgbox.confirm(i,{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function i(){var s,n;return regeneratorRuntime.wrap(function(i){while(1)switch(i.prev=i.next){case 0:return s=t.topic,n=t.clientid,i.next=3,Object(l["f"])({topic:s,clientid:n});case 3:e.loadData();case 4:case"end":return i.stop()}},i)}))).catch(function(){})}}},v=p,C=(i("86fd"),Object(u["a"])(v,s,n,!1,null,null,null));e["default"]=C.exports},d19d:function(t,e,i){"use strict";i.d(e,"b",function(){return a}),i.d(e,"a",function(){return l}),i.d(e,"c",function(){return c}),i.d(e,"d",function(){return o}),i.d(e,"f",function(){return d}),i.d(e,"e",function(){return u});i("96cf");var s=i("3b8d"),n=i("1f75");function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n["a"].get("/nodes/".concat(t,"/clients"),{params:e})}function l(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return n["a"].delete("/clients/".concat(encodeURIComponent(t)))}function c(t){return r.apply(this,arguments)}function r(){return r=Object(s["a"])(regeneratorRuntime.mark(function t(e){var i;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,n["a"].get("/clients/".concat(encodeURIComponent(e)));case 2:return i=t.sent,t.abrupt("return",i.length&&i[0]||{});case 4:case"end":return t.stop()}},t)})),r.apply(this,arguments)}function o(t,e){return n["a"].get("/nodes/".concat(t,"/subscriptions/").concat(encodeURIComponent(e)))}function d(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/mqtt/unsubscribe",t)}function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/mqtt/subscribe",t)}},e17e:function(t,e,i){}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-59e5d464.d7db690a.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-59e5d464.d7db690a.js new file mode 100644 index 000000000..d373180cf --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-59e5d464.d7db690a.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-59e5d464"],{"4aed":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"node"},[s("page-header",[s("div",{staticClass:"page-header-title-view"},[s("div",{staticClass:"title"},[e._v(e._s(e.name))])]),s("div",{staticClass:"page-header-content-view"},[s("div",{staticClass:"content"},[s("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("Overview.currentNodeInfo"))+"\n ")])])])]),s("div",{staticClass:"app-wrapper"},[s("el-tabs",{attrs:{type:"card"},on:{"tab-click":e.handleTabClick},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[s("el-tab-pane",{attrs:{label:e.$t("Overview.basicInfo"),name:"basic"}},[s("div",{staticClass:"card-wrapper"},[s("a-card",{staticClass:"emq-list-card"},[s("div",{staticClass:"emq-title"},[e._v(e._s(e.$t("Overview.basic")))]),s("node-basic-card",{attrs:{value:e.record,"show-button":!1}})],1),s("a-card",{staticClass:"emq-list-card"},[s("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("Overview.listener"))+"\n "),s("div",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("Overview.ListeningPorts"))+"\n ")])]),s("el-table",{attrs:{data:e.listeners}},[s("el-table-column",{attrs:{prop:"protocol","min-width":"100px",label:e.$t("Overview.listenerProtocol")}}),s("el-table-column",{attrs:{prop:"listen_on","min-width":"80px",label:e.$t("Overview.listenerAddress")}}),s("el-table-column",{attrs:{prop:"acceptors","min-width":"60px",label:"Acceptors"}}),s("el-table-column",{attrs:{prop:"current_conns","min-width":"120px",label:e.$t("Overview.connectCurrentAndMax")},scopedSlots:e._u([{key:"default",fn:function(t){var s=t.row;return[e._v(" "+e._s(s.current_conns)+" / "+e._s(s.max_conns)+" ")]}}])})],1)],1)],1)]),s("el-tab-pane",{attrs:{label:e.$t("Overview.metric"),name:"metrics"}},[s("div",{staticClass:"card-wrapper"},[s("a-card",{staticClass:"emq-list-card"},[s("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("Overview.dataList"))+"\n "),s("div",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("Overview.packetStatisticsOfNodes"))+"\n ")])]),s("el-row",{staticClass:"stats-row",attrs:{gutter:30}},[s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.client}},[s("el-table-column",{attrs:{prop:"key",label:e.$t("Overview.client"),"min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1),s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.delivery}},[s("el-table-column",{attrs:{prop:"key",label:"Delivery","min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1),s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.session}},[s("el-table-column",{attrs:{prop:"key",label:e.$t("Overview.session"),"min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1)],1),s("el-row",{staticClass:"stats-row",attrs:{gutter:30}},[s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.packets}},[s("el-table-column",{attrs:{prop:"key",label:e.$t("Overview.mqttPackages"),"min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1),s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.messages}},[s("el-table-column",{attrs:{prop:"key",label:e.$t("Overview.messageNumber"),"min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1),s("el-col",{attrs:{span:8}},[s("el-table",{attrs:{data:e.metricsData.bytes}},[s("el-table-column",{attrs:{prop:"key",label:e.$t("Overview.traffic"),"min-width":"100px"}}),s("el-table-column",{attrs:{prop:"value",label:"",width:"120px",sortable:""}})],1)],1)],1)],1)],1)])],1)],1)],1)},r=[],n=(s("96cf"),s("3b8d")),c=s("75fc"),i=(s("a481"),s("28a5"),s("768b")),o=(s("ac6a"),s("ffc1"),s("7f7f"),s("640a")),l=s("6212"),u={name:"Node",components:{NodeBasicCard:l["a"]},props:{},data:function(){return{activeName:"basic",record:{},metrics:{},listeners:[]}},computed:{name:function(){return this.$route.query.name},metricsData:function(){var e=this.metrics||{},t=Object.entries(e);if(0===t.length)return{packets:[],messages:[],bytes:[],client:[],session:[],delivery:[]};var s={packets:["received","sent","connect","connack","auth","disconnect.sent","disconnect.received","pingreq","pingresp","publish.received","publish.sent","puback.received","puback.sent","puback.missed","pubcomp.received","pubcomp.sent","pubcomp.missed","pubrec.received","pubrec.sent","pubrec.missed","pubrel.received","pubrel.sent","pubrel.missed","subscribe","suback","unsubscribe","unsuback"],messages:["received","sent","dropped","retained","qos0.received","qos0.sent","qos1.received","qos1.sent","qos2.received","qos2.expired","qos2.sent","qos2.dropped"],bytes:["received","sent"],client:["connected","authenticate","auth.anonymous","check_acl","subscribe","unsubscribe","disconnected"],session:["created","resumed","takeovered","discarded","terminated"],delivery:["dropped","dropped.no_local","dropped.too_large","dropped.qos0_msg","dropped.queue_full","dropped.expired"]},a={packets:{},messages:{},bytes:{},client:{},session:{},delivery:{}};function r(e){var t=[];s[e].forEach(function(s){var r=a[e][s];r&&(t.push({key:s,value:r}),delete a[e][s])});var r=Object.entries(a[e]).map(function(e){var t=Object(i["a"])(e,2),s=t[0],a=t[1];return{key:s,value:a}});return[].concat(t,Object(c["a"])(r))}return t.forEach(function(e){var t=Object(i["a"])(e,2),s=t[0],r=t[1],n=s.split(".").shift(),c=s.replace("".concat(n,"."),"");a[n]=a[n]||{},a[n][c]=r}),{packets:r("packets"),messages:r("messages"),bytes:r("bytes"),client:r("client"),session:r("session"),delivery:r("delivery")}}},created:function(){this.loadData()},methods:{handleTabClick:function(){},loadData:function(){var e=Object(n["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(o["g"])(this.name);case 2:return this.record=e.sent,e.next=5,Object(o["e"])(this.name);case 5:return this.metrics=e.sent,e.next=8,Object(o["d"])(this.name);case 8:this.listeners=e.sent;case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},d=u,p=(s("551a"),s("2877")),m=Object(p["a"])(d,a,r,!1,null,null,null);t["default"]=m.exports},"551a":function(e,t,s){"use strict";var a=s("7bfa"),r=s.n(a);r.a},6212:function(e,t,s){"use strict";var a=function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"node-basic-card"},[s("div",{staticClass:"version-wrapper"},[s("div",{staticClass:"version-title"},[e._v(e._s(e.$t("Overview.version"))+": "+e._s(e.record.version))])]),s("div",{staticClass:"basic-info"},[s("el-row",[s("el-form",{staticClass:"node-form",attrs:{"label-suffix":":","label-position":"left","label-width":"150px"}},[s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.systemTime")}},[s("span",{staticClass:"form-item-value"},[e._v(e._s(e.record.datetime))])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.memory")}},[s("span",{staticClass:"form-item-value"},[e._v("\n "+e._s(e._f("formatMemory")(e.record.memory_used))+" / "+e._s(e._f("formatMemory")(e.record.memory_total))+"\n ")])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.uptime")}},[s("span",{staticClass:"form-item-value"},[e._v(e._s(e.record.uptime))])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.maxFds")}},[s("span",{staticClass:"form-item-value"},[e._v(e._s(e.record.max_fds))])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:"OTP Release"}},[s("span",{staticClass:"form-item-value"},[e._v(e._s(e.record.otp_release))])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:"Erlang "+e.$t("Overview.process")}},[s("span",{staticClass:"form-item-value"},[e._v(e._s(e.record.process_used)+" / "+e._s(e.record.process_available))])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.nodeState")}},[s("span",{staticClass:"form-item-value"},[s("a-badge",{attrs:{"is-dot":"",status:"Running"===e.record.node_status?"success":"error",text:"Running"===e.record.node_status?e.$t("Overview.running"):e.$t("Overview.stopped")}})],1)])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:"CPU "+e.$t("Overview.load")}},[s("span",{staticClass:"form-item-value"},[e._v(" "+e._s(e.record.load1)+" / "+e._s(e.record.load5)+" / "+e._s(e.record.load15)+" ")]),s("el-popover",{attrs:{trigger:"hover",content:"load1/load5/load15"}},[s("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1)],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.currentConnection")}},[s("span",{staticClass:"form-item-value"},[e._v(" "+e._s(e.record["connections.count"])+" / "+e._s(e.record["connections.max"])+" ")])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.topics")}},[s("span",{staticClass:"form-item-value"},[e._v(" "+e._s(e.record["topics.count"])+" / "+e._s(e.record["topics.max"])+" ")])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.subscription")}},[s("span",{staticClass:"form-item-value"},[e._v("\n "+e._s(e.record["subscriptions.count"])+" / "+e._s(e.record["subscriptions.max"])+"\n ")])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.retained")}},[s("span",{staticClass:"form-item-value"},[e._v(" "+e._s(e.record["retained.count"])+" / "+e._s(e.record["retained.max"])+" ")])])],1),s("el-col",{attrs:{span:12}},[s("el-form-item",{attrs:{label:e.$t("Overview.shareSubscription")}},[s("span",{staticClass:"form-item-value"},[e._v("\n "+e._s(e.record["subscriptions.shared.count"])+" / "+e._s(e.record["subscriptions.shared.max"])+"\n ")])])],1)],1)],1),e.showButton?s("el-button",{staticClass:"form-btn",attrs:{type:"primary",size:"small"},on:{click:e.toDetails}},[e._v("\n "+e._s(e.$t("Overview.viewMore"))+"\n ")]):e._e()],1)])},r=[],n=s("90b9"),c={name:"NodeBasicCard",components:{},filters:{formatMemory:function(e){return"number"===typeof e?Object(n["d"])(e):e}},props:{value:{type:Object,default:function(){return{}}},showButton:{type:Boolean,default:!0}},data:function(){return{data:{datetime:"2019-07-08 16:27:14",node:"emqx@127.0.0.1",node_status:"Running",otp_release:"R21/10.3.4",sysdescr:"EMQ X Broker",uptime:"2 days,6 hours, 47 minutes, 50 seconds",version:"0.0.0+build.1.ref6ab9527","subscriptions.shared.max":0,"subscriptions.max":102,"subscribers.max":102,"resources.max":2,"topics.count":1,"subscriptions.count":62,"suboptions.max":102,"topics.max":2,"sessions.persistent.max":0,"connections.max":102,"sessions.persistent.count":0,"actions.count":17,"retained.count":4,"rules.count":1,"routes.count":1,"subscriptions.shared.count":0,"suboptions.count":62,"sessions.count":62,"actions.max":17,"retained.max":4,"sessions.max":102,"rules.max":1,"routes.max":2,"resources.count":2,"subscribers.count":62,"connections.count":62,connections:77,load1:"9.41",load15:"10.59",load5:"10.77",max_fds:7168,memory_total:"1.14G",memory_used:"415.58M",name:"emqx@127.0.0.1",process_available:2097152,process_used:538}}},computed:{record:function(){return this.value}},created:function(){},methods:{toDetails:function(){this.$router.push({path:"/monitor/node",query:{name:this.record.node}})}}},i=c,o=(s("a2c2"),s("2877")),l=Object(o["a"])(i,a,r,!1,null,null,null);t["a"]=l.exports},"640a":function(e,t,s){"use strict";s.d(t,"h",function(){return o}),s.d(t,"b",function(){return u}),s.d(t,"c",function(){return d}),s.d(t,"f",function(){return p}),s.d(t,"e",function(){return m}),s.d(t,"d",function(){return v}),s.d(t,"g",function(){return b}),s.d(t,"a",function(){return _});var a=s("cebc"),r=(s("a481"),s("ac6a"),s("456d"),s("96cf"),s("3b8d")),n=s("1f75");function c(){return n["a"].get("/brokers")}function i(){return n["a"].get("/stats")}function o(){return l.apply(this,arguments)}function l(){return l=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,s,r,o,l;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c();case 2:return t=e.sent,e.next=5,i();case 5:return s=e.sent,r={},t.forEach(function(e){r[e.node]=e}),o={},s.forEach(function(e){o[e.node]=e}),e.next=12,n["a"].get("/nodes");case 12:return l=e.sent,e.abrupt("return",l.map(function(e){var t=r[e.node]||{},s=o[e.node]||{};return Object(a["a"])({},t,s,e)}));case 14:case"end":return e.stop()}},e)})),l.apply(this,arguments)}function u(){return n["a"].get("/monitor/current_metrics")}function d(){return n["a"].get("/license_info")}function p(e,t){return!e&&t&&"basic"!==t?n["a"].get("/monitor/metrics/".concat(t)):e&&!t?n["a"].get("/nodes/".concat(e,"/monitor/metrics")):e&&t&&"basic"!==t?n["a"].get("/nodes/".concat(e,"/monitor/metrics/").concat(t)):n["a"].get("/monitor/metrics")}function m(e){return n["a"].get("/nodes/".concat(e,"/metrics"))}function v(e){return n["a"].get("/nodes/".concat(e,"/listeners"))}function b(e){return f.apply(this,arguments)}function f(){return f=Object(r["a"])(regeneratorRuntime.mark(function e(t){var s,r,c;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,n["a"].get("/brokers/".concat(t));case 2:return s=e.sent,e.next=5,n["a"].get("/nodes/".concat(t));case 5:return r=e.sent,e.next=8,n["a"].get("/nodes/".concat(t,"/stats"));case 8:return c=e.sent,e.abrupt("return",Object(a["a"])({},s,c,r));case 10:case"end":return e.stop()}},e)})),f.apply(this,arguments)}function _(){return h.apply(this,arguments)}function h(){return h=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t={client:{authSuccess:0,authFailed:0,connectSuccess:0},message:{received:0,sent:0,dropped:0},messageDrop:{expired:0,noSubscribers:0}},e.next=3,n["a"].get("/metrics");case 3:return s=e.sent,s.forEach(function(e){var s=e.metrics;t.client.connectSuccess+=s["client.connected"],t.client.authSuccess+=s["client.auth.success"],t.client.authFailed+=s["client.auth.failure"],t.message.received+=s["messages.received"],t.message.sent+=s["messages.sent"],t.message.dropped+=s["messages.dropped"],t.messageDrop.expired+=s["messages.dropped.expired"],t.messageDrop.noSubscribers+=s["messages.dropped.no_subscribers"]}),e.abrupt("return",t);case 6:case"end":return e.stop()}},e)})),h.apply(this,arguments)}},"7bfa":function(e,t,s){},a100:function(e,t,s){},a2c2:function(e,t,s){"use strict";var a=s("a100"),r=s.n(a);r.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-5f0ec173.65eca404.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-5f0ec173.65eca404.js new file mode 100644 index 000000000..63db150af --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-5f0ec173.65eca404.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5f0ec173"],{"05ee":function(t,e,r){"use strict";var n=r(5);function o(t,e){var r,o;return e.port=e.port||1883,e.hostname=e.hostname||e.host||"localhost",r=e.port,o=e.hostname,n.createConnection(r,o)}t.exports=o},"06a2":function(t,e,r){"use strict";var n,o=r("a671"),i=r("2031"),s=r("1a94"),a=r("96ae"),c=r("f508"),l=r("986b"),u=r("1c4a"),p=Object.defineProperty,h=Object.defineProperties;t.exports=n=function(t,e){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");h(this,{__list__:c("w",a(t)),__context__:c("w",e),__nextIndex__:c("w",0)}),e&&(s(e.on),e.on("_add",this._onAdd),e.on("_delete",this._onDelete),e.on("_clear",this._onClear))},delete n.prototype.constructor,h(n.prototype,i({_next:c(function(){var t;if(this.__list__)return this.__redo__&&(t=this.__redo__.shift(),void 0!==t)?t:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach(function(e,r){e>=t&&(this.__redo__[r]=++e)},this),this.__redo__.push(t)):p(this,"__redo__",c("c",[t])))}),_onDelete:c(function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(e=this.__redo__.indexOf(t),-1!==e&&this.__redo__.splice(e,1),this.__redo__.forEach(function(e,r){e>t&&(this.__redo__[r]=--e)},this)))}),_onClear:c(function(){this.__redo__&&o.call(this.__redo__),this.__nextIndex__=0})}))),p(n.prototype,u.iterator,c(function(){return this}))},"09d9":function(t,e,r){"use strict";var n,o=r("e0f6"),i=r("f508"),s=r("1c4a"),a=r("06a2"),c=Object.defineProperty;n=t.exports=function(t){if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");t=String(t),a.call(this,t),c(this,"__length__",i("",t.length))},o&&o(n,a),delete n.prototype.constructor,n.prototype=Object.create(a.prototype,{_next:i(function(){if(this.__list__)return this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r)})}),c(n.prototype,s.toStringTag,i("c","String Iterator"))},"0b16":function(t,e,r){"use strict";var n=r("9d88"),o=r("35e86");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}e.parse=w,e.resolve=k,e.resolveObject=I,e.format=S,e.Url=i;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["<",">",'"',"`"," ","\r","\n","\t"],u=["{","}","|","\\","^","`"].concat(l),p=["'"].concat(u),h=["%","/","?",";","#"].concat(p),f=["/","?","#"],d=255,_=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r("b383");function w(t,e,r){if(t&&o.isObject(t)&&t instanceof i)return t;var n=new i;return n.parse(t,e,r),n}function S(t){return o.isString(t)&&(t=w(t)),t instanceof i?t.format():i.prototype.format.call(t)}function k(t,e){return w(t,!1,!0).resolve(e)}function I(t,e){return t?w(t,!1,!0).resolveObject(e):e}i.prototype.parse=function(t,e,r){if(!o.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var i=t.indexOf("?"),a=-1!==i&&i127?q+="x":q+=M[N];if(!q.match(_)){var U=j.slice(0,T),L=j.slice(T+1),D=M.match(m);D&&(U.push(D[1]),L.unshift(D[2])),L.length&&(w="/"+L.join(".")+w),this.hostname=U.join(".");break}}}this.hostname.length>d?this.hostname="":this.hostname=this.hostname.toLowerCase(),A||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",K=this.hostname||"";this.host=K+$,this.href+=this.host,A&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==w[0]&&(w="/"+w))}if(!b[I])for(T=0,R=p.length;T0)&&r.host.split("@");E&&(r.auth=E.shift(),r.host=r.hostname=E.shift())}return r.search=t.search,r.query=t.query,o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!k.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var x=k.slice(-1)[0],O=(r.host||t.host||k.length>1)&&("."===x||".."===x)||""===x,P=0,T=k.length;T>=0;T--)x=k[T],"."===x?k.splice(T,1):".."===x?(k.splice(T,1),P++):P&&(k.splice(T,1),P--);if(!w&&!S)for(;P--;P)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),O&&"/"!==k.join("/").substr(-1)&&k.push("");var C=""===k[0]||k[0]&&"/"===k[0].charAt(0);if(I){r.hostname=r.host=C?"":k.length?k.shift():"";E=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");E&&(r.auth=E.shift(),r.host=r.hostname=E.shift())}return w=w||r.host&&k.length,w&&!C&&k.unshift(""),k.length?r.pathname=k.join("/"):(r.pathname=null,r.path=null),o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},i.prototype.parseHost=function(){var t=this.host,e=a.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},"0b24":function(t,e,r){"use strict";var n,o=r("a671"),i=r("3527"),s=r("e0f6"),a=r("1a94"),c=r("96ae"),l=r("f508"),u=r("c9fc"),p=r("1c4a"),h=r("3473"),f=r("c351"),d=r("1195"),_=r("b779"),m=Function.prototype.call,b=Object.defineProperties,g=Object.getPrototypeOf;t.exports=n=function(){var t,e,r,o=arguments[0];if(!(this instanceof n))throw new TypeError("Constructor requires 'new'");return r=_&&s&&Map!==n?s(new Map,g(this)):this,null!=o&&h(o),b(r,{__mapKeysData__:l("c",t=[]),__mapValuesData__:l("c",e=[])}),o?(f(o,function(r){var n=c(r)[0];r=r[1],-1===i.call(t,n)&&(t.push(n),e.push(r))},r),r):r},_&&(s&&s(n,Map),n.prototype=Object.create(Map.prototype,{constructor:l(n)})),u(b(n.prototype,{clear:l(function(){this.__mapKeysData__.length&&(o.call(this.__mapKeysData__),o.call(this.__mapValuesData__),this.emit("_clear"))}),delete:l(function(t){var e=i.call(this.__mapKeysData__,t);return-1!==e&&(this.__mapKeysData__.splice(e,1),this.__mapValuesData__.splice(e,1),this.emit("_delete",e,t),!0)}),entries:l(function(){return new d(this,"key+value")}),forEach:l(function(t){var e,r,n=arguments[1];a(t),e=this.entries(),r=e._next();while(void 0!==r)m.call(t,n,this.__mapValuesData__[r],this.__mapKeysData__[r],this),r=e._next()}),get:l(function(t){var e=i.call(this.__mapKeysData__,t);if(-1!==e)return this.__mapValuesData__[e]}),has:l(function(t){return-1!==i.call(this.__mapKeysData__,t)}),keys:l(function(){return new d(this,"key")}),set:l(function(t,e){var r,n=i.call(this.__mapKeysData__,t);return-1===n&&(n=this.__mapKeysData__.push(t)-1,r=!0),this.__mapValuesData__[n]=e,r&&this.emit("_add",n,t),this}),size:l.gs(function(){return this.__mapKeysData__.length}),values:l(function(){return new d(this,"value")}),toString:l(function(){return"[object Map]"})})),Object.defineProperty(n.prototype,p.iterator,l(function(){return this.entries()})),Object.defineProperty(n.prototype,p.toStringTag,l("c","Map"))},1126:function(t,e,r){"use strict";t.exports=function(t){return!!t&&("symbol"===typeof t||!!t.constructor&&("Symbol"===t.constructor.name&&"Symbol"===t[t.constructor.toStringTag]))}},1195:function(t,e,r){"use strict";var n,o=r("e0f6"),i=r("f508"),s=r("06a2"),a=r("1c4a").toStringTag,c=r("c682"),l=Object.defineProperties,u=s.prototype._unBind;n=t.exports=function(t,e){if(!(this instanceof n))return new n(t,e);s.call(this,t.__mapKeysData__,t),e&&c[e]||(e="key+value"),l(this,{__kind__:i("",e),__values__:i("w",t.__mapValuesData__)})},o&&o(n,s),n.prototype=Object.create(s.prototype,{constructor:i(n),_resolve:i(function(t){return"value"===this.__kind__?this.__values__[t]:"key"===this.__kind__?this.__list__[t]:[this.__list__[t],this.__values__[t]]}),_unBind:i(function(){this.__values__=null,u.call(this)}),toString:i(function(){return"[object Map Iterator]"})}),Object.defineProperty(n.prototype,a,i("c","Map Iterator"))},"14ab":function(t,e,r){"use strict";t.exports=function(){var t,e=Object.assign;return"function"===typeof e&&(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}},"14cf":function(t,e,r){"use strict";t.exports=function(){var t,e,r=Array.from;return"function"===typeof r&&(t=["raz","dwa"],e=r(t),Boolean(e&&e!==t&&"dwa"===e[1]))}},"175c":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"websocket"},[r("div",{staticClass:"app-wrapper"},[r("el-tabs",{attrs:{type:"card","before-leave":t.handleBeforeLeave},on:{"tab-remove":t.handleTabEdit},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[t._l(t.tabs,function(e,n){return r("el-tab-pane",{key:n,attrs:{closable:n>0,name:e.name}},[r("span",{attrs:{slot:"label"},slot:"label"},[r("el-badge",{staticClass:"message-count",attrs:{hidden:0===e.messageCount,value:e.messageCount,max:99}},[t._v("\n "+t._s(e.label)+"\n ")])],1)])}),r("el-tab-pane",{key:"add",staticClass:"add-btn",attrs:{name:"add"}},[r("span",{attrs:{slot:"label"},slot:"label"},[r("i",{staticClass:"el-icon-plus"})])])],2),t._l(t.tabs,function(e,n){return r("web-socket-item",{directives:[{name:"show",rawName:"v-show",value:e.name===t.activeTab,expression:"item.name === activeTab"}],key:n,ref:e.name,refInFor:!0,attrs:{"message-count":e.messageCount},on:{"update:messageCount":function(r){return t.$set(e,"messageCount",r)},"update:message-count":function(r){return t.$set(e,"messageCount",r)}}})})],2)])},o=[],i=(r("ac6a"),r("6b54"),r("7f7f"),r("7514"),function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"websocket-item"},[r("el-card",{staticClass:"emq-list-card"},[r("div",{staticClass:"websocket-config"},[r("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Tools.connectionConfiguration"))+"\n ")]),r("el-form",{ref:"configForm",attrs:{"hide-required-asterisk":"",size:"small","label-position":"top",model:t.connection,rules:t.connectionRules},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.createConnection(e)}}},[r("el-row",{attrs:{gutter:20}},[r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"host",label:t.$t("Tools.host")}},[r("el-input",{attrs:{readonly:t.client.connected},model:{value:t.connection.host,callback:function(e){t.$set(t.connection,"host",e)},expression:"connection.host"}})],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"port",label:t.$t("Tools.port")}},[r("el-input",{attrs:{type:"number",placeholder:"8083/8084",readonly:t.client.connected},model:{value:t.connection.port,callback:function(e){t.$set(t.connection,"port",t._n(e))},expression:"connection.port"}})],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"endpoint",label:t.$t("Tools.mountPoint")}},[r("el-input",{attrs:{placeholder:"/mqtt",readonly:t.client.connected},model:{value:t.connection.endpoint,callback:function(e){t.$set(t.connection,"endpoint",e)},expression:"connection.endpoint"}})],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"clientId",label:"Client ID"}},[r("el-input",{attrs:{readonly:t.client.connected},model:{value:t.connection.clientId,callback:function(e){t.$set(t.connection,"clientId",e)},expression:"connection.clientId"}},[r("i",{staticClass:"el-icon-refresh el-input_icon",attrs:{slot:"suffix",title:t.$t("Tools.randomGeneration"),disabled:t.client.connected},on:{click:t.refreshClientId},slot:"suffix"})])],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"username",label:"Username"}},[r("el-input",{attrs:{readonly:t.client.connected},model:{value:t.connection.username,callback:function(e){t.$set(t.connection,"username",e)},expression:"connection.username"}})],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"password",label:"Password"}},[r("el-input",{attrs:{readonly:t.client.connected},model:{value:t.connection.password,callback:function(e){t.$set(t.connection,"password",e)},expression:"connection.password"}})],1)],1),r("el-col",{attrs:{span:8}},[r("el-form-item",{attrs:{prop:"keepalive",label:"Keepalive"}},[r("el-input",{attrs:{readonly:t.client.connected,type:"number",placeholder:"60"},model:{value:t.connection.keepalive,callback:function(e){t.$set(t.connection,"keepalive",t._n(e))},expression:"connection.keepalive"}})],1)],1),r("el-col",{staticClass:"footer-area",attrs:{span:24}},[r("el-checkbox",{attrs:{disabled:t.client.connected},model:{value:t.connection.clean,callback:function(e){t.$set(t.connection,"clean",e)},expression:"connection.clean"}},[t._v("\n Clean Session\n ")]),r("el-checkbox",{attrs:{disabled:t.client.connected},on:{change:t.protocolsChange},model:{value:t.connection.ssl,callback:function(e){t.$set(t.connection,"ssl",e)},expression:"connection.ssl"}},[t._v("\n SSL\n ")])],1),r("el-col",{staticClass:"footer-area",attrs:{span:24}},[r("el-button",{staticClass:"conn-btn",staticStyle:{"margin-right":"20px"},attrs:{type:"primary",size:"small",disabled:t.client.connected||t.connecting},on:{click:t.createConnection}},[t._v("\n "+t._s(t.client.connected?t.$t("Tools.connected"):t.connecting?t.$t("Tools.inConnection"):t.$t("Tools.connect"))+"\n ")]),r("el-button",{staticClass:"conn-btn",attrs:{type:"danger",size:"small",disabled:!t.client.connected&&!t.connecting},on:{click:t.destroyConnection}},[t._v("\n "+t._s(t.connecting?t.$t("Tools.cancelConnection"):t.$t("Tools.disconnect"))+"\n ")])],1)],1)],1)],1)]),r("el-card",{staticClass:"emq-list-card"},[r("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Tools.Subscription"))+"\n ")]),r("el-row",{attrs:{gutter:20}},[r("el-col",{attrs:{span:12}},[r("el-form",{ref:"subForm",attrs:{"hide-required-asterisk":"",model:t.subscriptionsRecord,rules:t.subscriptionsRules,size:"small","label-position":"top"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t._doSubscribe(e)}}},[r("el-form-item",{attrs:{prop:"topic",label:"Topic"}},[r("el-input",{model:{value:t.subscriptionsRecord.topic,callback:function(e){t.$set(t.subscriptionsRecord,"topic",e)},expression:"subscriptionsRecord.topic"}})],1),r("el-form-item",{attrs:{prop:"qos",label:"QoS"}},[r("emq-select",{attrs:{field:{list:[0,1,2]}},model:{value:t.subscriptionsRecord.qos,callback:function(e){t.$set(t.subscriptionsRecord,"qos",t._n(e))},expression:"subscriptionsRecord.qos"}})],1),r("div",[r("el-form-item",[r("el-button",{staticClass:"conn-btn",attrs:{type:"primary",size:"small"},on:{click:t._doSubscribe}},[t._v("\n "+t._s(t.$t("Tools.Subscribe"))+"\n ")])],1)],1)],1)],1),r("el-col",{attrs:{span:12}},[r("el-table",{staticStyle:{"margin-top":"10px"},attrs:{data:t.subscriptions,"max-height":"400px"}},[r("el-table-column",{attrs:{"show-overflow-tooltip":"",prop:"topic",label:"Topic","min-width":"180px"}}),r("el-table-column",{attrs:{prop:"qos",label:"QoS",width:"80px"}}),r("el-table-column",{attrs:{prop:"createAt",label:t.$t("Tools.time")}}),r("el-table-column",{attrs:{width:"80px"},scopedSlots:t._u([{key:"default",fn:function(e){var n=e.row;return[r("a",{staticClass:"btn",on:{click:function(e){return t._doUnSubscribe(n)}}},[t._v(t._s(t.$t("Base.cancel")))])]}}])})],1)],1)],1)],1),r("el-card",{staticClass:"emq-list-card"},[r("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Tools.publish"))+"\n ")]),r("div",{staticClass:"connection-wrapper"},[r("el-form",{ref:"pubForm",attrs:{"hide-required-asterisk":"","label-position":"top",model:t.messageRecord,rules:t.messageRecordRules,size:"small"},nativeOn:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t._doPublish(e)}}},[r("el-row",{attrs:{gutter:20}},[r("el-col",{attrs:{span:6}},[r("el-form-item",{attrs:{prop:"topic",label:"Topic"}},[r("el-input",{attrs:{size:"small"},model:{value:t.messageRecord.topic,callback:function(e){t.$set(t.messageRecord,"topic",e)},expression:"messageRecord.topic"}})],1)],1),r("el-col",{attrs:{span:6}},[r("el-form-item",{attrs:{prop:"payload",label:"Payload"}},[r("el-input",{attrs:{size:"small"},model:{value:t.messageRecord.payload,callback:function(e){t.$set(t.messageRecord,"payload",e)},expression:"messageRecord.payload"}})],1)],1),r("el-col",{attrs:{span:6}},[r("el-form-item",{attrs:{prop:"qos",label:"QoS"}},[r("emq-select",{attrs:{field:{list:[0,1,2]},size:"small"},model:{value:t.messageRecord.qos,callback:function(e){t.$set(t.messageRecord,"qos",t._n(e))},expression:"messageRecord.qos"}})],1)],1),r("el-col",{attrs:{span:6}},[r("el-form-item",[r("span",{attrs:{slot:"label"},slot:"label"},[t._v(" ")]),r("el-checkbox",{staticStyle:{"margin-right":"20px"},model:{value:t.messageRecord.retain,callback:function(e){t.$set(t.messageRecord,"retain",e)},expression:"messageRecord.retain"}},[t._v("Retain")]),r("el-button",{staticClass:"conn-btn",staticStyle:{float:"right"},attrs:{type:"primary",size:"small"},on:{click:t._doPublish}},[t._v("\n "+t._s(t.$t("Tools.publish"))+"\n ")])],1)],1)],1)],1)],1),r("el-row",{attrs:{gutter:20}},[r("el-col",{attrs:{span:12}},[r("div",{staticClass:"message-btn"},[t._v("\n "+t._s(t.$t("Tools.received"))+"\n "),r("i",{staticClass:"icon el-icon-refresh",attrs:{title:t.$t("Tools.clear")},on:{click:function(e){t.messageIn=[]}}})]),r("el-table",{staticClass:"list-table",staticStyle:{"margin-top":"10px"},attrs:{data:t.messageIn,"max-height":"400px"}},[r("el-table-column",{attrs:{"show-overflow-tooltip":"",prop:"topic",label:"Topic","min-width":"120px"}}),r("el-table-column",{attrs:{prop:"qos",label:"QoS",width:"80px"},scopedSlots:t._u([{key:"default",fn:function(e){var r=e.row;return[t._v(" "+t._s(r.qos)+" "+t._s(r.retain?" Retain":"")+" ")]}}])}),r("el-table-column",{attrs:{"show-overflow-tooltip":"",prop:"payload",label:"Payload","min-width":"180px"},scopedSlots:t._u([{key:"default",fn:function(e){var n=e.row;return[r("code",[t._v(t._s(n.payload))])]}}])}),r("el-table-column",{attrs:{prop:"createAt",label:t.$t("Tools.time")}})],1)],1),r("el-col",{attrs:{span:12}},[r("div",{staticClass:"message-btn"},[t._v("\n "+t._s(t.$t("Tools.published"))+"\n "),r("i",{staticClass:"icon el-icon-refresh",attrs:{title:t.$t("Tools.clear")},on:{click:function(e){t.messageOut=[]}}})]),r("el-table",{staticClass:"list-table",staticStyle:{"margin-top":"10px"},attrs:{data:t.messageOut,"max-height":"400px"}},[r("el-table-column",{attrs:{"show-overflow-tooltip":"",prop:"topic",label:"Topic","min-width":"120px"}}),r("el-table-column",{attrs:{prop:"qos",label:"QoS",width:"80px"},scopedSlots:t._u([{key:"default",fn:function(e){var r=e.row;return[t._v(" "+t._s(r.qos)+" "+t._s(r.retain?" Retain":"")+" ")]}}])}),r("el-table-column",{attrs:{"show-overflow-tooltip":"",prop:"payload",label:"Payload","min-width":"180px"},scopedSlots:t._u([{key:"default",fn:function(e){var n=e.row;return[r("code",[t._v(t._s(n.payload))])]}}])}),r("el-table-column",{attrs:{prop:"createAt",label:t.$t("Tools.time")}})],1)],1)],1)],1)],1)}),s=[],a=r("cebc"),c=(r("6762"),r("2fdb"),r("96cf"),r("3b8d")),l=(r("f559"),r("c5f6"),r("e7fc")),u=r.n(l),p=r("c1df"),h=r.n(p),f={name:"WebSocketItem",components:{},props:{messageCount:{type:Number,default:0}},data:function(){return{times:0,maxTims:4,connecting:!1,messageRecordRules:{topic:{required:!0,message:this.$t("Tools.pleaseEnter")}},stateIcon:{0:"el-icon-message",1:"el-icon-loading",3:"el-icon-warning"},connectionRules:{host:{required:!0},port:[{type:"number",required:!0,message:this.$t("Tools.pleaseEnter")},{type:"number",min:1,max:65535,message:this.$t("Tools.rangeError")}],keepalive:[{type:"number",required:!0,message:this.$t("Tools.pleaseEnter")},{type:"number",min:0,message:this.$t("Tools.rangeError")}]},subscriptionsRules:{topic:[{required:!0,message:this.$t("Tools.pleaseEnter")}]},client:{reconnecting:!1},connection:{host:this.getOption().host,port:this.getOption().port,protocols:this.getOption().protocols,clientId:this.getOption().clientId,ssl:this.getOption().ssl,endpoint:"/mqtt",username:"",password:"",keepalive:60,clean:!0,reconnectPeriod:4e3,connectTimeout:4e3,will:{topic:"",payload:"",qos:0,retain:!1}},messageRecord:{topic:"testtopic/1",qos:0,payload:'{ "msg": "hello" }',retain:!1},subscriptionsRecord:{topic:"testtopic/#",qos:0},subscriptions:[],messageIn:[],messageOut:[],activeIndex:"0",sessions:[]}},computed:{btnStatusText:function(){var t=this.$t("Tools.connect");return this.client.connected?t=this.$t("Tools.disconnect"):this.client.connecting&&(t=this.$t("Tools.inConnection")),t},connectUrl:function(){var t=this.connection,e=t.host,r=t.port,n=t.ssl,o=t.endpoint,i=n?"wss://":"ws://";return"".concat(i).concat(e,":").concat(r).concat(o.startsWith("/")?"":"/").concat(o)}},beforeDestroy:function(){this.destroyConnection()},methods:{addMessages:function(t,e){var r=5e3;this[t].unshift(e),this[t].length>r&&this[t].pop()},getNow:function(){return h()().format("HH:mm:ss")},onMessage:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n={out:!1,createAt:this.getNow(),topic:t,payload:e.toString(),qos:r.qos,retain:r.retain};this.addMessages("messageIn",n);var o=this.messageCount;this.$emit("update:messageCount",o+=1)},handleConnect:function(){this.client.connected?this.client.end():this.createConnection()},destroyConnection:function(){if(this.client.connected||this.connecting)try{this.connecting=!1,this.times=0,this.client.end(),this.$notify({title:this.$t("Tools.disconnected"),message:"",type:"success"}),this.connecting=!1}catch(t){this.$message.error(t.toString())}},_doUnSubscribe:function(t){var e=this;this.client.connected?this.client.unsubscribe(t.topic,function(r){r||(e.subscriptions=e.subscriptions.filter(function(e){return e.topic!==t.topic}))}):this.$message.error(this.$t("Tools.clientNotConnected"))},_doSubscribe:function(){var t=Object(c["a"])(regeneratorRuntime.mark(function t(){var e,r,n,o,i=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.$refs.subForm.validate();case 2:if(e=t.sent,e){t.next=5;break}return t.abrupt("return");case 5:if(this.client.connected){t.next=8;break}return this.$message.error(this.$t("Tools.clientNotConnected")),t.abrupt("return");case 8:r=this.subscriptionsRecord,n=r.topic,o=r.qos,this.client.subscribe(n,{qos:o},function(t,e){var r=!1;e.forEach(function(t){[0,1,2].includes(t.qos)||(r=!0)}),t||r?i.$message.error(i.$t("Tools.subscriptionFailure")):i.subscriptions.find(function(t){return t.topic===n})||i.subscriptions.unshift({topic:n,qos:o,createAt:i.getNow()})});case 10:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),_doPublish:function(){var t=Object(c["a"])(regeneratorRuntime.mark(function t(){var e,r,n,o,i,s,a=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,this.$refs.pubForm.validate();case 2:if(e=t.sent,e){t.next=5;break}return t.abrupt("return");case 5:if(this.client.connected){t.next=8;break}return this.$message.error(this.$t("Tools.clientNotConnected")),t.abrupt("return");case 8:r=this.messageRecord,n=r.topic,o=r.qos,i=r.payload,s=r.retain,this.client.publish(n,i,{qos:o,retain:s},function(t){if(t)a.$message.error(a.$t("Tools.publishingFailure"));else{var e={out:!0,createAt:a.getNow(),topic:n,payload:i,qos:o,retain:s};a.addMessages("messageOut",e)}});case 10:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),_getDefaultConnection:function(){return Object(a["a"])({},this.getOption(),{endpoint:"/mqtt",username:"",password:"",keepalive:60,clean:!0,reconnectPeriod:4e3,connectTimeout:4e3,will:{topic:"",payload:"",qos:0,retain:!1}})},protocolsChange:function(){var t=this.connection,e=t.port,r=t.ssl;r||8084!==e?r&&8083===e&&(this.connection.port=8084):this.connection.port=8083},refreshClientId:function(){this.client.connected||(this.connection.clientId=this.getOption().clientId)},createConnection:function(){var t=this;if(this.client.connected)return this.connecting=!1,void(this.times=0);this.$refs.configForm.validate(function(e){if(e){var r=t.connection,n=r.clientId,o=r.username,i=r.port,s=r.password,a=r.reconnectPeriod,c=r.keepalive,l=r.clean,p=r.connectTimeout,h=r.will;t.connecting=!0,t.times=0;try{t.client=u.a.connect(t.connectUrl,{port:i,clientId:n,username:o,password:s,reconnectPeriod:a,keepalive:c,clean:l,connectTimeout:p,will:h.topic?h:void 0}),window.client=t.client,t.client.on("error",function(e){t.$message.error(e.toString()),t.connecting=!1;try{t.client.end()}catch(r){t.$message.error(r.toString())}}),t.client.on("reconnect",function(){t.times>t.maxTims&&(t.destroyConnection(),t.$message.error(t.$t("Tools.connectionDisconnected"))),t.connecting&&(t.times+=1)}),t.client.on("connect",function(){t.$notify({title:t.$t("Tools.connected"),message:"",type:"success"}),t.connecting=!1}),t.client.on("message",t.onMessage),t.client.on("reconnection",t.onMessage)}catch(f){t.connecting=!1,t.$message.error(f.toString())}}})},getOption:function(){var t=window.location,e=t.protocol,r=t.hostname;return{host:r,protocols:"http:"===e?"ws":"wss",port:"http:"===e?8083:8084,clientId:"mqttjs_".concat(Math.random().toString(16).substr(2,8)),ssl:"https:"===e}},atSessionChange:function(t){this.activeIndex=t;var e=this.sessions[t];e&&(this.client=e.client||{},this.connection=e.connection||{},this.messageRecord=e.messageRecord||{},this.subscriptionsRecord=e.subscriptionsRecord||{},this.subscriptions=e.subscriptions||[])},sessionChange:function(t){this.activeIndex=t}}},d=f,_=(r("d751"),r("2877")),m=Object(_["a"])(d,i,s,!1,null,null,null),b=m.exports,g={name:"WebSocket",components:{WebSocketItem:b},props:{},data:function(){return{activeTab:"0",tabs:[{name:"0",label:this.$t("Tools.defaultConnection"),messageCount:0}]}},watch:{activeTab:function(t,e){var r=this.tabs.find(function(e){return e.name===t}),n=this.tabs.find(function(t){return t.name===e});n&&(n.messageCount=0),r||(r.messageCount=0)}},methods:{handleBeforeLeave:function(t){return"add"!==t||(this.handleTabEdit("add"),!1)},handleTabEdit:function(t){var e=this;if("add"===t){if(this.tabs.length>6)return void this.$message.error(this.$t("Tools.maxSix"));var r=this.tabs.length.toString();this.tabs.push({name:r,label:this.$t("Tools.connectionName"),messageCount:0}),this.activeTab=r}else{var n=this.$refs[t]&&this.$refs[t][0];if(!n)return;n.client&&n.client.connected&&n.client.end(),this.tabs.forEach(function(r,n){if(r.name===t){var o=e.tabs[n+1]||e.tabs[n-1];o&&(e.activeTab=o.name)}}),this.tabs=this.tabs.filter(function(e){return e.name!==t})}}}},v=g,y=(r("6bc4"),Object(_["a"])(v,n,o,!1,null,null,null));e["default"]=y.exports},"18ec":function(t,e,r){"use strict";var n="razdwatrzy";t.exports=function(){return"function"===typeof n.contains&&(!0===n.contains("dwa")&&!1===n.contains("foo"))}},"1a94":function(t,e,r){"use strict";t.exports=function(t){if("function"!==typeof t)throw new TypeError(t+" is not a function");return t}},"1c4a":function(t,e,r){"use strict";t.exports=r("ba61")()?Symbol:r("94ee")},"1fad":function(t,e,r){"use strict";var n=r("51e9"),o=r("3fb5"),i=r("faa1").EventEmitter,s=r("a7c9"),a=r("b289");function c(t){if(!(this instanceof c))return new c(t);this.settings=t||{},this._states=["_parseHeader","_parseLength","_parsePayload","_newPacket"],this._resetState()}o(c,i),c.prototype._resetState=function(){this.packet=new s,this.error=null,this._list=n(),this._stateCounter=0},c.prototype.parse=function(t){this.error&&this._resetState(),this._list.append(t);while((-1!==this.packet.length||this._list.length>0)&&this[this._states[this._stateCounter]]()&&!this.error)this._stateCounter++,this._stateCounter>=this._states.length&&(this._stateCounter=0);return this._list.length},c.prototype._parseHeader=function(){var t=this._list.readUInt8(0);return this.packet.cmd=a.types[t>>a.CMD_SHIFT],this.packet.retain=0!==(t&a.RETAIN_MASK),this.packet.qos=t>>a.QOS_SHIFT&a.QOS_MASK,this.packet.dup=0!==(t&a.DUP_MASK),this._list.consume(1),!0},c.prototype._parseLength=function(){var t=this._parseVarByteNum(!0);return t&&(this.packet.length=t.value,this._list.consume(t.bytes)),!!t},c.prototype._parsePayload=function(){var t=!1;if(0===this.packet.length||this._list.length>=this.packet.length){switch(this._pos=0,this.packet.cmd){case"connect":this._parseConnect();break;case"connack":this._parseConnack();break;case"publish":this._parsePublish();break;case"puback":case"pubrec":case"pubrel":case"pubcomp":this._parseConfirmation();break;case"subscribe":this._parseSubscribe();break;case"suback":this._parseSuback();break;case"unsubscribe":this._parseUnsubscribe();break;case"unsuback":this._parseUnsuback();break;case"pingreq":case"pingresp":break;case"disconnect":this._parseDisconnect();break;case"auth":this._parseAuth();break;default:this._emitError(new Error("Not supported"))}t=!0}return t},c.prototype._parseConnect=function(){var t,e,r,n,o,i,s={},c=this.packet;if(t=this._parseString(),null===t)return this._emitError(new Error("Cannot parse protocolId"));if("MQTT"!==t&&"MQIsdp"!==t)return this._emitError(new Error("Invalid protocolId"));if(c.protocolId=t,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(c.protocolVersion=this._list.readUInt8(this._pos),3!==c.protocolVersion&&4!==c.protocolVersion&&5!==c.protocolVersion)return this._emitError(new Error("Invalid protocol version"));if(this._pos++,this._pos>=this._list.length)return this._emitError(new Error("Packet too short"));if(s.username=this._list.readUInt8(this._pos)&a.USERNAME_MASK,s.password=this._list.readUInt8(this._pos)&a.PASSWORD_MASK,s.will=this._list.readUInt8(this._pos)&a.WILL_FLAG_MASK,s.will&&(c.will={},c.will.retain=0!==(this._list.readUInt8(this._pos)&a.WILL_RETAIN_MASK),c.will.qos=(this._list.readUInt8(this._pos)&a.WILL_QOS_MASK)>>a.WILL_QOS_SHIFT),c.clean=0!==(this._list.readUInt8(this._pos)&a.CLEAN_SESSION_MASK),this._pos++,c.keepalive=this._parseNum(),-1===c.keepalive)return this._emitError(new Error("Packet too short"));if(5===c.protocolVersion){var l=this._parseProperties();Object.getOwnPropertyNames(l).length&&(c.properties=l)}if(e=this._parseString(),null===e)return this._emitError(new Error("Packet too short"));if(c.clientId=e,s.will){if(5===c.protocolVersion){var u=this._parseProperties();Object.getOwnPropertyNames(u).length&&(c.will.properties=u)}if(r=this._parseString(),null===r)return this._emitError(new Error("Cannot parse will topic"));if(c.will.topic=r,n=this._parseBuffer(),null===n)return this._emitError(new Error("Cannot parse will payload"));c.will.payload=n}if(s.username){if(i=this._parseString(),null===i)return this._emitError(new Error("Cannot parse username"));c.username=i}if(s.password){if(o=this._parseBuffer(),null===o)return this._emitError(new Error("Cannot parse password"));c.password=o}return this.settings=c,c},c.prototype._parseConnack=function(){var t=this.packet;if(this._list.length<2)return null;if(t.sessionPresent=!!(this._list.readUInt8(this._pos++)&a.SESSIONPRESENT_MASK),5===this.settings.protocolVersion?t.reasonCode=this._list.readUInt8(this._pos++):t.returnCode=this._list.readUInt8(this._pos++),-1===t.returnCode||-1===t.reasonCode)return this._emitError(new Error("Cannot parse return code"));if(5===this.settings.protocolVersion){var e=this._parseProperties();Object.getOwnPropertyNames(e).length&&(t.properties=e)}},c.prototype._parsePublish=function(){var t=this.packet;if(t.topic=this._parseString(),null===t.topic)return this._emitError(new Error("Cannot parse topic"));if(!(t.qos>0)||this._parseMessageId()){if(5===this.settings.protocolVersion){var e=this._parseProperties();Object.getOwnPropertyNames(e).length&&(t.properties=e)}t.payload=this._list.slice(this._pos,t.length)}},c.prototype._parseSubscribe=function(){var t,e,r,n,o,i,s,c=this.packet;if(1!==c.qos)return this._emitError(new Error("Wrong subscribe header"));if(c.subscriptions=[],this._parseMessageId()){if(5===this.settings.protocolVersion){var l=this._parseProperties();Object.getOwnPropertyNames(l).length&&(c.properties=l)}while(this._pos=c.length)return this._emitError(new Error("Malformed Subscribe Payload"));e=this._parseByte(),r=e&a.SUBSCRIBE_OPTIONS_QOS_MASK,i=0!==(e>>a.SUBSCRIBE_OPTIONS_NL_SHIFT&a.SUBSCRIBE_OPTIONS_NL_MASK),o=0!==(e>>a.SUBSCRIBE_OPTIONS_RAP_SHIFT&a.SUBSCRIBE_OPTIONS_RAP_MASK),n=e>>a.SUBSCRIBE_OPTIONS_RH_SHIFT&a.SUBSCRIBE_OPTIONS_RH_MASK,s={topic:t,qos:r},5===this.settings.protocolVersion&&(s.nl=i,s.rap=o,s.rh=n),c.subscriptions.push(s)}}},c.prototype._parseSuback=function(){var t=this.packet;if(this.packet.granted=[],this._parseMessageId()){if(5===this.settings.protocolVersion){var e=this._parseProperties();Object.getOwnPropertyNames(e).length&&(t.properties=e)}while(this._pos2){t.reasonCode=this._parseByte();var e=this._parseProperties();Object.getOwnPropertyNames(e).length&&(t.properties=e)}return!0},c.prototype._parseDisconnect=function(){var t=this.packet;if(5===this.settings.protocolVersion){t.reasonCode=this._parseByte();var e=this._parseProperties();Object.getOwnPropertyNames(e).length&&(t.properties=e)}return!0},c.prototype._parseAuth=function(){var t=this.packet;if(5!==this.settings.protocolVersion)return this._emitError(new Error("Not supported auth packet for this version MQTT"));t.reasonCode=this._parseByte();var e=this._parseProperties();return Object.getOwnPropertyNames(e).length&&(t.properties=e),!0},c.prototype._parseMessageId=function(){var t=this.packet;return t.messageId=this._parseNum(),null!==t.messageId||(this._emitError(new Error("Cannot parse messageId")),!1)},c.prototype._parseString=function(t){var e,r=this._parseNum(),n=r+this._pos;return-1===r||n>this._list.length||n>this.packet.length?null:(e=this._list.toString("utf8",this._pos,n),this._pos+=r,e)},c.prototype._parseStringPair=function(){return{name:this._parseString(),value:this._parseString()}},c.prototype._parseBuffer=function(){var t,e=this._parseNum(),r=e+this._pos;return-1===e||r>this._list.length||r>this.packet.length?null:(t=this._list.slice(this._pos,r),this._pos+=e,t)},c.prototype._parseNum=function(){if(this._list.length-this._pos<2)return-1;var t=this._list.readUInt16BE(this._pos);return this._pos+=2,t},c.prototype._parse4ByteNum=function(){if(this._list.length-this._pos<4)return-1;var t=this._list.readUInt32BE(this._pos);return this._pos+=4,t},c.prototype._parseVarByteNum=function(t){var e,r=0,n=1,o=0,i=!0,s=this._pos?this._pos:0;while(r<5){if(e=this._list.readUInt8(s+r++),o+=n*(e&a.LENGTH_MASK),n*=128,0===(e&a.LENGTH_FIN_MASK))break;if(this._list.length<=r){i=!1;break}}return s&&(this._pos+=r),i=!!i&&(t?{bytes:r,value:o}:o),i},c.prototype._parseByte=function(){var t=this._list.readUInt8(this._pos);return this._pos++,t},c.prototype._parseByType=function(t){switch(t){case"byte":return 0!==this._parseByte();case"int8":return this._parseByte();case"int16":return this._parseNum();case"int32":return this._parse4ByteNum();case"var":return this._parseVarByteNum();case"string":return this._parseString();case"pair":return this._parseStringPair();case"binary":return this._parseBuffer()}},c.prototype._parseProperties=function(){var t=this._parseVarByteNum(),e=this._pos,r=e+t,n={};while(this._pos0){t=new Array(arguments.length-2);for(var e=0;e=0?l(u):o(this.length)-l(c(u)),e=u;ethis.length)&&(n=this.length),r>=this.length)return t||i.alloc(0);if(n<=0)return t||i.alloc(0);var o,s,a=!!t,c=this._offset(r),l=n-r,u=l,p=a&&e||0,h=c[1];if(0===r&&n==this.length){if(!a)return 1===this._bufs.length?this._bufs[0]:i.concat(this._bufs,this.length);for(s=0;so)){this._bufs[s].copy(t,p,h,h+u);break}this._bufs[s].copy(t,p,h),p+=o,u-=o,h&&(h=0)}return t},s.prototype.shallowSlice=function(t,e){t=t||0,e=e||this.length,t<0&&(t+=this.length),e<0&&(e+=this.length);var r=this._offset(t),n=this._offset(e),o=this._bufs.slice(r[0],n[0]+1);return 0==n[1]?o.pop():o[o.length-1]=o[o.length-1].slice(0,n[1]),0!=r[1]&&(o[0]=o[0].slice(r[1])),new s(o)},s.prototype.toString=function(t,e,r){return this.slice(e,r).toString(t)},s.prototype.consume=function(t){while(this._bufs.length){if(!(t>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},s.prototype.duplicate=function(){for(var t=0,e=new s;t_)setTimeout(v,m,t,e,r);else{b&&"string"===typeof t&&(t=a.from(t,"utf8"));try{u.send(t)}catch(n){return r(n)}r()}}function y(t){u.close(),t()}function w(){l.setReadable(d),l.setWritable(d),l.emit("connect")}function S(){l.end(),l.destroy()}function k(t){l.destroy(t)}function I(t){var e=t.data;e=e instanceof ArrayBuffer?a.from(e):a.from(e,"utf8"),d.push(e)}function E(){u.close()}function x(t,e){for(var r=new Array(t.length),n=0;n65535||u%1!==0)return e.emit("error",new Error("Invalid keepalive")),!1;if(m+=2,m+=1,5===a){var b=B(e,_);m+=b.length}if(c){if("object"!==typeof c)return e.emit("error",new Error("Invalid will")),!1;if(!c.topic||"string"!==typeof c.topic)return e.emit("error",new Error("Invalid will topic")),!1;if(m+=o.byteLength(c.topic)+2,m+=2,c.payload){if(!(c.payload.length>=0))return e.emit("error",new Error("Invalid will payload")),!1;"string"===typeof c.payload?m+=o.byteLength(c.payload):m+=c.payload.length}var g={};5===a&&(g=B(e,c.properties),m+=g.length)}var v=!1;if(null!=h){if(!$(h))return e.emit("error",new Error("Invalid username")),!1;v=!0,m+=o.byteLength(h)+2}if(null!=f){if(!v)return e.emit("error",new Error("Username is required to use password")),!1;if(!$(f))return e.emit("error",new Error("Invalid password")),!1;m+=D(f)+2}e.write(n.CONNECT_HEADER),C(e,m),N(e,s),e.write(4===a?n.VERSION4:5===a?n.VERSION5:n.VERSION3);var y=0;return y|=null!=h?n.USERNAME_MASK:0,y|=null!=f?n.PASSWORD_MASK:0,y|=c&&c.retain?n.WILL_RETAIN_MASK:0,y|=c&&c.qos?c.qos<0&&d(e,h),null!=m&&m.write(),e.write(p)}function w(t,e,r){var i=r?r.protocolVersion:4,s=t||{},a=s.cmd||"puback",c=s.messageId,l=s.dup&&"pubrel"===a?n.DUP_MASK:0,u=0,p=s.reasonCode,h=s.properties,f=5===i?3:2;if("pubrel"===a&&(u=1),"number"!==typeof c)return e.emit("error",new Error("Invalid messageId")),!1;var _=null;if(5===i){if(_=U(e,h,r,f),!_)return!1;f+=_.length}return e.write(n.ACKS[a][u][l][0]),C(e,f),d(e,c),5===i&&e.write(o.from([p])),null!==_&&_.write(),!0}function S(t,e,r){var i=r?r.protocolVersion:4,s=t||{},a=s.dup?n.DUP_MASK:0,c=s.messageId,l=s.subscriptions,u=s.properties,p=0;if("number"!==typeof c)return e.emit("error",new Error("Invalid messageId")),!1;p+=2;var h=null;if(5===i&&(h=B(e,u),p+=h.length),"object"!==typeof l||!l.length)return e.emit("error",new Error("Invalid subscriptions")),!1;for(var f=0;f2)return e.emit("error",new Error("Invalid subscriptions - invalid Retain Handling")),!1}p+=o.byteLength(_)+2+1}e.write(n.SUBSCRIBE_HEADER[1][a?1:0][0]),C(e,p),d(e,c),null!==h&&h.write();for(var y=!0,w=0;wi){var a=o.shift();if(!a||!e[a])return!1;delete e[a],s=B(t,e)}return s}function L(t,e,r){for(var i in C(t,r),e)if(e.hasOwnProperty(i)&&null!==e[i]){var s=e[i],a=n.propertiesTypes[i];switch(a){case"byte":t.write(o.from([n.properties[i]])),t.write(o.from([+s]));break;case"int8":t.write(o.from([n.properties[i]])),t.write(o.from([s]));break;case"binary":t.write(o.from([n.properties[i]])),N(t,s);break;case"int16":t.write(o.from([n.properties[i]])),d(t,s);break;case"int32":t.write(o.from([n.properties[i]])),q(t,s);break;case"var":t.write(o.from([n.properties[i]])),C(t,s);break;case"string":t.write(o.from([n.properties[i]])),A(t,s);break;case"pair":Object.getOwnPropertyNames(s).forEach(function(e){var r=s[e];Array.isArray(r)?r.forEach(function(r){t.write(o.from([n.properties[i]])),j(t,e.toString(),r.toString())}):(t.write(o.from([n.properties[i]])),j(t,e.toString(),r.toString()))});break;default:return t.emit("error",new Error("Invalid property "+i)),!1}}}function D(t){return t?t instanceof o?t.length:o.byteLength(t):0}function $(t){return"string"===typeof t||t instanceof o}t.exports=m},"724e":function(t,e,r){"use strict";t.exports=r("29b0")()?Number.isNaN:r("56c4")},7373:function(t,e,r){"use strict";var n=r("62c4"),o=Object.keys;t.exports=function(t){return o(n(t)?Object(t):t)}},"7bdf":function(t,e,r){"use strict";t.exports=r("ecf9")()?Object.keys:r("7373")},"7f0f":function(t,e,r){"use strict";var n=r("8707").Buffer,o=r("7135"),i=r("faa1").EventEmitter,s=r("3fb5");function a(t,e){var r=new c;return o(t,r,e),r.concat()}function c(){this._array=new Array(20),this._i=0}s(c,i),c.prototype.write=function(t){return this._array[this._i++]=t,!0},c.prototype.concat=function(){var t,e,r=0,o=new Array(this._array.length),i=this._array,s=0;for(t=0;t=55296&&g<=56319&&(S+=t[++r])),S=k?h.call(k,I,S,_):S,e?(f.value=S,d(m,_,f)):m[_]=S,++_;b=_}if(void 0===b)for(b=s(t.length),e&&(m=new e(b)),r=0;r0&&l>c&&(l=c);for(var u=0;u=0?(p=_.substr(0,m),h=_.substr(m+1)):(p=_,h=""),f=decodeURIComponent(p),d=decodeURIComponent(h),n(s,f)?o(s[f])?s[f].push(d):s[f]=[s[f],d]:s[f]=d}return s};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},"91e3":function(t,e,r){"use strict";var n=r("e9bd"),o=r("62c4"),i=r("692b1"),s=r("1c4a").iterator,a=Array.isArray;t.exports=function(t){return!!o(t)&&(!!a(t)||(!!i(t)||(!!n(t)||"function"===typeof t[s])))}},"94ee":function(t,e,r){"use strict";var n,o,i,s,a=r("f508"),c=r("b380"),l=Object.create,u=Object.defineProperties,p=Object.defineProperty,h=Object.prototype,f=l(null);if("function"===typeof Symbol){n=Symbol;try{String(n()),s=!0}catch(_){}}var d=function(){var t=l(null);return function(e){var r,n,o=0;while(t[e+(o||"")])++o;return e+=o||"",t[e]=!0,r="@@"+e,p(h,r,a.gs(null,function(t){n||(n=!0,p(this,r,a(t)),n=!1)})),r}}();i=function(t){if(this instanceof i)throw new TypeError("Symbol is not a constructor");return o(t)},t.exports=o=function t(e){var r;if(this instanceof t)throw new TypeError("Symbol is not a constructor");return s?n(e):(r=l(i.prototype),e=void 0===e?"":String(e),u(r,{__description__:a("",e),__name__:a("",d(e))}))},u(o,{for:a(function(t){return f[t]?f[t]:f[t]=o(String(t))}),keyFor:a(function(t){var e;for(e in c(t),f)if(f[e]===t)return e}),hasInstance:a("",n&&n.hasInstance||o("hasInstance")),isConcatSpreadable:a("",n&&n.isConcatSpreadable||o("isConcatSpreadable")),iterator:a("",n&&n.iterator||o("iterator")),match:a("",n&&n.match||o("match")),replace:a("",n&&n.replace||o("replace")),search:a("",n&&n.search||o("search")),species:a("",n&&n.species||o("species")),split:a("",n&&n.split||o("split")),toPrimitive:a("",n&&n.toPrimitive||o("toPrimitive")),toStringTag:a("",n&&n.toStringTag||o("toStringTag")),unscopables:a("",n&&n.unscopables||o("unscopables"))}),u(i.prototype,{constructor:a(o),toString:a("",function(){return this.__name__})}),u(o.prototype,{toString:a(function(){return"Symbol ("+c(this).__description__+")"}),valueOf:a(function(){return c(this)})}),p(o.prototype,o.toPrimitive,a("",function(){var t=c(this);return"symbol"===typeof t?t:t.toString()})),p(o.prototype,o.toStringTag,a("c","Symbol")),p(i.prototype,o.toStringTag,a("c",o.prototype[o.toStringTag])),p(i.prototype,o.toPrimitive,a("c",o.prototype[o.toPrimitive]))},"96ae":function(t,e,r){"use strict";var n=r("62c4");t.exports=function(t){if(!n(t))throw new TypeError("Cannot use null or undefined");return t}},"986b":function(t,e,r){"use strict";var n,o=r("d66f"),i=r("f3a6"),s=r("1a94"),a=r("4665"),c=r("1a94"),l=r("96ae"),u=Function.prototype.bind,p=Object.defineProperty,h=Object.prototype.hasOwnProperty;n=function(t,e,r){var n,i=l(e)&&c(e.value);return n=o(e),delete n.writable,delete n.value,n.get=function(){return!r.overwriteDefinition&&h.call(this,t)?i:(e.value=u.call(i,r.resolveContext?r.resolveContext(this):this),p(this,t,e),this[t])},n},t.exports=function(t){var e=i(arguments[1]);return null!=e.resolveContext&&s(e.resolveContext),a(t,function(t,r){return n(r,t,e)})}},"9c0f":function(t,e,r){"use strict";t.exports=function(t){return"function"===typeof t}},"9d88":function(t,e,r){(function(t,n){var o;/*! https://mths.be/punycode v1.4.1 by @mathias */(function(i){e&&e.nodeType,t&&t.nodeType;var s="object"==typeof n&&n;s.global!==s&&s.window!==s&&s.self;var a,c=2147483647,l=36,u=1,p=26,h=38,f=700,d=72,_=128,m="-",b=/^xn--/,g=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=l-u,S=Math.floor,k=String.fromCharCode;function I(t){throw new RangeError(y[t])}function E(t,e){var r=t.length,n=[];while(r--)n[r]=e(t[r]);return n}function x(t,e){var r=t.split("@"),n="";r.length>1&&(n=r[0]+"@",t=r[1]),t=t.replace(v,".");var o=t.split("."),i=E(o,e).join(".");return n+i}function O(t){var e,r,n=[],o=0,i=t.length;while(o=55296&&e<=56319&&o65535&&(t-=65536,e+=k(t>>>10&1023|55296),t=56320|1023&t),e+=k(t),e}).join("")}function T(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:l}function C(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var n=0;for(t=r?S(t/f):t>>1,t+=S(t/e);t>w*p>>1;n+=l)t=S(t/w);return S(n+(w+1)*t/(t+h))}function j(t){var e,r,n,o,i,s,a,h,f,b,g=[],v=t.length,y=0,w=_,k=d;for(r=t.lastIndexOf(m),r<0&&(r=0),n=0;n=128&&I("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=v&&I("invalid-input"),h=T(t.charCodeAt(o++)),(h>=l||h>S((c-y)/s))&&I("overflow"),y+=h*s,f=a<=k?u:a>=k+p?p:a-k,hS(c/b)&&I("overflow"),s*=b}e=g.length+1,k=A(y-i,e,0==i),S(y/e)>c-w&&I("overflow"),w+=S(y/e),y%=e,g.splice(y++,0,w)}return P(g)}function R(t){var e,r,n,o,i,s,a,h,f,b,g,v,y,w,E,x=[];for(t=O(t),v=t.length,e=_,r=0,i=d,s=0;s=e&&gS((c-r)/y)&&I("overflow"),r+=(a-e)*y,e=a,s=0;sc&&I("overflow"),g==e){for(h=r,f=l;;f+=l){if(b=f<=i?u:f>=i+p?p:f-i,h=55296&&m<=56319&&(_+=t[++f])),c.call(e,b,_,p),h)break}else l.call(t,function(t){return c.call(e,b,t,p),h})}},c4c7:function(t,e,r){"use strict";(function(e){var n,o,i,s=r("e372").Transform,a=r("fb12"),c=r("1fb5"),l=!1;function u(){var t=new s;return t._write=function(t,e,r){n.sendSocketMessage({data:t.buffer,success:function(){r()},fail:function(){r(new Error)}})},t._flush=function(t){n.closeSocket({success:function(){t()}})},t}function p(t){t.hostname||(t.hostname="localhost"),t.path||(t.path="/"),t.wsOptions||(t.wsOptions={})}function h(t,e){var r="alis"===t.protocol?"wss":"ws",n=r+"://"+t.hostname+t.path;return t.port&&80!==t.port&&443!==t.port&&(n=r+"://"+t.hostname+":"+t.port+t.path),"function"===typeof t.transformWsUrl&&(n=t.transformWsUrl(n,t,e)),n}function f(){l||(l=!0,n.onSocketOpen(function(){i.setReadable(o),i.setWritable(o),i.emit("connect")}),n.onSocketMessage(function(t){if("string"===typeof t.data){var r=c.toByteArray(t.data),n=e.from(r);o.push(n)}else{var i=new FileReader;i.addEventListener("load",function(){var t=i.result;t=t instanceof ArrayBuffer?e.from(t):e.from(t,"utf8"),o.push(t)}),i.readAsArrayBuffer(t.data)}}),n.onSocketClose(function(){i.end(),i.destroy()}),n.onSocketError(function(t){i.destroy(t)}))}function d(t,e){if(e.hostname=e.hostname||e.host,!e.hostname)throw new Error("Could not determine host. Specify host manually.");var r="MQIsdp"===e.protocolId&&3===e.protocolVersion?"mqttv3.1":"mqtt";p(e);var s=h(e,t);return n=e.my,n.connectSocket({url:s,protocols:r}),o=u(),i=a.obj(),f(),i}t.exports=d}).call(this,r("b639").Buffer)},c5f4:function(t,e,r){"use strict";var n=r("bae6"),o=Math.abs,i=Math.floor;t.exports=function(t){return isNaN(t)?0:(t=Number(t),0!==t&&isFinite(t)?n(t)*i(o(t)):t)}},c682:function(t,e,r){"use strict";t.exports=r("5a5c")("key","value","key+value")},c9fc:function(t,e,r){"use strict";var n,o,i,s,a,c,l,u=r("f508"),p=r("1a94"),h=Function.prototype.apply,f=Function.prototype.call,d=Object.create,_=Object.defineProperty,m=Object.defineProperties,b=Object.prototype.hasOwnProperty,g={configurable:!0,enumerable:!1,writable:!0};n=function(t,e){var r;return p(e),b.call(this,"__ee__")?r=this.__ee__:(r=g.value=d(null),_(this,"__ee__",g),g.value=null),r[t]?"object"===typeof r[t]?r[t].push(e):r[t]=[r[t],e]:r[t]=e,this},o=function(t,e){var r,o;return p(e),o=this,n.call(this,t,r=function(){i.call(o,t,r),h.call(e,this,arguments)}),r.__eeOnceListener__=e,this},i=function(t,e){var r,n,o,i;if(p(e),!b.call(this,"__ee__"))return this;if(r=this.__ee__,!r[t])return this;if(n=r[t],"object"===typeof n)for(i=0;o=n[i];++i)o!==e&&o.__eeOnceListener__!==e||(2===n.length?r[t]=n[i?0:1]:n.splice(i,1));else n!==e&&n.__eeOnceListener__!==e||delete r[t];return this},s=function(t){var e,r,n,o,i;if(b.call(this,"__ee__")&&(o=this.__ee__[t],o))if("object"===typeof o){for(r=arguments.length,i=new Array(r-1),e=1;ei.properties.topicAliasMaximum||!i.properties.topicAliasMaximum&&r.properties.topicAlias))&&delete o.properties.topicAlias),r.qos){case 1:case 2:this.outgoing[o.messageId]={volatile:!1,cb:n||y},this._storeProcessing?(this._packetIdsDuringStoreProcessing[o.messageId]=!1,this._storePacket(o,void 0,r.cbStorePut)):this._sendPacket(o,void 0,r.cbStorePut);break;default:this._storeProcessing?this._storePacket(o,n,r.cbStorePut):this._sendPacket(o,n,r.cbStorePut);break}return this},w.prototype.subscribe=function(){for(var t,e=new Array(arguments.length),r=0;r0){var e={qos:t.qos};5===f&&(e.nl=t.nl||!1,e.rap=t.rap||!1,e.rh=t.rh||0,e.properties=t.properties),l._resubscribeTopics[t.topic]=e,_.push(t.topic)}}),l.messageIdToTopic[t.messageId]=_}return this.outgoing[t.messageId]={volatile:!0,cb:function(t,e){if(!t)for(var r=e.granted,n=0;n0?this.once("outgoingEmpty",setTimeout.bind(null,i,10)):i(),this)},w.prototype.removeOutgoingMessage=function(t){var e=this.outgoing[t]?this.outgoing[t].cb:null;return delete this.outgoing[t],this.outgoingStore.del({messageId:t},function(){e(new Error("Message removed"))}),this},w.prototype.reconnect=function(t){var e=this,r=function(){t?(e.options.incomingStore=t.incomingStore,e.options.outgoingStore=t.outgoingStore):(e.options.incomingStore=null,e.options.outgoingStore=null),e.incomingStore=e.options.incomingStore||new i,e.outgoingStore=e.options.outgoingStore||new i,e.disconnecting=!1,e.disconnected=!1,e._deferredReconnect=null,e._reconnect()};return this.disconnecting&&!this.disconnected?this._deferredReconnect=r:r(),this},w.prototype._reconnect=function(){this.emit("reconnect"),this._setupStream()},w.prototype._setupReconnect=function(){var t=this;!t.disconnecting&&!t.reconnectTimer&&t.options.reconnectPeriod>0&&(this.reconnecting||(this.emit("offline"),this.reconnecting=!0),t.reconnectTimer=setInterval(function(){t._reconnect()},t.options.reconnectPeriod))},w.prototype._clearReconnect=function(){this.reconnectTimer&&(clearInterval(this.reconnectTimer),this.reconnectTimer=null)},w.prototype._cleanUp=function(t,e){var r=arguments[2];if(e&&this.stream.on("close",e),t)0===this.options.reconnectPeriod&&this.options.clean&&b(this.outgoing),this.stream.destroy();else{var n=p({cmd:"disconnect"},r);this._sendPacket(n,h.bind(null,this.stream.end.bind(this.stream)))}this.disconnecting||(this._clearReconnect(),this._setupReconnect()),null!==this.pingTimer&&(this.pingTimer.clear(),this.pingTimer=null),e&&!this.connected&&(this.stream.removeListener("close",e),e())},w.prototype._sendPacket=function(t,e,r){if(r=r||y,this.connected){switch(this._shiftPingInterval(),t.cmd){case"publish":break;case"pubrel":return void v(this,t,e,r);default:return void m(this,t,e)}switch(t.qos){case 2:case 1:v(this,t,e,r);break;case 0:default:m(this,t,e);break}}else this._storePacket(t,e,r)},w.prototype._storePacket=function(t,e,r){r=r||y,0===(t.qos||0)&&this.queueQoSZero||"publish"!==t.cmd?this.queue.push({packet:t,cb:e}):t.qos>0?(e=this.outgoing[t.messageId]?this.outgoing[t.messageId].cb:null,this.outgoingStore.put(t,function(t){if(t)return e&&e(t);r()})):e&&e(new Error("No connection to broker"))},w.prototype._setupPingTimer=function(){var t=this;!this.pingTimer&&this.options.keepalive&&(this.pingResp=!0,this.pingTimer=l(function(){t._checkPing()},1e3*this.options.keepalive))},w.prototype._shiftPingInterval=function(){this.pingTimer&&this.options.keepalive&&this.options.reschedulePings&&this.pingTimer.reschedule(1e3*this.options.keepalive)},w.prototype._checkPing=function(){this.pingResp?(this.pingResp=!1,this._sendPacket({cmd:"pingreq"})):this._cleanUp(!0)},w.prototype._handlePingresp=function(){this.pingResp=!0},w.prototype._handleConnack=function(t){var e=this.options,r=e.protocolVersion,n=5===r?t.reasonCode:t.returnCode;if(clearTimeout(this.connackTimer),t.properties&&(t.properties.topicAliasMaximum&&(e.properties||(e.properties={}),e.properties.topicAliasMaximum=t.properties.topicAliasMaximum),t.properties.serverKeepAlive&&e.keepalive&&(e.keepalive=t.properties.serverKeepAlive,this._shiftPingInterval()),t.properties.maximumPacketSize&&(e.properties||(e.properties={}),e.properties.maximumPacketSize=t.properties.maximumPacketSize)),0===n)this.reconnecting=!1,this._onConnect(t);else if(n>0){var o=new Error("Connection refused: "+d[n]);o.code=n,this.emit("error",o)}},w.prototype._handlePublish=function(t,e){e="undefined"!==typeof e?e:y;var r=t.topic.toString(),n=t.payload,o=t.qos,i=t.messageId,s=this,a=this.options,c=[0,16,128,131,135,144,145,151,153];switch(o){case 2:a.customHandleAcks(r,n,t,function(r,n){return r instanceof Error||(n=r,r=null),r?s.emit("error",r):-1===c.indexOf(n)?s.emit("error",new Error("Wrong reason code for pubrec")):void(n?s._sendPacket({cmd:"pubrec",messageId:i,reasonCode:n},e):s.incomingStore.put(t,function(){s._sendPacket({cmd:"pubrec",messageId:i},e)}))});break;case 1:a.customHandleAcks(r,n,t,function(o,a){return o instanceof Error||(a=o,o=null),o?s.emit("error",o):-1===c.indexOf(a)?s.emit("error",new Error("Wrong reason code for puback")):(a||s.emit("message",r,n,t),void s.handleMessage(t,function(t){if(t)return e&&e(t);s._sendPacket({cmd:"puback",messageId:i,reasonCode:a},e)}))});break;case 0:this.emit("message",r,n,t),this.handleMessage(t,e);break;default:break}},w.prototype.handleMessage=function(t,e){e()},w.prototype._handleAck=function(t){var e,r=t.messageId,n=t.cmd,o=null,i=this.outgoing[r]?this.outgoing[r].cb:null,s=this;if(i){switch(n){case"pubcomp":case"puback":var a=t.reasonCode;a&&a>0&&16!==a&&(e=new Error("Publish error: "+d[a]),e.code=a,i(e,t)),delete this.outgoing[r],this.outgoingStore.del(t,i);break;case"pubrec":o={cmd:"pubrel",qos:2,messageId:r};var c=t.reasonCode;c&&c>0&&16!==c?(e=new Error("Publish error: "+d[c]),e.code=c,i(e,t)):this._sendPacket(o);break;case"suback":delete this.outgoing[r];for(var l=0;l0)if(this.options.resubscribe)if(5===this.options.protocolVersion)for(var r=0;r0?1:-1}},f0cb:function(t,e,r){"use strict";var n=r("8707").Buffer,o=65536,i={};function s(t){var e=n.allocUnsafe(2);return e.writeUInt8(t>>8,0),e.writeUInt8(255&t,1),e}function a(){for(var t=0;t=0&&t<128?1:t>=128&&t<16384?2:t>=16384&&t<2097152?3:t>=2097152&&t<268435456?4:0}function l(t){var e=0,r=0,o=c(t),i=n.allocUnsafe(o);do{e=t%128|0,t=t/128|0,t>0&&(e|=128),i.writeUInt8(e,r++)}while(t>0);return{data:i,length:o}}function u(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports={cache:i,generateCache:a,generateNumber:s,genBufVariableByteInt:l,generate4ByteBuffer:u}},f3a6:function(t,e,r){"use strict";var n=r("62c4"),o=Array.prototype.forEach,i=Object.create,s=function(t,e){var r;for(r in t)e[r]=t[r]};t.exports=function(t){var e=i(null);return o.call(arguments,function(t){n(t)&&s(Object(t),e)}),e}},f508:function(t,e,r){"use strict";var n,o=r("2031"),i=r("f3a6"),s=r("9c0f"),a=r("f973");n=t.exports=function(t,e){var r,n,s,c,l;return arguments.length<2||"string"!==typeof t?(c=e,e=t,t=null):c=arguments[2],null==t?(r=s=!0,n=!1):(r=a.call(t,"c"),n=a.call(t,"e"),s=a.call(t,"w")),l={value:e,configurable:r,enumerable:n,writable:s},c?o(i(c),l):l},n.gs=function(t,e,r){var n,c,l,u;return"string"!==typeof t?(l=r,r=e,e=t,t=null):l=arguments[3],null==e?e=void 0:s(e)?null==r?r=void 0:s(r)||(l=r,r=void 0):(l=e,e=r=void 0),null==t?(n=!0,c=!1):(n=a.call(t,"c"),c=a.call(t,"e")),u={get:e,set:r,configurable:n,enumerable:c},l?o(i(l),u):u}},f60e:function(t,e,r){"use strict";var n=r("7bdf"),o=r("96ae"),i=Math.max;t.exports=function(t,e){var r,s,a,c=i(arguments.length,2);for(t=Object(o(t)),a=function(n){try{t[n]=e[n]}catch(o){r||(r=o)}},s=1;s-1}},f973:function(t,e,r){"use strict";t.exports=r("18ec")()?String.prototype.contains:r("f967")},f9c1:function(t,e){function r(t){var e=t._readableState;return e?e.objectMode?t.read():t.read(n(e)):null}function n(t){return t.buffer.length?t.buffer.head?t.buffer.head.data.length:t.buffer[0].length:t.length}t.exports=r},fb12:function(t,e,r){(function(e,n){var o=r("e372"),i=r("ab52"),s=r("3fb5"),a=r("f9c1"),c=e.from&&e.from!==Uint8Array.from?e.from([0]):new e([0]),l=function(t,e){t._corked?t.once("uncork",e):e()},u=function(t,e){t._autoDestroy&&t.destroy(e)},p=function(t,e){return function(r){r?u(t,"premature close"===r.message?null:r):e&&!t._ended&&t.end()}},h=function(t,e){return t?t._writableState&&t._writableState.finished?e():t._writableState?t.end(e):(t.end(),void e()):e()},f=function(t){return new o.Readable({objectMode:!0,highWaterMark:16}).wrap(t)},d=function(t,e,r){if(!(this instanceof d))return new d(t,e,r);o.Duplex.call(this,r),this._writable=null,this._readable=null,this._readable2=null,this._autoDestroy=!r||!1!==r.autoDestroy,this._forwardDestroy=!r||!1!==r.destroy,this._forwardEnd=!r||!1!==r.end,this._corked=1,this._ondrain=null,this._drained=!1,this._forwarding=!1,this._unwrite=null,this._unread=null,this._ended=!1,this.destroyed=!1,t&&this.setWritable(t),e&&this.setReadable(e)};s(d,o.Duplex),d.obj=function(t,e,r){return r||(r={}),r.objectMode=!0,r.highWaterMark=16,new d(t,e,r)},d.prototype.cork=function(){1===++this._corked&&this.emit("cork")},d.prototype.uncork=function(){this._corked&&0===--this._corked&&this.emit("uncork")},d.prototype.setWritable=function(t){if(this._unwrite&&this._unwrite(),this.destroyed)t&&t.destroy&&t.destroy();else if(null!==t&&!1!==t){var e=this,r=i(t,{writable:!0,readable:!1},p(this,this._forwardEnd)),o=function(){var t=e._ondrain;e._ondrain=null,t&&t()},s=function(){e._writable.removeListener("drain",o),r()};this._unwrite&&n.nextTick(o),this._writable=t,this._writable.on("drain",o),this._unwrite=s,this.uncork()}else this.end()},d.prototype.setReadable=function(t){if(this._unread&&this._unread(),this.destroyed)t&&t.destroy&&t.destroy();else{if(null===t||!1===t)return this.push(null),void this.resume();var e=this,r=i(t,{writable:!1,readable:!0},p(this)),n=function(){e._forward()},o=function(){e.push(null)},s=function(){e._readable2.removeListener("readable",n),e._readable2.removeListener("end",o),r()};this._drained=!0,this._readable=t,this._readable2=t._readableState?t:f(t),this._readable2.on("readable",n),this._readable2.on("end",o),this._unread=s,this._forward()}},d.prototype._read=function(){this._drained=!0,this._forward()},d.prototype._forward=function(){if(!this._forwarding&&this._readable2&&this._drained){var t;this._forwarding=!0;while(this._drained&&null!==(t=a(this._readable2)))this.destroyed||(this._drained=this.push(t));this._forwarding=!1}},d.prototype.destroy=function(t){if(!this.destroyed){this.destroyed=!0;var e=this;n.nextTick(function(){e._destroy(t)})}},d.prototype._destroy=function(t){if(t){var e=this._ondrain;this._ondrain=null,e?e(t):this.emit("error",t)}this._forwardDestroy&&(this._readable&&this._readable.destroy&&this._readable.destroy(),this._writable&&this._writable.destroy&&this._writable.destroy()),this.emit("close")},d.prototype._write=function(t,e,r){return this.destroyed?r():this._corked?l(this,this._write.bind(this,t,e,r)):t===c?this._finish(r):this._writable?void(!1===this._writable.write(t)?this._ondrain=r:r()):r()},d.prototype._finish=function(t){var e=this;this.emit("preend"),l(this,function(){h(e._forwardEnd&&e._writable,function(){!1===e._writableState.prefinished&&(e._writableState.prefinished=!0),e.emit("prefinish"),l(e,t)})})},d.prototype.end=function(t,e,r){return"function"===typeof t?this.end(null,null,t):"function"===typeof e?this.end(t,null,e):(this._ended=!0,t&&this.write(t),this._writableState.ending||this.write(c),o.Writable.prototype.end.call(this,r))},t.exports=d}).call(this,r("b639").Buffer,r("f28c"))},fcb9:function(t,e,r){"use strict";(function(e){var n=r("553e"),o=r("0b16"),i=["rejectUnauthorized","ca","cert","key","pfx","passphrase"],s="browser"===e.title;function a(t,e){var r=t.protocol+"://"+t.hostname+":"+t.port+t.path;return"function"===typeof t.transformWsUrl&&(r=t.transformWsUrl(r,t,e)),r}function c(t){t.hostname||(t.hostname="localhost"),t.port||("wss"===t.protocol?t.port=443:t.port=80),t.path||(t.path="/"),t.wsOptions||(t.wsOptions={}),s||"wss"!==t.protocol||i.forEach(function(e){t.hasOwnProperty(e)&&!t.wsOptions.hasOwnProperty(e)&&(t.wsOptions[e]=t[e])})}function l(t,e){var r="MQIsdp"===e.protocolId&&3===e.protocolVersion?"mqttv3.1":"mqtt";c(e);var o=a(e,t);return n(o,[r],e.wsOptions)}function u(t,e){return l(t,e)}function p(t,e){if(e.hostname||(e.hostname=e.host),!e.hostname){if("undefined"===typeof document)throw new Error("Could not determine host. Specify host manually.");var r=o.parse(document.URL);e.hostname=r.hostname,e.port||(e.port=r.port)}return l(t,e)}t.exports=s?p:u}).call(this,r("f28c"))},fe3c:function(t,e,r){"use strict";var n=r(6);function o(t,e){var r;function o(n){e.rejectUnauthorized&&t.emit("error",n),r.end()}return e.port=e.port||8883,e.host=e.hostname||e.host||"localhost",e.rejectUnauthorized=!1!==e.rejectUnauthorized,delete e.path,r=n.connect(e),r.on("secureConnect",function(){e.rejectUnauthorized&&!r.authorized?r.emit("error",new Error("TLS not authorized")):r.removeListener("error",o)}),r.on("error",o),r}t.exports=o}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-69b6fda6.4f049c18.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-69b6fda6.4f049c18.js new file mode 100644 index 000000000..6cd67b566 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-69b6fda6.4f049c18.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-69b6fda6"],{"007d":function(t,e,i){var n=i("3eba");i("cb8f"),i("a96b"),i("42f6"),n.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),n.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){})},"0156":function(t,e,i){var n=i("6d8b");function r(t,e,i){i=i||{};var r=t.coordinateSystem,a=e.axis,o={},s=a.getAxesOnZeroOf()[0],l=a.position,u=s?"onZero":l,c=a.dim,h=r.getRect(),d=[h.x,h.x+h.width,h.y,h.y+h.height],f={left:0,right:1,top:0,bottom:1,onZero:2},p=e.get("offset")||0,g="x"===c?[d[2]-p,d[3]+p]:[d[0]-p,d[1]+p];if(s){var v=s.toGlobalCoord(s.dataToCoord(0));g[f.onZero]=Math.max(Math.min(v,g[1]),g[0])}o.position=["y"===c?g[f[u]]:d[0],"x"===c?g[f[u]]:d[3]],o.rotation=Math.PI/2*("x"===c?0:1);var m={top:-1,bottom:1,left:-1,right:1};o.labelDirection=o.tickDirection=o.nameDirection=m[l],o.labelOffset=s?g[f[l]]-g[f.onZero]:0,e.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),n.retrieve(i.labelInside,e.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var y=e.get("axisLabel.rotate");return o.labelRotate="top"===u?-y:y,o.z2=1,o}e.layout=r},"01ed":function(t,e,i){var n=i("3eba"),r=i("6d8b"),a=i("2306");i("5aa9"),i("af24"),n.extendComponentView({type:"grid",render:function(t,e){this.group.removeAll(),t.get("show")&&this.group.add(new a.Rect({shape:t.coordinateSystem.getRect(),style:r.defaults({fill:t.get("backgroundColor")},t.getItemStyle()),silent:!0,z2:-1}))}}),n.registerPreprocessor(function(t){t.xAxis&&t.yAxis&&!t.grid&&(t.grid={})})},"02fd":function(t,e,i){"use strict";var n=i("08d2"),r=i.n(n);r.a},"0352":function(t,e,i){var n=i("6cb7"),r=i("b12f"),a=i("0f99"),o=a.detectSourceFormat,s=i("93d0"),l=s.SERIES_LAYOUT_BY_COLUMN;n.extend({type:"dataset",defaultOption:{seriesLayoutBy:l,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){o(this)}}),r.extend({type:"dataset"})},"04f6":function(t,e){var i=32,n=7;function r(t){var e=0;while(t>=i)e|=1&t,t>>=1;return t+e}function a(t,e,i,n){var r=e+1;if(r===i)return 1;if(n(t[r++],t[e])<0){while(r=0)r++;return r-e}function o(t,e,i){i--;while(e>>1,r(o,t[a])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:while(u>0)t[s+u]=t[s+u-1],u--}t[s]=o}}function l(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])>0){s=n-r;while(l0)o=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}else{s=r+1;while(ls&&(l=s);var u=o;o=r-l,l=r-u}o++;while(o>>1);a(t,e[i+c])>0?o=c+1:l=c}return l}function u(t,e,i,n,r,a){var o=0,s=0,l=1;if(a(t,e[i+r])<0){s=r+1;while(ls&&(l=s);var u=o;o=r-l,l=r-u}else{s=n-r;while(l=0)o=l,l=1+(l<<1),l<=0&&(l=s);l>s&&(l=s),o+=r,l+=r}o++;while(o>>1);a(t,e[i+c])<0?l=c:o=c+1}return l}function c(t,e){var i,r,a=n,o=0,s=0;o=t.length;var c=[];function h(t,e){i[s]=t,r[s]=e,s+=1}function d(){while(s>1){var t=s-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;p(t)}}function f(){while(s>1){var t=s-2;t>0&&r[t-1]=n||v>=n);if(m)break;y<0&&(y=0),y+=2}if(a=y,a<1&&(a=1),1===r){for(h=0;h=0;h--)t[v+h]=t[g+h];if(0===r){_=!0;break}}if(t[p--]=c[f--],1===--s){_=!0;break}if(x=s-l(t[d],c,0,s,s-1,e),0!==x){for(p-=x,f-=x,s-=x,v=p+1,g=f+1,h=0;h=n||x>=n);if(_)break;m<0&&(m=0),m+=2}if(a=m,a<1&&(a=1),1===s){for(p-=r,d-=r,v=p+1,g=d+1,h=r-1;h>=0;h--)t[v+h]=t[g+h];t[p]=c[f]}else{if(0===s)throw new Error;for(g=p-(s-1),h=0;h=0;h--)t[v+h]=t[g+h];t[p]=c[f]}else for(g=p-(s-1),h=0;hd&&(f=d),s(t,n,n+f,n+u,e),u=f}h.pushRun(n,u),h.mergeRuns(),l-=u,n+=u}while(0!==l);h.forceMergeRuns()}}t.exports=h},"0655":function(t,e,i){var n=i("8728"),r=1e-8;function a(t,e){return Math.abs(t-e).5?e:t}function d(t,e,i,n,r){var a=t.length;if(1===r)for(var o=0;or;if(a)t.length=r;else for(var o=n;o=0;i--)if(A[i]<=e)break;i=Math.min(i,b-2)}else{for(i=G;ie)break;i=Math.min(i-1,b-2)}G=i,W=e;var n=A[i+1]-A[i];if(0!==n)if(B=(e-A[i])/n,_)if(F=D[i],z=D[0===i?i:i-1],V=D[i>b-2?b-1:i+1],H=D[i>b-3?b-1:i+2],M)g(z,F,V,H,B,B*B,B*B*B,u(t,s),I);else{if(C)r=g(z,F,V,H,B,B*B,B*B*B,j,1),r=y(j);else{if(T)return h(F,V,B);r=v(z,F,V,H,B,B*B,B*B*B)}m(t,s,r)}else if(M)d(D[i],D[i+1],B,u(t,s),I);else{var r;if(C)d(D[i],D[i+1],B,j,1),r=y(j);else{if(T)return h(D[i],D[i+1],B);r=c(D[i],D[i+1],B)}m(t,s,r)}},$=new n({target:t._target,life:w,loop:t._loop,delay:t._delay,onframe:U,ondestroy:i});return e&&"spline"!==e&&($.easing=e),$}}}var b=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||l,this._setter=n||u,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};b.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var r=this._getter(this._target,n);if(null==r)continue;0!==t&&i[n].push({time:0,value:m(r)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t1&&n&&n.length>1){var s=a(n)/a(r);!isFinite(s)&&(s=1),e.pinchScale=s;var l=o(n);return e.pinchX=l[0],e.pinchY=l[1],{type:"pinch",target:t[0].target,event:e}}}}},l=r;t.exports=l},"0cde":function(t,e,i){var n=i("1687"),r=i("401b"),a=n.identity,o=5e-5;function s(t){return t>o||t<-o}var l=function(t){t=t||{},t.position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},u=l.prototype;u.transform=null,u.needLocalTransform=function(){return s(this.rotation)||s(this.position[0])||s(this.position[1])||s(this.scale[0]-1)||s(this.scale[1]-1)};var c=[];u.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),r=this.transform;if(i||e){r=r||n.create(),i?this.getLocalTransform(r):a(r),e&&(i?n.mul(r,t.transform,r):n.copy(r,t.transform)),this.transform=r;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(c);var s=c[0]<0?-1:1,l=c[1]<0?-1:1,u=((c[0]-s)*o+s)/c[0]||0,h=((c[1]-l)*o+l)/c[1]||0;r[0]*=u,r[1]*=u,r[2]*=h,r[3]*=h}this.invTransform=this.invTransform||n.create(),n.invert(this.invTransform,r)}else r&&a(r)},u.getLocalTransform=function(t){return l.getLocalTransform(this,t)},u.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},u.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var h=[],d=n.create();u.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,r=this.scale;s(e-1)&&(e=Math.sqrt(e)),s(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],r[0]=e,r[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},u.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(n.mul(h,t.invTransform,e),e=h);var i=this.origin;i&&(i[0]||i[1])&&(d[4]=i[0],d[5]=i[1],n.mul(h,e,d),h[4]-=i[0],h[5]-=i[1],e=h),this.setLocalTransform(e)}},u.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},u.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&r.applyTransform(i,i,n),i},u.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&r.applyTransform(i,i,n),i},l.getLocalTransform=function(t,e){e=e||[],a(e);var i=t.origin,r=t.scale||[1,1],o=t.rotation||0,s=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),n.scale(e,e,r),o&&n.rotate(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=s[0],e[5]+=s[1],e};var f=l;t.exports=f},"0da8":function(t,e,i){var n=i("19eb"),r=i("9850"),a=i("6d8b"),o=i("5e76");function s(t){n.call(this,t)}s.prototype={constructor:s,type:"image",brush:function(t,e){var i=this.style,n=i.image;i.bind(t,this,e);var r=this._image=o.createOrUpdateImage(n,this._image,this,this.onload);if(r&&o.isImageReady(r)){var a=i.x||0,s=i.y||0,l=i.width,u=i.height,c=r.width/r.height;if(null==l&&null!=u?l=u*c:null==u&&null!=l?u=l/c:null==l&&null==u&&(l=r.width,u=r.height),this.setTransform(t),i.sWidth&&i.sHeight){var h=i.sx||0,d=i.sy||0;t.drawImage(r,h,d,i.sWidth,i.sHeight,a,s,l,u)}else if(i.sx&&i.sy){h=i.sx,d=i.sy;var f=l-h,p=u-d;t.drawImage(r,h,d,f,p,a,s,l,u)}else t.drawImage(r,a,s,l,u);null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))}},getBoundingRect:function(){var t=this.style;return this._rect||(this._rect=new r(t.x||0,t.y||0,t.width||0,t.height||0)),this._rect}},a.inherits(s,n);var l=s;t.exports=l},"0f99":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("e0d3")),a=r.makeInner,o=r.getDataItemValue,s=i("8b7f"),l=s.getCoordSysDefineBySeries,u=i("6d8b"),c=u.createHashMap,h=u.each,d=u.map,f=u.isArray,p=u.isString,g=u.isObject,v=u.isTypedArray,m=u.isArrayLike,y=u.extend,x=(u.assert,i("ec6f")),_=i("93d0"),b=_.SOURCE_FORMAT_ORIGINAL,w=_.SOURCE_FORMAT_ARRAY_ROWS,S=_.SOURCE_FORMAT_OBJECT_ROWS,M=_.SOURCE_FORMAT_KEYED_COLUMNS,C=_.SOURCE_FORMAT_UNKNOWN,T=_.SOURCE_FORMAT_TYPED_ARRAY,I=_.SERIES_LAYOUT_BY_ROW,A=a();function D(t){var e=t.option.source,i=C;if(v(e))i=T;else if(f(e)){0===e.length&&(i=w);for(var n=0,r=e.length;nt&&(t=e),t}});t.exports=r},"17d6":function(t,e,i){var n=i("6d8b"),r=i("22d1"),a=i("e0d3"),o=a.makeInner,s=o(),l=n.each;function u(t,e,i){if(!r.node){var n=e.getZr();s(n).records||(s(n).records={}),c(n,e);var a=s(n).records[t]||(s(n).records[t]={});a.handler=i}}function c(t,e){function i(i,n){t.on(i,function(i){var r=p(e);l(s(t).records,function(t){t&&n(t,i,r.dispatchAction)}),h(r.pendings,e)})}s(t).initialized||(s(t).initialized=!0,i("click",n.curry(f,"click")),i("mousemove",n.curry(f,"mousemove")),i("globalout",d))}function h(t,e){var i,n=t.showTip.length,r=t.hideTip.length;n?i=t.showTip[n-1]:r&&(i=t.hideTip[r-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function d(t,e,i){t.handler("leave",null,i)}function f(t,e,i,n){e.handler(t,i,n)}function p(t){var e={showTip:[],hideTip:[]},i=function(n){var r=e[n.type];r?r.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function g(t,e){if(!r.node){var i=e.getZr(),n=(s(i).records||{})[t];n&&(s(i).records[t]=null)}}e.register=u,e.unregister=g},"18c0":function(t,e,i){var n=i("6d8b"),r=i("e0d8"),a=i("8e43"),o=r.prototype,s=r.extend({type:"ordinal",init:function(t,e){t&&!n.isArray(t)||(t=new a({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"===typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),o.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return o.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(o.scale.call(this,t))},getTicks:function(){var t=[],e=this._extent,i=e[0];while(i<=e[1])t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:n.noop,niceExtent:n.noop});s.create=function(){return new s};var l=s;t.exports=l},1953:function(t,e,i){var n=i("2449"),r=n.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});t.exports=r},"19eb":function(t,e,i){var n=i("6d8b"),r=i("2b61"),a=i("d5b7"),o=i("9e2e");function s(t){for(var e in t=t||{},a.call(this,t),t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new r(t.style,this),this._rect=null,this.__clipPaths=[]}s.prototype={constructor:s,type:"displayable",__dirty:!0,invisible:!1,z:0,z2:0,zlevel:0,draggable:!1,dragging:!1,silent:!1,culling:!1,cursor:"pointer",rectHover:!1,progressive:!1,incremental:!1,globalScaleRatio:1,beforeBrush:function(t){},afterBrush:function(t){},brush:function(t,e){},getBoundingRect:function(){},contain:function(t,e){return this.rectContain(t,e)},traverse:function(t,e){t.call(e,this)},rectContain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect();return n.contain(i[0],i[1])},dirty:function(){this.__dirty=this.__dirtyText=!0,this._rect=null,this.__zr&&this.__zr.refresh()},animateStyle:function(t){return this.animate("style",t)},attrKV:function(t,e){"style"!==t?a.prototype.attrKV.call(this,t,e):this.style.set(e)},setStyle:function(t,e){return this.style.set(t,e),this.dirty(!1),this},useStyle:function(t){return this.style=new r(t,this),this.dirty(!1),this}},n.inherits(s,a),n.mixin(s,o);var l=s;t.exports=l},"1ab3":function(t,e,i){var n=i("6d8b"),r=i("2306"),a=i("e887");function o(t,e,i,n){var r=e.getData(),a=this.dataIndex,o=r.getName(a),l=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:o,seriesId:e.id}),r.each(function(t){s(r.getItemGraphicEl(t),r.getItemLayout(t),e.isSelected(r.getName(t)),l,i)})}function s(t,e,i,n,r){var a=(e.startAngle+e.endAngle)/2,o=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[o*l,s*l];r?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function l(t,e){r.Group.call(this);var i=new r.Sector({z2:2}),n=new r.Polyline,a=new r.Text;function o(){n.ignore=n.hoverIgnore,a.ignore=a.hoverIgnore}function s(){n.ignore=n.normalIgnore,a.ignore=a.normalIgnore}this.add(i),this.add(n),this.add(a),this.updateData(t,e,!0),this.on("emphasis",o).on("normal",s).on("mouseover",o).on("mouseout",s)}var u=l.prototype;u.updateData=function(t,e,i){var a=this.childAt(0),o=t.hostModel,l=t.getItemModel(e),u=t.getItemLayout(e),c=n.extend({},u);if(c.label=null,i){a.setShape(c);var h=o.getShallow("animationType");"scale"===h?(a.shape.r=u.r0,r.initProps(a,{shape:{r:u.r}},o,e)):(a.shape.endAngle=u.startAngle,r.updateProps(a,{shape:{endAngle:u.endAngle}},o,e))}else r.updateProps(a,{shape:c},o,e);var d=t.getItemVisual(e,"color");a.useStyle(n.defaults({lineJoin:"bevel",fill:d},l.getModel("itemStyle").getItemStyle())),a.hoverStyle=l.getModel("emphasis.itemStyle").getItemStyle();var f=l.getShallow("cursor");function p(){a.stopAnimation(!0),a.animateTo({shape:{r:u.r+o.get("hoverOffset")}},300,"elasticOut")}function g(){a.stopAnimation(!0),a.animateTo({shape:{r:u.r}},300,"elasticOut")}f&&a.attr("cursor",f),s(this,t.getItemLayout(e),o.isSelected(null,e),o.get("selectedOffset"),o.get("animation")),a.off("mouseover").off("mouseout").off("emphasis").off("normal"),l.get("hoverAnimation")&&o.isAnimationEnabled()&&a.on("mouseover",p).on("mouseout",g).on("emphasis",p).on("normal",g),this._updateLabel(t,e),r.setHoverStyle(this)},u._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),a=t.hostModel,o=t.getItemModel(e),s=t.getItemLayout(e),l=s.label,u=t.getItemVisual(e,"color");r.updateProps(i,{shape:{points:l.linePoints||[[l.x,l.y],[l.x,l.y],[l.x,l.y]]}},a,e),r.updateProps(n,{style:{x:l.x,y:l.y}},a,e),n.attr({rotation:l.rotation,origin:[l.x,l.y],z2:10});var c=o.getModel("label"),h=o.getModel("emphasis.label"),d=o.getModel("labelLine"),f=o.getModel("emphasis.labelLine");u=t.getItemVisual(e,"color");r.setLabelStyle(n.style,n.hoverStyle={},c,h,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:u,useInsideStyle:!!l.inside},{textAlign:l.textAlign,textVerticalAlign:l.verticalAlign,opacity:t.getItemVisual(e,"opacity")}),n.ignore=n.normalIgnore=!c.get("show"),n.hoverIgnore=!h.get("show"),i.ignore=i.normalIgnore=!d.get("show"),i.hoverIgnore=!f.get("show"),i.setStyle({stroke:u,opacity:t.getItemVisual(e,"opacity")}),i.setStyle(d.getModel("lineStyle").getLineStyle()),i.hoverStyle=f.getModel("lineStyle").getLineStyle();var p=d.get("smooth");p&&!0===p&&(p=.4),i.setShape({smooth:p})},n.inherits(l,r.Group);var c=a.extend({type:"pie",init:function(){var t=new r.Group;this._sectorGroup=t},render:function(t,e,i,r){if(!r||r.from!==this.uid){var a=t.getData(),s=this._data,u=this.group,c=e.get("animation"),h=!s,d=t.get("animationType"),f=n.curry(o,this.uid,t,c,i),p=t.get("selectedMode");if(a.diff(s).add(function(t){var e=new l(a,t);h&&"scale"!==d&&e.eachChild(function(t){t.stopAnimation(!0)}),p&&e.on("click",f),a.setItemGraphicEl(t,e),u.add(e)}).update(function(t,e){var i=s.getItemGraphicEl(e);i.updateData(a,t),i.off("click"),p&&i.on("click",f),u.add(i),a.setItemGraphicEl(t,i)}).remove(function(t){var e=s.getItemGraphicEl(t);u.remove(e)}).execute(),c&&h&&a.count()>0&&"scale"!==d){var g=a.getItemLayout(0),v=Math.max(i.getWidth(),i.getHeight())/2,m=n.bind(u.removeClipPath,u);u.setClipPath(this._createClipPath(g.cx,g.cy,v,g.startAngle,g.clockwise,m,t))}else u.removeClipPath();this._data=a}},dispose:function(){},_createClipPath:function(t,e,i,n,a,o,s){var l=new r.Sector({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:a}});return r.initProps(l,{shape:{endAngle:n+(a?1:-1)*Math.PI*2}},s,o),l},containPoint:function(t,e){var i=e.getData(),n=i.getItemLayout(0);if(n){var r=t[0]-n.cx,a=t[1]-n.cy,o=Math.sqrt(r*r+a*a);return o<=n.r&&o>=n.r0}}}),h=c;t.exports=h},"1fab":function(t,e){var i=Array.prototype.slice,n=function(t){this._$handlers={},this._$eventProcessor=t};function r(t,e){var i=t._$eventProcessor;return null!=e&&i&&i.normalizeQuery&&(e=i.normalizeQuery(e)),e}function a(t,e,i,n,a,o){var s=t._$handlers;if("function"===typeof i&&(a=n,n=i,i=null),!n||!e)return t;i=r(t,i),s[e]||(s[e]=[]);for(var l=0;l3&&(r=i.call(r,1));for(var o=e.length,s=0;s4&&(r=i.call(r,1,r.length-1));for(var o=r[r.length-1],s=e.length,l=0;lthis._ux||x(e-this._yi)>this._uy||this._len<5;return this.addData(u.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,r,a){return this.addData(u.C,t,e,i,n,r,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,r,a):this._ctx.bezierCurveTo(t,e,i,n,r,a)),this._xi=r,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(u.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,r,a){return this.addData(u.A,t,e,i,i,n,r-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,r,a),this._xi=v(r)*i+t,this._yi=m(r)*i+e,this},arcTo:function(t,e,i,n,r){return this._ctx&&this._ctx.arcTo(t,e,i,n,r),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(u.R,t,e,i,n),this},closePath:function(){this.addData(u.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||c<0&&f>=t||0===c&&(h>0&&v<=e||h<0&&v>=e))n=this._dashIdx,i=o[n],f+=c*i,v+=h*i,this._dashIdx=(n+1)%m,c>0&&fl||h>0&&vu||s[n%2?"moveTo":"lineTo"](c>=0?p(f,t):g(f,t),h>=0?p(v,e):g(v,e));c=f-t,h=v-e,this._dashOffset=-y(c*c+h*h)},_dashedBezierTo:function(t,e,i,r,a,o){var s,l,u,c,h,d=this._dashSum,f=this._dashOffset,p=this._lineDash,g=this._ctx,v=this._xi,m=this._yi,x=n.cubicAt,_=0,b=this._dashIdx,w=p.length,S=0;for(f<0&&(f=d+f),f%=d,s=0;s<1;s+=.1)l=x(v,t,i,a,s+.1)-x(v,t,i,a,s),u=x(m,e,r,o,s+.1)-x(m,e,r,o,s),_+=y(l*l+u*u);for(;bf)break;s=(S-f)/_;while(s<=1)c=x(v,t,i,a,s),h=x(m,e,r,o,s),b%2?g.moveTo(c,h):g.lineTo(c,h),s+=p[b]/_,b=(b+1)%w;b%2!==0&&g.lineTo(a,o),l=a-c,u=o-h,this._dashOffset=-y(l*l+u*u)},_dashedQuadraticTo:function(t,e,i,n){var r=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,r,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,_&&(this.data=new Float32Array(t)))},getBoundingRect:function(){c[0]=c[1]=d[0]=d[1]=Number.MAX_VALUE,h[0]=h[1]=f[0]=f[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,s=0,l=0;ll||x(o-r)>c||d===h-1)&&(t.lineTo(a,o),n=a,r=o);break;case u.C:t.bezierCurveTo(s[d++],s[d++],s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case u.Q:t.quadraticCurveTo(s[d++],s[d++],s[d++],s[d++]),n=s[d-2],r=s[d-1];break;case u.A:var p=s[d++],g=s[d++],y=s[d++],_=s[d++],b=s[d++],w=s[d++],S=s[d++],M=s[d++],C=y>_?y:_,T=y>_?1:y/_,I=y>_?_/y:1,A=Math.abs(y-_)>.001,D=b+w;A?(t.translate(p,g),t.rotate(S),t.scale(T,I),t.arc(0,0,C,b,D,1-M),t.scale(1/T,1/I),t.rotate(-S),t.translate(-p,-g)):t.arc(p,g,C,b,D,1-M),1===d&&(e=v(b)*y+p,i=m(b)*_+g),n=v(D)*y+p,r=m(D)*_+g;break;case u.R:e=n=s[d],i=r=s[d+1],t.rect(s[d++],s[d++],s[d++],s[d++]);break;case u.Z:t.closePath(),n=e,r=i}}}},b.CMD=u;var w=b;t.exports=w},"216a":function(t,e,i){var n=i("6d8b"),r=i("3842"),a=i("eda2"),o=i("944e"),s=i("89e3"),l=s.prototype,u=Math.ceil,c=Math.floor,h=1e3,d=60*h,f=60*d,p=24*f,g=function(t,e,i,n){while(i>>1;t[r][1]i&&(s=i);var l=m.length,h=g(m,s,0,l),d=m[Math.min(h,l-1)],f=d[1];if("year"===d[0]){var p=a/f,v=r.nice(p/t,!0);f*=v}var y=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,x=[Math.round(u((n[0]-y)/f)*f+y),Math.round(c((n[1]-y)/f)*f+y)];o.fixExtent(x,n),this._stepLvl=d,this._interval=f,this._niceExtent=x},parse:function(t){return+r.parseDate(t)}});n.each(["contain","normalize"],function(t){v.prototype[t]=function(e){return l[t].call(this,this.parse(e))}});var m=[["hh:mm:ss",h],["hh:mm:ss",5*h],["hh:mm:ss",10*h],["hh:mm:ss",15*h],["hh:mm:ss",30*h],["hh:mm\nMM-dd",d],["hh:mm\nMM-dd",5*d],["hh:mm\nMM-dd",10*d],["hh:mm\nMM-dd",15*d],["hh:mm\nMM-dd",30*d],["hh:mm\nMM-dd",f],["hh:mm\nMM-dd",2*f],["hh:mm\nMM-dd",6*f],["hh:mm\nMM-dd",12*f],["MM-dd\nyyyy",p],["MM-dd\nyyyy",2*p],["MM-dd\nyyyy",3*p],["MM-dd\nyyyy",4*p],["MM-dd\nyyyy",5*p],["MM-dd\nyyyy",6*p],["week",7*p],["MM-dd\nyyyy",10*p],["week",14*p],["week",21*p],["month",31*p],["week",42*p],["month",62*p],["week",70*p],["quarter",95*p],["month",31*p*4],["month",31*p*5],["half-year",380*p/2],["month",31*p*8],["month",31*p*10],["year",380*p]];v.create=function(t){return new v({useUTC:t.ecModel.get("useUTC")})};var y=v;t.exports=y},"217b8":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("3301")),a=i("4f85"),o=a.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return r(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});t.exports=o},"22d1":function(t,e){var i={};i="object"===typeof wx&&"function"===typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"===typeof document&&"undefined"!==typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"===typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:r(navigator.userAgent);var n=i;function r(t){var e={},i={},n=t.match(/Firefox\/([\d.]+)/),r=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),a=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);return n&&(i.firefox=!0,i.version=n[1]),r&&(i.ie=!0,i.version=r[1]),a&&(i.edge=!0,i.version=a[1]),o&&(i.weChat=!0),{browser:i,os:e,node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!==typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!i.ie&&!i.edge,pointerEventsSupported:"onpointerdown"in window&&(i.edge||i.ie&&i.version>=11),domSupported:"undefined"!==typeof document}}t.exports=n},2306:function(t,e,i){var n=i("6d8b"),r=i("342d"),a=i("41ef"),o=i("1687"),s=i("401b"),l=i("cbe5"),u=i("0cde"),c=i("0da8");e.Image=c;var h=i("e1fc");e.Group=h;var d=i("76a5");e.Text=d;var f=i("d9fc");e.Circle=f;var p=i("4aa2");e.Sector=p;var g=i("4573");e.Ring=g;var v=i("87b1");e.Polygon=v;var m=i("d498");e.Polyline=m;var y=i("c7a2a");e.Rect=y;var x=i("cb11");e.Line=x;var _=i("ac0f");e.BezierCurve=_;var b=i("8d32");e.Arc=b;var w=i("d4c6");e.CompoundPath=w;var S=i("48a9");e.LinearGradient=S;var M=i("dded");e.RadialGradient=M;var C=i("9850");e.BoundingRect=C;var T=i("392f");e.IncrementalDisplayable=T;var I=Math.round,A=Math.max,D=Math.min,k={},O=1;function L(t){return l.extend(t)}function P(t,e){return r.extendFromString(t,e)}function E(t,e,i,n){var a=r.createFromString(t,e);return i&&("center"===n&&(i=N(i,a.getBoundingRect())),z(a,i)),a}function R(t,e,i){var n=new c({style:{image:t,x:e.x,y:e.y,width:e.width,height:e.height},onload:function(t){if("center"===i){var r={width:t.width,height:t.height};n.setStyle(N(e,r))}}});return n}function N(t,e){var i,n=e.width/e.height,r=t.height*n;r<=t.width?i=t.height:(r=t.width,i=r/n);var a=t.x+t.width/2,o=t.y+t.height/2;return{x:a-r/2,y:o-i/2,width:r,height:i}}var B=r.mergePath;function z(t,e){if(t.applyTransform){var i=t.getBoundingRect(),n=i.calculateTransform(e);t.applyTransform(n)}}function F(t){var e=t.shape,i=t.style.lineWidth;return I(2*e.x1)===I(2*e.x2)&&(e.x1=e.x2=H(e.x1,i,!0)),I(2*e.y1)===I(2*e.y2)&&(e.y1=e.y2=H(e.y1,i,!0)),t}function V(t){var e=t.shape,i=t.style.lineWidth,n=e.x,r=e.y,a=e.width,o=e.height;return e.x=H(e.x,i,!0),e.y=H(e.y,i,!0),e.width=Math.max(H(n+a,i,!1)-e.x,0===a?0:1),e.height=Math.max(H(r+o,i,!1)-e.y,0===o?0:1),t}function H(t,e,i){var n=I(2*t);return(n+I(e))%2===0?n/2:(n+(i?1:-1))/2}function G(t){return null!=t&&"none"!==t}var W=n.createHashMap(),j=0;function U(t){if("string"!==typeof t)return t;var e=W.get(t);return e||(e=a.lift(t,-.1),j<1e4&&(W.set(t,e),j++)),e}function $(t){if(t.__hoverStlDirty){t.__hoverStlDirty=!1;var e=t.__hoverStl;if(e){var i=t.__cachedNormalStl={};t.__cachedNormalZ2=t.z2;var n=t.style;for(var r in e)null!=e[r]&&(i[r]=n[r]);i.fill=n.fill,i.stroke=n.stroke}else t.__cachedNormalStl=t.__cachedNormalZ2=null}}function q(t){var e=t.__hoverStl;if(e&&!t.__highlighted){var i=t.useHoverLayer;t.__highlighted=i?"layer":"plain";var n=t.__zr;if(n||!i){var r=t,a=t.style;i&&(r=n.addHover(t),a=r.style),ft(a),i||$(r),a.extendFrom(e),Y(a,e,"fill"),Y(a,e,"stroke"),dt(a),i||(t.dirty(!1),t.z2+=O)}}}function Y(t,e,i){!G(e[i])&&G(t[i])&&(t[i]=U(t[i]))}function X(t){var e=t.__highlighted;if(e)if(t.__highlighted=!1,"layer"===e)t.__zr&&t.__zr.removeHover(t);else if(e){var i=t.style,n=t.__cachedNormalStl;n&&(ft(i),t.setStyle(n),dt(i));var r=t.__cachedNormalZ2;null!=r&&t.z2-r===O&&(t.z2=r)}}function Z(t,e){t.isGroup?t.traverse(function(t){!t.isGroup&&e(t)}):e(t)}function K(t,e){e=t.__hoverStl=!1!==e&&(e||{}),t.__hoverStlDirty=!0,t.__highlighted&&(t.__cachedNormalStl=null,X(t),q(t))}function Q(t){return t&&t.__isEmphasisEntered}function J(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasisEntered&&Z(this,q)}function tt(t){this.__hoverSilentOnTouch&&t.zrByTouch||!this.__isEmphasisEntered&&Z(this,X)}function et(){this.__isEmphasisEntered=!0,Z(this,q)}function it(){this.__isEmphasisEntered=!1,Z(this,X)}function nt(t,e,i){t.isGroup?t.traverse(function(t){!t.isGroup&&K(t,t.hoverStyle||e)}):K(t,t.hoverStyle||e),rt(t,i)}function rt(t,e){var i=!1===e;if(t.__hoverSilentOnTouch=null!=e&&e.hoverSilentOnTouch,!i||t.__hoverStyleTrigger){var n=i?"off":"on";t[n]("mouseover",J)[n]("mouseout",tt),t[n]("emphasis",et)[n]("normal",it),t.__hoverStyleTrigger=!i}}function at(t,e,i,r,a,o,s){a=a||k;var l,u=a.labelFetcher,c=a.labelDataIndex,h=a.labelDimIndex,d=i.getShallow("show"),f=r.getShallow("show");(d||f)&&(u&&(l=u.getFormattedLabel(c,"normal",null,h)),null==l&&(l=n.isFunction(a.defaultText)?a.defaultText(c,a):a.defaultText));var p=d?l:null,g=f?n.retrieve2(u?u.getFormattedLabel(c,"emphasis",null,h):null,l):null;null==p&&null==g||(ot(t,i,o,a),ot(e,r,s,a,!0)),t.text=p,e.text=g}function ot(t,e,i,r,a){return lt(t,e,r,a),i&&n.extend(t,i),t}function st(t,e,i){var n,r={isRectText:!0};!1===i?n=!0:r.autoColor=i,lt(t,e,r,n)}function lt(t,e,i,r){if(i=i||k,i.isRectText){var a=e.getShallow("position")||(r?null:"inside");"outside"===a&&(a="top"),t.textPosition=a,t.textOffset=e.getShallow("offset");var o=e.getShallow("rotate");null!=o&&(o*=Math.PI/180),t.textRotation=o,t.textDistance=n.retrieve2(e.getShallow("distance"),r?null:5)}var s,l=e.ecModel,u=l&&l.option.textStyle,c=ut(e);if(c)for(var h in s={},c)if(c.hasOwnProperty(h)){var d=e.getModel(["rich",h]);ct(s[h]={},d,u,i,r)}return t.rich=s,ct(t,e,u,i,r,!0),i.forceRich&&!i.textStyle&&(i.textStyle={}),t}function ut(t){var e;while(t&&t!==t.ecModel){var i=(t.option||k).rich;if(i)for(var n in e=e||{},i)i.hasOwnProperty(n)&&(e[n]=1);t=t.parentModel}return e}function ct(t,e,i,r,a,o){i=!a&&i||k,t.textFill=ht(e.getShallow("color"),r)||i.color,t.textStroke=ht(e.getShallow("textBorderColor"),r)||i.textBorderColor,t.textStrokeWidth=n.retrieve2(e.getShallow("textBorderWidth"),i.textBorderWidth),t.insideRawTextPosition=t.textPosition,a||(o&&(t.insideRollbackOpt=r,dt(t)),null==t.textFill&&(t.textFill=r.autoColor)),t.fontStyle=e.getShallow("fontStyle")||i.fontStyle,t.fontWeight=e.getShallow("fontWeight")||i.fontWeight,t.fontSize=e.getShallow("fontSize")||i.fontSize,t.fontFamily=e.getShallow("fontFamily")||i.fontFamily,t.textAlign=e.getShallow("align"),t.textVerticalAlign=e.getShallow("verticalAlign")||e.getShallow("baseline"),t.textLineHeight=e.getShallow("lineHeight"),t.textWidth=e.getShallow("width"),t.textHeight=e.getShallow("height"),t.textTag=e.getShallow("tag"),o&&r.disableBox||(t.textBackgroundColor=ht(e.getShallow("backgroundColor"),r),t.textPadding=e.getShallow("padding"),t.textBorderColor=ht(e.getShallow("borderColor"),r),t.textBorderWidth=e.getShallow("borderWidth"),t.textBorderRadius=e.getShallow("borderRadius"),t.textBoxShadowColor=e.getShallow("shadowColor"),t.textBoxShadowBlur=e.getShallow("shadowBlur"),t.textBoxShadowOffsetX=e.getShallow("shadowOffsetX"),t.textBoxShadowOffsetY=e.getShallow("shadowOffsetY")),t.textShadowColor=e.getShallow("textShadowColor")||i.textShadowColor,t.textShadowBlur=e.getShallow("textShadowBlur")||i.textShadowBlur,t.textShadowOffsetX=e.getShallow("textShadowOffsetX")||i.textShadowOffsetX,t.textShadowOffsetY=e.getShallow("textShadowOffsetY")||i.textShadowOffsetY}function ht(t,e){return"auto"!==t?t:e&&e.autoColor?e.autoColor:null}function dt(t){var e=t.insideRollbackOpt;if(e&&null==t.textFill){var i,n=e.useInsideStyle,r=t.insideRawTextPosition,a=e.autoColor;!1!==n&&(!0===n||e.isRectText&&r&&"string"===typeof r&&r.indexOf("inside")>=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function ft(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function pt(t,e){var i=e||e.getModel("textStyle");return n.trim([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function gt(t,e,i,n,r,a){"function"===typeof r&&(a=r,r=null);var o=n&&n.isAnimationEnabled();if(o){var s=t?"Update":"",l=n.getShallow("animationDuration"+s),u=n.getShallow("animationEasing"+s),c=n.getShallow("animationDelay"+s);"function"===typeof c&&(c=c(r,n.getAnimationDelayParams?n.getAnimationDelayParams(e,r):null)),"function"===typeof l&&(l=l(r)),l>0?e.animateTo(i,l,c||0,u,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function vt(t,e,i,n,r){gt(!0,t,e,i,n,r)}function mt(t,e,i,n,r){gt(!1,t,e,i,n,r)}function yt(t,e){var i=o.identity([]);while(t&&t!==e)o.mul(i,t.getLocalTransform(),i),t=t.parent;return i}function xt(t,e,i){return e&&!n.isArrayLike(e)&&(e=u.getLocalTransform(e)),i&&(e=o.invert([],e)),s.applyTransform([],t,e)}function _t(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),r=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-r:"bottom"===t?r:0];return a=xt(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function bt(t,e,i,r){if(t&&e){var a=o(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=a[t.anid];if(e){var n=l(t);t.attr(l(e)),vt(t,n,i,t.dataIndex)}}})}function o(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}function l(t){var e={position:s.clone(t.position),rotation:t.rotation};return t.shape&&(e.shape=n.extend({},t.shape)),e}}function wt(t,e){return n.map(t,function(t){var i=t[0];i=A(i,e.x),i=D(i,e.x+e.width);var n=t[1];return n=A(n,e.y),n=D(n,e.y+e.height),[i,n]})}function St(t,e){var i=A(t.x,e.x),n=D(t.x+t.width,e.x+e.width),r=A(t.y,e.y),a=D(t.y+t.height,e.y+e.height);if(n>=i&&a>=r)return{x:i,y:r,width:n-i,height:a-r}}function Mt(t,e,i){e=n.extend({rectHover:!0},e);var r=e.style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(r.image=t.slice(8),n.defaults(r,i),new c(e)):E(t.replace("path://",""),e,i,"center")}e.Z2_EMPHASIS_LIFT=O,e.extendShape=L,e.extendPath=P,e.makePath=E,e.makeImage=R,e.mergePath=B,e.resizePath=z,e.subPixelOptimizeLine=F,e.subPixelOptimizeRect=V,e.subPixelOptimize=H,e.setElementHoverStyle=K,e.isInEmphasis=Q,e.setHoverStyle=nt,e.setAsHoverStyleTrigger=rt,e.setLabelStyle=at,e.setTextStyle=ot,e.setText=st,e.getFont=pt,e.updateProps=vt,e.initProps=mt,e.getTransform=yt,e.applyTransform=xt,e.transformDirection=_t,e.groupTransition=bt,e.clipPointsByRect=wt,e.clipRectByRect=St,e.createIcon=Mt},2449:function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("3eba")),a=i("6d8b"),o=i("22d1"),s=i("e0d3"),l=i("eda2"),u=i("38a2"),c=l.addCommas,h=l.encodeHTML;function d(t){s.defaultEmphasis(t,"label",["show"])}var f=r.extendComponentModel({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(o.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var r=this.constructor,o=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[o];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&d(i),a.each(i.data,function(t){t instanceof Array?(d(t[0]),d(t[1])):d(t)}),s=new r(i,this,e),a.extend(s,{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[o]=s):t[o]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=a.isArray(i)?a.map(i,c).join(", "):c(i),r=e.getName(t),o=h(this.name);return(null!=i||r)&&(o+="
    "),r&&(o+=h(r),null!=i&&(o+=" : ")),null!=i&&(o+=h(n)),o},getData:function(){return this._data},setData:function(t){this._data=t}});a.mixin(f,u);var p=f;t.exports=p},"269c":function(t,e,i){"use strict";i.r(e);var n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"overview app-wrapper"},[i("el-row",{staticClass:"content-wrapper",attrs:{gutter:20}},[i("el-col",{attrs:{span:6}},[i("a-card",{staticClass:"app-card",attrs:{bordered:!0,loading:t.pageLoading}},[i("div",{staticClass:"app-card-title"},[t._v("\n "+t._s(t.$t("Overview.messageOut"))+"\n ")]),i("div",{staticClass:"content"},[i("span",[t._v("\n "+t._s(t.currentMetrics.sent)+"\n ")]),i("span",{staticClass:"unit"},[t._v(t._s(t.$t("Overview.strip"))+"/"+t._s(t.$t("Overview.second")))]),i("div",{staticClass:"flux-wrapper"},[i("simple-line",{attrs:{value:t.currentMetricsLogs.sent,type:"bar",color:"#34c388"}})],1)]),i("div",{staticClass:"app-footer"},[i("div",{staticClass:"footer-item"},[t._v("\n "+t._s(t.$t("Overview.currentMessageOutRate"))+"\n ")])])])],1),i("el-col",{attrs:{span:6}},[i("a-card",{staticClass:"app-card",attrs:{bordered:!0,loading:t.pageLoading}},[i("div",{staticClass:"app-card-title"},[t._v("\n "+t._s(t.$t("Overview.messageIn"))+"\n ")]),i("div",{staticClass:"content"},[i("span",[t._v("\n "+t._s(t.currentMetrics.received)+"\n ")]),i("span",{staticClass:"unit"},[t._v(t._s(t.$t("Overview.strip"))+"/"+t._s(t.$t("Overview.second")))]),i("div",{staticClass:"flux-wrapper"},[i("simple-line",{attrs:{type:"bar"},model:{value:t.currentMetricsLogs.received,callback:function(e){t.$set(t.currentMetricsLogs,"received",e)},expression:"currentMetricsLogs.received"}})],1)]),i("div",{staticClass:"app-footer"},[i("div",{staticClass:"footer-item"},[t._v("\n "+t._s(t.$t("Overview.currentMessageInRate"))+"\n ")])])])],1),i("el-col",{attrs:{span:6}},[i("a-card",{staticClass:"app-card",attrs:{bordered:!0,loading:t.pageLoading}},[i("div",{staticClass:"app-card-title"},[t._v("\n "+t._s(t.$t("Overview.subscriptionNumber"))+"\n ")]),i("div",{staticClass:"content"},[i("span",[t._v("\n "+t._s(t.currentMetrics.subscription)+"\n ")]),i("div",{staticClass:"flux-wrapper"},[i("simple-line",{attrs:{color:"#58afff",type:"bar"},model:{value:t.currentMetricsLogs.subscription,callback:function(e){t.$set(t.currentMetricsLogs,"subscription",e)},expression:"currentMetricsLogs.subscription"}})],1)]),i("div",{staticClass:"app-footer"},[i("div",{staticClass:"footer-item"},[t._v("\n "+t._s(t.$t("Overview.topicNumber"))+"\n ")])])])],1),t.$hasShow("monitor.connections")?i("el-col",{attrs:{span:6}},[i("a-card",{staticClass:"app-card",attrs:{bordered:!0,loading:t.pageLoading}},[i("div",{staticClass:"app-card-title"},[t._v("\n "+t._s(t.$t("Overview.connectionNumber"))+"\n ")]),i("div",{staticClass:"content"},[i("span",[t._v("\n "+t._s(t._formatNumber(t.currentMetrics.connection))+"\n ")]),i("el-progress",{staticClass:"status-progress",attrs:{"stroke-width":20,percentage:t.licensePercentage,format:function(){return""},color:t.getProgressColor(t.licensePercentage,"#2DC8B2")}})],1),i("div",{staticClass:"app-footer"},[i("div",{staticClass:"footer-item"},[t._v("\n "+t._s(t.$t("Overview.connectionsTips"))+"\n ")])])])],1):t._e()],1),i("a-card",{staticClass:"node-wrapper",attrs:{loading:t.pageLoading}},[i("div",{staticClass:"emq-title"},[i("div",{staticClass:"title"},[t._v("\n "+t._s(t.$t("Overview.nodeData"))+"\n ")]),i("div",{staticClass:"type-filter"},[i("emq-select",{staticStyle:{"margin-right":"20px"},attrs:{size:"mini",field:{options:t.nodes},"field-name":{label:"name",value:"node"}},on:{change:t.dataTypeChange},model:{value:t.nodeName,callback:function(e){t.nodeName=e},expression:"nodeName"}})],1)]),i("div",{staticClass:"basic"},[i("el-row",{attrs:{gutter:20}},[i("node-basic-card",{attrs:{value:t.currentNode}})],1)],1)]),i("percentage-cards",{ref:"percentageCards"}),i("polyline-cards"),t.$hasShow("monitor.license")?i("a-card",{staticClass:"license-card",attrs:{loading:t.pageLoading}},[i("div",{staticClass:"emq-title"},[t._v("\n "+t._s(t.$t("Overview.license"))+"\n ")]),i("ul",{staticClass:"license-field"},[t.license.customer_type!==t.evaluation?i("li",{staticClass:"item"},[i("span",{staticClass:"key"},[t._v(t._s(t.$t("Overview.customer"))+":")]),i("span",{staticClass:"value"},[t._v(t._s(t.license.customer))])]):t._e(),i("li",{staticClass:"item"},[i("span",{staticClass:"key"},[t._v(t._s(t.$t("Overview.numberOfConnectionLines"))+":")]),i("div",{staticClass:"content"},[i("el-progress",{staticClass:"license-progress",attrs:{"stroke-width":12,percentage:t.licensePercentage,format:t.formatConnection,color:t.getProgressColor(t.licensePercentage,"#34c388")}})],1)]),t.license.customer_type!==t.evaluation?[i("li",{staticClass:"item"},[i("span",{staticClass:"key"},[t._v(t._s(t.$t("Overview.issuanceOfEmail"))+":")]),i("span",{staticClass:"value"},[t._v(t._s(t.license.email))])]),i("li",{staticClass:"item"},[i("span",{staticClass:"key"},[t._v(t._s(t.$t("Overview.issuedAt"))+":")]),i("span",{staticClass:"value broker"},[t._v(t._s(t.license.issued_at))])]),i("li",{staticClass:"item"},[i("span",{staticClass:"key"},[t._v(t._s(t.$t("Overview.expireAt"))+":")]),i("span",{staticClass:"value broker"},[t._v(t._s(t.license.expiry_at))])])]:t._e()],2),t.$hasShow("monitor.connections")?i("div",{staticClass:"license-card-footer"},[t.license.customer_type===t.evaluation?i("div",{staticClass:"description",domProps:{innerHTML:t._s(t.$t("Overview.licenseEvaluationTip"))}},[t._v("\n "+t._s(t.$t("Overview.licenseEvaluationTip"))+"\n ")]):!0===t.license.expiry?i("div",{staticClass:"description",domProps:{innerHTML:t._s(t.$t("Overview.licenseExpiryTip"))}},[t._v("\n "+t._s(t.$t("Overview.licenseExpiryTip"))+"\n ")]):i("div",{staticClass:"description"},[t._v("\n "+t._s(t.$t("Overview.beforeTheCertificateExpires"))+"\n ")]),"trial"===t.license.type&&t.license.customer_type!==t.evaluation&&!1===t.license.expiry?i("div",{staticClass:"oper"},[i("el-tooltip",{attrs:{effect:"dark",content:t.$t("Overview.forTrialEdition"),placement:"top","visible-arrow":!1}},[i("el-tag",{attrs:{type:"danger"}},[t._v(t._s(t.$t("Overview.trialEdition")))])],1)],1):t._e()]):t._e()]):t._e(),i("el-dialog",{attrs:{title:"标题",width:t.licenseTipWidth+"px",visible:t.licenseTipVisible,"close-on-click-modal":!1},on:{"update:visible":function(e){t.licenseTipVisible=e}}},[i("div",{staticClass:"tip-title",attrs:{slot:"title"},slot:"title"},[i("i",{staticClass:"el-icon-warning"}),i("span",[t._v(t._s(t.$t("Base.warning")))])]),i("div",{staticClass:"tip-content"},[t.isLicenseExpiry?i("p",{domProps:{innerHTML:t._s(t.$t("Overview.licenseExpiryTip"))}},[t._v("\n "+t._s(t.$t("Overview.licenseExpiryTip"))+"\n ")]):i("p",{domProps:{innerHTML:t._s(t.$t("Overview.licenseEvaluationTip"))}},[t._v("\n "+t._s(t.$t("Overview.licenseEvaluationTip"))+"\n ")])]),t.isLicenseExpiry?t._e():i("div",{staticClass:"tip-checkbox"},[i("el-checkbox",{on:{change:t.liceEvaTipShowChange},model:{value:t.noprompt,callback:function(e){t.noprompt=e},expression:"noprompt"}},[t._v(t._s(t.$t("Overview.notPromptAgain")))])],1),i("div",{staticClass:"tip-button"},[i("el-button",{attrs:{type:"primary",size:"small"},on:{click:function(e){t.licenseTipVisible=!1}}},[t._v(t._s(t.$t("Overview.konw")))])],1)])],1)},r=[],a=(i("ac6a"),i("96cf"),i("3b8d")),o=i("cebc"),s=i("a8db"),l=(i("7514"),i("6c7b"),i("c1df")),u=i.n(l),c=i("640a"),h=i("6212"),d=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{ref:"chart",staticClass:"simple-line"})},f=[],p=i("3eba"),g=i.n(p),v=(i("ef97"),i("94b1"),i("cd12"),i("007d"),i("627c"),i("95a8"),i("db0e"),{mounted:function(){var t=this;setTimeout(function(){window.addEventListener("resize",t.chart.resize)},200)},beforeDestroy:function(){window.removeEventListener("resize",this.chart.resize)}}),m={name:"SimpleLine",mixins:[v],props:{value:{type:Object,default:function(){return{x:[],y:[]}},required:!0},color:{type:String,default:"#975fe4"},type:{type:String,default:"line"}},data:function(){return{chart:null,option:{color:[this.color],grid:{x:0,y:0,x2:0,y2:0},tooltip:{trigger:"axis",axisPointer:{type:"none"}},xAxis:{type:"category",data:this.value.x,triggerEvent:!0,axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1}},yAxis:{type:"value",splitLine:{show:!1},axisLine:{show:!1},axisTick:{show:!1},axisLabel:{show:!1}},series:[]}}},watch:{value:{deep:!0,handler:"setSeriesConfig"},"$store.state.leftBarCollapse":function(){setTimeout(this.setSeriesConfig,500)}},mounted:function(){this.setSeriesConfig()},created:function(){},methods:{setSeriesConfig:function(){var t=this.color,e=this.type;this.chart=g.a.init(this.$refs.chart),this.option.series=[{data:this.value.y,smooth:!0,type:e,symbolSize:0,lineStyle:{color:t},label:{show:!1},areaStyle:{color:t,opacity:1}}],this.chart.setOption(this.option)}}},y=m,x=i("2877"),_=Object(x["a"])(y,d,f,!1,null,null,null),b=_.exports,w=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"percentage-cards"},[i("el-row",{attrs:{gutter:20}},t._l(t.doughnutChartList,function(t,e){return i("div",{key:e},[i("el-col",{attrs:{span:8}},[i("a-card",{staticClass:"doughnut-card"},[i("doughnut-chart",{attrs:{chartId:t.chartId,cardTitle:t.cardTitle,legendData:t.legendData,seriesData:t.seriesData}})],1)],1)],1)}),0)],1)},S=[],M=(i("456d"),function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{style:{height:t.height,width:"100%"},attrs:{id:t.chartId}})}),C=[],T=(i("c037"),i("d28f"),{name:"DoughnutChart",mixins:[v],props:{chartId:{type:String,required:!0},cardTitle:{type:String,default:""},legendData:{type:Array,default:function(){return[]}},seriesData:{type:Array,default:function(){return[]}},height:{type:String,default:"230px"}},data:function(){return{chart:void 0}},watch:{seriesData:{deep:!0,handler:"drawChart"}},mounted:function(){this.drawChart()},methods:{drawChart:function(){this.chart=g.a.init(document.getElementById(this.chartId));var t={title:{text:this.cardTitle,textStyle:{fontSize:16}},tooltip:{trigger:"item",formatter:"{a}
    {b}: {c} ({d}%)"},legend:{orient:"horizontal",itemWidth:10,itemGap:16,textStyle:{color:"#757575"},bottom:0,icon:"circle",data:this.legendData},series:[{name:this.cardTitle,type:"pie",radius:["45%","55%"],avoidLabelOverlap:!1,hoverOffset:3,label:{show:!1,position:"center"},emphasis:{label:{show:!1}},labelLine:{show:!1},data:this.seriesData}]};this.chart.setOption(t)},reDrawEchart:function(){this.chart.dispose(),this.chart=void 0,this.drawChart()}}}),I=T,A=Object(x["a"])(I,M,C,!1,null,null,null),D=A.exports,k={name:"PercentageCards",components:{DoughnutChart:D},data:function(){return{doughnutChartList:[{chartId:"client",cardTitle:this.$t("Clients.clients"),legendData:[this.$t("Clients.authSuccess"),this.$t("Clients.authFailed"),this.$t("Clients.connectSuccess")],seriesData:[{value:0,name:this.$t("Clients.authSuccess"),itemStyle:{color:"#21BB7A"}},{value:0,name:this.$t("Clients.authFailed"),itemStyle:{color:"#FFC600"}},{value:0,name:this.$t("Clients.connectSuccess"),itemStyle:{color:"#3237A9"}}]},{chartId:"message",cardTitle:this.$t("Overview.message"),legendData:[this.$t("Overview.receivedMsg"),this.$t("Overview.sentMsg"),this.$t("Overview.droppedMsg")],seriesData:[{value:0,name:this.$t("Overview.receivedMsg"),itemStyle:{color:"#CAEADE"}},{value:0,name:this.$t("Overview.sentMsg"),itemStyle:{color:"#35BFDE"}},{value:0,name:this.$t("Overview.droppedMsg"),itemStyle:{color:"#3E32E2"}}]},{chartId:"messageDrop",cardTitle:this.$t("Overview.messageDrop"),legendData:[this.$t("Overview.expired"),this.$t("Overview.noSubscribers")],seriesData:[{value:0,name:this.$t("Overview.expired"),itemStyle:{color:"#CDBFFA"}},{value:0,name:this.$t("Overview.noSubscribers"),itemStyle:{color:"#383F65"}}]}]}},created:function(){this.loadMetricsData()},methods:{loadMetricsData:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(c["a"])();case 2:e=t.sent,this.doughnutChartList.forEach(function(t){t.seriesData.forEach(function(i){var n=t.seriesData.indexOf(i),r=e[t.chartId],a=Object.keys(r);i.value=r[a[n]]})});case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}()}},O=k,L=(i("39bb"),Object(x["a"])(O,w,S,!1,null,null,null)),P=L.exports,E=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"polyline-cards"},[t.bigChartItem.text?i("el-collapse-transition",[i("div",{staticClass:"big-chart"},[i("a-card",{staticClass:"big-card"},[i("div",{staticClass:"card-title"},[t._v(t._s(t.bigChartItem.text))]),i("span",{staticClass:"shrink-icon",on:{click:function(e){t.bigChartItem={}}}}),i("polyline-chart",{ref:"bigChart",attrs:{"chart-id":"big-polyline","y-title":t.metricTitles,"chart-data":t.metricLog[t.bigChartItem.value],chartColors:t.chartColorList[t.bigChartItem.value],height:"420px",gridRight:"1.5%",gridLeft:"1%",legendBottom:"10px"}})],1)],1)]):t._e(),i("el-row",{attrs:{gutter:20}},t._l(t.dataTypeFilter,function(e){return i("div",{key:e.value},[e!==t.bigChartItem?[i("el-col",{attrs:{span:8}},[i("a-card",{staticClass:"polyline-card"},[i("div",{staticClass:"card-title"},[t._v(t._s(e.text))]),i("span",{staticClass:"enlarge-icon",on:{click:function(i){t.bigChartItem=e}}}),i("polyline-chart",{attrs:{"chart-id":e.value+"-polyline","y-title":t.metricTitles,"chart-data":t.metricLog[e.value],chartColors:t.chartColorList[e.value]}})],1)],1)]:t._e()],2)}),0)],1)},R=[],N=(i("5df3"),i("1c4c"),i("75fc")),B=i("768b"),z=(i("ffc1"),function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{style:{height:t.height,width:"100%"},attrs:{id:t.chartId}})}),F=[],V={name:"PolylineChart",mixins:[v],props:{chartId:{type:String,required:!0},yTitle:{type:Array,default:function(){return[""]}},chartColors:{type:Array,default:function(){return[]}},axisColor:{type:Object,default:function(){return{colorAxisLine:"#757575",colorAxisLabel:"#757575"}}},chartData:{type:Array,default:function(){return[{xData:[],yData:[]}]}},height:{type:String,default:"190px"},gridRight:{type:String,default:"5%"},gridLeft:{type:String,default:"2%"},legendBottom:{type:String,default:"-5px"}},data:function(){return{seriesConfig:[],chart:void 0}},watch:{chartData:{deep:!0,handler:"drawChart"}},mounted:function(){this.drawChart()},methods:{setSeriesConfig:function(){this.seriesConfig=[];for(var t=0;t=120&&(r[i].xData.shift(),r[i].yData.shift()),r[i].xData.push(t._formatTime(o[0])),r[i].yData.push(o[1])});case 5:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}())},clearTimer:function(){this.timerMetrics&&(clearInterval(this.timerMetrics),this.timerMetrics=null)}}},U=j,$=(i("d0bf"),Object(x["a"])(U,E,R,!1,null,null,null)),q=$.exports,Y={name:"Overview",components:{NodeBasicCard:h["a"],SimpleLine:b,PercentageCards:P,PolylineCards:q},props:{},data:function(){return{evaluation:10,pageLoading:!0,nodeName:"",initCurrentNode:{connections:16,load1:"14.01",load15:"11.85",load5:"12.54",max_fds:7168,memory_total:"126.59M",memory_used:"97.05M",node:"emqx@127.0.0.1",node_status:"Running",otp_release:"R21/10.3.4",process_available:2097152,process_used:402,uptime:"12 minutes, 37 seconds",version:"0.0.0+build.1.ref8234b61"},timer:0,nodes:[],licenseTipVisible:!1,isLicenseExpiry:!1,noprompt:!1,licenseTipWidth:460,license:{customer:"",email:"",plugins:"",max_connections:1e5,issued_at:"",expiry_at:"",vendor:"",version:"",type:"trial",expiry:!1,customer_type:0},currentMetricsLogs:{received:{x:Array(32).fill("N/A"),y:Array(32).fill(0)},sent:{x:Array(32).fill("N/A"),y:Array(32).fill(0)},subscription:{x:Array(32).fill("N/A"),y:Array(32).fill(0)}},currentMetrics:{node:0,received:0,sent:0,subscription:0,connection:0}}},computed:{licensePercentage:function(){var t=this.currentMetrics.connection,e=this.license.max_connections,i=Math.floor(t/e*100);return i<2?2:i},currentNode:function(){var t=this,e=this.nodes.find(function(e){return e.node===t.nodeName});if(e){var i=e.stats,n=Object(s["a"])(e,["stats"]);return Object(o["a"])({},i,n)}return this.initCurrentNode}},created:function(){var t=this;this.pageLoading=!0,this.loadData(),this.loadLicenseData(),clearInterval(this.timerData),this.timerData=setInterval(function(){t.loadData(),t.loadNodes(),t.$refs.percentageCards.loadMetricsData()},1e4),this.dataTypeChange()},beforeDestroy:function(){clearInterval(this.timerData)},methods:{liceEvaTipShowChange:function(t){t&&localStorage.setItem("licenseTipVisible",!1)},dataTypeChange:function(){this.loadNodes()},loadNodes:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(c["h"])();case 2:this.nodes=t.sent,this.nodeName=this.nodeName||(this.nodes[0]||{}).node;case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),formatConnection:function(){var t=this.currentMetrics.connection,e=this.license.max_connections;return"".concat(this._formatNumber(t),"/").concat(this._formatNumber(e))},_formatNumber:function(t){if(t>1e4){var e=t/1e3;return"".concat(parseInt(100*e,10)/100,"K")}return t},loadLicenseData:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(c["c"])();case 2:this.license=t.sent,setTimeout(function(){e.license.customer_type===e.evaluation&&"false"!==localStorage.getItem("licenseTipVisible")&&(e.licenseTipVisible=!0,e.isLicenseExpiry=!1,e.licenseTipWidth=520),!0===e.license.expiry&&(e.licenseTipVisible=!0,e.isLicenseExpiry=!0,e.licenseTipWidth=600)},1e3);case 4:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),loadData:function(){var t=Object(a["a"])(regeneratorRuntime.mark(function t(){var e;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(c["b"])();case 2:if(e=t.sent,this.pageLoading=!1,e){t.next=6;break}return t.abrupt("return");case 6:this.currentMetrics=e,this.setCurrentMetricsLogsRealtime(e);case 8:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),getNow:function(){return u()().format("HH:mm:ss")},setCurrentMetricsLogsRealtime:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};["received","sent","subscription"].forEach(function(i){t.currentMetricsLogs[i]=t.currentMetricsLogs[i]||{x:[],y:[]};var n=e[i]||0;t.currentMetricsLogs[i].x.push(t.getNow()),t.currentMetricsLogs[i].y.push(n),t.currentMetricsLogs[i].x.length>=32&&(t.currentMetricsLogs[i].x.shift(),t.currentMetricsLogs[i].y.shift())})},getProgressColor:function(t,e){var i=e;return 100===t?i="#f5222d":t>=85&&t<100&&(i="#faad14"),i}}},X=Y,Z=(i("02fd"),Object(x["a"])(X,n,r,!1,null,null,null));e["default"]=Z.exports},"26e1":function(t,e,i){var n=i("6d8b"),r=i("e0d3"),a=n.each,o=n.isObject,s=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function l(t){var e=t&&t.itemStyle;if(e)for(var i=0,r=s.length;i=0||r&&n.indexOf(r,s)<0)){var l=e.getShallow(s);null!=l&&(a[t[o][0]]=l)}}return a}}t.exports=r},"292e":function(t,e,i){var n=i("3842"),r=n.parsePercent,a=n.linearMap,o=i("bb70"),s=i("6d8b"),l=2*Math.PI,u=Math.PI/180;function c(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.getData(),n=e.mapDimension("value"),c=t.get("center"),h=t.get("radius");s.isArray(h)||(h=[0,h]),s.isArray(c)||(c=[c,c]);var d=i.getWidth(),f=i.getHeight(),p=Math.min(d,f),g=r(c[0],d),v=r(c[1],f),m=r(h[0],p/2),y=r(h[1],p/2),x=-t.get("startAngle")*u,_=t.get("minAngle")*u,b=0;e.each(n,function(t){!isNaN(t)&&b++});var w=e.getSum(n),S=Math.PI/(w||b)*2,M=t.get("clockwise"),C=t.get("roseType"),T=t.get("stillShowZeroSum"),I=e.getDataExtent(n);I[0]=0;var A=l,D=0,k=x,O=M?1:-1;if(e.each(n,function(t,i){var n;if(isNaN(t))e.setItemLayout(i,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:M,cx:g,cy:v,r0:m,r:C?NaN:y});else{n="area"!==C?0===w&&T?S:t*S:l/b,n<_?(n=_,A-=_):D+=t;var r=k+O*n;e.setItemLayout(i,{angle:n,startAngle:k,endAngle:r,clockwise:M,cx:g,cy:v,r0:m,r:C?a(t,I,[m,y]):y}),k=r}}),A0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"===typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n="radial"===e.type?u:l,r=n(t,e,i),a=e.colorStops,o=0;o=4&&(u={x:parseFloat(d[0]||0),y:parseFloat(d[1]||0),width:parseFloat(d[2]),height:parseFloat(d[3])})}if(u&&null!=o&&null!=l&&(c=V(u,o,l),!e.ignoreViewBox)){var f=r;r=new n,r.add(f),f.scale=c.scale.slice(),f.position=c.position.slice()}return e.ignoreRootClip||null==o||null==l||r.setClipPath(new s({shape:{x:0,y:0,width:o,height:l}})),{root:r,width:o,height:l,viewBoxRect:u,viewBoxTransform:c}},T.prototype._parseNode=function(t,e){var i,n=t.nodeName.toLowerCase();if("defs"===n?this._isDefine=!0:"text"===n&&(this._isText=!0),this._isDefine){var r=A[n];if(r){var a=r.call(this,t),o=t.getAttribute("id");o&&(this._defs[o]=a)}}else{r=I[n];r&&(i=r.call(this,t,e),e.add(i))}var s=t.firstChild;while(s)1===s.nodeType&&this._parseNode(s,i),3===s.nodeType&&this._isText&&this._parseText(s,i),s=s.nextSibling;"defs"===n?this._isDefine=!1:"text"===n&&(this._isText=!1)},T.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var r=new a({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});k(e,r),P(t,r,this._defs);var o=r.style.fontSize;o&&o<9&&(r.style.fontSize=9,r.scale=r.scale||[1,1],r.scale[0]*=o/9,r.scale[1]*=o/9);var s=r.getBoundingRect();return this._textX+=s.width,e.add(r),r};var I={g:function(t,e){var i=new n;return k(e,i),P(t,i,this._defs),i},rect:function(t,e){var i=new s;return k(e,i),P(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new o;return k(e,i),P(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new u;return k(e,i),P(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new l;return k(e,i),P(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=O(i));var n=new h({shape:{points:i||[]}});return k(e,n),P(t,n,this._defs),n},polyline:function(t,e){var i=new c;k(e,i),P(t,i,this._defs);var n=t.getAttribute("points");n&&(n=O(n));var r=new d({shape:{points:n||[]}});return r},image:function(t,e){var i=new r;return k(e,i),P(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,r=t.getAttribute("y")||0,a=t.getAttribute("dx")||0,o=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(a),this._textY=parseFloat(r)+parseFloat(o);var s=new n;return k(e,s),P(t,s,this._defs),s},tspan:function(t,e){var i=t.getAttribute("x"),r=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=r&&(this._textY=parseFloat(r));var a=t.getAttribute("dx")||0,o=t.getAttribute("dy")||0,s=new n;return k(e,s),P(t,s,this._defs),this._textX+=a,this._textY+=o,s},path:function(t,e){var i=t.getAttribute("d")||"",n=m(i);return k(e,n),P(t,n,this._defs),n}},A={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),r=parseInt(t.getAttribute("y2")||0,10),a=new f(e,i,n,r);return D(t,a),a},radialgradient:function(t){}};function D(t,e){var i=t.firstChild;while(i){if(1===i.nodeType){var n=i.getAttribute("offset");n=n.indexOf("%")>0?parseInt(n,10)/100:n?parseFloat(n):0;var r=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,r)}i=i.nextSibling}}function k(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),b(e.__inheritedStyle,t.__inheritedStyle))}function O(t){for(var e=w(t).split(M),i=[],n=0;n0;a-=2){var o=r[a],s=r[a-1];switch(n=n||g.create(),s){case"translate":o=w(o).split(M),g.translate(n,n,[parseFloat(o[0]),parseFloat(o[1]||0)]);break;case"scale":o=w(o).split(M),g.scale(n,n,[parseFloat(o[0]),parseFloat(o[1]||o[0])]);break;case"rotate":o=w(o).split(M),g.rotate(n,n,parseFloat(o[0]));break;case"skew":o=w(o).split(M),console.warn("Skew transform is not supported yet");break;case"matrix":o=w(o).split(M);n[0]=parseFloat(o[0]),n[1]=parseFloat(o[1]),n[2]=parseFloat(o[2]),n[3]=parseFloat(o[3]),n[4]=parseFloat(o[4]),n[5]=parseFloat(o[5]);break}}e.setLocalTransform(n)}}var z=/([^\s:;]+)\s*:\s*([^:;]+)/g;function F(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n,r={};z.lastIndex=0;while(null!=(n=z.exec(e)))r[n[1]]=n[2];for(var a in L)L.hasOwnProperty(a)&&null!=r[a]&&(i[L[a]]=r[a]);return i}function V(t,e,i){var n=e/t.width,r=i/t.height,a=Math.min(n,r),o=[a,a],s=[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2];return{scale:o,position:s}}function H(t,e){var i=new T;return i.parse(t,e)}e.parseXML=C,e.makeViewBoxTransform=V,e.parseSVG=H},"307d":function(t,e,i){var n=i("6d8b"),r=i("6179"),a=i("3842"),o=i("923d"),s=i("73ca"),l=i("88f0"),u=function(t,e,i,r){var a=t.getData(),s=r.type;if(!n.isArray(r)&&("min"===s||"max"===s||"average"===s||"median"===s||null!=r.xAxis||null!=r.yAxis)){var l,u;if(null!=r.yAxis||null!=r.xAxis)l=null!=r.yAxis?"y":"x",e.getAxis(l),u=n.retrieve(r.yAxis,r.xAxis);else{var c=o.getAxisInfo(r,a,e,t);l=c.valueDataDim,c.valueAxis,u=o.numCalculate(a,l,s)}var h="x"===l?0:1,d=1-h,f=n.clone(r),p={};f.type=null,f.coord=[],p.coord=[],f.coord[d]=-1/0,p.coord[d]=1/0;var g=i.get("precision");g>=0&&"number"===typeof u&&(u=+u.toFixed(Math.min(g,20))),f.coord[h]=p.coord[h]=u,r=[f,p,{type:s,valueIndex:r.valueIndex,value:u}]}return r=[o.dataTransform(t,r[0]),o.dataTransform(t,r[1]),n.extend({},r[2])],r[2].type=r[2].type||"",n.merge(r[2],r[0]),n.merge(r[2],r[1]),r};function c(t){return!isNaN(t)&&!isFinite(t)}function h(t,e,i,n){var r=1-t,a=n.dimensions[t];return c(e[r])&&c(i[r])&&e[t]===i[t]&&n.getAxis(a).containData(e[t])}function d(t,e){if("cartesian2d"===t.type){var i=e[0].coord,n=e[1].coord;if(i&&n&&(h(1,i,n,t)||h(0,i,n,t)))return!0}return o.dataFilter(t,e[0])&&o.dataFilter(t,e[1])}function f(t,e,i,n,r){var o,s=n.coordinateSystem,l=t.getItemModel(e),u=a.parsePercent(l.get("x"),r.getWidth()),h=a.parsePercent(l.get("y"),r.getHeight());if(isNaN(u)||isNaN(h)){if(n.getMarkerPosition)o=n.getMarkerPosition(t.getValues(t.dimensions,e));else{var d=s.dimensions,f=t.get(d[0],e),p=t.get(d[1],e);o=s.dataToPoint([f,p])}if("cartesian2d"===s.type){var g=s.getAxis("x"),v=s.getAxis("y");d=s.dimensions;c(t.get(d[0],e))?o[0]=g.toGlobalCoord(g.getExtent()[i?0:1]):c(t.get(d[1],e))&&(o[1]=v.toGlobalCoord(v.getExtent()[i?0:1]))}isNaN(u)||(o[0]=u),isNaN(h)||(o[1]=h)}else o=[u,h];t.setItemLayout(e,o)}var p=l.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),r=e.__from,a=e.__to;r.each(function(e){f(r,e,!0,t,i),f(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[r.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,r){var a=t.coordinateSystem,o=t.id,l=t.getData(),u=this.markerGroupMap,c=u.get(o)||u.set(o,new s);this.group.add(c.group);var h=g(a,t,e),d=h.from,p=h.to,v=h.line;e.__from=d,e.__to=p,e.setData(v);var m=e.get("symbol"),y=e.get("symbolSize");function x(e,i,n){var a=e.getItemModel(i);f(e,i,n,t,r),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||y[n?0:1],symbol:a.get("symbol",!0)||m[n?0:1],color:a.get("itemStyle.color")||l.getVisual("color")})}n.isArray(m)||(m=[m,m]),"number"===typeof y&&(y=[y,y]),h.from.each(function(t){x(d,t,!0),x(p,t,!1)}),v.each(function(t){var e=v.getItemModel(t).get("lineStyle.color");v.setItemVisual(t,{color:e||d.getItemVisual(t,"color")}),v.setItemLayout(t,[d.getItemLayout(t),p.getItemLayout(t)]),v.setItemVisual(t,{fromSymbolSize:d.getItemVisual(t,"symbolSize"),fromSymbol:d.getItemVisual(t,"symbol"),toSymbolSize:p.getItemVisual(t,"symbolSize"),toSymbol:p.getItemVisual(t,"symbol")})}),c.updateData(v),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}});function g(t,e,i){var a;a=t?n.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.getData().mapDimension(t))||{};return n.defaults({name:t},i)}):[{name:"value",type:"float"}];var s=new r(a,i),l=new r(a,i),c=new r([],i),h=n.map(i.get("data"),n.curry(u,e,t,i));t&&(h=n.filter(h,n.curry(d,t)));var f=t?o.dimValueGetter:function(t){return t.value};return s.initData(n.map(h,function(t){return t[0]}),null,f),l.initData(n.map(h,function(t){return t[1]}),null,f),c.initData(n.map(h,function(t){return t[2]})),c.hasItemOption=!0,{from:s,to:l,line:c}}t.exports=p},"30a3":function(t,e,i){var n=i("6d8b"),r=i("607d"),a=r.Dispatcher,o=i("98b7"),s=i("06ad"),l=function(t){t=t||{},this.stage=t.stage||{},this.onframe=t.onframe||function(){},this._clips=[],this._running=!1,this._time,this._pausedTime,this._pauseStart,this._paused=!1,a.call(this)};l.prototype={constructor:l,addClip:function(t){this._clips.push(t)},addAnimator:function(t){t.animation=this;for(var e=t.getClips(),i=0;i=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i1&&(c*=o(_),f*=o(_));var b=(r===a?-1:1)*o((c*c*(f*f)-c*c*(x*x)-f*f*(y*y))/(c*c*(x*x)+f*f*(y*y)))||0,w=b*c*x/f,S=b*-f*y/c,M=(t+i)/2+l(m)*w-s(m)*S,C=(e+n)/2+s(m)*w+l(m)*S,T=d([1,0],[(y-w)/c,(x-S)/f]),I=[(y-w)/c,(x-S)/f],A=[(-1*y-w)/c,(-1*x-S)/f],D=d(I,A);h(I,A)<=-1&&(D=u),h(I,A)>=1&&(D=0),0===a&&D>0&&(D-=2*u),1===a&&D<0&&(D+=2*u),v.addData(g,M,C,c,f,T,D,m,a)}var p=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,g=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function v(t){if(!t)return new r;for(var e,i=0,n=0,a=i,o=n,s=new r,l=r.CMD,u=t.match(p),c=0;c0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/r*a+i[0]}function s(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%";break}return"string"===typeof t?a(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function l(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function u(t){return t.sort(function(t,e){return t-e}),t}function c(t){if(t=+t,isNaN(t))return 0;var e=1,i=0;while(Math.round(t*e)/e!==t)e*=10,i++;return i}function h(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var r=e.indexOf(".");return r<0?0:e.length-1-r}function d(t,e){var i=Math.log,n=Math.LN10,r=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),o=Math.min(Math.max(-r+a,0),20);return isFinite(o)?o:20}function f(t,e,i){if(!t[e])return 0;var r=n.reduce(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===r)return 0;var a=Math.pow(10,i),o=n.map(t,function(t){return(isNaN(t)?0:t)/r*a*100}),s=100*a,l=n.map(o,function(t){return Math.floor(t)}),u=n.reduce(l,function(t,e){return t+e},0),c=n.map(o,function(t,e){return t-l[e]});while(uh&&(h=c[f],d=f);++l[d],c[d]=0,++u}return l[e]/a}var p=9007199254740991;function g(t){var e=2*Math.PI;return(t%e+e)%e}function v(t){return t>-r&&t=-20?+t.toFixed(n<0?-n:0):t}function w(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),r=+t[n-1],a=i-n;return a?r+a*(t[n]-r):r}function S(t){t.sort(function(t,e){return s(t,e,0)?-1:1});for(var e=-1/0,i=1,n=0;n=0}e.linearMap=o,e.parsePercent=s,e.round=l,e.asc=u,e.getPrecision=c,e.getPrecisionSafe=h,e.getPixelPrecision=d,e.getPercentWithPrecision=f,e.MAX_SAFE_INTEGER=p,e.remRadian=g,e.isRadianAroundZero=v,e.parseDate=y,e.quantity=x,e.nice=b,e.quantile=w,e.reformIntervals=S,e.isNumeric=M},"38a2":function(t,e,i){var n=i("2b17"),r=n.retrieveRawValue,a=i("eda2"),o=a.getTooltipMarker,s=a.formatTpl,l=i("e0d3"),u=l.getTooltipRenderMode,c=/\{@(.+?)\}/g,h={getDataParams:function(t,e){var i=this.getData(e),n=this.getRawValue(t,e),r=i.getRawIndex(t),a=i.getName(t),s=i.getRawDataItem(t),l=i.getItemVisual(t,"color"),c=this.ecModel.getComponent("tooltip"),h=c&&c.get("renderMode"),d=u(h),f=this.mainType,p="series"===f;return{componentType:f,componentSubType:this.subType,componentIndex:this.componentIndex,seriesType:p?this.subType:null,seriesIndex:this.seriesIndex,seriesId:p?this.id:null,seriesName:p?this.name:null,name:a,dataIndex:r,data:s,dataType:e,value:n,color:l,marker:o({color:l,renderMode:d}),$vars:["seriesName","name","value"]}},getFormattedLabel:function(t,e,i,n,a){e=e||"normal";var o=this.getData(i),l=o.getItemModel(t),u=this.getDataParams(t,i);null!=n&&u.value instanceof Array&&(u.value=u.value[n]);var h=l.get("normal"===e?[a||"label","formatter"]:[e,a||"label","formatter"]);if("function"===typeof h)return u.status=e,h(u);if("string"===typeof h){var d=s(h,u);return d.replace(c,function(e,i){var n=i.length;return"["===i.charAt(0)&&"]"===i.charAt(n-1)&&(i=+i.slice(1,n-1)),r(o,t,i)})}},getRawValue:function(t,e){return r(this.getData(e),t)},formatTooltip:function(){}};t.exports=h},3901:function(t,e,i){var n=i("282b"),r=n([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),a={getLineStyle:function(t){var e=r(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}};t.exports=a},"392f":function(t,e,i){var n=i("6d8b"),r=n.inherits,a=i("19eb"),o=i("9850");function s(t){a.call(this,t),this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.notClear=!0}s.prototype.incremental=!0,s.prototype.clearDisplaybles=function(){this._displayables=[],this._temporaryDisplayables=[],this._cursor=0,this.dirty(),this.notClear=!1},s.prototype.addDisplayable=function(t,e){e?this._temporaryDisplayables.push(t):this._displayables.push(t),this.dirty()},s.prototype.addDisplayables=function(t,e){e=e||!1;for(var i=0;i0&&t.unfinished);t.unfinished||this._zr.flush()}}},J.getDom=function(){return this._dom},J.getZr=function(){return this._zr},J.setOption=function(t,e,i){var n;if(E(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[q]=!0,!this._model||e){var r=new f(this._api),a=this._theme,o=this._model=new c(null,null,a,r);o.scheduler=this._scheduler,o.init(null,null,a,r)}this._model.setOption(t,Mt),i?(this[Y]={silent:n},this[q]=!1):(it(this),et.update.call(this),this._zr.flush(),this[Y]=!1,this[q]=!1,ot.call(this,n),st.call(this,n))},J.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},J.getModel=function(){return this._model},J.getOption=function(){return this._model&&this._model.getOption()},J.getWidth=function(){return this._zr.getWidth()},J.getHeight=function(){return this._zr.getHeight()},J.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},J.getRenderedCanvas=function(t){if(s.canvasSupported){t=t||{},t.pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor");var e=this._zr;return e.painter.getRenderedCanvas(t)}},J.getSvgDataUrl=function(){if(s.svgSupported){var t=this._zr,e=t.storage.getDisplayList();return a.each(e,function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},J.getDataURL=function(t){t=t||{};var e=t.excludeComponents,i=this._model,n=[],r=this;L(e,function(t){i.eachComponent({mainType:t},function(t){var e=r._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return L(n,function(t){t.group.ignore=!1}),a},J.getConnectedDataURL=function(t){if(s.canvasSupported){var e=this.group,i=Math.min,n=Math.max,o=1/0;if(kt[e]){var l=o,u=o,c=-o,h=-o,d=[],f=t&&t.pixelRatio||1;a.each(Dt,function(r,o){if(r.group===e){var s=r.getRenderedCanvas(a.clone(t)),f=r.getDom().getBoundingClientRect();l=i(f.left,l),u=i(f.top,u),c=n(f.right,c),h=n(f.bottom,h),d.push({dom:s,left:f.left,top:f.top})}}),l*=f,u*=f,c*=f,h*=f;var p=c-l,g=h-u,v=a.createCanvas();v.width=p,v.height=g;var m=r.init(v);return L(d,function(t){var e=new _.Image({style:{x:t.left*f-l,y:t.top*f-u,image:t.dom}});m.add(e)}),m.refreshImmediately(),v.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},J.convertToPixel=a.curry(tt,"convertToPixel"),J.convertFromPixel=a.curry(tt,"convertFromPixel"),J.containPixel=function(t,e){var i,n=this._model;return t=b.parseFinder(n,t),a.each(t,function(t,n){n.indexOf("Models")>=0&&a.each(t,function(t){var r=t.coordinateSystem;if(r&&r.containPoint)i|=!!r.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},J.getVisual=function(t,e){var i=this._model;t=b.parseFinder(i,t,{defaultMainType:"series"});var n=t.seriesModel,r=n.getData(),a=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?r.indexOfRawIndex(t.dataIndex):null;return null!=a?r.getItemVisual(a,e):r.getVisual(e)},J.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},J.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var et={prepareAndUpdate:function(t){it(this),et.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,r=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),r.create(e,i),a.performDataProcessorTasks(e,t),rt(this,e),r.update(e,i),ct(e),a.performVisualTasks(e,t),ht(this,e,i,t);var l=e.get("backgroundColor")||"transparent";if(s.canvasSupported)n.setBackgroundColor(l);else{var u=o.parse(l);l=o.stringify(u,"rgb"),0===u[3]&&(l="transparent")}pt(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var r=[];e.eachComponent(function(a,o){var s=i.getViewOfComponentModel(o);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(o,e,n,t);l&&l.update&&r.push(s)}else r.push(s)});var o=a.createHashMap();e.eachSeries(function(r){var a=i._chartsMap[r.__viewId];if(a.updateTransform){var s=a.updateTransform(r,e,n,t);s&&s.update&&o.set(r.uid,1)}else o.set(r.uid,1)}),ct(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:o}),ft(i,e,n,t,o),pt(e,this._api)}},updateView:function(t){var e=this._model;e&&(x.markUpdateMethod(t,"updateView"),ct(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),ht(this,this._model,this._api,t),pt(e,this._api))},updateVisual:function(t){et.update.call(this,t)},updateLayout:function(t){et.update.call(this,t)}};function it(t){var e=t._model,i=t._scheduler;i.restorePipelines(e),i.prepareStageTasks(),ut(t,"component",e,i),ut(t,"chart",e,i),i.plan()}function nt(t,e,i,n,r){var o=t._model;if(n){var s={};s[n+"Id"]=i[n+"Id"],s[n+"Index"]=i[n+"Index"],s[n+"Name"]=i[n+"Name"];var l={mainType:n,query:s};r&&(l.subType=r);var u=i.excludeSeriesId;null!=u&&(u=a.createHashMap(b.normalizeToArray(u))),o&&o.eachComponent(l,function(e){u&&null!=u.get(e.id)||c(t["series"===n?"_chartsMap":"_componentsMap"][e.__viewId])},t)}else L(t._componentsViews.concat(t._chartsViews),c);function c(n){n&&n.__alive&&n[e]&&n[e](n.__model,o,t._api,i)}}function rt(t,e){var i=t._chartsMap,n=t._scheduler;e.eachSeries(function(t){n.updateStreamModes(t,i[t.__viewId])})}function at(t,e){var i=t.type,n=t.escapeConnect,r=bt[i],o=r.actionInfo,s=(o.update||"update").split(":"),l=s.pop();s=null!=s[0]&&R(s[0]),this[q]=!0;var u=[t],c=!1;t.batch&&(c=!0,u=a.map(t.batch,function(e){return e=a.defaults(a.extend({},e),t),e.batch=null,e}));var h,d=[],f="highlight"===i||"downplay"===i;L(u,function(t){h=r.action(t,this._model,this._api),h=h||a.extend({},t),h.type=o.event||h.type,d.push(h),f?nt(this,l,t,"series"):s&&nt(this,l,t,s.main,s.sub)},this),"none"===l||f||s||(this[Y]?(it(this),et.update.call(this,t),this[Y]=!1):et[l].call(this,t)),h=c?{type:o.event||i,escapeConnect:n,batch:d}:d[0],this[q]=!1,!e&&this._messageCenter.trigger(h.type,h)}function ot(t){var e=this._pendingActions;while(e.length){var i=e.shift();at.call(this,i,t)}}function st(t){!t&&this.trigger("updated")}function lt(t,e){t.on("rendered",function(){e.trigger("rendered"),!t.animation.isFinished()||e[Y]||e._scheduler.unfinished||e._pendingActions.length||e.trigger("finished")})}function ut(t,e,i,n){for(var r="component"===e,a=r?t._componentsViews:t._chartsViews,o=r?t._componentsMap:t._chartsMap,s=t._zr,l=t._api,u=0;ue.get("hoverLayerThreshold")&&!s.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function mt(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function yt(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function xt(t){var e=t._coordSysMgr;return a.extend(new h(t),{getCoordinateSystems:a.bind(e.getCoordinateSystems,e),getComponentByElement:function(e){while(e){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function _t(){this.eventInfo}J._initEvents=function(){L(gt,function(t){var e=function(e){var i,n=this.getModel(),r=e.target,o="globalout"===t;if(o)i={};else if(r&&null!=r.dataIndex){var s=r.dataModel||n.getSeriesByIndex(r.seriesIndex);i=s&&s.getDataParams(r.dataIndex,r.dataType,r)||{}}else r&&r.eventData&&(i=a.extend({},r.eventData));if(i){var l=i.componentType,u=i.componentIndex;"markLine"!==l&&"markPoint"!==l&&"markArea"!==l||(l="series",u=i.seriesIndex);var c=l&&null!=u&&n.getComponent(l,u),h=c&&this["series"===c.mainType?"_chartsMap":"_componentsMap"][c.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:r,packedEvent:i,model:c,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),L(wt,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},J.isDisposed=function(){return this._disposed},J.clear=function(){this.setOption({series:[]},!0)},J.dispose=function(){if(!this._disposed){this._disposed=!0,b.setAttribute(this.getDom(),Pt,"");var t=this._api,e=this._model;L(this._componentsViews,function(i){i.dispose(e,t)}),L(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete Dt[this.id]}},a.mixin(Q,u),_t.prototype={constructor:_t,normalizeQuery:function(t){var e={},i={},n={};if(a.isString(t)){var r=R(t);e.mainType=r.main||null,e.subType=r.sub||null}else{var o=["Index","Name","Id"],s={name:1,dataIndex:1,dataType:1};a.each(t,function(t,r){for(var a=!1,l=0;l0&&c===r.length-u.length){var h=r.slice(0,c);"data"!==h&&(e.mainType=h,e[u.toLowerCase()]=t,a=!0)}}s.hasOwnProperty(r)&&(i[r]=t,a=!0),a||(n[r]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){var n=this.eventInfo;if(!n)return!0;var r=n.targetEl,a=n.packedEvent,o=n.model,s=n.view;if(!o||!s)return!0;var l=e.cptQuery,u=e.dataQuery;return c(l,o,"mainType")&&c(l,o,"subType")&&c(l,o,"index","componentIndex")&&c(l,o,"name")&&c(l,o,"id")&&c(u,a,"name")&&c(u,a,"dataIndex")&&c(u,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,e.otherQuery,r,a));function c(t,e,i,n){return null==t[i]||e[n||i]===t[i]}},afterTrigger:function(){this.eventInfo=null}};var bt={},wt={},St=[],Mt=[],Ct=[],Tt=[],It={},At={},Dt={},kt={},Ot=new Date-0,Lt=new Date-0,Pt="_echarts_instance_";function Et(t){var e=0,i=1,n=2,r="__connectUpdateStatus";function a(t,e){for(var i=0;i255?255:t}function o(t){return t=Math.round(t),t<0?0:t>360?360:t}function s(t){return t<0?0:t>1?1:t}function l(t){return t.length&&"%"===t.charAt(t.length-1)?a(parseFloat(t)/100*255):a(parseInt(t,10))}function u(t){return t.length&&"%"===t.charAt(t.length-1)?s(parseFloat(t)/100):s(parseFloat(t))}function c(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function h(t,e,i){return t+(e-t)*i}function d(t,e,i,n,r){return t[0]=e,t[1]=i,t[2]=n,t[3]=r,t}function f(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}var p=new n(20),g=null;function v(t,e){g&&f(g,e),g=p.put(t,g||e.slice())}function m(t,e){if(t){e=e||[];var i=p.get(t);if(i)return f(e,i);t+="";var n=t.replace(/ /g,"").toLowerCase();if(n in r)return f(e,r[n]),v(t,e),e;if("#"!==n.charAt(0)){var a=n.indexOf("("),o=n.indexOf(")");if(-1!==a&&o+1===n.length){var s=n.substr(0,a),c=n.substr(a+1,o-(a+1)).split(","),h=1;switch(s){case"rgba":if(4!==c.length)return void d(e,0,0,0,1);h=u(c.pop());case"rgb":return 3!==c.length?void d(e,0,0,0,1):(d(e,l(c[0]),l(c[1]),l(c[2]),h),v(t,e),e);case"hsla":return 4!==c.length?void d(e,0,0,0,1):(c[3]=u(c[3]),y(c,e),v(t,e),e);case"hsl":return 3!==c.length?void d(e,0,0,0,1):(y(c,e),v(t,e),e);default:return}}d(e,0,0,0,1)}else{if(4===n.length){var g=parseInt(n.substr(1),16);return g>=0&&g<=4095?(d(e,(3840&g)>>4|(3840&g)>>8,240&g|(240&g)>>4,15&g|(15&g)<<4,1),v(t,e),e):void d(e,0,0,0,1)}if(7===n.length){g=parseInt(n.substr(1),16);return g>=0&&g<=16777215?(d(e,(16711680&g)>>16,(65280&g)>>8,255&g,1),v(t,e),e):void d(e,0,0,0,1)}}}}function y(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=u(t[1]),r=u(t[2]),o=r<=.5?r*(n+1):r+n-r*n,s=2*r-o;return e=e||[],d(e,a(255*c(s,o,i+1/3)),a(255*c(s,o,i)),a(255*c(s,o,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function x(t){if(t){var e,i,n=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(n,r,a),s=Math.max(n,r,a),l=s-o,u=(s+o)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+o):l/(2-s-o);var c=((s-n)/6+l/2)/l,h=((s-r)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-h:r===s?e=1/3+c-d:a===s&&(e=2/3+h-c),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function _(t,e){var i=m(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return A(i,4===i.length?"rgba":"rgb")}}function b(t){var e=m(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function w(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),r=Math.floor(n),o=Math.ceil(n),l=e[r],u=e[o],c=n-r;return i[0]=a(h(l[0],u[0],c)),i[1]=a(h(l[1],u[1],c)),i[2]=a(h(l[2],u[2],c)),i[3]=s(h(l[3],u[3],c)),i}}var S=w;function M(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),r=Math.floor(n),o=Math.ceil(n),l=m(e[r]),u=m(e[o]),c=n-r,d=A([a(h(l[0],u[0],c)),a(h(l[1],u[1],c)),a(h(l[2],u[2],c)),s(h(l[3],u[3],c))],"rgba");return i?{color:d,leftIndex:r,rightIndex:o,value:n}:d}}var C=M;function T(t,e,i,n){if(t=m(t),t)return t=x(t),null!=e&&(t[0]=o(e)),null!=i&&(t[1]=u(i)),null!=n&&(t[2]=u(n)),A(y(t),"rgba")}function I(t,e){if(t=m(t),t&&null!=e)return t[3]=s(e),A(t,"rgba")}function A(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}e.parse=m,e.lift=_,e.toHex=b,e.fastLerp=w,e.fastMapToColor=S,e.lerp=M,e.mapToColor=C,e.modifyHSL=T,e.modifyAlpha=I,e.stringify=A},"42e5":function(t,e){var i=function(t){this.colorStops=t||[]};i.prototype={constructor:i,addColorStop:function(t,e){this.colorStops.push({offset:t,color:e})}};var n=i;t.exports=n},"42f6":function(t,e,i){var n=i("3eba"),r=i("6d8b"),a=i("22d1"),o=i("07d7"),s=i("82f9"),l=i("eda2"),u=i("3842"),c=i("2306"),h=i("133d"),d=i("f934"),f=i("4319"),p=i("17d6"),g=i("697e"),v=i("ff2e"),m=i("e0d3"),y=m.getTooltipRenderMode,x=r.bind,_=r.each,b=u.parsePercent,w=new c.Rect({shape:{x:-1,y:-1,width:2,height:2}}),S=n.extendComponentView({type:"tooltip",init:function(t,e){if(!a.node){var i,n=t.getComponent("tooltip"),r=n.get("renderMode");this._renderMode=y(r),"html"===this._renderMode?(i=new o(e.getDom(),e),this._newLine="
    "):(i=new s(e),this._newLine="\n"),this._tooltipContent=i}},render:function(t,e,i){if(!a.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel,e=t.get("triggerOn");p.register("itemTooltip",this._api,x(function(t,i,n){"none"!==e&&(e.indexOf(t)>=0?this._tryShow(i,n):"leave"===t&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!a.node){var r=C(n,i);this._ticket="";var o=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var s=w;s.position=[n.x,n.y],s.update(),s.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:s},r)}else if(o)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},r);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var l=h(n,e),u=l.point[0],c=l.point[1];null!=u&&null!=c&&this._tryShow({offsetX:u,offsetY:c,position:n.position,target:l.el,event:{}},r)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},r))}},manuallyHideTip:function(t,e,i,n){var r=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&r.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(C(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var r=n.seriesIndex,a=n.dataIndex,o=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=r&&null!=a&&null!=o){var s=e.getSeriesByIndex(r);if(s){var l=s.getData();t=M([l.getItemModel(a),s,(s.coordinateSystem||{}).model,t]);if("axis"===t.get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:r,dataIndex:a,position:n.position}),!0}}},_tryShow:function(t,e){var i=t.target,n=this._tooltipModel;if(n){this._lastX=t.offsetX,this._lastY=t.offsetY;var r=t.dataByCoordSys;r&&r.length?this._showAxisTooltip(r,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=r.bind(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,n=this._tooltipModel,a=[e.offsetX,e.offsetY],o=[],s=[],u=M([e.tooltipOption,n]),c=this._renderMode,h=this._newLine,d={};_(t,function(t){_(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),n=t.value,a=[];if(e&&null!=n){var u=v.getValueLabel(n,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);r.each(t.seriesDataIndices,function(o){var l=i.getSeriesByIndex(o.seriesIndex),h=o.dataIndexInside,f=l&&l.getDataParams(h);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=g.getAxisRawValue(e.axis,n),f.axisValueLabel=u,f){s.push(f);var p,v=l.formatTooltip(h,!0,null,c);if(r.isObject(v)){p=v.html;var m=v.markers;r.merge(d,m)}else p=v;a.push(p)}});var f=u;"html"!==c?o.push(a.join(h)):o.push((f?l.encodeHTML(f)+h:"")+a.join(h))}})},this),o.reverse(),o=o.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(u,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(u,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(u,o,s,Math.random(),a[0],a[1],f,void 0,d)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,a=e.seriesIndex,o=n.getSeriesByIndex(a),s=e.dataModel||o,l=e.dataIndex,u=e.dataType,c=s.getData(),h=M([c.getItemModel(l),s,o&&(o.coordinateSystem||{}).model,this._tooltipModel]),d=h.get("trigger");if(null==d||"item"===d){var f,p,g=s.getDataParams(l,u),v=s.formatTooltip(l,!1,u,this._renderMode);r.isObject(v)?(f=v.html,p=v.markers):(f=v,p=null);var m="item_"+s.name+"_"+l;this._showOrMove(h,function(){this._showTooltipContent(h,f,g,m,t.offsetX,t.offsetY,t.position,t.target,p)}),i({type:"showTip",dataIndexInside:l,dataIndex:c.getRawIndex(l),seriesIndex:a,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"===typeof n){var r=n;n={content:r,formatter:r}}var a=new f(n,this._tooltipModel,this._ecModel),o=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,o,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,r,a,o,s,u){if(this._ticket="",t.get("showContent")&&t.get("show")){var c=this._tooltipContent,h=t.get("formatter");o=o||t.get("position");var d=e;if(h&&"string"===typeof h)d=l.formatTpl(h,i,!0);else if("function"===typeof h){var f=x(function(e,n){e===this._ticket&&(c.setContent(n,u,t),this._updatePosition(t,o,r,a,c,i,s))},this);this._ticket=n,d=h(i,n,f)}c.setContent(d,u,t),c.show(t),this._updatePosition(t,o,r,a,c,i,s)}},_updatePosition:function(t,e,i,n,a,o,s){var l=this._api.getWidth(),u=this._api.getHeight();e=e||t.get("position");var c=a.getSize(),h=t.get("align"),f=t.get("verticalAlign"),p=s&&s.getBoundingRect().clone();if(s&&p.applyTransform(s.transform),"function"===typeof e&&(e=e([i,n],o,a.el,p,{viewSize:[l,u],contentSize:c.slice()})),r.isArray(e))i=b(e[0],l),n=b(e[1],u);else if(r.isObject(e)){e.width=c[0],e.height=c[1];var g=d.getLayoutRect(e,{width:l,height:u});i=g.x,n=g.y,h=null,f=null}else if("string"===typeof e&&s){var v=A(e,p,c);i=v[0],n=v[1]}else{v=T(i,n,a,l,u,h?null:20,f?null:20);i=v[0],n=v[1]}if(h&&(i-=D(h)?c[0]/2:"right"===h?c[0]:0),f&&(n-=D(f)?c[1]/2:"bottom"===f?c[1]:0),t.get("confine")){v=I(i,n,a,l,u);i=v[0],n=v[1]}a.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&_(e,function(e,n){var r=e.dataByAxis||{},a=t[n]||{},o=a.dataByAxis||[];i&=r.length===o.length,i&&_(r,function(t,e){var n=o[e]||{},r=t.seriesDataIndices||[],a=n.seriesDataIndices||[];i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&r.length===a.length,i&&_(r,function(t,e){var n=a[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){a.node||(this._tooltipContent.hide(),p.unregister("itemTooltip",e))}});function M(t){var e=t.pop();while(t.length){var i=t.pop();i&&(f.isInstance(i)&&(i=i.get("tooltip",!0)),"string"===typeof i&&(i={formatter:i}),e=new f(i,e,e.ecModel))}return e}function C(t,e){return t.dispatchAction||r.bind(e.dispatchAction,e)}function T(t,e,i,n,r,a,o){var s=i.getOuterSize(),l=s.width,u=s.height;return null!=a&&(t+l+a>n?t-=l+a:t+=a),null!=o&&(e+u+o>r?e-=u+o:e+=o),[t,e]}function I(t,e,i,n,r){var a=i.getOuterSize(),o=a.width,s=a.height;return t=Math.min(t+o,n)-o,e=Math.min(e+s,r)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function A(t,e,i){var n=i[0],r=i[1],a=5,o=0,s=0,l=e.width,u=e.height;switch(t){case"inside":o=e.x+l/2-n/2,s=e.y+u/2-r/2;break;case"top":o=e.x+l/2-n/2,s=e.y-r-a;break;case"bottom":o=e.x+l/2-n/2,s=e.y+u+a;break;case"left":o=e.x-n-a,s=e.y+u/2-r/2;break;case"right":o=e.x+l+a,s=e.y+u/2-r/2}return[o,s]}function D(t){return"center"===t||"middle"===t}t.exports=S},4319:function(t,e,i){var n=i("6d8b"),r=i("22d1"),a=i("e0d3"),o=a.makeInner,s=i("625e"),l=s.enableClassExtend,u=s.enableClassCheck,c=i("3901"),h=i("9bdb"),d=i("fe21"),f=i("551f"),p=n.mixin,g=o();function v(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function m(t,e,i){for(var n=0;n1&&(a=function(){for(var t in arguments)console.log(arguments[t])});var o=a;t.exports=o},"4a3f":function(t,e,i){var n=i("401b"),r=n.create,a=n.distSquare,o=Math.pow,s=Math.sqrt,l=1e-8,u=1e-4,c=s(3),h=1/3,d=r(),f=r(),p=r();function g(t){return t>-l&&tl||t<-l}function m(t,e,i,n,r){var a=1-r;return a*a*(a*t+3*r*e)+r*r*(r*n+3*a*i)}function y(t,e,i,n,r){var a=1-r;return 3*(((e-t)*a+2*(i-e)*r)*a+(n-i)*r*r)}function x(t,e,i,n,r,a){var l=n+3*(e-i)-t,u=3*(i-2*e+t),d=3*(e-t),f=t-r,p=u*u-3*l*d,v=u*d-9*l*f,m=d*d-3*u*f,y=0;if(g(p)&&g(v))if(g(u))a[0]=0;else{var x=-d/u;x>=0&&x<=1&&(a[y++]=x)}else{var _=v*v-4*p*m;if(g(_)){var b=v/p,w=(x=-u/l+b,-b/2);x>=0&&x<=1&&(a[y++]=x),w>=0&&w<=1&&(a[y++]=w)}else if(_>0){var S=s(_),M=p*u+1.5*l*(-v+S),C=p*u+1.5*l*(-v-S);M=M<0?-o(-M,h):o(M,h),C=C<0?-o(-C,h):o(C,h);x=(-u-(M+C))/(3*l);x>=0&&x<=1&&(a[y++]=x)}else{var T=(2*p*u-3*l*v)/(2*s(p*p*p)),I=Math.acos(T)/3,A=s(p),D=Math.cos(I),k=(x=(-u-2*A*D)/(3*l),w=(-u+A*(D+c*Math.sin(I)))/(3*l),(-u+A*(D-c*Math.sin(I)))/(3*l));x>=0&&x<=1&&(a[y++]=x),w>=0&&w<=1&&(a[y++]=w),k>=0&&k<=1&&(a[y++]=k)}}return y}function _(t,e,i,n,r){var a=6*i-12*e+6*t,o=9*e+3*n-3*t-9*i,l=3*e-3*t,u=0;if(g(o)){if(v(a)){var c=-l/a;c>=0&&c<=1&&(r[u++]=c)}}else{var h=a*a-4*o*l;if(g(h))r[0]=-a/(2*o);else if(h>0){var d=s(h),f=(c=(-a+d)/(2*o),(-a-d)/(2*o));c>=0&&c<=1&&(r[u++]=c),f>=0&&f<=1&&(r[u++]=f)}}return u}function b(t,e,i,n,r,a){var o=(e-t)*r+t,s=(i-e)*r+e,l=(n-i)*r+i,u=(s-o)*r+o,c=(l-s)*r+s,h=(c-u)*r+u;a[0]=t,a[1]=o,a[2]=u,a[3]=h,a[4]=h,a[5]=c,a[6]=l,a[7]=n}function w(t,e,i,n,r,o,l,c,h,g,v){var y,x,_,b,w,S=.005,M=1/0;d[0]=h,d[1]=g;for(var C=0;C<1;C+=.05)f[0]=m(t,i,r,l,C),f[1]=m(e,n,o,c,C),b=a(d,f),b=0&&b=0&&c<=1&&(r[u++]=c)}}else{var h=o*o-4*a*l;if(g(h)){c=-o/(2*a);c>=0&&c<=1&&(r[u++]=c)}else if(h>0){var d=s(h),f=(c=(-o+d)/(2*a),(-o-d)/(2*a));c>=0&&c<=1&&(r[u++]=c),f>=0&&f<=1&&(r[u++]=f)}}return u}function T(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function I(t,e,i,n,r){var a=(e-t)*n+t,o=(i-e)*n+e,s=(o-a)*n+a;r[0]=t,r[1]=a,r[2]=s,r[3]=s,r[4]=o,r[5]=i}function A(t,e,i,n,r,o,l,c,h){var g,v=.005,m=1/0;d[0]=l,d[1]=c;for(var y=0;y<1;y+=.05){f[0]=S(t,i,r,y),f[1]=S(e,n,o,y);var x=a(d,f);x=0&&x":"\n",d="richText"===n,f={},p=0;function g(i){var o=r.reduce(i,function(t,e,i){var n=m.getDimensionInfo(i);return t|(n&&!1!==n.tooltip&&null!=n.displayName)},0),h=[];function g(t,i){var r=m.getDimensionInfo(i);if(r&&!1!==r.otherDims.tooltip){var g=r.type,v="sub"+a.seriesIndex+"at"+p,y=c({color:w,type:"subItem",renderMode:n,markerId:v}),x="string"===typeof y?y:y.content,_=(o?x+l(r.displayName||"-")+": ":"")+l("ordinal"===g?t+"":"time"===g?e?"":s("yyyy/MM/dd hh:mm:ss",t):u(t));_&&h.push(_),d&&(f[v]=w,++p)}}y.length?r.each(y,function(e){g(M(m,t,e),e)}):r.each(i,g);var v=o?d?"\n":"
    ":"",x=v+h.join(v||", ");return{renderMode:n,content:x,style:f}}function v(t){return{renderMode:n,content:l(u(t)),style:f}}var m=this.getData(),y=m.mapDimension("defaultedTooltip",!0),x=y.length,_=this.getRawValue(t),b=r.isArray(_),w=m.getItemVisual(t,"color");r.isObject(w)&&w.colorStops&&(w=(w.colorStops[0]||{}).color),w=w||"transparent";var S=x>1||b&&!x?g(_):v(x?M(m,t,y[0]):b?_[0]:_),C=S.content,T=a.seriesIndex+"at"+p,I=c({color:w,type:"item",renderMode:n,markerId:T});f[T]=w,++p;var A=m.getName(t),D=this.name;h.isNameSpecified(this)||(D=""),D=D?l(D)+(e?": ":o):"";var k="string"===typeof I?I:I.content,O=e?k+D+C:D+k+(A?l(A)+": "+C:C);return{html:O,markers:f}},isAnimationEnabled:function(){if(a.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,r=f.getColorFromPalette.call(this,t,e,i);return r||(r=n.getColorFromPalette(t,e,i)),r},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});function I(t){var e=t.name;h.isNameSpecified(t)||(t.name=A(t)||e)}function A(t){var e=t.getRawData(),i=e.mapDimension("seriesName",!0),n=[];return r.each(i,function(t){var i=e.getDimensionInfo(t);i.displayName&&n.push(i.displayName)}),n.join(" ")}function D(t){return t.model.getRawData().count()}function k(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),O}function O(t,e){t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function L(t,e){r.each(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,r.curry(P,e))})}function P(t){var e=E(t);e&&e.setOutputEnd(this.count())}function E(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var r=n.agentStubMap;r&&(n=r.get(t.uid))}return n}}r.mixin(T,p),r.mixin(T,f);var R=T;t.exports=R},"4fac":function(t,e,i){var n=i("620b"),r=i("9c2c");function a(t,e,i){var a=e.points,o=e.smooth;if(a&&a.length>=2){if(o&&"spline"!==o){var s=r(a,o,i,e.smoothConstraint);t.moveTo(a[0][0],a[0][1]);for(var l=a.length,u=0;u<(i?l:l-1);u++){var c=s[2*u],h=s[2*u+1],d=a[(u+1)%l];t.bezierCurveTo(c[0],c[1],h[0],h[1],d[0],d[1])}}else{"spline"===o&&(a=n(a,i)),t.moveTo(a[0][0],a[0][1]);u=1;for(var f=a.length;uu&&(o=i+n,i*=u/o,n*=u/o),r+a>u&&(o=r+a,r*=u/o,a*=u/o),n+r>c&&(o=n+r,n*=c/o,r*=c/o),i+a>c&&(o=i+a,i*=c/o,a*=c/o),t.moveTo(s+i,l),t.lineTo(s+u-n,l),0!==n&&t.arc(s+u-n,l+n,n,-Math.PI/2,0),t.lineTo(s+u,l+c-r),0!==r&&t.arc(s+u-r,l+c-r,r,0,Math.PI/2),t.lineTo(s+a,l+c),0!==a&&t.arc(s+a,l+c-a,a,Math.PI/2,Math.PI),t.lineTo(s,l+i),0!==i&&t.arc(s+i,l+i,i,Math.PI,1.5*Math.PI)}e.buildPath=i},"5aa9":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=r.isObject,o=r.each,s=r.map,l=r.indexOf,u=(r.retrieve,i("f934")),c=u.getLayoutRect,h=i("697e"),d=h.createScaleByModel,f=h.ifAxisCrossZero,p=h.niceScaleExtent,g=h.estimateLabelUnionRect,v=i("cbe9"),m=i("ec02"),y=i("2039"),x=i("ee1a"),_=x.getStackedDimension;function b(t,e,i){return t.getCoordSysModel()===e}function w(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}i("8ed2");var S=w.prototype;function M(t,e,i,n){i.getAxesOnZeroOf=function(){return r?[r]:[]};var r,a=t[e],o=i.model,s=o.get("axisLine.onZero"),l=o.get("axisLine.onZeroAxisIndex");if(s){if(null!=l)C(a[l])&&(r=a[l]);else for(var u in a)if(a.hasOwnProperty(u)&&C(a[u])&&!n[c(a[u])]){r=a[u];break}r&&(n[c(r)]=!0)}function c(t){return t.dim+"_"+t.index}}function C(t){return t&&"category"!==t.type&&"time"!==t.type&&f(t)}function T(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}S.type="grid",S.axisPointerEnabled=!0,S.getRect=function(){return this._rect},S.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),o(i.x,function(t){p(t.scale,t.model)}),o(i.y,function(t){p(t.scale,t.model)});var n={};o(i.x,function(t){M(i,"y",t,n)}),o(i.y,function(t){M(i,"x",t,n)}),this.resize(this.model,e)},S.resize=function(t,e,i){var n=c(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=n;var r=this._axesList;function a(){o(r,function(t){var e=t.isHorizontal(),i=e?[0,n.width]:[0,n.height],r=t.inverse?1:0;t.setExtent(i[r],i[1-r]),T(t,e?n.x:n.y)})}a(),!i&&t.get("containLabel")&&(o(r,function(t){if(!t.model.get("axisLabel.inside")){var e=g(t);if(e){var i=t.isHorizontal()?"height":"width",r=t.model.get("axisLabel.margin");n[i]-=e[i]+r,"top"===t.position?n.y+=e.height+r:"left"===t.position&&(n.x+=e.width+r)}}}),a())},S.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},S.getAxes=function(){return this._axesList.slice()},S.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}a(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,r=this._coordsList;n=0;if(r){var a="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];a&&l(t,a,e,i)}else l(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var s=e.button;return null==e.which&&void 0!==s&&o.test(e.type)&&(e.which=1&s?1:2&s?3:4&s?2:0),e}function h(t,e,i){a?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function d(t,e,i){a?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}var f=a?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function p(t){return 2===t.which||3===t.which}function g(t){return t.which>1}e.clientToLocal=l,e.normalizeEvent=c,e.addEventListener=h,e.removeEventListener=d,e.stop=f,e.isMiddleOrRightButtonOnMouseUpDown=p,e.notLeftMouse=g},6179:function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=i("4319"),o=i("80f0"),s=i("ec6f"),l=i("2b17"),u=l.defaultDimValueGetters,c=l.DefaultDataProvider,h=i("2f45"),d=h.summarizeDimensions,f=r.isObject,p="undefined",g=-1,v="e\0\0",m={float:typeof Float64Array===p?Array:Float64Array,int:typeof Int32Array===p?Array:Int32Array,ordinal:Array,number:Array,time:Array},y=typeof Uint32Array===p?Array:Uint32Array,x=typeof Int32Array===p?Array:Int32Array,_=typeof Uint16Array===p?Array:Uint16Array;function b(t){return t._rawCount>65535?y:_}function w(t){var e=t.constructor;return e===Array?t.slice():new e(t)}var S=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_rawData","_chunkSize","_chunkCount","_dimValueGetter","_count","_rawCount","_nameDimIdx","_idDimIdx"],M=["_extent","_approximateExtent","_rawExtent"];function C(t,e){r.each(S.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,r.each(M,function(i){t[i]=r.clone(e[i])}),t._calculationInfo=r.extend(e._calculationInfo)}var T=function(t,e){t=t||["x","y"];for(var i={},n=[],a={},o=0;o=0?this._indices[t]:-1}function P(t,e){var i=t._idList[e];return null==i&&(i=k(t,t._idDimIdx,e)),null==i&&(i=v+e),i}function E(t){return r.isArray(t)||(t=[t]),t}function R(t,e){var i=t.dimensions,n=new T(r.map(i,t.getDimensionInfo,t),t.hostModel);C(n,t);for(var a=n._storage={},o=t._storage,s=0;s=0?(a[l]=N(o[l]),n._rawExtent[l]=B(),n._extent[l]=null):a[l]=o[l])}return n}function N(t){for(var e=new Array(t.length),i=0;ix[1]&&(x[1]=y)}e&&(this._nameList[f]=e[p])}this._rawCount=this._count=l,this._extent={},D(this)},I._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,r=this._rawData,a=this._storage,o=this.dimensions,s=o.length,l=this._dimensionInfos,u=this._nameList,c=this._idList,h=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!r.pure){var C=u[y];if(m&&null==C)if(null!=m.name)u[y]=C=m.name;else if(null!=i){var T=o[i],I=a[T][x];if(I){C=I[_];var k=l[T].ordinalMeta;k&&k.categories.length&&(C=k.categories[C])}}var O=null==m?null:m.id;null==O&&null!=C&&(d[C]=d[C]||0,O=C,d[C]>0&&(O+="__ec__"+d[C]),d[C]++),null!=O&&(c[y]=O)}}!r.persistent&&r.clean&&r.clean(),this._rawCount=this._count=e,this._extent={},D(this)}},I.count=function(){return this._count},I.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){r=new e(i);for(var n=0;n=0&&e=0&&es&&(s=u)}return n=[o,s],this._extent[t]=n,n},I.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},I.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},I.getCalculationInfo=function(t){return this._calculationInfo[t]},I.setCalculationInfo=function(t,e){f(t)?r.extend(this._calculationInfo,t):this._calculationInfo[t]=e},I.getSum=function(t){var e=this._storage[t],i=0;if(e)for(var n=0,r=this.count();n=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;r=a-1}}return-1},I.indicesOfNearest=function(t,e,i){var n=this._storage,r=n[t],a=[];if(!r)return a;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,s=-1,l=0,u=this.count();l=0&&s<0)&&(o=h,s=c,a.length=0),a.push(l))}return a},I.getRawIndex=O,I.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=u&&y<=c||isNaN(y))&&(o[s++]=d),d++}h=!0}else if(2===n){f=this._storage[l];var x=this._storage[e[1]],_=t[e[1]][0],w=t[e[1]][1];for(p=0;p=u&&y<=c||isNaN(y))&&(M>=_&&M<=w||isNaN(M))&&(o[s++]=d),d++}}h=!0}}if(!h)if(1===n)for(m=0;m=u&&y<=c||isNaN(y))&&(o[s++]=C)}else for(m=0;mt[I][1])&&(T=!1)}T&&(o[s++]=this.getRawIndex(m))}return sw[1]&&(w[1]=b)}}}return a},I.downSample=function(t,e,i,n){for(var r=R(this,[t]),a=r._storage,o=[],s=Math.floor(1/e),l=a[t],u=this.count(),c=this._chunkSize,h=r._rawExtent[t],d=new(b(this))(u),f=0,p=0;pu-p&&(s=u-p,o.length=s);for(var g=0;gh[1]&&(h[1]=x),d[f++]=_}return r._count=f,r._indices=d,r.getRawIndex=L,r},I.getItemModel=function(t){var e=this.hostModel;return new a(this.getRawDataItem(t),e,e&&e.ecModel)},I.diff=function(t){var e=this;return new o(t?t.getIndices():[],this.getIndices(),function(e){return P(t,e)},function(t){return P(e,t)})},I.getVisual=function(t){var e=this._visual;return e&&e[t]},I.setVisual=function(t,e){if(f(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},I.setLayout=function(t,e){if(f(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},I.getLayout=function(t){return this._layout[t]},I.getItemLayout=function(t){return this._itemLayouts[t]},I.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?r.extend(this._itemLayouts[t]||{},e):e},I.clearItemLayouts=function(){this._itemLayouts.length=0},I.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],r=n&&n[e];return null!=r||i?r:this.getVisual(e)},I.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},r=this.hasItemVisual;if(this._itemVisuals[t]=n,f(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],r[a]=!0);else n[e]=i,r[e]=!0},I.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var z=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};I.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(z,e)),this._graphicEls[t]=e},I.getItemGraphicEl=function(t){return this._graphicEls[t]},I.eachItemGraphicEl=function(t,e){r.each(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},I.cloneShallow=function(t){if(!t){var e=r.map(this.dimensions,this.getDimensionInfo,this);t=new T(e,this.hostModel)}if(t._storage=this._storage,C(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?L:O,t},I.wrapMethod=function(t,e){var i=this[t];"function"===typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(r.slice(arguments)))})},I.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],I.CHANGABLE_METHODS=["filterSelf","selectRange"];var F=T;t.exports=F},"620b":function(t,e,i){var n=i("401b"),r=n.distance;function a(t,e,i,n,r,a,o){var s=.5*(i-t),l=.5*(n-e);return(2*(e-i)+s+l)*o+(-3*(e-i)-2*s-l)*a+s*r+e}function o(t,e){for(var i=t.length,n=[],o=0,s=1;si-2?i-1:f+1],h=t[f>i-3?i-1:f+2]);var v=p*p,m=p*v;n.push([a(u[0],g[0],c[0],h[0],p,v,m),a(u[1],g[1],c[1],h[1],p,v,m)])}return n}t.exports=o},6212:function(t,e,i){"use strict";var n=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"node-basic-card"},[i("div",{staticClass:"version-wrapper"},[i("div",{staticClass:"version-title"},[t._v(t._s(t.$t("Overview.version"))+": "+t._s(t.record.version))])]),i("div",{staticClass:"basic-info"},[i("el-row",[i("el-form",{staticClass:"node-form",attrs:{"label-suffix":":","label-position":"left","label-width":"150px"}},[i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.systemTime")}},[i("span",{staticClass:"form-item-value"},[t._v(t._s(t.record.datetime))])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.memory")}},[i("span",{staticClass:"form-item-value"},[t._v("\n "+t._s(t._f("formatMemory")(t.record.memory_used))+" / "+t._s(t._f("formatMemory")(t.record.memory_total))+"\n ")])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.uptime")}},[i("span",{staticClass:"form-item-value"},[t._v(t._s(t.record.uptime))])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.maxFds")}},[i("span",{staticClass:"form-item-value"},[t._v(t._s(t.record.max_fds))])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:"OTP Release"}},[i("span",{staticClass:"form-item-value"},[t._v(t._s(t.record.otp_release))])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:"Erlang "+t.$t("Overview.process")}},[i("span",{staticClass:"form-item-value"},[t._v(t._s(t.record.process_used)+" / "+t._s(t.record.process_available))])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.nodeState")}},[i("span",{staticClass:"form-item-value"},[i("a-badge",{attrs:{"is-dot":"",status:"Running"===t.record.node_status?"success":"error",text:"Running"===t.record.node_status?t.$t("Overview.running"):t.$t("Overview.stopped")}})],1)])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:"CPU "+t.$t("Overview.load")}},[i("span",{staticClass:"form-item-value"},[t._v(" "+t._s(t.record.load1)+" / "+t._s(t.record.load5)+" / "+t._s(t.record.load15)+" ")]),i("el-popover",{attrs:{trigger:"hover",content:"load1/load5/load15"}},[i("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1)],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.currentConnection")}},[i("span",{staticClass:"form-item-value"},[t._v(" "+t._s(t.record["connections.count"])+" / "+t._s(t.record["connections.max"])+" ")])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.topics")}},[i("span",{staticClass:"form-item-value"},[t._v(" "+t._s(t.record["topics.count"])+" / "+t._s(t.record["topics.max"])+" ")])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.subscription")}},[i("span",{staticClass:"form-item-value"},[t._v("\n "+t._s(t.record["subscriptions.count"])+" / "+t._s(t.record["subscriptions.max"])+"\n ")])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.retained")}},[i("span",{staticClass:"form-item-value"},[t._v(" "+t._s(t.record["retained.count"])+" / "+t._s(t.record["retained.max"])+" ")])])],1),i("el-col",{attrs:{span:12}},[i("el-form-item",{attrs:{label:t.$t("Overview.shareSubscription")}},[i("span",{staticClass:"form-item-value"},[t._v("\n "+t._s(t.record["subscriptions.shared.count"])+" / "+t._s(t.record["subscriptions.shared.max"])+"\n ")])])],1)],1)],1),t.showButton?i("el-button",{staticClass:"form-btn",attrs:{type:"primary",size:"small"},on:{click:t.toDetails}},[t._v("\n "+t._s(t.$t("Overview.viewMore"))+"\n ")]):t._e()],1)])},r=[],a=i("90b9"),o={name:"NodeBasicCard",components:{},filters:{formatMemory:function(t){return"number"===typeof t?Object(a["d"])(t):t}},props:{value:{type:Object,default:function(){return{}}},showButton:{type:Boolean,default:!0}},data:function(){return{data:{datetime:"2019-07-08 16:27:14",node:"emqx@127.0.0.1",node_status:"Running",otp_release:"R21/10.3.4",sysdescr:"EMQ X Broker",uptime:"2 days,6 hours, 47 minutes, 50 seconds",version:"0.0.0+build.1.ref6ab9527","subscriptions.shared.max":0,"subscriptions.max":102,"subscribers.max":102,"resources.max":2,"topics.count":1,"subscriptions.count":62,"suboptions.max":102,"topics.max":2,"sessions.persistent.max":0,"connections.max":102,"sessions.persistent.count":0,"actions.count":17,"retained.count":4,"rules.count":1,"routes.count":1,"subscriptions.shared.count":0,"suboptions.count":62,"sessions.count":62,"actions.max":17,"retained.max":4,"sessions.max":102,"rules.max":1,"routes.max":2,"resources.count":2,"subscribers.count":62,"connections.count":62,connections:77,load1:"9.41",load15:"10.59",load5:"10.77",max_fds:7168,memory_total:"1.14G",memory_used:"415.58M",name:"emqx@127.0.0.1",process_available:2097152,process_used:538}}},computed:{record:function(){return this.value}},created:function(){},methods:{toDetails:function(){this.$router.push({path:"/monitor/node",query:{name:this.record.node}})}}},s=o,l=(i("a2c2"),i("2877")),u=Object(l["a"])(s,n,r,!1,null,null,null);e["a"]=u.exports},"625e":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=".",o="___EC__COMPONENT__CONTAINER___";function s(t){var e={main:"",sub:""};return t&&(t=t.split(a),e.main=t[0]||"",e.sub=t[1]||""),e}function l(t){r.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}function u(t,e){t.$constructor=t,t.extend=function(t){var e=this,i=function(){t.$constructor?t.$constructor.apply(this,arguments):e.apply(this,arguments)};return r.extend(i.prototype,t),i.extend=this.extend,i.superCall=d,i.superApply=f,r.inherits(i,this),i.superClass=e,i}}var c=0;function h(t){var e=["__\0is_clz",c++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function d(t,e){var i=r.slice(arguments,2);return this.superClass.prototype[e].apply(t,i)}function f(t,e,i){return this.superClass.prototype[e].apply(t,i)}function p(t,e){e=e||{};var i={};function n(t){var e=i[t.main];return e&&e[o]||(e=i[t.main]={},e[o]=!0),e}if(t.registerClass=function(t,e){if(e)if(l(e),e=s(e),e.sub){if(e.sub!==o){var r=n(e);r[e.sub]=t}}else i[e.main]=t;return t},t.getClass=function(t,e,n){var r=i[t];if(r&&r[o]&&(r=e?r[e]:null),n&&!r)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return r},t.getClassesByMainType=function(t){t=s(t);var e=[],n=i[t.main];return n&&n[o]?r.each(n,function(t,i){i!==o&&e.push(t)}):e.push(n),e},t.hasClass=function(t){return t=s(t),!!i[t.main]},t.getAllClassMainTypes=function(){var t=[];return r.each(i,function(e,i){t.push(i)}),t},t.hasSubTypes=function(t){t=s(t);var e=i[t.main];return e&&e[o]},t.parseClassType=s,e.registerWhenExtend){var a=t.extend;a&&(t.extend=function(e){var i=a.call(this,e);return t.registerClass(i,e.type)})}return t}function g(t,e){}e.parseClassType=s,e.enableClassExtend=u,e.enableClassCheck=h,e.enableClassManagement=p,e.setReadOnly=g},"627c":function(t,e,i){var n=i("3eba"),r=i("2306"),a=i("f934"),o=a.getLayoutRect;n.extendComponentModel({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),n.extendComponentView({type:"title",render:function(t,e,i){if(this.group.removeAll(),t.get("show")){var n=this.group,a=t.getModel("textStyle"),s=t.getModel("subtextStyle"),l=t.get("textAlign"),u=t.get("textBaseline"),c=new r.Text({style:r.setTextStyle({},a,{text:t.get("text"),textFill:a.getTextColor()},{disableBox:!0}),z2:10}),h=c.getBoundingRect(),d=t.get("subtext"),f=new r.Text({style:r.setTextStyle({},s,{text:d,textFill:s.getTextColor(),y:h.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),p=t.get("link"),g=t.get("sublink"),v=t.get("triggerEvent",!0);c.silent=!p&&!v,f.silent=!g&&!v,p&&c.on("click",function(){window.open(p,"_"+t.get("target"))}),g&&f.on("click",function(){window.open(g,"_"+t.get("subtarget"))}),c.eventData=f.eventData=v?{componentType:"title",componentIndex:t.componentIndex}:null,n.add(c),d&&n.add(f);var m=n.getBoundingRect(),y=t.getBoxLayoutParams();y.width=m.width,y.height=m.height;var x=o(y,{width:i.getWidth(),height:i.getHeight()},t.get("padding"));l||(l=t.get("left")||t.get("right"),"middle"===l&&(l="center"),"right"===l?x.x+=x.width:"center"===l&&(x.x+=x.width/2)),u||(u=t.get("top")||t.get("bottom"),"center"===u&&(u="middle"),"bottom"===u?x.y+=x.height:"middle"===u&&(x.y+=x.height/2),u=u||"top"),n.attr("position",[x.x,x.y]);var _={textAlign:l,textVerticalAlign:u};c.setStyle(_),f.setStyle(_),m=n.getBoundingRect();var b=x.margin,w=t.getItemStyle(["color","opacity"]);w.fill=t.get("backgroundColor");var S=new r.Rect({shape:{x:m.x-b[3],y:m.y-b[0],width:m.width+b[1]+b[3],height:m.height+b[0]+b[2],r:t.get("borderRadius")},style:w,silent:!0});r.subPixelOptimizeRect(S),n.add(S)}}})},"640a":function(t,e,i){"use strict";i.d(e,"h",function(){return l}),i.d(e,"b",function(){return c}),i.d(e,"c",function(){return h}),i.d(e,"f",function(){return d}),i.d(e,"e",function(){return f}),i.d(e,"d",function(){return p}),i.d(e,"g",function(){return g}),i.d(e,"a",function(){return m});var n=i("cebc"),r=(i("a481"),i("ac6a"),i("456d"),i("96cf"),i("3b8d")),a=i("1f75");function o(){return a["a"].get("/brokers")}function s(){return a["a"].get("/stats")}function l(){return u.apply(this,arguments)}function u(){return u=Object(r["a"])(regeneratorRuntime.mark(function t(){var e,i,r,l,u;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,o();case 2:return e=t.sent,t.next=5,s();case 5:return i=t.sent,r={},e.forEach(function(t){r[t.node]=t}),l={},i.forEach(function(t){l[t.node]=t}),t.next=12,a["a"].get("/nodes");case 12:return u=t.sent,t.abrupt("return",u.map(function(t){var e=r[t.node]||{},i=l[t.node]||{};return Object(n["a"])({},e,i,t)}));case 14:case"end":return t.stop()}},t)})),u.apply(this,arguments)}function c(){return a["a"].get("/monitor/current_metrics")}function h(){return a["a"].get("/license_info")}function d(t,e){return!t&&e&&"basic"!==e?a["a"].get("/monitor/metrics/".concat(e)):t&&!e?a["a"].get("/nodes/".concat(t,"/monitor/metrics")):t&&e&&"basic"!==e?a["a"].get("/nodes/".concat(t,"/monitor/metrics/").concat(e)):a["a"].get("/monitor/metrics")}function f(t){return a["a"].get("/nodes/".concat(t,"/metrics"))}function p(t){return a["a"].get("/nodes/".concat(t,"/listeners"))}function g(t){return v.apply(this,arguments)}function v(){return v=Object(r["a"])(regeneratorRuntime.mark(function t(e){var i,r,o;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,a["a"].get("/brokers/".concat(e));case 2:return i=t.sent,t.next=5,a["a"].get("/nodes/".concat(e));case 5:return r=t.sent,t.next=8,a["a"].get("/nodes/".concat(e,"/stats"));case 8:return o=t.sent,t.abrupt("return",Object(n["a"])({},i,o,r));case 10:case"end":return t.stop()}},t)})),v.apply(this,arguments)}function m(){return y.apply(this,arguments)}function y(){return y=Object(r["a"])(regeneratorRuntime.mark(function t(){var e,i;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return e={client:{authSuccess:0,authFailed:0,connectSuccess:0},message:{received:0,sent:0,dropped:0},messageDrop:{expired:0,noSubscribers:0}},t.next=3,a["a"].get("/metrics");case 3:return i=t.sent,i.forEach(function(t){var i=t.metrics;e.client.connectSuccess+=i["client.connected"],e.client.authSuccess+=i["client.auth.success"],e.client.authFailed+=i["client.auth.failure"],e.message.received+=i["messages.received"],e.message.sent+=i["messages.sent"],e.message.dropped+=i["messages.dropped"],e.messageDrop.expired+=i["messages.dropped.expired"],e.messageDrop.noSubscribers+=i["messages.dropped.no_subscribers"]}),t.abrupt("return",e);case 6:case"end":return t.stop()}},t)})),y.apply(this,arguments)}},6679:function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("3eba")),a=i("cd33"),o=r.extendComponentView({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&a.fixValue(t),o.superApply(this,"render",arguments),s(this,t,e,i,n,!0)},updateAxisPointer:function(t,e,i,n,r){s(this,t,e,i,n,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),o.superApply(this,"remove",arguments)},dispose:function(t,e){l(this,e),o.superApply(this,"dispose",arguments)}});function s(t,e,i,n,r,s){var u=o.getAxisPointerClass(t.axisPointerClass);if(u){var c=a.getAxisPointerModel(e);c?(t._axisPointer||(t._axisPointer=new u)).render(e,c,n,s):l(t,n)}}function l(t,e,i){var n=t._axisPointer;n&&n.dispose(e,i),t._axisPointer=null}var u=[];o.registerAxisPointerClass=function(t,e){u[t]=e},o.getAxisPointerClass=function(t){return t&&u[t]};var c=o;t.exports=c},"66b9":function(t,e,i){},"67cc":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("3eba")),a=i("6d8b"),o=i("2306"),s=i("e7aa"),l=s.setLabel,u=i("4319"),c=i("b5c7"),h=i("cbe5"),d=["itemStyle","barBorderWidth"];a.extend(u.prototype,c);var f=r.extendChartView({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,r=this.group,a=t.getData(),s=this._data,l=t.coordinateSystem,u=l.getBaseAxis();"cartesian2d"===l.type?n=u.isHorizontal():"polar"===l.type&&(n="angle"===u.dim);var c=t.isAnimationEnabled()?t:null;a.diff(s).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),o=m[l.type](a,e,i),s=p[l.type](a,e,i,o,n,c);a.setItemGraphicEl(e,s),r.add(s),y(s,a,e,i,o,t,n,"polar"===l.type)}}).update(function(e,i){var u=s.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),d=m[l.type](a,e,h);u?o.updateProps(u,{shape:d},c,e):u=p[l.type](a,e,h,d,n,c,!0),a.setItemGraphicEl(e,u),r.add(u),y(u,a,e,h,d,t,n,"polar"===l.type)}else r.remove(u)}).remove(function(t){var e=s.getItemGraphicEl(t);"cartesian2d"===l.type?e&&g(t,c,e):e&&v(t,c,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),b(t,this.group)},_incrementalRenderLarge:function(t,e){b(e,this.group,!0)},dispose:a.noop,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?v(e.dataIndex,t,e):g(e.dataIndex,t,e)}):e.removeAll(),this._data=null}}),p={cartesian2d:function(t,e,i,n,r,s,l){var u=new o.Rect({shape:a.extend({},n)});if(s){var c=u.shape,h=r?"height":"width",d={};c[h]=0,d[h]=n[h],o[l?"updateProps":"initProps"](u,{shape:d},s,e)}return u},polar:function(t,e,i,n,r,s,l){var u=n.startAngle0?1:-1,o=n.height>0?1:-1;return{x:n.x+a*r/2,y:n.y+o*r/2,width:n.width-a*r,height:n.height-o*r}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}};function y(t,e,i,n,r,s,u,c){var h=e.getItemVisual(i,"color"),d=e.getItemVisual(i,"opacity"),f=n.getModel("itemStyle"),p=n.getModel("emphasis.itemStyle").getBarItemStyle();c||t.setShape("r",f.get("barBorderRadius")||0),t.useStyle(a.defaults({fill:h,opacity:d},f.getBarItemStyle()));var g=n.getShallow("cursor");g&&t.attr("cursor",g);var v=u?r.height>0?"bottom":"top":r.width>0?"left":"right";c||l(t.style,p,n,h,s,i,v),o.setHoverStyle(t,p)}function x(t,e){var i=t.get(d)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}var _=h.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,r=this.__valueIdx,a=0;ae+c&&u>n+c&&u>o+c||ut+c&&l>i+c&&l>a+c||l0&&u>0&&!d&&(s=0),s<0&&u<0&&!f&&(u=0));var v=e.ecModel;if(v&&"time"===o){var m,y=c("bar",v);if(r.each(y,function(t){m|=t.getBaseAxis()===e.axis}),m){var x=h(y),_=g(s,u,e,x);s=_.min,u=_.max}}return[s,u]}function g(t,e,i,n){var a=i.axis.getExtent(),o=a[1]-a[0],s=d(n,i.axis);if(void 0===s)return{min:t,max:e};var l=1/0;r.each(s,function(t){l=Math.min(t.offset,l)});var u=-1/0;r.each(s,function(t){u=Math.max(t.offset+t.width,u)}),l=Math.abs(l),u=Math.abs(u);var c=l+u,h=e-t,f=1-(l+u)/o,p=h/f-h;return e+=p*(u/c),t-=p*(l/c),{min:t,max:e}}function v(t,e){var i=p(t,e),n=null!=e.getMin(),r=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var o=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:r,minInterval:"interval"===o||"time"===o?e.get("minInterval"):null,maxInterval:"interval"===o||"time"===o?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function m(t,e){if(e=e||t.get("type"),e)switch(e){case"category":return new a(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new o;default:return(s.getClass(e)||o).create(t)}}function y(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function x(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"===typeof e?(e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e),e):"function"===typeof e?function(n,r){return null!=i&&(r=n-i),e(_(t,n),r)}:function(e){return t.scale.getLabel(e)}}function _(t,e){return"category"===t.type?t.scale.getLabel(e):e}function b(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,r,a="category"===t.type,o=i.getExtent();a?r=i.count():(n=i.getTicks(),r=n.length);var s,l=t.getLabelModel(),u=x(t),c=1;r>40&&(c=Math.ceil(r/40));for(var h=0;hi.blockIndex,a=r?i.step:null,o=n&&n.modDataCount,s=null!=o?Math.ceil(o/a):null;return{step:a,modBy:s,modDataCount:o}}},y.getPipeline=function(t){return this._pipelineMap.get(t)},y.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData(),r=n.count(),a=i.progressiveEnabled&&e.incrementalPrepareRender&&r>=i.threshold,o=t.get("large")&&r>=t.get("largeThreshold"),s="mod"===t.get("progressiveChunkMode")?r:null;t.pipelineContext=i.context={progressiveRender:a,modDataCount:s,large:o}},y.restorePipelines=function(t){var e=this,i=e._pipelineMap=s();t.eachSeries(function(t){var n=t.getProgressive(),r=t.uid;i.set(r,{id:r,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),L(e,t,t.dataTask)})},y.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;r(this._allHandlers,function(n){var r=t.get(n.uid)||t.set(n.uid,[]);n.reset&&b(this,n,r,e,i),n.overallReset&&w(this,n,r,e,i)},this)},y.prepareView=function(t,e,i,n){var r=t.renderTask,a=r.context;a.model=e,a.ecModel=i,a.api=n,r.__block=!t.incrementalPrepareRender,L(this,e,r)},y.performDataProcessorTasks=function(t,e){x(this,this._dataProcessorHandlers,t,e,{block:!0})},y.performVisualTasks=function(t,e,i){x(this,this._visualHandlers,t,e,i)},y.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},y.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var _=y.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function b(t,e,i,n,r){var a=i.seriesTaskMap||(i.seriesTaskMap=s()),o=e.seriesType,l=e.getTargetSeries;function u(i){var o=i.uid,s=a.get(o)||a.set(o,c({plan:I,reset:A,count:O}));s.context={model:i,ecModel:n,api:r,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},L(t,i,s)}e.createOnAllSeries?n.eachRawSeries(u):o?n.eachRawSeriesByType(o,u):l&&l(n,r).each(u);var h=t._pipelineMap;a.each(function(t,e){h.get(e)||(t.dispose(),a.removeKey(e))})}function w(t,e,i,n,a){var o=i.overallTask=i.overallTask||c({reset:S});o.context={ecModel:n,api:a,overallReset:e.overallReset,scheduler:t};var l=o.agentStubMap=o.agentStubMap||s(),u=e.seriesType,h=e.getTargetSeries,d=!0,f=e.modifyOutputEnd;function p(e){var i=e.uid,n=l.get(i);n||(n=l.set(i,c({reset:M,onDirty:T})),o.dirty()),n.context={model:e,overallProgress:d,modifyOutputEnd:f},n.agent=o,n.__block=d,L(t,e,n)}u?n.eachRawSeriesByType(u,p):h?h(n,a).each(p):(d=!1,r(n.getSeries(),p));var g=t._pipelineMap;l.each(function(t,e){g.get(e)||(t.dispose(),o.dirty(),l.removeKey(e))})}function S(t){t.overallReset(t.ecModel,t.api,t.payload)}function M(t,e){return t.overallProgress&&C}function C(){this.agent.dirty(),this.getDownstream().dirty()}function T(){this.agent&&this.agent.dirty()}function I(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function A(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=v(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?a(e,function(t,e){return k(e)}):D}var D=k(0);function k(t){return function(e,i){var n=i.data,r=i.resetDefines[t];if(r&&r.dataEach)for(var a=e.start;a=0;o--)a=n.merge(a,e[o],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});function g(t){var e=[];return n.each(p.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=n.map(e,function(t){return l(t).main}),"dataset"!==t&&n.indexOf(e,"dataset")<=0&&e.unshift("dataset"),e}s(p,{registerWhenExtend:!0}),a.enableSubTypeDefaulter(p),a.enableTopologicalTravel(p,g),n.mixin(p,d);var v=p;t.exports=v},"6d8b":function(t,e){var i={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},n={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},r=Object.prototype.toString,a=Array.prototype,o=a.forEach,s=a.filter,l=a.slice,u=a.map,c=a.reduce,h={};function d(t,e){"createCanvas"===t&&(y=null),h[t]=e}function f(t){if(null==t||"object"!==typeof t)return t;var e=t,a=r.call(t);if("[object Array]"===a){if(!X(t)){e=[];for(var o=0,s=t.length;o.8?"left":h[0]<-.8?"right":"center",g=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=l/2,y=(d=s.tangentAt(m),[d[1],-d[0]]),x=s.pointAt(m);y[1]>0&&(y[0]=-y[0],y[1]=-y[1]),f=[x[0]+y[0]*v,x[1]+y[1]*v],p="center",g="bottom";var _=-Math.atan2(d[1],d[0]);c[0].8?"right":h[0]<-.8?"left":"center",g=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||g,textAlign:n.__textAlign||p},position:f,scale:[a,a]})}}}}function v(t,e,i){s.Group.call(this),this._createLine(t,e,i)}var m=v.prototype;m.beforeUpdate=g,m._createLine=function(t,e,i){var r=t.hostModel,a=t.getItemLayout(e),o=f(a);o.shape.percent=0,s.initProps(o,{shape:{percent:1}},r,e),this.add(o);var l=new s.Text({name:"label",lineLabelOriginalOpacity:1});this.add(l),n.each(c,function(i){var n=d(i,t,e);this.add(n),this[h(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},m.updateData=function(t,e,i){var r=t.hostModel,a=this.childOfName("line"),o=t.getItemLayout(e),l={shape:{}};p(l.shape,o),s.updateProps(a,l,r,e),n.each(c,function(i){var n=t.getItemVisual(e,i),r=h(i);if(this[r]!==n){this.remove(this.childOfName(i));var a=d(i,t,e);this.add(a)}this[r]=n},this),this._updateCommonStl(t,e,i)},m._updateCommonStl=function(t,e,i){var r=t.hostModel,a=this.childOfName("line"),o=i&&i.lineStyle,l=i&&i.hoverLineStyle,h=i&&i.labelModel,d=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var f=t.getItemModel(e);o=f.getModel("lineStyle").getLineStyle(),l=f.getModel("emphasis.lineStyle").getLineStyle(),h=f.getModel("label"),d=f.getModel("emphasis.label")}var p=t.getItemVisual(e,"color"),g=n.retrieve3(t.getItemVisual(e,"opacity"),o.opacity,1);a.useStyle(n.defaults({strokeNoScale:!0,fill:"none",stroke:p,opacity:g},o)),a.hoverStyle=l,n.each(c,function(t){var e=this.childOfName(t);e&&(e.setColor(p),e.setStyle({opacity:g}))},this);var v,m,y=h.getShallow("show"),x=d.getShallow("show"),_=this.childOfName("label");if((y||x)&&(v=p||"#000",m=r.getFormattedLabel(e,"normal",t.dataType),null==m)){var b=r.getRawValue(e);m=null==b?t.getName(e):isFinite(b)?u(b):b}var w=y?m:null,S=x?n.retrieve2(r.getFormattedLabel(e,"emphasis",t.dataType),m):null,M=_.style;null==w&&null==S||(s.setTextStyle(_.style,h,{text:w},{autoColor:v}),_.__textAlign=M.textAlign,_.__verticalAlign=M.textVerticalAlign,_.__position=h.get("position")||"middle"),_.hoverStyle=null!=S?{text:S,textFill:d.getTextColor(!0),fontStyle:d.getShallow("fontStyle"),fontWeight:d.getShallow("fontWeight"),fontSize:d.getShallow("fontSize"),fontFamily:d.getShallow("fontFamily")}:{text:null},_.ignore=!y&&!x,s.setHoverStyle(this)},m.highlight=function(){this.trigger("emphasis")},m.downplay=function(){this.trigger("normal")},m.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},m.setLinePoints=function(t){var e=this.childOfName("line");p(e.shape,t),e.dirty()},n.inherits(v,s.Group);var y=v;t.exports=y},"7e63":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=r.each,o=r.filter,s=r.map,l=r.isArray,u=r.indexOf,c=r.isObject,h=r.isString,d=r.createHashMap,f=r.assert,p=r.clone,g=r.merge,v=r.extend,m=r.mixin,y=i("e0d3"),x=i("4319"),_=i("6cb7"),b=i("8971"),w=i("e47b"),S=i("0f99"),M=S.resetSourceDefaulter,C="\0_ec_inner",T=x.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new x(i),this._optionManager=n},setOption:function(t,e){f(!(C in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):D.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var r=i.getTimelineOption(this);r&&(this.mergeOption(r),e=!0)}if(!t||"recreate"===t||"media"===t){var o=i.getMediaOption(this,this._api);o.length&&a(o,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,i=this._componentsMap,n=[];function r(n,r){var o=y.normalizeToArray(t[n]),s=y.mappingToExists(i.get(n),o);y.makeIdAndName(s),a(s,function(t,e){var i=t.option;c(i)&&(t.keyInfo.mainType=n,t.keyInfo.subType=O(n,i,t.exist))});var l=k(i,r);e[n]=[],i.set(n,[]),a(s,function(t,r){var a=t.exist,o=t.option;if(f(c(o)||a,"Empty component definition"),o){var s=_.getClass(n,t.keyInfo.subType,!0);if(a&&a instanceof s)a.name=t.keyInfo.name,a.mergeOption(o,this),a.optionUpdated(o,!1);else{var u=v({dependentModels:l,componentIndex:r},t.keyInfo);a=new s(o,this,this,u),v(a,u),a.init(o,this,this,u),a.optionUpdated(null,!0)}}else a.mergeOption({},this),a.optionUpdated({},!1);i.get(n)[r]=a,e[n][r]=a.option},this),"series"===n&&L(this,i.get("series"))}M(this),a(t,function(t,i){null!=t&&(_.hasClass(i)?i&&n.push(i):e[i]=null==e[i]?p(t):g(e[i],t,!0))}),_.topologicalTravel(n,_.getAllClassMainTypes(),r,this),this._seriesIndicesMap=d(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=p(this.option);return a(t,function(e,i){if(_.hasClass(i)){e=y.normalizeToArray(e);for(var n=e.length-1;n>=0;n--)y.isIdInner(e[n])&&e.splice(n,1);t[i]=e}}),delete t[C],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i,n=t.index,r=t.id,a=t.name,c=this._componentsMap.get(e);if(!c||!c.length)return[];if(null!=n)l(n)||(n=[n]),i=o(s(n,function(t){return c[t]}),function(t){return!!t});else if(null!=r){var h=l(r);i=o(c,function(t){return h&&u(r,t.id)>=0||!h&&t.id===r})}else if(null!=a){var d=l(a);i=o(c,function(t){return d&&u(a,t.name)>=0||!d&&t.name===a})}else i=c.slice();return P(i,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=a(e),r=n?this.queryComponents(n):this._componentsMap.get(i);return s(P(r,t));function a(t){var e=i+"Index",n=i+"Id",r=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[r]?null:{mainType:i,index:t[e],id:t[n],name:t[r]}}function s(e){return t.filter?o(e,t.filter):e}},eachComponent:function(t,e,i){var n=this._componentsMap;if("function"===typeof t)i=e,e=t,n.each(function(t,n){a(t,function(t,r){e.call(i,n,t,r)})});else if(h(t))a(n.get(t),e,i);else if(c(t)){var r=this.findComponents(t);a(r,e,i)}},getSeriesByName:function(t){var e=this._componentsMap.get("series");return o(e,function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){var e=this._componentsMap.get("series");return o(e,function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){E(this),a(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){a(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){E(this),a(this._seriesIndices,function(n){var r=this._componentsMap.get("series")[n];r.subType===t&&e.call(i,r,n)},this)},eachRawSeriesByType:function(t,e,i){return a(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return E(this),null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){E(this);var i=o(this._componentsMap.get("series"),t,e);L(this,i)},restoreData:function(t){var e=this._componentsMap;L(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),_.topologicalTravel(i,_.getAllClassMainTypes(),function(i,n){a(e.get(i),function(e){("series"!==i||!I(e,t))&&e.restoreData()})})}});function I(t,e){if(e){var i=e.seiresIndex,n=e.seriesId,r=e.seriesName;return null!=i&&t.componentIndex!==i||null!=n&&t.id!==n||null!=r&&t.name!==r}}function A(t,e){var i=t.color&&!t.colorLayer;a(e,function(e,n){"colorLayer"===n&&i||_.hasClass(n)||("object"===typeof e?t[n]=t[n]?g(t[n],e,!1):p(e):null==t[n]&&(t[n]=e))})}function D(t){t=t,this.option={},this.option[C]=1,this._componentsMap=d({series:[]}),this._seriesIndices,this._seriesIndicesMap,A(t,this._theme.option),g(t,b,!1),this.mergeOption(t)}function k(t,e){l(e)||(e=e?[e]:[]);var i={};return a(e,function(e){i[e]=(t.get(e)||[]).slice()}),i}function O(t,e,i){var n=e.type?e.type:i?i.subType:_.determineSubType(t,e);return n}function L(t,e){t._seriesIndicesMap=d(t._seriesIndices=s(e,function(t){return t.componentIndex})||[])}function P(t,e){return e.hasOwnProperty("subType")?o(t,function(t){return t.subType===e.subType}):t}function E(t){}m(T,w);var R=T;t.exports=R},"7f91":function(t,e,i){var n=i("2306"),r=i("401b"),a=n.Line.prototype,o=n.BezierCurve.prototype;function s(t){return isNaN(+t.cpx1)||isNaN(+t.cpy1)}var l=n.extendShape({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(s(e)?a:o).buildPath(t,e)},pointAt:function(t){return s(this.shape)?a.pointAt.call(this,t):o.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=s(e)?[e.x2-e.x1,e.y2-e.y1]:o.tangentAt.call(this,t);return r.normalize(i,i)}});t.exports=l},"7f96":function(t,e){function i(t,e,i){return{seriesType:t,performRawSeries:!0,reset:function(t,n,r){var a=t.getData(),o=t.get("symbol")||e,s=t.get("symbolSize"),l=t.get("symbolKeepAspect");if(a.setVisual({legendSymbol:i||o,symbol:o,symbolSize:s,symbolKeepAspect:l}),!n.isSeriesFiltered(t)){var u="function"===typeof s;return{dataEach:a.hasItemOption||u?c:null}}function c(e,i){if("function"===typeof s){var n=t.getRawValue(i),r=t.getDataParams(i);e.setItemVisual(i,"symbolSize",s(n,r))}if(e.hasItemOption){var a=e.getItemModel(i),o=a.getShallow("symbol",!0),l=a.getShallow("symbolSize",!0),u=a.getShallow("symbolKeepAspect",!0);null!=o&&e.setItemVisual(i,"symbol",o),null!=l&&e.setItemVisual(i,"symbolSize",l),null!=u&&e.setItemVisual(i,"symbolKeepAspect",u)}}}}}t.exports=i},"80f0":function(t,e){function i(t){return t}function n(t,e,n,r,a){this._old=t,this._new=e,this._oldKeyGetter=n||i,this._newKeyGetter=r||i,this.context=a}function r(t,e,i,n,r){for(var a=0;a=0){var u=a.indexOf(s),c=a.substr(l+o.length,u-l-o.length);c.indexOf("sub")>-1?n["marker"+c]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[c],textOffset:[3,0]}:n["marker"+c]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[c]},a=a.substr(u+1),l=a.indexOf("{marker")}this.el=new r({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var h=this;this.el.on("mouseover",function(){h._enterable&&(clearTimeout(h._hideTimeout),h._show=!0),h._inContent=!0}),this.el.on("mouseout",function(){h._enterable&&h._show&&h.hideLater(h._hideDelay),h._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el.hide(),this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(n.bind(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var o=a;t.exports=o},8344:function(t,e,i){var n=i("6d8b"),r=i("f706"),a=i("3842"),o=i("6179"),s=i("923d"),l=i("88f0");function u(t,e,i){var n=e.coordinateSystem;t.each(function(r){var o,s=t.getItemModel(r),l=a.parsePercent(s.get("x"),i.getWidth()),u=a.parsePercent(s.get("y"),i.getHeight());if(isNaN(l)||isNaN(u)){if(e.getMarkerPosition)o=e.getMarkerPosition(t.getValues(t.dimensions,r));else if(n){var c=t.get(n.dimensions[0],r),h=t.get(n.dimensions[1],r);o=n.dataToPoint([c,h])}}else o=[l,u];isNaN(l)||(o[0]=l),isNaN(u)||(o[1]=u),t.setItemLayout(r,o)})}var c=l.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(u(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var a=t.coordinateSystem,o=t.id,s=t.getData(),l=this.markerGroupMap,c=l.get(o)||l.set(o,new r),d=h(a,t,e);e.setData(d),u(e.getData(),t,n),d.each(function(t){var i=d.getItemModel(t),n=i.getShallow("symbolSize");"function"===typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),d.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||s.getVisual("color"),symbol:i.getShallow("symbol")})}),c.updateData(d),this.group.add(c.group),d.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),c.__keep=!0,c.group.silent=e.get("silent")||t.get("silent")}});function h(t,e,i){var r;r=t?n.map(t&&t.dimensions,function(t){var i=e.getData().getDimensionInfo(e.getData().mapDimension(t))||{};return n.defaults({name:t},i)}):[{name:"value",type:"float"}];var a=new o(r,i),l=n.map(i.get("data"),n.curry(s.dataTransform,e));return t&&(l=n.filter(l,n.curry(s.dataFilter,t))),a.initData(l,null,t?s.dimValueGetter:function(t){return t.value}),a}t.exports=c},"843e":function(t,e,i){var n=i("6d8b"),r=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"];function a(t){n.each(r,function(e){this[e]=n.bind(t[e],t)},this)}var o=a;t.exports=o},"84ce":function(t,e,i){var n=i("6d8b"),r=n.each,a=n.map,o=i("3842"),s=o.linearMap,l=o.getPixelPrecision,u=i("e073"),c=u.createAxisTicks,h=u.createAxisLabels,d=u.calculateCategoryInterval,f=[0,1],p=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};function g(t,e){var i=t[1]-t[0],n=e,r=i/n/2;t[0]+=r,t[1]-=r}function v(t,e,i,n,a){var o=e.length;if(t.onBand&&!n&&o){var s,l=t.getExtent();if(1===o)e[0].coord=l[0],s=e[1]={coord:l[0]};else{var u=e[1].coord-e[0].coord;r(e,function(t){t.coord-=u/2;var e=e||0;e%2>0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[o-1].coord+u},e.push(s)}var c=l[0]>l[1];h(e[0].coord,l[0])&&(a?e[0].coord=l[0]:e.shift()),a&&h(l[0],e[0].coord)&&e.unshift({coord:l[0]}),h(l[1],s.coord)&&(a?s.coord=l[1]:e.pop()),a&&h(s.coord,l[1])&&e.push({coord:l[1]})}function h(t,e){return c?t>e:t=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return l(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&(i=i.slice(),g(i,n.count())),s(t,f,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&(i=i.slice(),g(i,n.count()));var r=s(t,i,f,e);return this.scale.scale(r)},pointToData:function(t,e){},getTicksCoords:function(t){t=t||{};var e=t.tickModel||this.getTickModel(),i=c(this,e),n=i.ticks,r=a(n,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return v(this,r,i.tickCategoryInterval,o,t.clamp),r},getViewLabels:function(){return h(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return d(this)}};var m=p;t.exports=m},"84d5":function(t,e,i){var n=i("3eba"),r=i("6d8b"),a=i("4319"),o=i("e0d3"),s=o.isNameSpecified,l=n.extendComponentModel({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){l.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}}),u=l;t.exports=u},"857d":function(t,e){var i=2*Math.PI;function n(t){return t%=i,t<0&&(t+=i),t}e.normalizeRadian=n},"862d":function(t,e,i){var n=i("6d8b"),r=n.createHashMap,a=n.each,o=n.isString,s=n.defaults,l=n.extend,u=n.isObject,c=n.clone,h=i("e0d3"),d=h.normalizeToArray,f=i("0f99"),p=f.guessOrdinal,g=i("ec6f"),v=i("2f45"),m=v.OTHER_DIMENSIONS;function y(t,e,i){g.isInstance(e)||(e=g.seriesDataToSource(e)),i=i||{},t=(t||[]).slice();for(var n=(i.dimsDef||[]).slice(),h=r(i.encodeDef),f=r(),v=r(),y=[],b=x(e,t,n,i.dimCount),w=0;we&&a>n||ar?o:0}t.exports=i},"87b1":function(t,e,i){var n=i("cbe5"),r=i("4fac"),a=n.extend({type:"polygon",shape:{points:null,smooth:!1,smoothConstraint:null},buildPath:function(t,e){r.buildPath(t,e,!0)}});t.exports=a},"87c3":function(t,e,i){var n=i("6d8b"),r=n.map,a=i("cccd"),o=i("ee1a"),s=o.isDimensionStacked;function l(t){return{seriesType:t,plan:a(),reset:function(t){var e=t.getData(),i=t.coordinateSystem,n=t.pipelineContext,a=n.large;if(i){var o=r(i.dimensions,function(t){return e.mapDimension(t)}).slice(0,2),l=o.length,u=e.getCalculationInfo("stackResultDimension");return s(e,o[0])&&(o[0]=u),s(e,o[1])&&(o[1]=u),l&&{progress:c}}function c(t,e){for(var n=t.end-t.start,r=a&&new Float32Array(n*l),s=t.start,u=0,c=[],h=[];s=0?h():c=setTimeout(h,-r),l=n};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){s=t},d}function o(t,e,o,s){var l=t[e];if(l){var u=l[i]||l,c=l[r],h=l[n];if(h!==o||c!==s){if(null==o||!s)return t[e]=u;l=t[e]=a(u,o,"debounce"===s),l[i]=u,l[r]=s,l[n]=o}return l}}function s(t,e){var n=t[e];n&&n[i]&&(t[e]=n[i])}e.throttle=a,e.createOrUpdate=o,e.clear=s},"88f0":function(t,e,i){var n=i("3eba"),r=i("6d8b"),a=n.extendComponentView({type:"marker",init:function(){this.markerGroupMap=r.createHashMap()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var r=this.type+"Model";e.eachSeries(function(t){var n=t[r];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});t.exports=a},8918:function(t,e,i){var n=i("6d8b"),r=i("625e"),a=r.parseClassType,o=0;function s(t){return[t||"",o++,Math.random().toFixed(5)].join("_")}function l(t){var e={};return t.registerSubTypeDefaulter=function(t,i){t=a(t),e[t.main]=i},t.determineSubType=function(i,n){var r=n.type;if(!r){var o=a(i).main;t.hasSubTypes(i)&&e[o]&&(r=e[o](n))}return r},t}function u(t,e){function i(t){var i={},o=[];return n.each(t,function(s){var l=r(i,s),u=l.originalDeps=e(s),c=a(u,t);l.entryCount=c.length,0===l.entryCount&&o.push(s),n.each(c,function(t){n.indexOf(l.predecessor,t)<0&&l.predecessor.push(t);var e=r(i,t);n.indexOf(e.successor,t)<0&&e.successor.push(s)})}),{graph:i,noEntryList:o}}function r(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function a(t,e){var i=[];return n.each(t,function(t){n.indexOf(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,r,a){if(t.length){var o=i(e),s=o.graph,l=o.noEntryList,u={};n.each(t,function(t){u[t]=!0});while(l.length){var c=l.pop(),h=s[c],d=!!u[c];d&&(r.call(a,c,h.originalDeps.slice()),delete u[c]),n.each(h.successor,d?p:f)}n.each(u,function(){throw new Error("Circle dependency may exists")})}function f(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}function p(t){u[t]=!0,f(t)}}}e.getUID=s,e.enableSubTypeDefaulter=l,e.enableTopologicalTravel=u},8971:function(t,e){var i="";"undefined"!==typeof navigator&&(i=navigator.platform||"");var n={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:i.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};t.exports=n},"897a":function(t,e,i){var n=i("22d1"),r=[["shadowBlur",0],["shadowColor","#000"],["shadowOffsetX",0],["shadowOffsetY",0]];function a(t){return n.browser.ie&&n.browser.version>=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var a=0;ae[1]&&(e[1]=t[1]),l.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=o.getIntervalPrecision(t)},getTicks:function(){return o.intervalScaleGetTicks(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=n.getPrecisionSafe(t)||0:"auto"===i&&(i=this._intervalPrecision),t=s(t,i,!0),r.addCommas(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,r=n[1]-n[0];if(isFinite(r)){r<0&&(r=-r,n.reverse());var a=o.intervalScaleNiceTicks(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var r=this._interval;t.fixMin||(e[0]=s(Math.floor(e[0]/r)*r)),t.fixMax||(e[1]=s(Math.ceil(e[1]/r)*r))}});l.create=function(){return new l};var u=l;t.exports=u},"8b7f":function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=r.createHashMap,o=(r.retrieve,r.each);function s(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:a(),categoryAxisMap:a()},n=l[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}var l={cartesian2d:function(t,e,i,n){var r=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",r),i.set("y",a),u(r)&&(n.set("x",r),e.firstCategoryDimIndex=0),u(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var r=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",r),u(r)&&(n.set("single",r),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var r=t.getReferringComponents("polar")[0],a=r.findAxisModel("radiusAxis"),o=r.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",o),u(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),u(o)&&(n.set("angle",o),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var r=t.ecModel,a=r.getComponent("parallel",t.get("parallelIndex")),s=e.coordSysDims=a.dimensions.slice();o(a.parallelAxisIndex,function(t,a){var o=r.getComponent("parallelAxis",t),l=s[a];i.set(l,o),u(o)&&null==e.firstCategoryDimIndex&&(n.set(l,o),e.firstCategoryDimIndex=a)})}};function u(t){return"category"===t.get("type")}e.getCoordSysDefineBySeries=s},"8c2a":function(t,e,i){var n=i("6d8b"),r=i("e0d8"),a=i("3842"),o=i("89e3"),s=r.prototype,l=o.prototype,u=a.getPrecisionSafe,c=a.round,h=Math.floor,d=Math.ceil,f=Math.pow,p=Math.log,g=r.extend({type:"log",base:10,$constructor:function(){r.apply(this,arguments),this._originalScale=new o},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return n.map(l.getTicks.call(this),function(n){var r=a.round(f(this.base,n));return r=n===e[0]&&t.__fixMin?v(r,i[0]):r,r=n===e[1]&&t.__fixMax?v(r,i[1]):r,r},this)},getLabel:l.getLabel,scale:function(t){return t=s.scale.call(this,t),f(this.base,t)},setExtent:function(t,e){var i=this.base;t=p(t)/p(i),e=p(e)/p(i),l.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=s.getExtent.call(this);e[0]=f(t,e[0]),e[1]=f(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=v(e[0],n[0])),i.__fixMax&&(e[1]=v(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=p(t[0])/p(e),t[1]=p(t[1])/p(e),s.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=a.quantity(i),r=t/i*n;r<=.5&&(n*=10);while(!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0)n*=10;var o=[a.round(d(e[0]/n)*n),a.round(h(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){l.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});function v(t,e){return c(t,u(e))}n.each(["contain","normalize"],function(t){g.prototype[t]=function(e){return e=p(e)/p(this.base),s[t].call(this,e)}}),g.create=function(){return new g};var m=g;t.exports=m},"8d32":function(t,e,i){var n=i("cbe5"),r=n.extend({type:"arc",shape:{cx:0,cy:0,r:0,startAngle:0,endAngle:2*Math.PI,clockwise:!0},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.cx,n=e.cy,r=Math.max(e.r,0),a=e.startAngle,o=e.endAngle,s=e.clockwise,l=Math.cos(a),u=Math.sin(a);t.moveTo(l*r+i,u*r+n),t.arc(i,n,r,a,o,!s)}});t.exports=r},"8e43":function(t,e,i){var n=i("6d8b"),r=n.createHashMap,a=n.isObject,o=n.map;function s(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this._map}s.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&o(i,c);return new s({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var l=s.prototype;function u(t){return t._map||(t._map=r(t.categories))}function c(t){return a(t)&&null!=t.value?t.value:t+""}l.getOrdinal=function(t){return u(this).get(t)},l.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!==typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=u(this);return e=n.get(t),null==e&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var h=s;t.exports=h},"8ed2":function(t,e,i){i("48c7");var n=i("6cb7"),r=n.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});t.exports=r},"903c":function(t,e){function i(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;i=0&&(l[s]=+l[s].toFixed(f)),l}var h=n.curry,d={min:h(c,"min"),max:h(c,"max"),average:h(c,"average")};function f(t,e){var i=t.getData(),r=t.coordinateSystem;if(e&&!u(e)&&!n.isArray(e.coord)&&r){var a=r.dimensions,o=p(e,i,r,t);if(e=n.clone(e),e.type&&d[e.type]&&o.baseAxis&&o.valueAxis){var l=s(a,o.baseAxis.dim),c=s(a,o.valueAxis.dim);e.coord=d[e.type](i,o.baseDataDim,o.valueDataDim,l,c),e.value=e.coord[c]}else{for(var h=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],f=0;f<2;f++)d[h[f]]&&(h[f]=y(i,i.mapDimension(a[f]),h[f]));e.coord=h}}return e}function p(t,e,i,n){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=i.getAxis(g(n,r.valueDataDim)),r.baseAxis=i.getOtherAxis(r.valueAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim)):(r.baseAxis=n.getBaseAxis(),r.valueAxis=i.getOtherAxis(r.baseAxis),r.baseDataDim=e.mapDimension(r.baseAxis.dim),r.valueDataDim=e.mapDimension(r.valueAxis.dim)),r}function g(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var r=0;ra&&(c=s.interval=a);var h=s.intervalPrecision=o(c),d=s.niceTickExtent=[r(Math.ceil(t[0]/c)*c,h),r(Math.floor(t[1]/c)*c,h)];return l(d,t),s}function o(t){return n.getPrecisionSafe(t)+2}function s(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function l(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),s(t,0,e),s(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function u(t,e,i,n){var a=[];if(!t)return a;var o=1e4;e[0]o)return[]}return e[1]>(a.length?a[a.length-1]:i[1])&&a.push(e[1]),a}e.intervalScaleNiceTicks=a,e.getIntervalPrecision=o,e.fixExtent=l,e.intervalScaleGetTicks=u},"94b1":function(t,e,i){var n=i("3eba"),r=i("6d8b"),a=i("9d57"),o=a.layout,s=a.largeLayout;i("5aa9"),i("17b8"),i("67cc"),i("01ed"),n.registerLayout(r.curry(o,"bar")),n.registerLayout(s),n.registerVisual({seriesType:"bar",reset:function(t){t.getData().setVisual("legendSymbol","roundRect")}})},"95a8":function(t,e,i){var n=i("3eba");i("1953"),i("307d"),n.registerPreprocessor(function(t){t.markLine=t.markLine||{}})},9680:function(t,e){function i(t,e,i,n,r,a,o){if(0===r)return!1;var s=r,l=0,u=t;if(o>e+s&&o>n+s||ot+s&&a>i+s||a=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new l(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},l.create=function(t){return new l(t.x,t.y,t.width,t.height)};var u=l;t.exports=u},"98b7":function(t,e){var i="undefined"!==typeof window&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(t){setTimeout(t,16)};t.exports=i},"98e7":function(t,e,i){var n=i("6d8b"),r=n.createHashMap;function a(t){return{getTargetSeries:function(e){var i={},n=r();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},r=t.getData();r.each(function(t){var e=r.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],o=null!=a&&r.getItemVisual(a,"color",!0);if(o)i.setItemVisual(e,"color",o);else{var s=i.getItemModel(e),l=s.get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",l),null!=a&&r.setItemVisual(a,"color",l)}})}}}t.exports=a},"998c":function(t,e,i){var n=i("6d8b"),r=i("2306"),a=Math.PI;function o(t,e){e=e||{},n.defaults(e,{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new r.Rect({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),o=new r.Arc({shape:{startAngle:-a/2,endAngle:-a/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),s=new r.Rect({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});o.animateShape(!0).when(1e3,{endAngle:3*a/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:3*a/2}).delay(300).start("circularInOut");var l=new r.Group;return l.add(o),l.add(s),l.add(i),l.resize=function(){var e=t.getWidth()/2,n=t.getHeight()/2;o.setShape({cx:e,cy:n});var r=o.shape.r;s.setShape({x:e-r,y:n-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},l.resize(),l}t.exports=o},"9bdb":function(t,e,i){var n=i("282b"),r=n([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),a={getAreaStyle:function(t,e){return r(this,t,e)}};t.exports=a},"9c2c":function(t,e,i){var n=i("401b"),r=n.min,a=n.max,o=n.scale,s=n.distance,l=n.add,u=n.clone,c=n.sub;function h(t,e,i,n){var h,d,f,p,g=[],v=[],m=[],y=[];if(n){f=[1/0,1/0],p=[-1/0,-1/0];for(var x=0,_=t.length;x<_;x++)r(f,f,t[x]),a(p,p,t[x]);r(f,f,n[0]),a(p,p,n[1])}for(x=0,_=t.length;x<_;x++){var b=t[x];if(i)h=t[x?x-1:_-1],d=t[(x+1)%_];else{if(0===x||x===_-1){g.push(u(t[x]));continue}h=t[x-1],d=t[x+1]}c(v,d,h),o(v,v,e);var w=s(b,h),S=s(b,d),M=w+S;0!==M&&(w/=M,S/=M),o(m,v,-w),o(y,v,S);var C=l([],b,m),T=l([],b,y);n&&(a(C,C,f),r(C,C,p),a(T,T,f),r(T,T,p)),g.push(C),g.push(T)}return i&&g.push(g.shift()),g}t.exports=h},"9cf9":function(t,e){var i=Math.round;function n(t,e,n){var r=n&&n.lineWidth;if(e&&r){var o=e.x1,s=e.x2,l=e.y1,u=e.y2;i(2*o)===i(2*s)?t.x1=t.x2=a(o,r,!0):(t.x1=o,t.x2=s),i(2*l)===i(2*u)?t.y1=t.y2=a(l,r,!0):(t.y1=l,t.y2=u)}}function r(t,e,i){var n=i&&i.lineWidth;if(e&&n){var r=e.x,o=e.y,s=e.width,l=e.height;t.x=a(r,n,!0),t.y=a(o,n,!0),t.width=Math.max(a(r+s,n,!1)-t.x,0===s?0:1),t.height=Math.max(a(o+l,n,!1)-t.y,0===l?0:1)}}function a(t,e,n){var r=i(2*t);return(r+i(e))%2===0?r/2:(r+(n?1:-1))/2}e.subPixelOptimizeLine=n,e.subPixelOptimizeRect=r,e.subPixelOptimize=a},"9d57":function(t,e,i){var n=i("6d8b"),r=i("3842"),a=r.parsePercent,o=i("ee1a"),s=o.isDimensionStacked,l=i("cccd"),u="__ec_stack_",c=.5,h="undefined"!==typeof Float32Array?Float32Array:Array;function d(t){return t.get("stack")||u+t.seriesIndex}function f(t){return t.dim+t.index}function p(t){var e=[],i=t.axis,r="axis0";if("category"===i.type){for(var a=i.getBandWidth(),o=0;o=0?"p":"n",O=_;if(y&&(a[l][C]||(a[l][C]={p:_,n:_}),O=a[l][C][k]),x){var L=i.dataToPoint([M,C]);T=O,I=L[1]+c,A=L[0]-_,D=h,Math.abs(A)c||(u=c),{progress:d}}function d(t,e){var c,d=new h(2*t.count),f=[],p=[],g=0;while(null!=(c=t.next()))p[l]=e.get(a,c),p[1-l]=e.get(o,c),f=i.dataToPoint(p,null,f),d[g++]=f[0],d[g++]=f[1];e.setLayout({largePoints:d,barWidth:u,valueAxisStart:S(n,r,!1),valueAxisHorizontal:s})}}};function b(t){return t.coordinateSystem&&"cartesian2d"===t.coordinateSystem.type}function w(t){return t.pipelineContext&&t.pipelineContext.large}function S(t,e,i){var n,r,a=e.getGlobalExtent();a[0]>a[1]?(n=a[1],r=a[0]):(n=a[0],r=a[1]);var o=e.toGlobalCoord(e.dataToCoord(0));return or&&(o=r),o}e.getLayoutOnAxis=p,e.prepareLayoutBarSeries=g,e.makeColumnLayout=v,e.retrieveColumnLayout=y,e.layout=x,e.largeLayout=_},"9e2e":function(t,e,i){var n=i("a73c"),r=i("9850"),a=i("82eb"),o=a.WILL_BE_RESTORED,s=new r,l=function(){};l.prototype={constructor:l,drawRectText:function(t,e){var i=this.style;e=i.textRect||e,this.__dirty&&n.normalizeTextStyle(i,!0);var r=i.text;if(null!=r&&(r+=""),n.needDrawText(r,i)){t.save();var a=this.transform;i.transformText?this.setTransform(t):a&&(s.copy(e),s.applyTransform(a),e=s),n.renderText(this,t,r,i,e,o),t.restore()}}};var u=l;t.exports=u},"9e47":function(t,e,i){var n=i("6d8b"),r=i("71ad"),a=i("6cb7"),o=i("f934"),s=o.getLayoutParams,l=o.mergeLayoutParam,u=i("8e43"),c=["value","category","time","log"];function h(t,e,i,o){n.each(c,function(a){e.extend({type:t+"Axis."+a,mergeDefaultAndTheme:function(e,r){var o=this.layoutMode,u=o?s(e):{},c=r.getTheme();n.merge(e,c.get(a+"Axis")),n.merge(e,this.getDefaultOption()),e.type=i(t,e),o&&l(e,u,o)},optionUpdated:function(){var t=this.option;"category"===t.type&&(this.__ordinalMeta=u.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:n.mergeAll([{},r[a+"Axis"],o],!0)})}),a.registerSubTypeDefaulter(t+"Axis",n.curry(i,t))}t.exports=h},"9f51":function(t,e,i){var n=i("857d"),r=n.normalizeRadian,a=2*Math.PI;function o(t,e,i,n,o,s,l,u,c){if(0===l)return!1;var h=l;u-=t,c-=e;var d=Math.sqrt(u*u+c*c);if(d-h>i||d+ho&&(o+=a);var p=Math.atan2(c,u);return p<0&&(p+=a),p>=n&&p<=o||p+a>=n&&p+a<=o}e.containStroke=o},"9f82":function(t,e,i){var n=i("ee1a"),r=n.isDimensionStacked,a=i("6d8b"),o=a.map;function s(t,e,i){var n,a=t.getBaseAxis(),s=t.getOtherAxis(a),u=l(s,i),c=a.dim,h=s.dim,d=e.mapDimension(h),f=e.mapDimension(c),p="x"===h||"radius"===h?1:0,g=o(t.dimensions,function(t){return e.mapDimension(t)}),v=e.getCalculationInfo("stackResultDimension");return(n|=r(e,g[0]))&&(g[0]=v),(n|=r(e,g[1]))&&(g[1]=v),{dataDimsForPoint:g,valueStart:u,valueAxisDim:h,baseAxisDim:c,stacked:!!n,valueDim:d,baseDim:f,baseDataOffset:p,stackedOverDimension:e.getCalculationInfo("stackedOverDimension")}}function l(t,e){var i=0,n=t.scale.getExtent();return"start"===e?i=n[0]:"end"===e?i=n[1]:n[0]>0?i=n[0]:n[1]<0&&(i=n[1]),i}function u(t,e,i,n){var r=NaN;t.stacked&&(r=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(r)&&(r=t.valueStart);var a=t.baseDataOffset,o=[];return o[a]=i.get(t.baseDim,n),o[1-a]=r,e.dataToPoint(o)}e.prepareDataCoordInfo=s,e.getStackedOnPoint=u},a100:function(t,e,i){},a15a:function(t,e,i){var n=i("6d8b"),r=i("2306"),a=i("9850"),o=r.extendShape({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+r,n+a),t.lineTo(i-r,n+a),t.closePath()}}),s=r.extendShape({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,r=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+r,n),t.lineTo(i,n+a),t.lineTo(i-r,n),t.closePath()}}),l=r.extendShape({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,r=e.width/5*3,a=Math.max(r,e.height),o=r/2,s=o*o/(a-o),l=n-a+o+s,u=Math.asin(s/o),c=Math.cos(u)*o,h=Math.sin(u),d=Math.cos(u),f=.6*o,p=.7*o;t.moveTo(i-c,l+s),t.arc(i,l,o,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+c-h*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-c+h*f,l+s+d*f,i-c,l+s),t.closePath()}}),u=r.extendShape({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,r=e.x,a=e.y,o=n/3*2;t.moveTo(r,a),t.lineTo(r+o,a+i),t.lineTo(r,a+i/4*3),t.lineTo(r-o,a+i),t.lineTo(r,a),t.closePath()}}),c={line:r.Line,rect:r.Rect,roundRect:r.Rect,square:r.Rect,circle:r.Circle,diamond:s,pin:l,arrow:u,triangle:o},h={line:function(t,e,i,n,r){r.x1=t,r.y1=e+n/2,r.x2=t+i,r.y2=e+n/2},rect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n},roundRect:function(t,e,i,n,r){r.x=t,r.y=e,r.width=i,r.height=n,r.r=Math.min(i,n)/4},square:function(t,e,i,n,r){var a=Math.min(i,n);r.x=t,r.y=e,r.width=a,r.height=a},circle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.r=Math.min(i,n)/2},diamond:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n},pin:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},arrow:function(t,e,i,n,r){r.x=t+i/2,r.y=e+n/2,r.width=i,r.height=n},triangle:function(t,e,i,n,r){r.cx=t+i/2,r.cy=e+n/2,r.width=i,r.height=n}},d={};n.each(c,function(t,e){d[e]=new t});var f=r.extendShape({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style,e=this.shape;"pin"===e.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,r=d[n];"none"!==e.symbolType&&(r||(n="rect",r=d[n]),h[n](e.x,e.y,e.width,e.height,r.shape),r.buildPath(t,r.shape,i))}});function p(t,e){if("image"!==this.type){var i=this.style,n=this.shape;n&&"line"===n.symbolType?i.stroke=t:this.__isEmptyBrush?(i.stroke=t,i.fill=e||"#fff"):(i.fill&&(i.fill=t),i.stroke&&(i.stroke=t)),this.dirty(!1)}}function g(t,e,i,n,o,s,l){var u,c=0===t.indexOf("empty");return c&&(t=t.substr(5,1).toLowerCase()+t.substr(6)),u=0===t.indexOf("image://")?r.makeImage(t.slice(8),new a(e,i,n,o),l?"center":"cover"):0===t.indexOf("path://")?r.makePath(t.slice(7),{},new a(e,i,n,o),l?"center":"cover"):new f({shape:{symbolType:t,x:e,y:i,width:n,height:o}}),u.__isEmptyBrush=c,u.setColor=p,u.setColor(s),u}e.createSymbol=g},a2c2:function(t,e,i){"use strict";var n=i("a100"),r=i.n(n);r.a},a73c:function(t,e,i){var n=i("6d8b"),r=n.retrieve2,a=n.retrieve3,o=n.each,s=n.normalizeCssArray,l=n.isString,u=n.isObject,c=i("e86a"),h=i("5693"),d=i("5e76"),f=i("7d6d"),p=i("82eb"),g=p.ContextCachedBy,v=p.WILL_BE_RESTORED,m=c.DEFAULT_FONT,y={left:1,right:1,center:1},x={top:1,bottom:1,middle:1},_=[["textShadowBlur","shadowBlur",0],["textShadowOffsetX","shadowOffsetX",0],["textShadowOffsetY","shadowOffsetY",0],["textShadowColor","shadowColor","transparent"]];function b(t){return w(t),o(t.rich,w),t}function w(t){if(t){t.font=c.makeFont(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||y[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||x[i]?i:"top";var n=t.textPadding;n&&(t.textPadding=s(t.textPadding))}}function S(t,e,i,n,r,a){n.rich?C(t,e,i,n,r,a):M(t,e,i,n,r,a)}function M(t,e,i,n,r,a){"use strict";var o,s=D(n),l=!1,u=e.__attrCachedBy===g.PLAIN_TEXT;a!==v?(a&&(o=a.style,l=!s&&u&&o),e.__attrCachedBy=s?g.NONE:g.PLAIN_TEXT):u&&(e.__attrCachedBy=g.NONE);var h=n.font||m;l&&h===(o.font||m)||(e.font=h);var d=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,d=t.__computedFont=e.font);var p=n.textPadding,y=n.textLineHeight,x=t.__textCotentBlock;x&&!t.__dirtyText||(x=t.__textCotentBlock=c.parsePlainText(i,d,p,y,n.truncate));var b=x.outerHeight,w=x.lines,S=x.lineHeight,M=L(b,n,r),C=M.baseX,T=M.baseY,A=M.textAlign||"left",O=M.textVerticalAlign;I(e,n,r,C,T);var P=c.adjustTextY(T,b,O),N=C,z=P;if(s||p){var F=c.getWidth(i,d),V=F;p&&(V+=p[1]+p[3]);var H=c.adjustTextX(C,V,A);s&&k(t,e,n,H,P,V,b),p&&(N=B(C,A,p),z+=p[0])}e.textAlign=A,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(var G=0;G<_.length;G++){var W=_[G],j=W[0],U=W[1],$=n[j];l&&$===o[j]||(e[U]=f(e,U,$||W[2]))}z+=S/2;var q=n.textStrokeWidth,Y=l?o.textStrokeWidth:null,X=!l||q!==Y,Z=!l||X||n.textStroke!==o.textStroke,K=E(n.textStroke,q),Q=R(n.textFill);if(K&&(X&&(e.lineWidth=q),Z&&(e.strokeStyle=K)),Q&&(l&&n.textFill===o.textFill||(e.fillStyle=Q)),1===w.length)K&&e.strokeText(w[0],N,z),Q&&e.fillText(w[0],N,z);else for(G=0;G=0&&(b=S[R],"right"===b.textAlign))A(t,e,b,n,C,y,E,"right"),T-=b.width,E-=b.width,R--;P+=(a-(P-m)-(x-E)-T)/2;while(O<=R)b=S[O],A(t,e,b,n,C,y,P+b.width/2,"center"),P+=b.width,O++;y+=C}}function I(t,e,i,n,r){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,r=i.height/2+i.y):a&&(n=a[0]+i.x,r=a[1]+i.y),t.translate(n,r),t.rotate(-e.textRotation),t.translate(-n,-r)}}function A(t,e,i,n,o,s,l,u){var c=n.rich[i.styleName]||{};c.text=i.text;var h=i.textVerticalAlign,d=s+o/2;"top"===h?d=s+i.height/2:"bottom"===h&&(d=s+o-i.height/2),!i.isLineHolder&&D(c)&&k(t,e,c,"right"===u?l-i.width:"center"===u?l-i.width/2:l,d-i.height/2,i.width,i.height);var f=i.textPadding;f&&(l=B(l,u,f),d-=i.height/2-f[2]-i.textHeight/2),P(e,"shadowBlur",a(c.textShadowBlur,n.textShadowBlur,0)),P(e,"shadowColor",c.textShadowColor||n.textShadowColor||"transparent"),P(e,"shadowOffsetX",a(c.textShadowOffsetX,n.textShadowOffsetX,0)),P(e,"shadowOffsetY",a(c.textShadowOffsetY,n.textShadowOffsetY,0)),P(e,"textAlign",u),P(e,"textBaseline","middle"),P(e,"font",i.font||m);var p=E(c.textStroke||n.textStroke,v),g=R(c.textFill||n.textFill),v=r(c.textStrokeWidth,n.textStrokeWidth);p&&(P(e,"lineWidth",v),P(e,"strokeStyle",p),e.strokeText(i.text,l,d)),g&&(P(e,"fillStyle",g),e.fillText(i.text,l,d))}function D(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function k(t,e,i,n,r,a,o){var s=i.textBackgroundColor,c=i.textBorderWidth,f=i.textBorderColor,p=l(s);if(P(e,"shadowBlur",i.textBoxShadowBlur||0),P(e,"shadowColor",i.textBoxShadowColor||"transparent"),P(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),P(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),p||c&&f){e.beginPath();var g=i.textBorderRadius;g?h.buildPath(e,{x:n,y:r,width:a,height:o,r:g}):e.rect(n,r,a,o),e.closePath()}if(p)if(P(e,"fillStyle",s),null!=i.fillOpacity){var v=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=v}else e.fill();else if(u(s)){var m=s.image;m=d.createOrUpdateImage(m,null,t,O,s),m&&d.isImageReady(m)&&e.drawImage(m,n,r,a,o)}if(c&&f)if(P(e,"lineWidth",c),P(e,"strokeStyle",f),null!=i.strokeOpacity){v=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=v}else e.stroke()}function O(t,e){e.image=t}function L(t,e,i){var n=e.x||0,r=e.y||0,a=e.textAlign,o=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+N(s[0],i.width),r=i.y+N(s[1],i.height);else{var l=c.adjustTextPositionOnRect(s,i,e.textDistance);n=l.x,r=l.y,a=a||l.textAlign,o=o||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],r+=u[1])}return{baseX:n,baseY:r,textAlign:a,textVerticalAlign:o}}function P(t,e,i){return t[e]=f(t,e,i),t[e]}function E(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function R(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function N(t,e){return"string"===typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function B(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function z(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}e.normalizeTextStyle=b,e.renderText=S,e.getStroke=E,e.getFill=R,e.needDrawText=z},a8c6:function(t,e,i){var n=i("2449"),r=n.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});t.exports=r},a8db:function(t,e,i){"use strict";var n=i("e265"),r=i.n(n),a=i("a4bb"),o=i.n(a);function s(t,e){if(null==t)return{};var i,n,r={},a=o()(t);for(n=0;n=0||(r[i]=t[i]);return r}function l(t,e){if(null==t)return{};var i,n,a=s(t,e);if(r.a){var o=r()(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,i)&&(a[i]=t[i])}return a}i.d(e,"a",function(){return l})},a96b:function(t,e,i){var n=i("3eba"),r=n.extendComponentModel({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});t.exports=r},ac0f:function(t,e,i){var n=i("cbe5"),r=i("401b"),a=i("4a3f"),o=a.quadraticSubdivide,s=a.cubicSubdivide,l=a.quadraticAt,u=a.cubicAt,c=a.quadraticDerivativeAt,h=a.cubicDerivativeAt,d=[];function f(t,e,i){var n=t.cpx2,r=t.cpy2;return null===n||null===r?[(i?h:u)(t.x1,t.cpx1,t.cpx2,t.x2,e),(i?h:u)(t.y1,t.cpy1,t.cpy2,t.y2,e)]:[(i?c:l)(t.x1,t.cpx1,t.x2,e),(i?c:l)(t.y1,t.cpy1,t.y2,e)]}var p=n.extend({type:"bezier-curve",shape:{x1:0,y1:0,x2:0,y2:0,cpx1:0,cpy1:0,percent:1},style:{stroke:"#000",fill:null},buildPath:function(t,e){var i=e.x1,n=e.y1,r=e.x2,a=e.y2,l=e.cpx1,u=e.cpy1,c=e.cpx2,h=e.cpy2,f=e.percent;0!==f&&(t.moveTo(i,n),null==c||null==h?(f<1&&(o(i,l,r,f,d),l=d[1],r=d[2],o(n,u,a,f,d),u=d[1],a=d[2]),t.quadraticCurveTo(l,u,r,a)):(f<1&&(s(i,l,c,r,f,d),l=d[1],c=d[2],r=d[3],s(n,u,h,a,f,d),u=d[1],h=d[2],a=d[3]),t.bezierCurveTo(l,u,c,h,r,a)))},pointAt:function(t){return f(this.shape,t,!1)},tangentAt:function(t){var e=f(this.shape,t,!0);return r.normalize(e,e)}});t.exports=p},ae69:function(t,e,i){var n=i("cbe5"),r=n.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,r=e.cy,a=e.rx,o=e.ry,s=a*i,l=o*i;t.moveTo(n-a,r),t.bezierCurveTo(n-a,r-l,n-s,r-o,n,r-o),t.bezierCurveTo(n+s,r-o,n+a,r-l,n+a,r),t.bezierCurveTo(n+a,r+l,n+s,r+o,n,r+o),t.bezierCurveTo(n-s,r+o,n-a,r+l,n-a,r),t.closePath()}});t.exports=r},af24:function(t,e,i){i("48c7"),i("f273")},afa0:function(t,e,i){var n=i("6d8b"),r=i("22d1"),a=i("e1fc"),o=i("04f6");function s(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}var l=function(){this._roots=[],this._displayList=[],this._displayListLen=0};l.prototype={constructor:l,traverse:function(t,e){for(var i=0;i=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof a&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:s};var u=l;t.exports=u},b12f:function(t,e,i){var n=i("e1fc"),r=i("8918"),a=i("625e"),o=function(){this.group=new n,this.uid=r.getUID("viewComponent")};o.prototype={constructor:o,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var s=o.prototype;s.updateView=s.updateLayout=s.updateVisual=function(t,e,i,n){},a.enableClassExtend(o),a.enableClassManagement(o,{registerWhenExtend:!0});var l=o;t.exports=l},b1d4:function(t,e,i){var n=i("862d");function r(t,e){return e=e||{},n(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})}t.exports=r},b5c7:function(t,e,i){var n=i("282b"),r=n([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),a={getBarItemStyle:function(t){var e=r(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}};t.exports=a},b719:function(t,e,i){var n=i("697e7");e.zrender=n;var r=i("1687");e.matrix=r;var a=i("401b");e.vector=a;var o=i("6d8b"),s=i("41ef");e.color=s;var l=i("2306"),u=i("3842");e.number=u;var c=i("eda2");e.format=c;var h=i("88b3");h.throttle;e.throttle=h.throttle;var d=i("1548");e.helper=d;var f=i("bda7");e.parseGeoJSON=f;var p=i("6179");e.List=p;var g=i("4319");e.Model=g;var v=i("84ce");e.Axis=v;var m=i("22d1");e.env=m;var y=f,x={};o.each(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){x[t]=o[t]});var _={};o.each(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){_[t]=l[t]}),e.parseGeoJson=y,e.util=x,e.graphic=_},b809:function(t,e,i){var n=i("6d8b"),r=i("29a8"),a=i("2b17"),o=a.retrieveRawValue;function s(t,e){var i=e.getModel("aria");if(i.get("show"))if(i.get("description"))t.setAttribute("aria-label",i.get("description"));else{var a=0;e.eachSeries(function(t,e){++a},this);var s,l=i.get("data.maxCount")||10,u=i.get("series.maxCount")||10,c=Math.min(a,u);if(!(a<1)){var h=v();s=h?p(g("general.withTitle"),{title:h}):g("general.withoutTitle");var d=[],f=a>1?"series.multiple.prefix":"series.single.prefix";s+=p(g(f),{seriesCount:a}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";i=g(n?r+"withName":r+"withoutName"),i=p(i,{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:m(t.subType)});var s=t.getData();window.data=s,s.count()>l?i+=p(g("data.partialData"),{displayCnt:l}):i+=g("data.allData");for(var u=[],h=0;he&&a+1t[a].y+t[a].height)return void l(a,n/2);l(i-1,n/2)}function l(e,i){for(var n=e;n>=0;n--)if(t[n].y-=i,n>0&&t[n].y>t[n-1].y+t[n-1].height)break}function u(t,e,i,n,r,a){for(var o=e?Number.MAX_VALUE:0,s=0,l=t.length;s=o&&(d=o-10),!e&&d<=o&&(d=o+10),t[s].x=i+d*a,o=d}}t.sort(function(t,e){return t.y-e.y});for(var c,h=0,d=t.length,f=[],p=[],g=0;g=i?p.push(t[g]):f.push(t[g]);u(f,!1,e,i,n,r),u(p,!0,e,i,n,r)}function a(t,e,i,n,a,s){for(var l=[],u=[],c=0;c0?"left":"right"}var k=g.getFont(),O=g.get("rotate")?b<0?-_+Math.PI:-_:0,L=t.getFormattedLabel(i,"normal")||l.getName(i),P=n.getBoundingRect(L,k,d,"top");c=!!O,f.label={x:r,y:a,position:v,height:P.height,len:y,len2:x,linePoints:h,textAlign:d,verticalAlign:"middle",rotation:O,inside:S},S||u.push(f.label)}),!c&&t.get("avoidLabelOverlap")&&a(u,o,s,e,i,r)}t.exports=s},bd6b:function(t,e,i){var n=i("06ad"),r=i("4942"),a=i("6d8b"),o=a.isString,s=a.isFunction,l=a.isObject,u=a.isArrayLike,c=a.indexOf,h=function(){this.animators=[]};function d(t,e,i,n,r,a,l,u){o(n)?(a=r,r=n,n=0):s(r)?(a=r,r="linear",n=0):s(n)?(a=n,n=0):s(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),f(t,"",t,e,i,n,u);var c=t.animators.slice(),h=c.length;function d(){h--,h||a&&a()}h||a&&a();for(var p=0;p0&&t.animate(e,!1).when(null==r?500:r,s).delay(a||0)}function p(t,e,i,n){if(e){var r={};r[e]={},r[e][i]=n,t.attr(r)}else t.attr(i,n)}h.prototype={constructor:h,animate:function(t,e){var i,a=!1,o=this,s=this.__zr;if(t){var l=t.split("."),u=o;a="shape"===l[0];for(var h=0,d=l.length;h>1^-(1&s),l=l>>1^-(1&l),s+=r,l+=a,r=s,a=l,n.push([s/i,l/i])}return n}function s(t){return a(t),n.map(n.filter(t.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var e=t.properties,i=t.geometry,a=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:a[0],interiors:a.slice(1)}),"MultiPolygon"===i.type&&n.each(a,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var s=new r(e.name,o,e.cp);return s.properties=e,s})}t.exports=s},c037:function(t,e,i){var n=i("3eba"),r=i("6d8b");i("f7c6"),i("1ab3");var a=i("7782"),o=i("98e7"),s=i("292e"),l=i("d3f47");a("pie",[{type:"pieToggleSelect",event:"pieselectchanged",method:"toggleSelected"},{type:"pieSelect",event:"pieselected",method:"select"},{type:"pieUnSelect",event:"pieunselected",method:"unSelect"}]),n.registerVisual(o("pie")),n.registerLayout(r.curry(s,"pie")),n.registerProcessor(l("pie"))},c533:function(t,e){var i=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],n={color:i,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],i]};t.exports=n},c775f:function(t,e,i){var n=i("2b17"),r=n.retrieveRawValue;function a(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return r(t,e,i[0]);if(n){for(var a=[],o=0;o=e:"max"===i?t<=e:t===e}function g(t,e){return t.join(",")===e.join(",")}function v(t,e){e=e||{},o(e,function(e,i){if(null!=e){var n=t[i];if(a.hasClass(i)){e=r.normalizeToArray(e),n=r.normalizeToArray(n);var o=r.mappingToExists(n,e);t[i]=l(o,function(t){return t.option&&t.exist?u(t.exist,t.option,!0):t.exist||t.option})}else t[i]=u(n,e,!0)}})}h.prototype={constructor:h,setOption:function(t,e){t&&n.each(r.normalizeToArray(t.series),function(t){t&&t.data&&n.isTypedArray(t.data)&&n.setAsPrimitive(t.data)}),t=s(t,!0);var i=this._optionBackup,a=d.call(this,t,e,!i);this._newBaseOption=a.baseOption,i?(v(i.baseOption,a.baseOption),a.timelineOptions.length&&(i.timelineOptions=a.timelineOptions),a.mediaList.length&&(i.mediaList=a.mediaList),a.mediaDefault&&(i.mediaDefault=a.mediaDefault)):this._optionBackup=a},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=l(e.timelineOptions,s),this._mediaList=l(e.mediaList,s),this._mediaDefault=s(e.mediaDefault),this._currentMediaIndices=[],s(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=s(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,r=this._mediaDefault,a=[],o=[];if(!n.length&&!r)return o;for(var u=0,c=n.length;u1e-10&&(r.width+=o/s,r.height+=o/s,r.x-=o/s/2,r.y-=o/s/2)}return r}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),r=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(r.hasStroke()){var s=r.lineWidth,l=r.strokeNoScale?this.getLineScale():1;if(l>1e-10&&(r.hasFill()||(s=Math.max(s,this.strokeContainThreshold)),o.containStroke(a,s/l,t,e)))return!0}if(r.hasFill())return o.contain(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):n.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(r.isObject(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&u(t[0]-1)>1e-10&&u(t[3]-1)>1e-10?Math.sqrt(u(t[0]*t[3]-t[2]*t[1])):1}},h.extend=function(t){var e=function(e){h.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var r in i)!n.hasOwnProperty(r)&&i.hasOwnProperty(r)&&(n[r]=i[r])}t.init&&t.init.call(this,e)};for(var i in r.inherits(e,h),t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},r.inherits(h,n);var d=h;t.exports=d},cbe9:function(t,e,i){var n=i("6d8b"),r=i("cf7e");function a(t){r.call(this,t)}a.prototype={constructor:a,type:"cartesian2d",dimensions:["x","y"],getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},containPoint:function(t){var e=this.getAxis("x"),i=this.getAxis("y");return e.contain(e.toLocalCoord(t[0]))&&i.contain(i.toLocalCoord(t[1]))},containData:function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},dataToPoint:function(t,e,i){var n=this.getAxis("x"),r=this.getAxis("y");return i=i||[],i[0]=n.toGlobalCoord(n.dataToCoord(t[0])),i[1]=r.toGlobalCoord(r.dataToCoord(t[1])),i},clampData:function(t,e){var i=this.getAxis("x").scale,n=this.getAxis("y").scale,r=i.getExtent(),a=n.getExtent(),o=i.parse(t[0]),s=n.parse(t[1]);return e=e||[],e[0]=Math.min(Math.max(Math.min(r[0],r[1]),o),Math.max(r[0],r[1])),e[1]=Math.min(Math.max(Math.min(a[0],a[1]),s),Math.max(a[0],a[1])),e},pointToData:function(t,e){var i=this.getAxis("x"),n=this.getAxis("y");return e=e||[],e[0]=i.coordToData(i.toLocalCoord(t[0])),e[1]=n.coordToData(n.toLocalCoord(t[1])),e},getOtherAxis:function(t){return this.getAxis("x"===t.dim?"y":"x")}},n.inherits(a,r);var o=a;t.exports=o},cccd:function(t,e,i){var n=i("e0d3"),r=n.makeInner;function a(){var t=r();return function(e){var i=t(e),n=e.pipelineContext,r=i.large,a=i.progressiveRender,o=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(r^o||a^s)&&"reset"}}t.exports=a},cd12:function(t,e,i){i("01ed"),i("4a9d"),i("cb8f")},cd33:function(t,e,i){var n=i("6d8b"),r=i("4319"),a=n.each,o=n.curry;function s(t,e){var i={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return l(i,t,e),i.seriesInvolved&&c(i,t),i}function l(t,e,i){var n=e.getComponent("tooltip"),r=e.getComponent("axisPointer"),s=r.get("link",!0)||[],l=[];a(i.getCoordinateSystems(),function(i){if(i.axisPointerEnabled){var c=m(i.model),d=t.coordSysAxesInfo[c]={};t.coordSysMap[c]=i;var f=i.model,p=f.getModel("tooltip",n);if(a(i.getAxes(),o(_,!1,null)),i.getTooltipAxes&&n&&p.get("show")){var g="axis"===p.get("trigger"),y="cross"===p.get("axisPointer.type"),x=i.getTooltipAxes(p.get("axisPointer.axis"));(g||y)&&a(x.baseAxes,o(_,!y||"cross",g)),y&&a(x.otherAxes,o(_,"cross",!1))}}function _(n,a,o){var c=o.model.getModel("axisPointer",r),f=c.get("show");if(f&&("auto"!==f||n||v(c))){null==a&&(a=c.get("triggerTooltip")),c=n?u(o,p,r,e,n,a):c;var g=c.get("snap"),y=m(o.model),x=a||g||"category"===o.type,_=t.axesInfo[y]={key:y,axis:o,coordSys:i,axisPointerModel:c,triggerTooltip:a,involveSeries:x,snap:g,useHandle:v(c),seriesModels:[]};d[y]=_,t.seriesInvolved|=x;var b=h(s,o);if(null!=b){var w=l[b]||(l[b]={axesInfo:{}});w.axesInfo[y]=_,w.mapper=s[b].mapper,_.linkGroup=w}}}})}function u(t,e,i,o,s,l){var u=e.getModel("axisPointer"),c={};a(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(t){c[t]=n.clone(u.get(t))}),c.snap="category"!==t.type&&!!l,"cross"===u.get("type")&&(c.type="line");var h=c.label||(c.label={});if(null==h.show&&(h.show=!1),"cross"===s){var d=u.get("label.show");if(h.show=null==d||d,!l){var f=c.lineStyle=u.get("crossStyle");f&&n.defaults(h,f.textStyle)}}return t.model.getModel("axisPointer",new r(c,i,o))}function c(t,e){e.eachSeries(function(e){var i=e.coordinateSystem,n=e.get("tooltip.trigger",!0),r=e.get("tooltip.show",!0);i&&"none"!==n&&!1!==n&&"item"!==n&&!1!==r&&!1!==e.get("axisPointer.show",!0)&&a(t.coordSysAxesInfo[m(i.model)],function(t){var n=t.axis;i.getAxis(n.dim)===n&&(t.seriesModels.push(e),null==t.seriesDataCount&&(t.seriesDataCount=0),t.seriesDataCount+=e.getData().count())})},this)}function h(t,e){for(var i=e.model,n=e.dim,r=0;r=0||t===e}function f(t){var e=p(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,r=i.option,a=i.get("status"),o=i.get("value");null!=o&&(o=n.parse(o));var s=v(i);null==a&&(r.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==o||o>l[1])&&(o=l[1]),o=0;p--){var g=t[p];if(s||(h=g.data.rawIndexOf(g.stackedByDimension,c)),h>=0){var v=g.data.getByRawIndex(g.stackResultDimension,h);if(d>=0&&v>0||d<=0&&v<0){d+=v,f=v;break}}}return n[0]=d,n[1]=f,n});o.hostModel.setData(l),e.data=l})}t.exports=o},d28f:function(t,e,i){var n=i("3eba");i("84d5"),i("46508"),i("5e97");var r=i("903c"),a=i("6cb7");n.registerProcessor(r),a.registerSubTypeDefaulter("legend",function(){return"plain"})},d2cf:function(t,e,i){var n=i("6d8b"),r=i("401b"),a=i("cb6d"),o=i("1fab"),s=i("607d"),l=i("0b44"),u="silent";function c(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:h}}function h(t){s.stop(this.event)}function d(){}d.prototype.dispose=function(){};var f=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],p=function(t,e,i,n){o.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new d,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,a.call(this),this.setHandlerProxy(i)};function g(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){var n,r=t;while(r){if(r.clipPath&&!r.clipPath.contain(e,i))return!1;r.silent&&(n=!0),r=r.parent}return!n||u}return!1}p.prototype={constructor:p,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(n.each(f,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,r=n.target;r&&!r.__zr&&(n=this.findHover(n.x,n.y),r=n.target);var a=this._hovered=this.findHover(e,i),o=a.target,s=this.proxy;s.setCursor&&s.setCursor(o?o.cursor:"default"),r&&o!==r&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),o&&o!==r&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){t=t||{};var n=t.target;if(!n||!n.silent){var r="on"+e,a=c(e,t,i);while(n)if(n[r]&&(a.cancelBubble=n[r].call(n,a)),n.trigger(e,a),n=n.parent,a.cancelBubble)break;a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"===typeof t[r]&&t[r].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),r={x:t,y:e},a=n.length-1;a>=0;a--){var o;if(n[a]!==i&&!n[a].ignore&&(o=g(n[a],t,e))&&(!r.topTarget&&(r.topTarget=n[a]),o!==u)){r.target=n[a];break}}return r},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new l);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var r=n.type;t.gestureEvent=r,this.dispatchToElement({target:n.target},r,n.event)}}},n.each(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){p.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||r.dist(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),n.mixin(p,o),n.mixin(p,a);var v=p;t.exports=v},d3f47:function(t,e){function i(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),r=0;r=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){r.unregister(e.getZr(),"axisPointer"),a.superApply(this._model,"remove",arguments)},dispose:function(t,e){r.unregister("axisPointer",e),a.superApply(this._model,"dispose",arguments)}}),o=a;t.exports=o},d4c6:function(t,e,i){var n=i("cbe5"),r=n.extend({type:"compound",shape:{paths:null},_updatePathDirty:function(){for(var t=this.__dirtyPath,e=this.shape.paths,i=0;i=r||v<0)break;if(f(y)){if(p){v+=a;continue}break}if(v===i)t[a>0?"moveTo":"lineTo"](y[0],y[1]);else if(l>0){var x=e[g],_="y"===c?1:0,b=(y[_]-x[_])*l;u(h,x),h[_]=x[_]+b,u(d,y),d[_]=y[_]-b,t.bezierCurveTo(h[0],h[1],d[0],d[1],y[0],y[1])}else t.lineTo(y[0],y[1]);g=v,v+=a}return m}function v(t,e,i,n,a,p,g,v,m,y,x){for(var _=0,b=i,w=0;w=a||b<0)break;if(f(S)){if(x){b+=p;continue}break}if(b===i)t[p>0?"moveTo":"lineTo"](S[0],S[1]),u(h,S);else if(m>0){var M=b+p,C=e[M];if(x)while(C&&f(e[M]))M+=p,C=e[M];var T=.5,I=e[_];C=e[M];if(!C||f(C))u(d,S);else{var A,D;if(f(C)&&!x&&(C=S),r.sub(c,C,I),"x"===y||"y"===y){var k="x"===y?0:1;A=Math.abs(S[k]-I[k]),D=Math.abs(S[k]-C[k])}else A=r.dist(S,I),D=r.dist(S,C);T=D/(D+A),l(d,S,c,-m*(1-T))}o(h,h,v),s(h,h,g),o(d,d,v),s(d,d,g),t.bezierCurveTo(h[0],h[1],d[0],d[1],S[0],S[1]),l(h,S,c,m*T)}else t.lineTo(S[0],S[1]);_=b,b+=p}return w}function m(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var r=0;rn[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}var y=n.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:a(n.prototype.brush),buildPath:function(t,e){var i=e.points,n=0,r=i.length,a=m(i,e.smoothConstraint);if(e.connectNulls){for(;r>0;r--)if(!f(i[r-1]))break;for(;n0;a--)if(!f(i[a-1]))break;for(;r=this._maxSize&&o>0){var l=i.head;i.remove(l),delete n[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=e:s=new r(e),s.key=t,i.insertEntry(s),n[t]=s}return a},o.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},o.clear=function(){this._list.clear(),this._map={}};var s=a;t.exports=s},d5b7:function(t,e,i){var n=i("de00"),r=i("1fab"),a=i("0cde"),o=i("bd6b"),s=i("6d8b"),l=function(t){a.call(this,t),r.call(this,t),o.call(this,t),this.id=t.id||n()};l.prototype={type:"element",name:"",__zr:null,ignore:!1,clipPath:null,isGroup:!1,drift:function(t,e){switch(this.draggable){case"horizontal":e=0;break;case"vertical":t=0;break}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=e,this.decomposeTransform(),this.dirty(!1)},beforeUpdate:function(){},afterUpdate:function(){},update:function(){this.updateTransform()},traverse:function(t,e){},attrKV:function(t,e){if("position"===t||"scale"===t||"origin"===t){if(e){var i=this[t];i||(i=this[t]=[]),i[0]=e[0],i[1]=e[1]}}else this[t]=e},hide:function(){this.ignore=!0,this.__zr&&this.__zr.refresh()},show:function(){this.ignore=!1,this.__zr&&this.__zr.refresh()},attr:function(t,e){if("string"===typeof t)this.attrKV(t,e);else if(s.isObject(t))for(var i in t)t.hasOwnProperty(i)&&this.attrKV(i,t[i]);return this.dirty(!1),this},setClipPath:function(t){var e=this.__zr;e&&t.addSelfToZr(e),this.clipPath&&this.clipPath!==t&&this.removeClipPath(),this.clipPath=t,t.__zr=e,t.__clipTarget=this,this.dirty(!1)},removeClipPath:function(){var t=this.clipPath;t&&(t.__zr&&t.removeSelfFromZr(t.__zr),t.__zr=null,t.__clipTarget=null,this.clipPath=null,this.dirty(!1))},addSelfToZr:function(t){this.__zr=t;var e=this.animators;if(e)for(var i=0;ie&&u>n&&u>a&&u>s||u1&&y(),d=c.cubicAt(e,n,a,s,m[0]),g>1&&(f=c.cubicAt(e,n,a,s,m[1]))),2===g?_e&&s>n&&s>a||s=0&&u<=1){for(var h=0,d=c.quadraticAt(e,n,a,u),f=0;fi||s<-i)return 0;var l=Math.sqrt(i*i-s*s);v[0]=-l,v[1]=l;var c=Math.abs(n-r);if(c<1e-4)return 0;if(c%f<1e-4){n=0,r=f;var h=a?1:-1;return o>=v[0]+t&&o<=v[1]+t?h:0}if(a){l=n;n=u(r),r=u(l)}else n=u(n),r=u(r);n>r&&(r+=f);for(var d=0,p=0;p<2;p++){var g=v[p];if(g+t>o){var m=Math.atan2(s,g);h=a?1:-1;m<0&&(m=f+m),(m>=n&&m<=r||m+f>=n&&m+f<=r)&&(m>Math.PI/2&&m<1.5*Math.PI&&(h=-h),d+=h)}}return d}function w(t,e,i,n,l){for(var u=0,c=0,f=0,p=0,v=0,m=0;m1&&(i||(u+=h(c,f,p,v,n,l))),1===m&&(c=t[m],f=t[m+1],p=c,v=f),y){case d.M:p=t[m++],v=t[m++],c=p,f=v;break;case d.L:if(i){if(r.containStroke(c,f,t[m],t[m+1],e,n,l))return!0}else u+=h(c,f,t[m],t[m+1],n,l)||0;c=t[m++],f=t[m++];break;case d.C:if(i){if(a.containStroke(c,f,t[m++],t[m++],t[m++],t[m++],t[m],t[m+1],e,n,l))return!0}else u+=x(c,f,t[m++],t[m++],t[m++],t[m++],t[m],t[m+1],n,l)||0;c=t[m++],f=t[m++];break;case d.Q:if(i){if(o.containStroke(c,f,t[m++],t[m++],t[m],t[m+1],e,n,l))return!0}else u+=_(c,f,t[m++],t[m++],t[m],t[m+1],n,l)||0;c=t[m++],f=t[m++];break;case d.A:var w=t[m++],S=t[m++],M=t[m++],C=t[m++],T=t[m++],I=t[m++];m+=1;var A=1-t[m++],D=Math.cos(T)*M+w,k=Math.sin(T)*C+S;m>1?u+=h(c,f,D,k,n,l):(p=D,v=k);var O=(n-w)*C/M+w;if(i){if(s.containStroke(w,S,C,T,T+I,A,e,O,l))return!0}else u+=b(w,S,C,T,T+I,A,O,l);c=Math.cos(T+I)*M+w,f=Math.sin(T+I)*C+S;break;case d.R:p=c=t[m++],v=f=t[m++];var L=t[m++],P=t[m++];D=p+L,k=v+P;if(i){if(r.containStroke(p,v,D,v,e,n,l)||r.containStroke(D,v,D,k,e,n,l)||r.containStroke(D,k,p,k,e,n,l)||r.containStroke(p,k,p,v,e,n,l))return!0}else u+=h(D,v,D,k,n,l),u+=h(p,k,p,v,n,l);break;case d.Z:if(i){if(r.containStroke(c,f,p,v,e,n,l))return!0}else u+=h(c,f,p,v,n,l);c=p,f=v;break}}return i||g(f,v)||(u+=h(c,f,p,v,n,l)||0),0!==u}function S(t,e,i){return w(t,0,!1,e,i)}function M(t,e,i,n){return w(t,e,!0,i,n)}e.contain=S,e.containStroke=M},d9fc:function(t,e,i){var n=i("cbe5"),r=n.extend({type:"circle",shape:{cx:0,cy:0,r:0},buildPath:function(t,e,i){i&&t.moveTo(e.cx+e.r,e.cy),t.arc(e.cx,e.cy,e.r,0,2*Math.PI,!0)}});t.exports=r},db0e:function(t,e,i){var n=i("3eba");i("a8c6"),i("8344"),n.registerPreprocessor(function(t){t.markPoint=t.markPoint||{}})},dc2f:function(t,e){var i=function(t,e){this.image=t,this.repeat=e,this.type="pattern"};i.prototype.getCanvasPattern=function(t){return t.createPattern(this.image,this.repeat||"repeat")};var n=i;t.exports=n},dcb3:function(t,e,i){var n=i("6d8b"),r=i("625e"),a=i("2306"),o=i("cd33"),s=i("607d"),l=i("88b3"),u=i("e0d3"),c=u.makeInner,h=c(),d=n.clone,f=n.bind;function p(){}function g(t,e,i,n){v(h(i).lastProp,n)||(h(i).lastProp=n,e?a.updateProps(i,n,t):(i.stopAnimation(),i.attr(n)))}function v(t,e){if(n.isObject(t)&&n.isObject(e)){var i=!0;return n.each(e,function(e,n){i=i&&v(t[n],e)}),!!i}return t===e}function m(t,e){t[e.get("label.show")?"show":"hide"]()}function y(t){return{position:t.position.slice(),rotation:t.rotation||0}}function x(t,e,i){var n=e.get("z"),r=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=r&&(t.zlevel=r),t.silent=i)})}p.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,r){var o=e.get("value"),s=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,r||this._lastValue!==o||this._lastStatus!==s){this._lastValue=o,this._lastStatus=s;var l=this._group,u=this._handle;if(!s||"hide"===s)return l&&l.hide(),void(u&&u.hide());l&&l.show(),u&&u.show();var c={};this.makeElOption(c,o,t,e,i);var h=c.graphicKey;h!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=h;var d=this._moveAnimation=this.determineAnimation(t,e);if(l){var f=n.curry(g,e,d);this.updatePointerEl(l,c,f,e),this.updateLabelEl(l,c,f,e)}else l=this._group=new a.Group,this.createPointerEl(l,c,t,e),this.createLabelEl(l,c,t,e),i.getZr().add(l);x(l,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,r="category"===n.type,a=e.get("snap");if(!a&&!r)return!1;if("auto"===i||null==i){var s=this.animationThreshold;if(r&&n.getBandWidth()>s)return!0;if(a){var l=o.getAxisInfo(t).seriesDataCount,u=n.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return!0===i},makeElOption:function(t,e,i,n,r){},createPointerEl:function(t,e,i,n){var r=e.pointer;if(r){var o=h(t).pointerEl=new a[r.type](d(e.pointer));t.add(o)}},createLabelEl:function(t,e,i,n){if(e.label){var r=h(t).labelEl=new a.Rect(d(e.label));t.add(r),m(r,n)}},updatePointerEl:function(t,e,i){var n=h(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var r=h(t).labelEl;r&&(r.setStyle(e.label.style),i(r,{shape:e.label.shape,position:e.label.position}),m(r,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,i=this._axisPointerModel,r=this._api.getZr(),o=this._handle,u=i.getModel("handle"),c=i.get("status");if(!u.get("show")||!c||"hide"===c)return o&&r.remove(o),void(this._handle=null);this._handle||(e=!0,o=this._handle=a.createIcon(u.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){s.stop(t.event)},onmousedown:f(this._onHandleDragMove,this,0,0),drift:f(this._onHandleDragMove,this),ondragend:f(this._onHandleDragEnd,this)}),r.add(o)),x(o,i,!1);var h=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];o.setStyle(u.getItemStyle(null,h));var d=u.get("size");n.isArray(d)||(d=[d,d]),o.attr("scale",[d[0]/2,d[1]/2]),l.createOrUpdate(this,"_doDispatchAxisPointer",u.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){g(this._axisPointerModel,!e&&this._moveAnimation,this._handle,y(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(y(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(y(n)),h(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){var t=this._handle;if(t){var e=this._payloadInfo,i=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:e.cursorPoint[0],y:e.cursorPoint[1],tooltipOption:e.tooltipOption,axesInfo:[{axisDim:i.axis.dim,axisIndex:i.componentIndex}]})}},_onHandleDragEnd:function(t){this._dragging=!1;var e=this._handle;if(e){var i=this._axisPointerModel.get("value");this._moveHandleToValue(i),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}},p.prototype.constructor=p,r.enableClassExtend(p);var _=p;t.exports=_},dded:function(t,e,i){var n=i("6d8b"),r=i("42e5"),a=function(t,e,i,n,a){this.x=null==t?.5:t,this.y=null==e?.5:e,this.r=null==i?.5:i,this.type="radial",this.global=a||!1,r.call(this,n)};a.prototype={constructor:a},n.inherits(a,r);var o=a;t.exports=o},de00:function(t,e){var i=2311;function n(){return i++}t.exports=n},de1c:function(t,e){var i={getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}};t.exports=i},e073:function(t,e,i){var n=i("6d8b"),r=i("e86a"),a=i("e0d3"),o=a.makeInner,s=i("697e"),l=s.makeLabelFormatter,u=s.getOptionCategoryInterval,c=s.shouldShowAllLabels,h=o();function d(t){return"category"===t.type?p(t):m(t)}function f(t,e){return"category"===t.type?v(t,e):{ticks:t.scale.getTicks()}}function p(t){var e=t.getLabelModel(),i=g(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function g(t,e){var i,r,a=y(t,"labels"),o=u(e),s=x(a,o);return s||(n.isFunction(o)?i=C(t,o):(r="auto"===o?b(t):o,i=M(t,r)),_(a,o,{labels:i,labelCategoryInterval:r}))}function v(t,e){var i,r,a=y(t,"ticks"),o=u(e),s=x(a,o);if(s)return s;if(e.get("show")&&!t.scale.isBlank()||(i=[]),n.isFunction(o))i=C(t,o,!0);else if("auto"===o){var l=g(t,t.getLabelModel());r=l.labelCategoryInterval,i=n.map(l.labels,function(t){return t.tickValue})}else r=o,i=M(t,r,!0);return _(a,o,{ticks:i,tickCategoryInterval:r})}function m(t){var e=t.scale.getTicks(),i=l(t);return{labels:n.map(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function y(t,e){return h(t)[e]||(h(t)[e]=[])}function x(t,e){for(var i=0;i40&&(u=Math.max(1,Math.floor(s/40)));for(var c=o[0],d=t.dataToCoord(c+1)-t.dataToCoord(c),f=Math.abs(d*Math.cos(n)),p=Math.abs(d*Math.sin(n)),g=0,v=0;c<=o[1];c+=u){var m=0,y=0,x=r.getBoundingRect(i(c),e.font,"center","top");m=1.3*x.width,y=1.3*x.height,g=Math.max(g,m,7),v=Math.max(v,y,7)}var _=g/f,b=v/p;isNaN(_)&&(_=1/0),isNaN(b)&&(b=1/0);var w=Math.max(0,Math.floor(Math.min(_,b))),M=h(t.model),C=M.lastAutoInterval,T=M.lastTickCount;return null!=C&&null!=T&&Math.abs(C-w)<=1&&Math.abs(T-s)<=1&&C>w?w=C:(M.lastTickCount=s,M.lastAutoInterval=w),w}function S(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function M(t,e,i){var n=l(t),r=t.scale,a=r.getExtent(),o=t.getLabelModel(),s=[],u=Math.max((e||0)+1,1),h=a[0],d=r.count();0!==h&&u>1&&d/u>2&&(h=Math.round(Math.ceil(h/u)*u));var f=c(t),p=o.get("showMinLabel")||f,g=o.get("showMaxLabel")||f;p&&h!==a[0]&&m(a[0]);for(var v=h;v<=a[1];v+=u)m(v);function m(t){s.push(i?t:{formattedLabel:n(t),rawLabel:r.getLabel(t),tickValue:t})}return g&&v!==a[1]&&m(a[1]),s}function C(t,e,i){var r=t.scale,a=l(t),o=[];return n.each(r.getTicks(),function(t){var n=r.getLabel(t);e(t,n)&&o.push(i?t:{formattedLabel:a(t),rawLabel:n,tickValue:t})}),o}e.createAxisLabels=d,e.createAxisTicks=f,e.calculateCategoryInterval=w},e0d3:function(t,e,i){var n=i("6d8b"),r=i("22d1"),a=n.each,o=n.isObject,s=n.isArray,l="series\0";function u(t){return t instanceof Array?t:null==t?[]:[t]}function c(t,e,i){if(t){t[e]=t[e]||{},t.emphasis=t.emphasis||{},t.emphasis[e]=t.emphasis[e]||{};for(var n=0,r=i.length;n=i.length&&i.push({option:t})}}),i}function g(t){var e=n.createHashMap();a(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),a(t,function(t,i){var r=t.option;n.assert(!r||null==r.id||!e.get(r.id)||e.get(r.id)===t,"id duplicates: "+(r&&r.id)),r&&null!=r.id&&e.set(r.id,t),!t.keyInfo&&(t.keyInfo={})}),a(t,function(t,i){var n=t.exist,r=t.option,a=t.keyInfo;if(o(r)){if(a.name=null!=r.name?r.name+"":n?n.name:l+i,n)a.id=n.id;else if(null!=r.id)a.id=r.id+"";else{var s=0;do{a.id="\0"+a.name+"\0"+s++}while(e.get(a.id))}e.set(a.id,t)}})}function v(t){var e=t.name;return!(!e||!e.indexOf(l))}function m(t){return o(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function y(t,e){var i={},n={};return r(t||[],i),r(e||[],n,i),[a(i),a(n)];function r(t,e,i){for(var n=0,r=t.length;n=e[0]&&t<=e[1]},r.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},r.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},r.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},r.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(t){this._isBlank=t},r.prototype.getLabel=null,n.enableClassExtend(r),n.enableClassManagement(r,{registerWhenExtend:!0});var a=r;t.exports=a},e1fc:function(t,e,i){var n=i("6d8b"),r=i("d5b7"),a=i("9850"),o=function(t){for(var e in t=t||{},r.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};o.prototype={constructor:o,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof o&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,r=this._children,a=n.indexOf(r,t);return a<0?this:(r.splice(a,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof o&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e1e-4)return p[0]=t-i,p[1]=e-r,g[0]=t+i,void(g[1]=e+r);if(c[0]=l(a)*i+t,c[1]=s(a)*r+e,h[0]=l(o)*i+t,h[1]=s(o)*r+e,v(p,c,h),m(g,c,h),a%=u,a<0&&(a+=u),o%=u,o<0&&(o+=u),a>o&&!f?o+=u:aa&&(d[0]=l(_)*i+t,d[1]=s(_)*r+e,v(p,d,p),m(g,d,g))}e.fromPoints=f,e.fromLine=p,e.fromCubic=m,e.fromQuadratic=y,e.fromArc=x},e46b:function(t,e,i){var n=i("b1d4"),r=i("6179"),a=i("6d8b"),o=a.extend,s=a.isArray;function l(t,e,i){e=s(e)&&{coordDimensions:e}||o({},e);var a=t.getSource(),l=n(a,e),u=new r(l,t);return u.initData(a,i),u}t.exports=l},e47b:function(t,e,i){var n=i("e0d3"),r=n.makeInner,a=n.normalizeToArray,o=r();function s(t,e){for(var i=t.length,n=0;ne)return t[n];return t[i-1]}var l={clearColorPalette:function(){o(this).colorIdx=0,o(this).colorNameMap={}},getColorFromPalette:function(t,e,i){e=e||this;var n=o(e),r=n.colorIdx||0,l=n.colorNameMap=n.colorNameMap||{};if(l.hasOwnProperty(t))return l[t];var u=a(this.get("color",!0)),c=this.get("colorLayer",!0),h=null!=i&&c?s(c,i):u;if(h=h||u,h&&h.length){var d=h[r];return t&&(l[t]=d),n.colorIdx=(r+1)%h.length,d}}};t.exports=l},e7aa:function(t,e,i){var n=i("2306"),r=i("c775f"),a=r.getDefaultLabel;function o(t,e,i,r,o,l,u){var c=i.getModel("label"),h=i.getModel("emphasis.label");n.setLabelStyle(t,e,c,h,{labelFetcher:o,labelDataIndex:l,defaultText:a(o.getData(),l),isRectText:!0,autoColor:r}),s(t),s(e)}function s(t,e){"outside"===t.textPosition&&(t.textPosition=e)}e.setLabel=o},e7d2:function(t,e,i){var n=i("4a3f");function r(t,e,i,r,a,o,s,l,u,c,h){if(0===u)return!1;var d=u;if(h>e+d&&h>r+d&&h>o+d&&h>l+d||ht+d&&c>i+d&&c>a+d&&c>s+d||cf&&(d=0,h={}),d++,h[i]=r,r}function x(t,e,i,n,r,a,o,s){return o?b(t,e,i,n,r,a,o,s):_(t,e,i,n,r,a,s)}function _(t,e,i,r,a,o,s){var l=O(t,e,a,o,s),u=y(t,e);a&&(u+=a[1]+a[3]);var c=l.outerHeight,h=w(0,u,i),d=S(0,c,r),f=new n(h,d,u,c);return f.lineHeight=l.lineHeight,f}function b(t,e,i,r,a,o,s,l){var u=L(t,{rich:s,truncate:l,font:e,textAlign:i,textPadding:a,textLineHeight:o}),c=u.outerWidth,h=u.outerHeight,d=w(0,c,i),f=S(0,h,r);return new n(d,f,c,h)}function w(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function S(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function M(t,e,i){var n=e.x,r=e.y,a=e.height,o=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,r+=s,l="right",u="middle";break;case"right":n+=i+o,r+=s,u="middle";break;case"top":n+=o/2,r-=i,l="center",u="bottom";break;case"bottom":n+=o/2,r+=a+i,l="center";break;case"inside":n+=o/2,r+=s,l="center",u="middle";break;case"insideLeft":n+=i,r+=s,u="middle";break;case"insideRight":n+=o-i,r+=s,l="right",u="middle";break;case"insideTop":n+=o/2,r+=i,l="center";break;case"insideBottom":n+=o/2,r+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,r+=i;break;case"insideTopRight":n+=o-i,r+=i,l="right";break;case"insideBottomLeft":n+=i,r+=a-i,u="bottom";break;case"insideBottomRight":n+=o-i,r+=a-i,l="right",u="bottom";break}return{x:n,y:r,textAlign:l,textVerticalAlign:u}}function C(t,e,i,n,r){if(!e)return"";var a=(t+"").split("\n");r=T(e,i,n,r);for(var o=0,s=a.length;o=a;u++)o-=a;var c=y(i,e);return c>o&&(i="",c=0),o=t-c,n.ellipsis=i,n.ellipsisWidth=c,n.contentWidth=o,n.containerWidth=t,n}function I(t,e){var i=e.containerWidth,n=e.font,r=e.contentWidth;if(!i)return"";var a=y(t,n);if(a<=i)return t;for(var o=0;;o++){if(a<=r||o>=e.maxIterations){t+=e.ellipsis;break}var s=0===o?A(t,r,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*r/a):0;t=t.substr(0,s),a=y(t,n)}return""===t&&(t=e.placeholder),t}function A(t,e,i,n){for(var r=0,a=0,o=t.length;ac)t="",o=[];else if(null!=h)for(var d=T(h-(i?i[1]+i[3]:0),e,r.ellipsis,{minChar:r.minChar,placeholder:r.placeholder}),f=0,p=o.length;fa&&P(i,t.substring(a,o)),P(i,n[2],n[1]),a=p.lastIndex}am)return{lines:[],width:0,height:0};M.textWidth=y(M.text,A);var O=T.textWidth,L=null==O||"auto"===O;if("string"===typeof O&&"%"===O.charAt(O.length-1))M.percentWidth=O,d.push(M),O=0;else{if(L){O=M.textWidth;var E=T.textBackgroundColor,R=E&&E.image;R&&(R=r.findExistImage(R),r.isImageReady(R)&&(O=Math.max(O,R.width*k/R.height)))}var N=I?I[1]+I[3]:0;O+=N;var B=null!=v?v-w:null;null!=B&&B=0&&s<0)&&(o=g,s=p,r=c,a.length=0),l(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:r}}function p(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function g(t,e,i,n){var r=i.payloadBatch,a=e.axis,s=a.model,l=e.axisPointerModel;if(e.triggerTooltip&&r.length){var u=e.coordSys.model,c=o.makeKey(u),h=t.map[c];h||(h=t.map[c]={coordSysId:u.id,coordSysIndex:u.componentIndex,coordSysType:u.type,coordSysMainType:u.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:s.componentIndex,axisType:s.type,axisId:s.id,value:n,valueLabelOpt:{precision:l.get("label.precision"),formatter:l.get("label.formatter")},seriesDataIndices:r.slice()})}}function v(t,e,i){var n=i.axesInfo=[];l(e,function(e,i){var r=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(r.status="show"),r.value=a.value,r.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(r.status="hide"),"show"===r.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:r.value})})}function m(t,e,i,n){if(!b(e)&&t.list.length){var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function y(t,e,i){var r=i.getZr(),a="axisPointerLastHighlights",o=c(r)[a]||{},s=c(r)[a]={};l(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&l(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;s[e]=t})});var u=[],h=[];n.each(o,function(t,e){!s[e]&&h.push(t)}),n.each(s,function(t,e){!o[e]&&u.push(t)}),h.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:h}),u.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:u})}function x(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function _(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function b(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}t.exports=h},ec02:function(t,e,i){var n=i("6d8b"),r=i("84ce"),a=function(t,e,i,n,a){r.call(this,t,e,i),this.type=n||"value",this.position=a||"bottom"};a.prototype={constructor:a,index:0,getAxesOnZeroOf:null,model:null,isHorizontal:function(){var t=this.position;return"top"===t||"bottom"===t},getGlobalExtent:function(t){var e=this.getExtent();return e[0]=this.toGlobalCoord(e[0]),e[1]=this.toGlobalCoord(e[1]),t&&e[0]>e[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},n.inherits(a,r);var o=a;t.exports=o},ec34:function(t,e,i){var n=i("4e08"),r=(n.__DEV__,i("6d8b")),a=r.createHashMap,o=r.isString,s=r.isArray,l=r.each,u=(r.assert,i("3041")),c=u.parseXML,h=a(),d={registerMap:function(t,e,i){var n;return s(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),l(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON");var i=f[e];i(t)}),h.set(t,n)},retrieveMap:function(t){return h.get(t)}},f={geoJSON:function(t){var e=t.source;t.geoJSON=o(e)?"undefined"!==typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=c(t.source)}};t.exports=d},ec6f:function(t,e,i){var n=i("6d8b"),r=n.createHashMap,a=n.isTypedArray,o=i("625e"),s=o.enableClassCheck,l=i("93d0"),u=l.SOURCE_FORMAT_ORIGINAL,c=l.SERIES_LAYOUT_BY_COLUMN,h=l.SOURCE_FORMAT_UNKNOWN,d=l.SOURCE_FORMAT_TYPED_ARRAY,f=l.SOURCE_FORMAT_KEYED_COLUMNS;function p(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===f?{}:[]),this.sourceFormat=t.sourceFormat||h,this.seriesLayoutBy=t.seriesLayoutBy||c,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&r(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}p.seriesDataToSource=function(t){return new p({data:t,sourceFormat:a(t)?d:u,fromDataset:!1})},s(p);var g=p;t.exports=g},ed21:function(t,e,i){var n=i("2cf4"),r=n.devicePixelRatio,a=i("6d8b"),o=i("4942"),s=i("9850"),l=i("04f6"),u=i("5e68"),c=i("98b7"),h=i("0da8"),d=i("22d1"),f=1e5,p=314159,g=.01,v=.001;function m(t){return parseInt(t,10)}function y(t){return!!t&&(!!t.__builtin__||"function"===typeof t.resize&&"function"===typeof t.refresh)}var x=new s(0,0,0,0),_=new s(0,0,0,0);function b(t,e,i){return x.copy(t.getBoundingRect()),t.transform&&x.applyTransform(t.transform),_.width=e,_.height=i,!x.intersect(_)}function w(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}}o.__drawIndex=m,o.__drawIndex0&&t>n[0]){for(s=0;st)break;a=i[n[s]]}if(n.splice(s+1,0,t),i[t]=e,!e.virtual)if(a){var u=a.dom;u.nextSibling?l.insertBefore(e.dom,u.nextSibling):l.appendChild(e.dom)}else l.firstChild?l.insertBefore(e.dom,l.firstChild):l.appendChild(e.dom)}else o("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,r=this._zlevelList;for(n=0;n0?g:0),this._needsManuallyCompositing),s.__builtin__||o("ZLevel "+l+" has been used by unkown layer "+s.id),s!==r&&(s.__used=!0,s.__startIndex!==i&&(s.__dirty=!0),s.__startIndex=i,s.incremental?s.__drawIndex=-1:s.__drawIndex=i,e(i),r=s),n.__dirty&&(s.__dirty=!0,s.incremental&&s.__drawIndex<0&&(s.__drawIndex=i))}e(i),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?a.merge(i[t],e,!0):i[t]=e;for(var n=0;n1?"."+t[1]:""))}function s(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}var l=n.normalizeCssArray,u=/([&<>"'])/g,c={"&":"&","<":"<",">":">",'"':""","'":"'"};function h(t){return null==t?"":(t+"").replace(u,function(t,e){return c[e]})}var d=["a","b","c","d","e","f","g"],f=function(t,e){return"{"+t+(null==e?"":e)+"}"};function p(t,e,i){n.isArray(e)||(e=[e]);var r=e.length;if(!r)return"";for(var a=e[0].$vars||[],o=0;o':'':{renderMode:a,content:"{marker"+o+"|} ",style:{color:i}}:""}function m(t,e){return t+="","0000".substr(0,e-t.length)+t}function y(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=a.parseDate(e),r=i?"UTC":"",o=n["get"+r+"FullYear"](),s=n["get"+r+"Month"]()+1,l=n["get"+r+"Date"](),u=n["get"+r+"Hours"](),c=n["get"+r+"Minutes"](),h=n["get"+r+"Seconds"](),d=n["get"+r+"Milliseconds"]();return t=t.replace("MM",m(s,2)).replace("M",s).replace("yyyy",o).replace("yy",o%100).replace("dd",m(l,2)).replace("d",l).replace("hh",m(u,2)).replace("h",u).replace("mm",m(c,2)).replace("m",c).replace("ss",m(h,2)).replace("s",h).replace("SSS",m(d,3)),t}function x(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}var _=r.truncateText;function b(t){return r.getBoundingRect(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)}function w(t,e,i,n,a,o,s,l){return r.getBoundingRect(t,e,i,n,a,l,o,s)}e.addCommas=o,e.toCamelCase=s,e.normalizeCssArray=l,e.encodeHTML=h,e.formatTpl=p,e.formatTplSimple=g,e.getTooltipMarker=v,e.formatTime=y,e.capitalFirst=x,e.truncateText=_,e.getTextBoundingRect=b,e.getTextRect=w},ee1a:function(t,e,i){var n=i("6d8b"),r=n.each,a=n.isString;function o(t,e,i){i=i||{};var n,o,s,l,u=i.byIndex,c=i.stackedCoordDimension,h=!(!t||!t.get("stack"));if(r(e,function(t,i){a(t)&&(e[i]=t={name:t}),h&&!t.isExtraCoord&&(u||n||!t.ordinalMeta||(n=t),o||"ordinal"===t.type||"time"===t.type||c&&c!==t.coordDim||(o=t))}),!o||u||n||(u=!0),o){s="__\0ecstackresult",l="__\0ecstackedover",n&&(n.createInvertedIndices=!0);var d=o.coordDim,f=o.type,p=0;r(e,function(t){t.coordDim===d&&p++}),e.push({name:s,coordDim:d,coordDimIndex:p,type:f,isExtraCoord:!0,isCalculationCoord:!0}),p++,e.push({name:l,coordDim:l,coordDimIndex:p,type:f,isExtraCoord:!0,isCalculationCoord:!0})}return{stackedDimension:o&&o.name,stackedByDimension:n&&n.name,isStackedByIndex:u,stackedOverDimension:l,stackResultDimension:s}}function s(t,e){return!!e&&e===t.getCalculationInfo("stackedDimension")}function l(t,e){return s(t,e)?t.getCalculationInfo("stackResultDimension"):e}e.enableDataStack=o,e.isDimensionStacked=s,e.getStackedDimension=l},ee84:function(t,e,i){var n=i("20c8"),r=i("401b"),a=r.applyTransform,o=n.CMD,s=[[],[],[]],l=Math.sqrt,u=Math.atan2;function c(t,e){var i,n,r,c,h,d=t.data,f=o.M,p=o.C,g=o.L,v=o.R,m=o.A,y=o.Q;for(r=0,c=0;re[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function w(t,e,i){if(!i.valueDim)return[];for(var n=[],r=0,a=e.count();ro[1]&&o.reverse();var s=r.getExtent(),u=Math.PI/180;i&&(o[0]-=.5,o[1]+=.5);var c=new l.Sector({shape:{cx:g(t.cx,1),cy:g(t.cy,1),r0:g(o[0],1),r:g(o[1],1),startAngle:-s[0]*u,endAngle:-s[1]*u,clockwise:r.inverse}});return e&&(c.shape.endAngle=-s[0]*u,l.initProps(c,{shape:{endAngle:-s[1]*u}},n)),c}function C(t,e,i,n){return"polar"===t.type?M(t,e,i,n):S(t,e,i,n)}function T(t,e,i){for(var n=e.getBaseAxis(),r="x"===n.dim||"radius"===n.dim?0:1,a=[],o=0;o=0;o--){var s=i[o].dimension,u=t.dimensions[s],c=t.getDimensionInfo(u);if(n=c&&c.coordDim,"x"===n||"y"===n){a=i[o];break}}if(a){var h=e.getAxis(n),d=r.map(a.stops,function(t){return{coord:h.toGlobalCoord(h.dataToCoord(t.value)),color:t.color}}),f=d.length,p=a.outerColors.slice();f&&d[0].coord>d[f-1].coord&&(d.reverse(),p.reverse());var g=10,v=d[0].coord-g,m=d[f-1].coord+g,y=m-v;if(y<.001)return"transparent";r.each(d,function(t){t.offset=(t.coord-v)/y}),d.push({offset:f?d[f-1].offset:.5,color:p[1]||"transparent"}),d.unshift({offset:f?d[0].offset:.5,color:p[0]||"transparent"});var x=new l.LinearGradient(0,0,0,0,d,!0);return x[n]=v,x[n+"2"]=m,x}}}function A(t,e,i){var n=t.get("showAllSymbol"),a="auto"===n;if(!n||a){var o=i.getAxesByScale("ordinal")[0];if(o&&(!a||!D(o,e))){var s=e.mapDimension(o.dim),l={};return r.each(o.getViewLabels(),function(t){l[t.tickValue]=1}),function(t){return!l.hasOwnProperty(e.get(s,t))}}}}function D(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var r=e.count(),a=Math.max(1,Math.round(r/5)),s=0;sn)return!1;return!0}var k=f.extend({type:"line",init:function(){var t=new l.Group,e=new a;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,i){var n=t.coordinateSystem,a=this.group,o=t.getData(),s=t.getModel("lineStyle"),l=t.getModel("areaStyle"),u=o.mapArray(o.getItemLayout),c="polar"===n.type,h=this._coordSys,d=this._symbolDraw,f=this._polyline,p=this._polygon,g=this._lineGroup,v=t.get("animation"),y=!l.isEmpty(),b=l.get("origin"),S=m(n,o,b),M=w(n,o,S),D=t.get("showSymbol"),k=D&&!c&&A(t,o,n),O=this._data;O&&O.eachItemGraphicEl(function(t,e){t.__temp&&(a.remove(t),O.setItemGraphicEl(e,null))}),D||d.remove(),a.add(g);var L=!c&&t.get("step");f&&h.type===n.type&&L===this._step?(y&&!p?p=this._newPolygon(u,M,n,v):p&&!y&&(g.remove(p),p=this._polygon=null),g.setClipPath(C(n,!1,!1,t)),D&&d.updateData(o,{isIgnore:k,clipShape:C(n,!1,!0,t)}),o.eachItemGraphicEl(function(t){t.stopAnimation(!0)}),x(this._stackedOnPoints,M)&&x(this._points,u)||(v?this._updateAnimation(o,M,n,i,L,b):(L&&(u=T(u,n,L),M=T(M,n,L)),f.setShape({points:u}),p&&p.setShape({points:u,stackedOnPoints:M})))):(D&&d.updateData(o,{isIgnore:k,clipShape:C(n,!1,!0,t)}),L&&(u=T(u,n,L),M=T(M,n,L)),f=this._newPolyline(u,n,v),y&&(p=this._newPolygon(u,M,n,v)),g.setClipPath(C(n,!0,!1,t)));var P=I(o,n)||o.getVisual("color");f.useStyle(r.defaults(s.getLineStyle(),{fill:"none",stroke:P,lineJoin:"bevel"}));var E=t.get("smooth");if(E=_(t.get("smooth")),f.setShape({smooth:E,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),p){var R=o.getCalculationInfo("stackedOnSeries"),N=0;p.useStyle(r.defaults(l.getAreaStyle(),{fill:P,opacity:.7,lineJoin:"bevel"})),R&&(N=_(R.get("smooth"))),p.setShape({smooth:E,stackedOnSmooth:N,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=o,this._coordSys=n,this._stackedOnPoints=M,this._points=u,this._step=L,this._valueOrigin=b},dispose:function(){},highlight:function(t,e,i,n){var r=t.getData(),a=u.queryDataIndex(r,n);if(!(a instanceof Array)&&null!=a&&a>=0){var s=r.getItemGraphicEl(a);if(!s){var l=r.getItemLayout(a);if(!l)return;s=new o(r,a),s.position=l,s.setZ(t.get("zlevel"),t.get("z")),s.ignore=isNaN(l[0])||isNaN(l[1]),s.__temp=!0,r.setItemGraphicEl(a,s),s.stopSymbolAnimation(!0),this.group.add(s)}s.highlight()}else f.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var r=t.getData(),a=u.queryDataIndex(r,n);if(null!=a&&a>=0){var o=r.getItemGraphicEl(a);o&&(o.__temp?(r.setItemGraphicEl(a,null),this.group.remove(o)):o.downplay())}else f.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new h({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new d({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,r,a){var o=this._polyline,u=this._polygon,c=t.hostModel,h=s(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),d=h.current,f=h.stackedOnCurrent,p=h.next,g=h.stackedOnNext;r&&(d=T(h.current,i,r),f=T(h.stackedOnCurrent,i,r),p=T(h.next,i,r),g=T(h.stackedOnNext,i,r)),o.shape.__points=h.current,o.shape.points=d,l.updateProps(o,{shape:{points:p}},c),u&&(u.setShape({points:d,stackedOnPoints:f}),l.updateProps(u,{shape:{points:p,stackedOnPoints:g}},c));for(var v=[],m=h.status,y=0;y=1)&&(t=1),t}s===u&&l===d||(e="reset"),(this._dirty||"reset"===e)&&(this._dirty=!1,o=h(this,n)),this._modBy=u,this._modDataCount=d;var p=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var g=this._dueIndex,v=Math.min(null!=p?this._dueIndex+p:1/0,this._dueEnd);if(!n&&(o||g1&&n>0?s:o}};return a;function o(){return e=t?null:an||l.newline?(a=0,c=v,o+=s+i,s=f.height):s=Math.max(s,f.height)}else{var m=f.height+(g?-g.y+f.y:0);h=o+m,h>r||l.newline?(a+=s+i,o=0,h=m,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=o,"horizontal"===t?a=c+i:o=h+i)})}var d=h,f=n.curry(h,"vertical"),p=n.curry(h,"horizontal");function g(t,e,i){var n=e.width,r=e.height,a=o(t.x,n),l=o(t.y,r),u=o(t.x2,n),c=o(t.y2,r);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(u)||isNaN(parseFloat(t.x2)))&&(u=n),(isNaN(l)||isNaN(parseFloat(t.y)))&&(l=0),(isNaN(c)||isNaN(parseFloat(t.y2)))&&(c=r),i=s.normalizeCssArray(i||0),{width:Math.max(u-a-i[1]-i[3],0),height:Math.max(c-l-i[0]-i[2],0)}}function v(t,e,i){i=s.normalizeCssArray(i||0);var n=e.width,a=e.height,l=o(t.left,n),u=o(t.top,a),c=o(t.right,n),h=o(t.bottom,a),d=o(t.width,n),f=o(t.height,a),p=i[2]+i[0],g=i[1]+i[3],v=t.aspect;switch(isNaN(d)&&(d=n-c-g-l),isNaN(f)&&(f=a-h-p-u),null!=v&&(isNaN(d)&&isNaN(f)&&(v>n/a?d=.8*n:f=.8*a),isNaN(d)&&(d=v*f),isNaN(f)&&(f=d/v)),isNaN(l)&&(l=n-c-d-g),isNaN(u)&&(u=a-h-f-p),t.left||t.right){case"center":l=n/2-d/2-i[3];break;case"right":l=n-d-g;break}switch(t.top||t.bottom){case"middle":case"center":u=a/2-f/2-i[0];break;case"bottom":u=a-f-p;break}l=l||0,u=u||0,isNaN(d)&&(d=n-g-l-(c||0)),isNaN(f)&&(f=a-p-u-(h||0));var m=new r(l+i[3],u+i[0],d,f);return m.margin=i,m}function m(t,e,i,a,o){var s=!o||!o.hv||o.hv[0],l=!o||!o.hv||o.hv[1],u=o&&o.boundingMode||"all";if(s||l){var c;if("raw"===u)c="group"===t.type?new r(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(c=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();c=c.clone(),c.applyTransform(h)}e=v(n.defaults({width:c.width,height:c.height},e),i,a);var d=t.position,f=s?e.x-c.x:0,p=l?e.y-c.y:0;t.attr("position","raw"===u?[f,p]:[d[0]+f,d[1]+p])}}function y(t,e){return null!=t[c[e][0]]||null!=t[c[e][1]]&&null!=t[c[e][2]]}function x(t,e,i){!n.isObject(i)&&(i={});var r=i.ignoreSize;!n.isArray(r)&&(r=[r,r]);var a=s(c[0],0),o=s(c[1],1);function s(i,n){var a={},o=0,s={},c=0,d=2;if(l(i,function(e){s[e]=t[e]}),l(i,function(t){u(e,t)&&(a[t]=s[t]=e[t]),h(a,t)&&o++,h(s,t)&&c++}),r[n])return h(e,i[1])?s[i[2]]=null:h(e,i[2])&&(s[i[1]]=null),s;if(c!==d&&o){if(o>=d)return a;for(var f=0;ff[1]?-1:1,g=["start"===s?f[0]-p*d:"end"===s?f[1]+p*d:(f[0]+f[1])/2,O(s)?t.labelOffset+c*d:0],v=e.get("nameRotate");null!=v&&(v=v*b/180),O(s)?n=C(t.rotation,null!=v?v:t.rotation,c):(n=T(t,s,v||0,f),a=t.axisNameAvailableWidth,null!=a&&(a=Math.abs(a/Math.sin(n.rotation)),!isFinite(a)&&(a=null)));var m=h.getFont(),y=e.get("nameTruncate",!0)||{},x=y.ellipsis,_=r(t.nameTruncateMaxWidth,y.maxWidth,a),S=null!=x&&null!=_?l.truncateText(i,_,m,x,{minChar:2,placeholder:y.placeholder}):i,M=e.get("tooltip",!0),A=e.mainType,D={componentType:A,name:i,$vars:["name"]};D[A+"Index"]=e.componentIndex;var k=new u.Text({anid:"name",__fullText:i,__truncatedText:S,position:g,rotation:n.rotation,silent:I(e),z2:1,tooltip:M&&M.show?o({content:i,formatter:function(){return i},formatterParams:D},M):null});u.setTextStyle(k.style,h,{text:S,textFont:m,textFill:h.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(k.eventData=w(e),k.eventData.targetType="axisName",k.eventData.name=i),this._dumbGroup.add(k),k.updateTransform(),this.group.add(k),k.decomposeTransform()}}},C=S.innerTextLayout=function(t,e,i){var n,r,a=f(e-t);return d(a)?(r=i>0?"top":"bottom",n="center"):d(a-b)?(r=i>0?"bottom":"top",n="center"):(r="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:r}};function T(t,e,i,n){var r,a,o=f(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return d(o-b/2)?(a=l?"bottom":"top",r="center"):d(o-1.5*b)?(a=l?"top":"bottom",r="center"):(a="middle",r=o<1.5*b&&o>b/2?l?"left":"right":l?"right":"left"),{rotation:o,textAlign:r,textVerticalAlign:a}}function I(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function A(t,e,i){if(!_(t.axis)){var n=t.get("axisLabel.showMinLabel"),r=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],o=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],c=i[1],h=i[i.length-1],d=i[i.length-2];!1===n?(D(a),D(u)):k(a,o)&&(n?(D(o),D(c)):(D(a),D(u))),!1===r?(D(s),D(h)):k(l,s)&&(r?(D(l),D(d)):(D(s),D(h)))}}function D(t){t&&(t.ignore=!0)}function k(t,e,i){var n=t&&t.getBoundingRect().clone(),r=e&&e.getBoundingRect().clone();if(n&&r){var a=v.identity([]);return v.rotate(a,a,-t.rotation),n.applyTransform(v.mul([],a,t.getLocalTransform())),r.applyTransform(v.mul([],a,e.getLocalTransform())),n.intersect(r)}}function O(t){return"middle"===t||"center"===t}function L(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var r=e.getModel("axisTick"),o=r.getModel("lineStyle"),s=r.get("length"),l=n.getTicksCoords(),c=[],h=[],d=t._transform,f=[],p=0;pe&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;i1)"string"===typeof o?l=i[o]:"function"===typeof o&&(l=o),l&&t.setData(a.downSample(a.mapDimension(c.dim),1/f,l,n))}}}}t.exports=r},fe21:function(t,e,i){var n=i("e86a"),r=i("2306"),a=["textStyle","color"],o={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(a):null)},getFont:function(){return r.getFont({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return n.getBoundingRect(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}};t.exports=o},ff2e:function(t,e,i){var n=i("6d8b"),r=i("2306"),a=i("e86a"),o=i("eda2"),s=i("1687"),l=i("697e"),u=i("fab22");function c(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle(),e.fill=null):"shadow"===i&&(e=n.getAreaStyle(),e.stroke=null),e}function h(t,e,i,n,r){var s=i.get("value"),l=f(s,e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),u=i.getModel("label"),c=o.normalizeCssArray(u.get("padding")||0),h=u.getFont(),p=a.getBoundingRect(l,h),g=r.position,v=p.width+c[1]+c[3],m=p.height+c[0]+c[2],y=r.align;"right"===y&&(g[0]-=v),"center"===y&&(g[0]-=v/2);var x=r.verticalAlign;"bottom"===x&&(g[1]-=m),"middle"===x&&(g[1]-=m/2),d(g,v,m,n);var _=u.get("backgroundColor");_&&"auto"!==_||(_=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:v,height:m,r:u.get("borderRadius")},position:g.slice(),style:{text:l,textFont:h,textFill:u.getTextColor(),textPosition:"inside",fill:_,stroke:u.get("borderColor")||"transparent",lineWidth:u.get("borderWidth")||0,shadowBlur:u.get("shadowBlur"),shadowColor:u.get("shadowColor"),shadowOffsetX:u.get("shadowOffsetX"),shadowOffsetY:u.get("shadowOffsetY")},z2:10}}function d(t,e,i,n){var r=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,r)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function f(t,e,i,r,a){t=e.scale.parse(t);var o=e.scale.getLabel(t,{precision:a.precision}),s=a.formatter;if(s){var u={value:l.getAxisRawValue(e,t),seriesData:[]};n.each(r,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,r=e&&e.getDataParams(n);r&&u.seriesData.push(r)}),n.isString(s)?o=s.replace("{value}",o):n.isFunction(s)&&(o=s(u))}return o}function p(t,e,i){var n=s.create();return s.rotate(n,n,i.rotation),s.translate(n,n,i.position),r.applyTransform([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function g(t,e,i,n,r,a){var o=u.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=r.get("label.margin"),h(e,n,r,a,{position:p(n.axis,t,i),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function v(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function m(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function y(t,e,i,n,r,a){return{cx:t,cy:e,r0:i,r:n,startAngle:r,endAngle:a,clockwise:!0}}e.buildElStyle=c,e.buildLabelElOption=h,e.getValueLabel=f,e.getTransformedPosition=p,e.buildCartesianSingleLabelElOption=g,e.makeLineShape=v,e.makeRectShape=m,e.makeSectorShape=y}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-6c281630.390d79a0.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-6c281630.390d79a0.js new file mode 100644 index 000000000..f84a784cb --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-6c281630.390d79a0.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-6c281630"],{"6a7e":function(n,t,e){"use strict";e.r(t);var o=function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"not-found"},[e("h1",[n._v("404")]),e("p",[n._v(n._s(n.$t("Base.resourcesNotFound")))])])},s=[],a={name:"NotFound",components:{},props:{},data:function(){return{}},created:function(){},methods:{}},c=a,u=(e("f6a6"),e("2877")),r=Object(u["a"])(c,o,s,!1,null,"16e0548e",null);t["default"]=r.exports},f4b1:function(n,t,e){},f6a6:function(n,t,e){"use strict";var o=e("f4b1"),s=e.n(o);s.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-73c7a756.fcf16690.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-73c7a756.fcf16690.js new file mode 100644 index 000000000..25509f171 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-73c7a756.fcf16690.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-73c7a756"],{"0415":function(e,t,a){"use strict";var s=a("21eb"),n=a.n(s);n.a},"21eb":function(e,t,a){},"3b14":function(e,t,a){"use strict";var s=a("cde3"),n=a.n(s);n.a},"806e":function(e,t,a){"use strict";var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"custom-pagination"},[a("a",{class:["prev",1===e.page?"disabled":""],attrs:{href:"javascript:;"},on:{click:e.prev}},[a("i",{staticClass:"el-icon-arrow-left"}),e._v("\n "+e._s(e.$t("Base.prev"))+"\n ")]),a("a",{class:["next",e.hasnext?"":"disabled"],attrs:{href:"javascript:;"},on:{click:e.next}},[e._v("\n "+e._s(e.$t("Base.next"))+"\n "),a("i",{staticClass:"el-icon-arrow-right"})])])},n=[],r=(a("c5f6"),{name:"CustomPagination",props:{page:{required:!0,type:Number},hasnext:{required:!0,type:Boolean}},methods:{prev:function(){this.$emit("prevClick")},next:function(){this.$emit("nextClick")}}}),i=r,o=(a("3b14"),a("2877")),c=Object(o["a"])(i,s,n,!1,null,null,null);t["a"]=c.exports},cde3:function(e,t,a){},df2a:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"subscriptions"},[a("page-header",[a("div",{staticClass:"page-header-content-view"},[a("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("Subs.currentSubs"))+"\n "),a("emq-select",{staticClass:"node-select",attrs:{size:"small",field:{options:e.currentNodes},"field-name":{label:"name",value:"node"}},on:{change:e.handleNodeChange},model:{value:e.nodeName,callback:function(t){e.nodeName=t},expression:"nodeName"}})],1)])]),a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"search-wrapper",attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.clientId")},model:{value:e.fuzzyParams.clientid,callback:function(t){e.$set(e.fuzzyParams,"clientid",t)},expression:"fuzzyParams.clientid"}})],1),a("el-col",{staticClass:"form-item-col",attrs:{span:8}},[a("el-row",{staticClass:"form-item-row"},[a("el-col",{attrs:{span:8}},[a("el-select",{staticClass:"match",attrs:{size:"small"},model:{value:e.fuzzyParams.match,callback:function(t){e.$set(e.fuzzyParams,"match",t)},expression:"fuzzyParams.match"}},[a("el-option",{attrs:{label:"filter",value:"_match_topic"}}),a("el-option",{attrs:{label:"topic",value:"topic"}})],1)],1),a("el-col",{attrs:{span:16}},[a("el-input",{attrs:{type:"text",size:"small"},model:{value:e.fuzzyParams.topic,callback:function(t){e.$set(e.fuzzyParams,"topic",t)},expression:"fuzzyParams.topic"}})],1)],1)],1),e.showMoreQuery?[a("el-col",{attrs:{span:8}},[a("el-select",{attrs:{clearable:"",size:"small",placeholder:"QoS"},model:{value:e.fuzzyParams.qos,callback:function(t){e.$set(e.fuzzyParams,"qos",t)},expression:"fuzzyParams.qos"}},[a("el-option",{attrs:{value:0}}),a("el-option",{attrs:{value:1}}),a("el-option",{attrs:{value:2}})],1)],1),a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{type:"text",size:"small",placeholder:e.$t("Subs.share")},model:{value:e.fuzzyParams.share,callback:function(t){e.$set(e.fuzzyParams,"share",t)},expression:"fuzzyParams.share"}})],1)]:e._e(),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{type:"primary",icon:"el-icon-search",size:"small"},on:{click:e.handleSearch}},[e._v("\n "+e._s(e.$t("Clients.search"))+"\n ")]),a("el-button",{attrs:{plain:"",size:"small",icon:e.resetIcon},on:{click:e.resetSearch}},[e._v("\n "+e._s(e.$t("Clients.reset"))+"\n ")]),a("a",{staticClass:"show-more",attrs:{href:"javascript:;"},on:{click:function(t){e.showMoreQuery=!e.showMoreQuery}}},[e._v("\n "+e._s(e.showMoreQuery?e.$t("Clients.collapse"):e.$t("Clients.expand"))+"\n "),a("i",{class:e.showMoreQuery?"el-icon-arrow-up":"el-icon-arrow-down"})])],1)],2)],1),a("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[a("el-table-column",{attrs:{prop:"clientid","min-width":"130px",label:e.$t("Clients.clientId")}}),a("el-table-column",{attrs:{prop:"topic",label:e.$t("Subs.topic")}}),a("el-table-column",{attrs:{prop:"qos",label:"QoS"}})],1),a("div",{staticClass:"emq-table-footer"},[e.count>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[20,50,100,500],"page-size":e.params._limit,"current-page":e.params._page,total:e.count},on:{"update:pageSize":function(t){return e.$set(e.params,"_limit",t)},"update:page-size":function(t){return e.$set(e.params,"_limit",t)},"update:currentPage":function(t){return e.$set(e.params,"_page",t)},"update:current-page":function(t){return e.$set(e.params,"_page",t)},"size-change":e.handleSizeChange,"current-change":e.handleCurrentPageChange}}):e._e(),-1===e.count&&e.tableData.length?a("custom-pagination",{attrs:{hasnext:e.hasnext,page:e.params._page},on:{prevClick:e.handlePrevClick,nextClick:e.handleNextClick}}):e._e()],1)],1)],1)],1)},n=[],r=a("cebc"),i=(a("4917"),a("96cf"),a("3b8d")),o=a("806e"),c=a("1f75");function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return c["a"].get("/nodes/".concat(e,"/subscriptions"),{params:t})}var u=a("2934"),p={name:"Subscriptions",components:{CustomPagination:o["a"]},data:function(){return{listLoading:!0,showMoreQuery:!1,tableData:[],hasnext:!1,params:{_page:1,_limit:20},count:0,nodeName:"",currentNodes:[],resetIcon:"el-icon-refresh",fuzzyParams:{match:"_match_topic"}}},created:function(){this.loadData()},methods:{handleNodeChange:function(){this.loadNodeSubscriptions(!0)},resetSearch:function(){this.resetIcon="el-icon-loading",this.fuzzyParams={match:"_match_topic"},this.loadNodeSubscriptions(!0)},handleSearch:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:t=this.genQueryParams(this.fuzzyParams),this.count=0,this.loadNodeSubscriptions(!0,t);case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),genQueryParams:function(e){var t={},a=e.clientid,s=e.topic,n=e.qos,r=e.share,i=e.match;return t={clientid:a||void 0,qos:""===n?void 0:n,share:r||void 0},s&&(t[i]=s),t},handleSizeChange:function(){this.loadNodeSubscriptions(!0)},handleCurrentPageChange:function(){this.loadNodeSubscriptions()},handlePrevClick:function(){if(1!==this.params._page){this.params._page-=1;var e=this.genQueryParams(this.fuzzyParams);this.loadNodeSubscriptions(!1,e)}},handleNextClick:function(){if(this.hasnext){this.params._page+=1;var e=this.genQueryParams(this.fuzzyParams);this.loadNodeSubscriptions(!1,e)}},loadData:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(u["d"])();case 2:this.currentNodes=e.sent,this.nodeName=this.nodeName||(this.currentNodes[0]||{}).node,this.listLoading=!1,this.loadNodeSubscriptions();case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadNodeSubscriptions:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var a,s,n,i,o,c,u,p,h,d=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return a=d.length>1&&void 0!==d[1]?d[1]:{},t&&(this.params._page=1),e.next=4,l(this.nodeName,Object(r["a"])({},this.params,a));case 4:s=e.sent,n=s.items,i=void 0===n?[]:n,o=s.meta,c=o.count,u=void 0===c?0:c,p=o.hasnext,h=void 0!==p&&p,this.tableData=i,this.count=u,this.hasnext=h,this.resetIcon="el-icon-refresh";case 10:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}()}},h=p,d=(a("0415"),a("2877")),m=Object(d["a"])(h,s,n,!1,null,null,null);t["default"]=m.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a115fb5.a45fa85b.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a115fb5.a45fa85b.js new file mode 100644 index 000000000..4dc88844b --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a115fb5.a45fa85b.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7a115fb5"],{"0dba":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"backup"},[n("page-header",[n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("Backup.manageDashboardBackup"))+"\n ")])])]),n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"emq-list-card"},[n("div",{staticClass:"emq-table-header"},[n("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:e.handleExport}},[e._v("\n "+e._s(e.$t("Backup.createBackup"))+"\n ")]),n("el-upload",{ref:"upload",staticClass:"upload-backup",attrs:{action:"/api/v4/data/file",accept:".json",limit:1,"file-list":e.fileList,"auto-upload":!1,"on-change":e.handleChange,"on-error":e.handleError}},[n("el-button",{attrs:{slot:"trigger",size:"small",icon:"el-icon-upload2"},slot:"trigger"},[e._v("\n "+e._s(e.$t("Backup.uploadServer"))+"\n ")])],1)],1),n("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[n("el-table-column",{attrs:{prop:"node",label:e.$t("RuleEngine.node")}}),n("el-table-column",{attrs:{prop:"filename",label:e.$t("Backup.filename")}}),n("el-table-column",{attrs:{prop:"size",label:e.$t("Backup.size")},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[e._v("\n "+e._s(e._f("renderSize")(n.size))+"\n ")]}}])}),n("el-table-column",{attrs:{prop:"created_at",label:e.$t("Backup.createAt")}}),n("el-table-column",{attrs:{width:"250px"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.handleDownload(a)}}},[e._v(e._s(e.$t("Backup.download"))+" ")]),n("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.handleRestore(a)}}},[e._v(e._s(e.$t("Backup.restore"))+" ")]),n("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteConfirm(a)}}},[e._v(e._s(e.$t("General.delete"))+"\n ")])]}}])})],1)],1)],1)],1)},r=[],s=(n("6b54"),n("7f7f"),n("96cf"),n("3b8d")),i=n("1f75");function o(){return i["a"].get("/data/export")}function c(){return i["a"].post("/data/export",{})}function u(e){return i["a"].delete("/data/file/".concat(e))}function l(e){return i["a"].get("/data/file/".concat(e))}function d(e){return i["a"].post("/data/file",e)}function p(e){return i["a"].post("/data/import",e)}var f={name:"Backup",components:{},filters:{renderSize:function(e){if(null===e||""===e)return"0 Bytes";var t=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],n=0,a=parseFloat(e);n=Math.floor(Math.log(a)/Math.log(1024));var r=a/Math.pow(1024,n);return r=r.toFixed(1),"".concat(r," ").concat(t[n])}},props:{},data:function(){return{fileList:[],tableData:[]}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,o();case 2:this.tableData=e.sent;case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleExport:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c();case 2:t=e.sent,t&&(this.$message.success(this.$t("Base.createSuccess")),this.loadData());case 4:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleDownload:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(t){var n,a,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,l(t.filename);case 2:n=e.sent,n&&(a=document.createElement("a"),r=new Blob([n.file]),a.download=t.filename,a.href=URL.createObjectURL(r),a.setAttribute("type","hidden"),document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(r));case 4:case"end":return e.stop()}},e)}));function t(t){return e.apply(this,arguments)}return t}(),handleRestore:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(t){var n,a,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=t.filename,a=t.node,e.next=3,p({filename:n,node:a});case 3:r=e.sent,r&&this.$message.success(this.$t("Backup.restoreSuccess"));case 5:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),deleteConfirm:function(e){var t=this,n=this;this.$msgbox.confirm(this.$t("Backup.confirmDelete"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(s["a"])(regeneratorRuntime.mark(function a(){return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:u(e.filename).then(function(){n.$message.success(t.$t("General.successfulDeletion")),n.loadData()});case 1:case"end":return a.stop()}},a)}))).catch(function(){})},handleChange:function(e){var t=this;if(e.size>=5242880)return this.$message.warning(this.$t("Backup.fileTooBig")),void this.$refs.upload.clearFiles();var n=new FileReader;n.readAsText(e.raw),n.onload=function(){var n=Object(s["a"])(regeneratorRuntime.mark(function n(a){var r,s,i,o;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return r=a.currentTarget.result,s={file:r,filename:e.name},n.next=4,d(s);case 4:i=n.sent,o=i.data.node,i&&(t.handleRestore({filename:e.name,node:o}),t.loadData(),t.$refs.upload.clearFiles());case 7:case"end":return n.stop()}},n)}));return function(e){return n.apply(this,arguments)}}(),n.onerror=function(){t.$message.error(t.$t("Backup.uploadFailed"))}},handleError:function(e){this.$message.error(e.toString())}}},h=f,m=(n("4f72"),n("2877")),v=Object(m["a"])(h,a,r,!1,null,null,null);t["default"]=v.exports},"4d40":function(e,t,n){},"4f72":function(e,t,n){"use strict";var a=n("4d40"),r=n.n(a);r.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a82b09c.43ec0d25.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a82b09c.43ec0d25.js new file mode 100644 index 000000000..fec5a4bbd --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7a82b09c.43ec0d25.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7a82b09c"],{"062d":function(A,t){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAABfRJREFUeAHtnUuIHFUUhk/V9IzJjIiJ+EKFQUFBXBgXBiVkYXSjOxeuBN2IDxTcuBBB0E3cBLNwL7hRN+4k4gO3ooag4gs3JmhEkSiTmZ6ZflRZJdOL6WKSrjq3+vTp+zWEmr59/3NvffejupvU3EnWu/1ceECgIYG0YY4YBP4ngECIoCKAQCp8hBEIB1QEEEiFjzAC4YCKAAKp8BFGIBxQEUAgFT7CCIQDKgIIpMJHGIFwQEUAgVT4CCMQDqgIIJAKH2EEwgEVAQRS4SOMQDigIoBAKnyEEQgHVAQQSIWPMALhgIoAAqnwEUYgHFAR6KjSDcMrLy42TO6OdV/9RfKDq7sbJ3y2/Mr1kmxcmLD33t02X/hMstuO7t1hzl/hCjTnC9z26SFQ24TnvL5vgbLBDCxP3FsL+Bao17UXaDgLEtth8C2QHTdG3iHgXKCEhTQm4FwgY3oML74FSrgCWTvsWyBreozPFQgHdAS4Aun4RZ92LhCfgawNdi6QNT7G9y0Q38LMDfYtkDk+JuBcID4DWSvsXCBrfIzvWyA+A5kb7Fsgc3xMwLdAXIHMDfYtkDk+JuBcIL6FWSvsXCBrfIzvWyA+A5kb7Fsgc3xMwLlAfAayVti5QNb4GN+3QHwGMjfYt0Dm+JiAb4G4Apkb7Fsgc3xMwLlAfAuzVti5QNb4GN+1QMnan81WsL8p0v23WXYslXT1u5yNlXT11LVAna/eaQS788XbkuRZo+x4qHP6vfGmqJ4n693+1HdICrVHYrlS/fufksG9j0t+5XUieXEqpRjlUcqfd45ZKUsuydaaLHx/ShY/PyFJNizjQR6DQ4/J4PCTkq8cDFJvV5F+sQdSf3tX015Psjse3Oul1trdC9QaGYeFN072pz5r129hU6fFgBUCCFRBQkMdAghUhxZ9KwQQqIKEhjoEEKgOLfpWCCBQBQkNdQggUB1a9K0QQKAKEhrqEECgOrToWyGAQBUkNNQhgEB1aNG3QgCBKkhoqEMAgerQom+FAAJVkNBQhwAC1aFF3woBBKogoaEOAQSqQ4u+FQIIVEFCQx0CJn83vs4EvfbNO1dIvnz1JaeflPdsr/8d7Ab/Sw7W0osIFBBseQv/4OjzxQ32T0h2410i6QR4exuS/nZGFj85Lp0fPw44m+mU4i0sEOc8XZCtZ09J79E3Jbvp7snkKcdeWpHs1iOy/fSH0nvk9UCzmV4ZBArEuv/Qy6L9tZqyxvD2BwLNaDplECgA5zxJpX/spQCVRHqFRJ4eCBRgtfIb7izeipYDVBLJbrmn/JVINw8ECrBU2TWrAarslNh3lcjygXD1Wq6EQC0DblTe0cZZCNRohQmNCCDQiATHRgQQqBE2QiMCCDQiwbERAQRqhI3QiAACjUhwbEQAgRphIzQigEAjEopjsrmmSI9F82Lrve2NscbZfYpAAdYm/f1MUSXMf0Akf/wgyWCyPREDTF1dAoHUCKXYvPOiLPz0aYBKIp1vPghSZ1pFECgQ6aX3nyneei6qqiXnvy1uLHtDVWPaYQQKRDz955zsP3GfpGe/bFRx4fS7sv+tY8X2w4NGeavQBPdcWk3N37jpXz/LvpNHJC9uZx2Wt2WsXHuZk8glvXBW0nNfF8dfL9N3Nl9GoMDrUt4on5z/TtLiXwwP3sJiWOUWzxGBWoQbQ2kEimGVWzxHBGoRbgylESiGVW7xHBGoRbgxlEagGFa5xXNEoBbhxlAagWJY5RbPEYFahBtDaROByr1zeMwHAROBspsPzQc9zkJMBOo9/Fqg+/dYQWsCJgJlxR44W899JMPVw5J3lqwZML6CgMmf/VbMl+iMETC5As0YA6ajIIBACnhEi60ggQABDQEE0tAjyxUIB3QEuALp+EWfRqDoFdABQCAdv+jTCBS9AjoACKTjF30agaJXQAcAgXT8ok8jUPQK6AAgkI5f9GkEil4BHQAE0vGLPo1A0SugA4BAOn7RpxEoegV0ABBIxy/6NAJFr4AOAALp+EWfRqDoFdABQCAdv+jTCBS9AgCAgCGB/wCQFsDA+rTqTQAAAABJRU5ErkJggg=="},"264e":function(A,t){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACttJREFUeAHtnXtsFMcdx3+2wQYb8AM7xuZRMHEgahISp0AgIOKIqggSl1ZEhRJVSK3IP8kfgT+iFKmN2kr5I/CHKzWpqlb9g1ZNQCpV4zxERBQSUkFiCiVNSCE2GIOB8wM/8Plx9rnzW3P4zje7Pt/szu2Nv3OydnceOzPf+XhmdnZnJuN2MDRCMFAgSQUykwyHYFDAUgAAAQQlBQCQknwIDIDAgJICAEhJPgQGQGBASQEApCQfAgMgMKCkAABSkg+BARAYUFIAACnJh8AACAwoKQCAlORDYAAEBpQUAEBK8iEwAAIDSgoAICX5EBgAgQElBQCQknwIDIDAgJICAEhJPgQGQGBASQEApCQfAgMgMKCkAABSkg+BARAYUFIAACnJh8AACAwoKQCAlORDYAAEBpQUAEBK8iEwAAIDSgr4CqCbg93098AZpQwhsF4FpumNzj62tsHb9OKFw9Qy0Em3hoL00/LH7T3DxTcK+KIG6ggFac/FUXhYmYPXT9IbVz/2jUhIiL0CKQeod3iQ9gp4rvR3xKTyrZufU23zhzF2uPCfAikHKC8rm6pmL5Iqc0T0h/Y3fUBYBVQqjy8sUw4Qq/DCwmraXrpSKkhd2zl69fJ7FAZGUn1Sbel6JzoomqQ+8ccFzr+wyGF4JHIujuKc3SJ2fM2/6sL7qGe4n95p+yJOk6PtX9FQeJj2VWyhLMqIc4dF6hTIcHud6D+1fGp1gr3I0rqCe+mViqdpWoYvKk4vsph293S9JDI9rCFOdH5D+xr+QYMjw2kntKkJdr0Jy/C4hTnVdYnevPEZ/aRszd0yeeL0gbvnU/3ko0f3apUgrWogVmZDYSXtnLdaq0iIzF4B12ug3Mwcmps9i7gp48qIj9a5qJqij5ni2vrdOUau20I9xKPSMrOxaDm9vGQzOtIycVJk5zpA20qriP+SMa83H6dDgXpp0E1zv00vLd5kQSn1AMuUKOA6QMnmorb5GB0JnJUGrylZQXsWbZS6wTK1CqQcIB5lfq3pKL0rGf9habg2e35BdWpVQuy2CqQcIB50vBgMSBO4o3QVPbdgvdQNlv5QwPWnsMlmK1e8C9tfuY0qZhbHBN1VthbwxCjiz4uUA8Sy5E+bQQcqn6FFM4oslXbPX0e7ysfGefwpHVLFCrj+KkNF1o5QL53saqTNxQ+q3MbosBMNmqb9QKJK6RVNzwM8KgKmIGzKO9FOeZ7ov80prGluumuWRPXzRR8o0cTCn/8UAED+K5O0ShEASqvi8l9iAZD/yiStUgSA0qq4/JdYAOS/MkmrFAGgtCou/yXW1+NAPxOvNKaC+eO1E2mbTV8D9OwU+XQVAE3i/yedxZpENhPyakINq70G+suNUwmJOxU8mQAQOtFTgVQP8wiAPBR3KtxaexPmtaj502bSA7PKqTyngGZl5Yh5+iFqHeyhL3tb6IZYAQ3GXQWMA+jQg7spJ1OerTM9zfRbsebQpb42d1WcwnczrgkbCA/ZFucjsxfS75fvpGV582z9wGFyChgH0KADQCwN106/qaihoum5k1MKvqUKGAdQ/0hImtFoy5Ls2WJRqyejrXCepALGAeTUhEVrVF24LG4qUbQ7zhNTQN7bTCysL339suFtGhLrB83Lzqcd81bS6vwltul8tuwx+lVjna07HCZWwLga6OrALetx/eztZvq5WIyqvrvJVoUNYlk9ngkCk7wCxgEULcXwSJh+famOeClhmeH1FmuKV8icYJegAkYDxBp0DfXTX8WKZnbmKTGJEQt32qkzsb3xALEEDX3yxRvYrVgshrWu8F4+hUlCgSkBED9xOZnvlzzi5Aw3BwWMB4iXBOblgZ1MlRihjizs4OQPbvEKGA/QqvzF1kvV+KzH2mwteTjWAlcJKWA8QNWFyxMS4ntiDcYZmdMT8gtPYwoYDVB2RhY9nr90LLcOZ7zpy3fn3u/gA04yBYwbiY7O5GMFFcQroCVqthY/TG+3nkvUe0r8+W2VDqNroImevsYTsDS3hB7Imz/eGtcOChgLEH+2sTbB5itan633oDMdrcdE58YCxH0fuy8T32//0laXJ8T7sQLxWSxMYgoYC5DT09efW/5F/WH5d0M8brSl+KHE1IMvsX2FgYY7zqsL5J9xNARbibcXP9HZYJvzmpKHsKWCrTqxDkYCxM0XP8LLTH3P6OcdxzrOy5wtu9LsObRGPMHBTKyAkQA5NV//7rliqfJZ92XqFm/q7cwP8H7MTpoYe+MA4rlg/PpCZvj7oP/0XLWc+Px45wWZN8tu5ZzF1twyWw9wsBQwDiB+cWq3pypPLozuPB9r/9oRg+2l33F0hyPvB2eYeVJsSmdnTnePNl8Rd/7stWWgM3IZd3xKdKaXziyJs4fFmAJGvcrgPTcenfOtsdyNOxsPEDvXtf2XeG8OmeEdFmuX/Yj+cO0TOiPgaxbfW3th3Hg9wU+Wn4onyx/eo/fbJqNqoPUF99l+ntonxn3OiyZsvHm//YuYZm28O/epeLO73y3/8Xgn31zzFqEvXjhsTdvmbdd1GqMAqi6y//KQO8/DxNvbxZqOUFDscz/xmkWtYi9XPxpO/56Lh+82xQevn6Q3rn6sLanGAFQopirz3Hc7c/rO+I/M/dDNeuLpQE7GbiNgpzBeu/Fsk70Cniv9HTFRvXXzc6oVi0joMMYAtEE0X9xnsTOy/k/Eb0hMRPxFwz9tp/+wv4APayD+hqlq9qJINmKORwJnaH/TB5I6N8ab8oUxADk1X7dENd/Y1+ooVqNY8mX3+YN0+s5A43jPAbHGkB/NCwuraXvpSmnS6trO0auX36OwhxgZ8xTG7T7vPS8zwaEBmXWc3TXxSL9XdEbni8Wp7s8ro4LpM0WnPIt6hvvprA1YcTdRsAiKJon3kOUC519Y3Cs8EjkXR3HObhE7vuZftfiCgNP4jmTj4qPtX9FQeJj2VWyxfcBQSDIZA9DXvddVdIgJyyDxn27zN9F34U6w2+bDW/+jwYZheqXiadtB1mTjNKYJS1YAP4Vz6sOppvNE5ze0T6wVMCj6e24aAOSmmor3smmBFe86FvxU1yV602Ga95jPxM+0N2EmrI2cuLyT8+llDcQp2VBYSTtdXv1fO0BTZfuCyaEz6js3M4fmirn6DBI/DvDROhdVU/SRHxas351j5LpNDDXYjVdtFO8IX16y2fWOtK+2/U5GdIQZVeD15uN0KFAvlWOTmDT50uJNFpRSDwqW2msghbQiqI0Ctc3H6EjgrNS1pmSF9S5P6uiCJQByQcRU3YLf7L3WdJTelYz/cJq2lVbR8wuqPU0eAPJUXm9vzoOOF4PytY92lK6i5xas9zYB4u54jPdcYu8i4Nkn+yu3xa02u6tsrRZ4OGcAyLvy1XJn/ojuQOUzd9c34o/jdpWv0RI3R4KnMG1SextRR6iXTnY10max5qNOA4B0qm1gXGjCDCxUnVkCQDrVNjAuAGRgoerMEgDSqbaBcQEgAwtVZ5YAkE61DYwLABlYqDqzBIB0qm1gXADIwELVmSUApFNtA+MCQAYWqs4sASCdahsYFwAysFB1ZgkA6VTbwLgAkIGFqjNLAEin2gbGBYAMLFSdWQJAOtU2MC4AZGCh6swSANKptoFxASADC1VnlgCQTrUNjAsAGVioOrMEgHSqbWBcAMjAQtWZJQCkU20D4wJABhaqziwBIJ1qGxgXADKwUHVmCQDpVNvAuP4PcliGf3KCtX0AAAAASUVORK5CYII="},"279d":function(A,t,n){A.exports=n.p+"static/img/emqx_bridge_pulsar.be9aa2e9.png"},"2e75":function(A,t,n){A.exports=n.p+"static/img/emqx_modules.e34e019e.png"},3957:function(A,t){A.exports="data:image/png;base64,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"},"3f72":function(A,t,n){A.exports=n.p+"static/img/emqx_jt808.28a1a87c.png"},"3feb":function(A,t){A.exports="data:image/png;base64,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"},"442c":function(A,t,n){A.exports=n.p+"static/img/emqx_rule_engine.31e92ad1.png"},"47d7":function(A,t,n){},"4ed8":function(A,t,n){A.exports=n.p+"static/img/emqx_auth_redis.e0ec3147.png"},"567d":function(A,t){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAABL1JREFUeAHtnMGLjlEUh40sFBaMpEaEYUOKRMo/gJ2dnZ2VpZqytZg1pawtrC1kRVlJiZokpYhBozRDTbMwashyOvf7ft+c+933nvs+s5t7z7n3nOc8zfvONDMTyyura5v4gMAGCWzeYB5pEPhPAIEQwUUAgVz4SEYgHHARQCAXPpIRCAdcBBDIhY9kBMIBFwEEcuEjGYFwwEUAgVz4SEYgHHARQCAXPpIRCAdcBBDIhY9kBMIBFwEEcuEjGYFwwEUAgVz4SEYgHHARQCAXPpIRCAdcBBDIhY9kBMIBFwEEcuEjGYFwwEUAgVz4SEYgHHARQCAXPpK3lEJwbu5xqau45x+B5ycuFOHAV6AimNu9BIHanW2RzhCoCOZ2L0GgdmdbpDMEKoK53UsQqN3ZFukMgYpgbvcSBGp3tkU6Q6AimNu9BIHanW2RzhCoCOZ2L0GgdmdbpDMEKoK53UsQqN3ZFukMgYpgbvcSBGp3tkU6Q6AimNu9BIHanW2RzhCoCOZ2L0GgdmdbpLNiv1Q/rJvT23cNC2F/HYGXy4vrVsp/Wo1Adw6dLd998Btr+EsXHmHBJeq6fATqegLB70eg4APsunwE6noCwe9HoOAD7Lp8BOp6AsHvR6DgA+y6fATqegLB76/mB4kROT5a+iqVfWnnlBQXMQiBHFO7NT8nZbcsEI8wSQGCUgQQKEWGdYkAAkmYCEoRQKAUGdYlAuFeoh/8+Cg1VlPQqDVf2X2wpvIH1hJOoNvf3g1sqMbNUWuOJBCPsBqNC1QTAgUaVo2lIlCNUwlUEwIFGlaNpYZ7ib6290g1HO8tvJdqqalmqeARgsIJdHXP9AjtjTdUFaimmnMT4RGWm2jPzkOgng08d7sIlJtoz85DoJ4NPHe74V6icwPwnHdj6pgnvYncZgWa/fJm6IBm9h0fGjMo4PLk/kHbvdhrVqCHi/NDB+gVaOgFPQjgHagHQx5niwg0Tro9OBuBejDkcbaIQOOk24Ozw71E3/z8ugdjidNiOIGe/lzIRnfm06tsZ+U8aPbAqZzHjfWscALlpPHs1/ecx/XyLN6Bejn2fE0jUD6WvTwJgXo59nxNh3sHUv+f9PUPL/JR4qQkgXAC5fyP9ncPn0mCYUMjEE4grS0t6uS2SS2QqCQB3oGSaNhQCCCQQomYJAEESqJhQyGAQAolYpIEmn2Jvn/0fLJpNvIRaFag6a078lHipCQBHmFJNGwoBBBIoURMkgACJdGwoRBAIIUSMUkCCJREw4ZCAIEUSsQkCVTzbfzFt0+SRbJRL4FqBFr687teSlSWJMAjLImGDYUAAimUiEkSQKAkGjYUAgikUCImSQCBkmjYUAhMLK+srimBxEDAIsBXIIsKazIBBJJREWgRQCCLCmsyAQSSURFoEUAgiwprMgEEklERaBFAIIsKazIBBJJREWgRQCCLCmsyAQSSURFoEUAgiwprMgEEklERaBFAIIsKazIBBJJREWgRQCCLCmsyAQSSURFoEUAgiwprMgEEklERaBFAIIsKazIBBJJREWgRQCCLCmsyAQSSURFoEUAgiwprMgEEklERaBFAIIsKazIBBJJREWgRQCCLCmsyAQSSURFoEUAgiwprMoG/eZdFsn7iHrwAAAAASUVORK5CYII="},"61d0":function(A,t,n){A.exports=n.p+"static/img/emqx_bridge_kafka.dcabb7d7.png"},"64a5":function(A,t){A.exports="data:image/png;base64,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"},"67e5":function(A,t,n){A.exports=n.p+"static/img/emqx_conf.33ff924d.png"},"682b":function(A,t,n){A.exports=n.p+"static/img/emqx_sn.2d9d907b.png"},"68a59":function(A,t){A.exports="data:image/png;base64,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"},"7a31":function(A,t,n){A.exports=n.p+"static/img/emqx_auth_mnesia.cee137cc.png"},"7c3f":function(A,t,n){A.exports=n.p+"static/img/emqx_bridge_rocket.d53d64f9.png"},"7c94":function(A,t,n){A.exports=n.p+"static/img/emqx_stomp.14cf6644.png"},"7f6b":function(A,t,n){A.exports=n.p+"static/img/emqx_gbt32960.9ea5fd31.png"},"80f9":function(A,t,n){"use strict";n.r(t);var e=function(){var A=this,t=A.$createElement,n=A._self._c||t;return n("div",{staticClass:"plugins"},[n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"search-wrapper"},[n("el-row",{attrs:{gutter:20}},[n("el-col",{attrs:{span:8}},[n("el-radio-group",{attrs:{size:"small",border:""},on:{change:A.loadData},model:{value:A.status,callback:function(t){A.status=t},expression:"status"}},[n("el-radio-button",{attrs:{label:"all"}},[A._v(" "+A._s(A.$t("Plugins.all"))+"("+A._s(A.state.count)+") ")]),n("el-radio-button",{attrs:{label:"running"}},[A._v(" "+A._s(A.$t("Plugins.running"))+"("+A._s(A.state.running)+") ")]),n("el-radio-button",{attrs:{label:"stop"}},[A._v(" "+A._s(A.$t("Plugins.stopped"))+"("+A._s(A.state.stop)+") ")])],1)],1),n("el-col",{attrs:{span:4}},[n("el-radio-group",{attrs:{size:"small",border:""},model:{value:A.displayType,callback:function(t){A.displayType=t},expression:"displayType"}},[n("el-radio-button",{attrs:{label:"cards"}},[n("icon-font",{attrs:{type:"icon-qiapianmoshi_kuai"}})],1),n("el-radio-button",{attrs:{label:"list"}},[n("icon-font",{attrs:{type:"icon-liebiaomoshi_kuai"}})],1)],1)],1),n("el-col",{attrs:{span:5}},[n("emq-select",{attrs:{field:{options:A.nodes},"field-name":{label:"name",value:"node"},size:"small"},on:{change:A.loadData},model:{value:A.nodeName,callback:function(t){A.nodeName=t},expression:"nodeName"}})],1),n("el-col",{attrs:{span:7}},[n("el-input",{staticClass:"search-input",attrs:{type:"text",size:"small",clearable:"",placeholder:A.$t("Plugins.searchByName")},on:{input:A.searchPlugin},model:{value:A.searchVal,callback:function(t){A.searchVal=t},expression:"searchVal"}},[A.searchLoading?n("i",{staticClass:"el-icon-loading",attrs:{slot:"prefix"},slot:"prefix"}):n("i",{staticClass:"el-icon-search",attrs:{slot:"prefix"},slot:"prefix"})])],1)],1)],1),"cards"===A.displayType&&A.listTableData.length>0?n("el-row",{staticClass:"emq-list-card plugin-cards-wrapper",attrs:{gutter:20}},A._l(A.listTableData,function(t,e){return n("el-col",{key:e,attrs:{span:12}},[n("div",{staticClass:"plugin-item"},[n("img",{staticClass:"logo",attrs:{src:A.iconMap[t.name],alt:"plugin-logo",width:"90",height:"90"}}),n("div",{staticClass:"header"},[n("div",{staticClass:"name"},[n("a-badge",{attrs:{status:t.active?"success":"error",text:t.name,dot:""}}),n("el-tooltip",{attrs:{effect:"dark",content:A.$t("Plugins.tutorial"),"open-delay":500,placement:"top"}},[!A.primaryList.includes(t.name)&&A.getLinks(t.name)?n("a",{staticClass:"tutorial",attrs:{href:"javascript:;"},on:{click:function(n){return A.openTutorialLink(t.name)}}},[n("i",{staticClass:"iconfont icon-bangzhu"})]):A._e()])],1),n("div",{staticClass:"description"},[A._v(A._s(t.description))]),n("div",{staticClass:"type-version"},[A._v(A._s(t.version)+" / "+A._s(A.typeText(t.type)))])]),n("div",{staticClass:"oper"},[n("div",{staticClass:"run-stop-btn"},[A.primaryList.includes(t.name)?n("span",[A._v("--")]):n("el-button",{attrs:{type:t.active?"danger":"dashed",size:"small"},on:{click:function(n){return A.togglePlugin(t)}}},[A._v("\n "+A._s(t.active?A.$t("Plugins.stop"):A.$t("Plugins.startRunning"))+"\n ")])],1)])])])}),1):A._e(),"list"===A.displayType&&A.listTableData.length>0?n("div",{staticClass:"emq-list-card plugin-list-wrapper"},A._l(A.listTableData,function(t,e){return n("div",{key:e,staticClass:"plugin-item",attrs:{gutter:20}},[n("img",{staticClass:"logo",attrs:{src:A.iconMap[t.name],alt:"plugin-logo",width:"60",height:"60"}}),n("div",{staticClass:"header"},[n("div",{staticClass:"name"},[A._v("\n "+A._s(t.name)+"\n "),n("el-tooltip",{attrs:{effect:"dark",content:A.$t("Plugins.tutorial"),"open-delay":500,placement:"top"}},[!A.primaryList.includes(t.name)&&A.getLinks(t.name)?n("a",{staticClass:"tutorial",attrs:{href:"javascript:;"},on:{click:function(n){return A.openTutorialLink(t.name)}}},[n("i",{staticClass:"iconfont icon-bangzhu"})]):A._e()])],1),n("div",{staticClass:"description"},[A._v(A._s(t.description))])]),n("div",{staticClass:"content"},[n("div",{staticClass:"type"},[A._v(A._s(A.typeText(t.type)))]),n("div",{staticClass:"version"},[A._v(A._s(t.version))])]),n("div",{staticClass:"state"},[n("a-badge",{attrs:{status:t.active?"success":"error",text:t.active?A.$t("Plugins.running"):A.$t("Plugins.stopped"),dot:""}})],1),n("div",{staticClass:"oper"},[A.primaryList.includes(t.name)?n("span",[A._v("--")]):n("el-button",{attrs:{type:t.active?"danger":"dashed",size:"small"},on:{click:function(n){return A.togglePlugin(t)}}},[A._v("\n "+A._s(t.active?A.$t("Plugins.stop"):A.$t("Plugins.startRunning"))+"\n ")])],1)])}),0):A._e(),0===A.listTableData.length?n("a-card",{staticClass:"null-plugins"},[n("p",[A._v(A._s(A.$t("Plugins.listNull")))])]):A._e()],1),n("el-dialog",{attrs:{title:"标题",width:"520px",visible:A.moduleTipVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){A.moduleTipVisible=t}}},[n("div",{staticClass:"tip-title",attrs:{slot:"title"},slot:"title"},[n("i",{staticClass:"el-icon-warning"}),n("span",[A._v(A._s(A.$t("Base.tips")))])]),n("div",{staticClass:"tip-content"},[n("p",{domProps:{innerHTML:A._s(A.$t("Modules.useModulesTip"))}},[A._v("\n "+A._s(A.$t("Modules.useModulesTip"))+"\n ")])]),n("div",{staticClass:"tip-checkbox"},[n("el-checkbox",{on:{change:A.useModuleTipShowChange},model:{value:A.noprompt,callback:function(t){A.noprompt=t},expression:"noprompt"}},[A._v("\n "+A._s(A.$t("Overview.notPromptAgain"))+"\n ")])],1),n("div",{staticClass:"tip-button"},[n("el-button",{attrs:{type:"primary",size:"small"},on:{click:function(t){A.moduleTipVisible=!1}}},[A._v(A._s(A.$t("Overview.konw")))])],1)])],1)},a=[],i=(n("96cf"),n("3b8d")),s=(n("7f7f"),n("ac6a"),n("c65d")),g=n("2934"),o=n("90b9"),r={name:"Plugins",props:{},data:function(){return{searchLoading:!1,status:"running",displayType:"cards",allCount:0,runningCount:0,stopCount:0,searchVal:"",tableData:[],listTableData:[],nodes:[],primaryList:["emqx_dashboard","emqx_management","emqx_conf","emqx_modules"],nodeName:"",pluginTypes:{auth:this.$t("Plugins.authentication"),backend:this.$t("Plugins.backend"),bridge:this.$t("Plugins.bridge"),protocol:this.$t("Plugins.protocol"),feature:this.$t("Plugins.feature")},iconMap:{},moduleTipVisible:!1,noprompt:!1}},computed:{state:function(){var A=this.tableData||[];return{count:A.length,running:A.filter(function(A){return!!A.active}).length,stop:A.filter(function(A){return!A.active}).length}}},created:function(){var A=this;this.loadData(),setTimeout(function(){A.showUseModulesTip()},300)},methods:{showUseModulesTip:function(){var A=localStorage.getItem("moduleTipVisible");"false"!==A&&(this.moduleTipVisible=!0)},useModuleTipShowChange:function(A){A&&localStorage.setItem("moduleTipVisible",!1)},typeText:function(A){var t={auth:this.$t("Plugins.authentication"),backend:this.$t("Plugins.backend"),bridge:this.$t("Plugins.bridge"),protocol:this.$t("Plugins.protocol"),feature:this.$t("Plugins.feature")};return t[A]||this.$t("Plugins.feature")},loadIcon:function(){var A={};return this.tableData.forEach(function(t){var e=t.name;try{A[e]=n("ec4d")("./".concat(e,".png"))}catch(a){console.log(a)}}),A},toConfig:function(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=A.name,n=this.nodeName;this.$router.push({path:"/plugins/".concat(t),query:{node:n}})},typeFilterHandler:function(A,t){return A===t.type},typeFormatter:function(A){var t=A.type;return this.pluginTypes[t]||this.$t("Plugins.feature")},loadData:function(){var A=Object(i["a"])(regeneratorRuntime.mark(function A(){return regeneratorRuntime.wrap(function(A){while(1)switch(A.prev=A.next){case 0:return A.next=2,Object(g["d"])();case 2:return this.nodes=A.sent,this.nodeName=this.nodeName||(this.nodes[0]||{}).node,A.next=6,Object(s["p"])(this.nodeName);case 6:this.tableData=A.sent,this.handleFilter(),this.iconMap=this.loadIcon(),this.searchVal="";case 10:case"end":return A.stop()}},A,this)}));function t(){return A.apply(this,arguments)}return t}(),handleFilter:function(){var A=this.tableData;if("all"!==this.status){var t="running"===this.status;A=A.filter(function(A){return A.active===t})}this.listTableData=A},togglePlugin:function(){var A=Object(i["a"])(regeneratorRuntime.mark(function A(t){var n,e=this;return regeneratorRuntime.wrap(function(A){while(1)switch(A.prev=A.next){case 0:if(t.active){A.next=10;break}return A.next=3,Object(s["q"])(t.name);case 3:if(n=A.sent,null!==n){A.next=7;break}return this.$message.error(this.$t("Plugins.runFailed")),A.abrupt("return");case 7:return t.active=!0,this.$message.success(this.$t("Plugins.runSuccess")),A.abrupt("return");case 10:this.$msgbox.confirm(this.$t("Plugins.thisActionWillStopThePlugIn"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function A(){return regeneratorRuntime.wrap(function(A){while(1)switch(A.prev=A.next){case 0:return A.next=2,Object(s["r"])(t.name);case 2:e.$message.success(e.$t("Plugins.stopSuccess")),t.active=!1;case 4:case"end":return A.stop()}},A)}))).catch(function(){});case 11:case"end":return A.stop()}},A,this)}));function t(t){return A.apply(this,arguments)}return t}(),getLinks:function(A){return Object(o["i"])(A)},openTutorialLink:function(A){var t=this.getLinks(A),n=window.open(t);n.opener=null},hasManagePage:function(A){var t={emqx_auth_clientid:!0,emqx_auth_username:!0,emqx_auth_jwt:!0,emqx_auth_mnesia:!0};return t[A]},searchPlugin:function(){var A=this;if(this.searchLoading=!0,""===this.searchVal)return this.handleFilter(),void(this.searchLoading=!1);setTimeout(Object(i["a"])(regeneratorRuntime.mark(function t(){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(o["k"])(A.tableData,"name",A.searchVal);case 2:n=t.sent,n?(A.listTableData=n,A.searchLoading=!1):A.searchLoading=!1;case 4:case"end":return t.stop()}},t)})),500)},handleManage:function(A){this.$router.push({path:"/plugins/".concat(A.name)})}}},u=r,c=(n("ee23"),n("2877")),p=Object(c["a"])(u,e,a,!1,null,null,null);t["default"]=p.exports},"8c08":function(A,t,n){A.exports=n.p+"static/img/emqx_prometheus.59114669.png"},"8d2c":function(A,t){A.exports="data:image/png;base64,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"},"9b1d":function(A,t){A.exports="data:image/png;base64,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"},"9c03":function(A,t,n){A.exports=n.p+"static/img/emqx_backend_timescale.5f750079.png"},"9c0b":function(A,t,n){A.exports=n.p+"static/img/emqx_bridge_mqtt.a3066767.png"},a420:function(A,t,n){A.exports=n.p+"static/img/emqx_auth_pgsql.079ce8f3.png"},a467:function(A,t){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAABQdJREFUeAHtnb9rFFEQgN8lucuPQw2isbCJQRtJBAtRBAux9U8QC/8AQRDESixtxT/Bxt5SsbASEYsIIliIhUgCIiY5TC7JuVHLDWx23u68mfelPHbezHzz3W52b2+vsz4YjgJ/EKhJYKxmHGEQ+EsAgRBBRACBRPgIRiAcEBFAIBE+ghEIB0QEEEiEj2AEwgERAQQS4SMYgXBARACBRPgIRiAcEBFAIBE+ghEIB0QEEEiEj2AEwgERAQQS4SMYgXBARACBRPgIRiAcEBFAIBE+ghEIB0QEJkTRhoLvvdoIWzvtFTw72QkPrsy0l1ApE3sgJfBe0iKQl0kq9YFASuC9pEUgL5NU6gOBlMB7SYtAXiap1If6afzzz8PGWj97bCwszI43tn7Vhd982w6rg2YegnL9dLdqGY1spy7Qyy9bjTS2t2i/26ss0KOr/dA7gGs/N0fh4etBpdrff98On340cxFKWyAOYZUUYKP9CKjvgfYrrO3Xl1e3Q3esUzntxnC38raeN0Sg/9N9+mHT85wb641DWGNo81gYgfKYc2NdIlBjaPNYOPn/gSSnqQuzabw/Lp6cCGeO1qulyetkMRRPXqBr870Yfaqucf5EfcypC1TvbaE6DpKnRKD+WyOlLirUsnR8Igx3m/k4oSx9v1v9mlJZvJXXshHoxuKklZmYqpNDmKlxpVcsAqU3E1MVIZCpcaVXLAKlNxNTFSGQqXGlVywCpTcTUxUhkKlxpVcsAqU3E1MVIZCpcaVXrNkr0WvFTe1P3v1Oj2jNiu5emi5uqa0ZrBhmVqC97zisDPzclzxq72O6qLoZdD5q/ywmJIBAQoC5hyNQ7gYI+0cgIcDcwxEodwOE/SOQEGDu4WZP4w/3OuH+5Wk38zvIgx1SatqsQHtfY5+bYQeqLRMT0J6A8fwIZHyA2uUjkPYEjOdHIOMD1C4fgbQnYDw/AhkfoHb5CKQ9AeP5Ecj4ALXLRyDtCRjPb/ZK9E5xB9/XX808e1ljpvNHxoPF53mYFWhtaxQev/VzT/RBH3SuIXlZTg5hZVR4rTIBBKqMig3LCCBQGRVeq0wAgSqjYsMyAghURoXXKhNAoMqo2LCMgNnT+PHiosmp4tqJl78D/FBQUi2bFehQcU/07QtTScHMsRgOYTlOPWLPCBQRZo5LIVCOU4/YMwJFhJnjUgiU49Qj9oxAEWHmuBQC5Tj1iD0jUESYOS6FQDlOPWLPCBQRZo5LIVCOU4/Ys9nPwjaGo/Ds42ZEFLpL3VycChMG385mBRoWj4heXvHzrYwWf8416jvFoPNR+2cxIQEEEgLMPRyBcjdA2D8CCQHmHo5AuRsg7B+BhABzDzd7Gt/vdsKtc37uie4a/X6AWYH2fpxtac4odUe7LQ5hjoap0QoCaVB3lBOBHA1ToxUE0qDuKCcCORqmRisIpEHdUU4EcjRMjVYQSIO6o5wI5GiYGq0gkAZ1RzkRyNEwNVpBIA3qjnIm/2HqnRcbjnD7a4U9kL+ZttoRArWK218yBPI301Y7QqBWcftLhkD+ZtpqRwjUKm5/yRDI30xb7aizPigec8EfBGoSYA9UExxh/wggECaICCCQCB/BCIQDIgIIJMJHMALhgIgAAonwEYxAOCAigEAifAQjEA6ICCCQCB/BCIQDIgIIJMJHMALhgIgAAonwEYxAOCAigEAifAQjEA6ICCCQCB/BCIQDIgIIJMJH8B+M0WGjQy3OyQAAAABJRU5ErkJggg=="},a840:function(A,t,n){A.exports=n.p+"static/img/emqx_auth_mysql.a3615766.png"},a84e:function(A,t,n){A.exports=n.p+"static/img/emqx_sasl.11e2cd6a.png"},bd09:function(A,t,n){A.exports=n.p+"static/img/emqx_backend_mysql.a3615766.png"},bd4d:function(A,t,n){A.exports=n.p+"static/img/emqx_lua_hook.70ea0a97.png"},c015:function(A,t){A.exports="data:image/png;base64,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"},c0f5:function(A,t,n){A.exports=n.p+"static/img/emqx_backend_pgsql.079ce8f3.png"},c4a5:function(A,t,n){A.exports=n.p+"static/img/emqx_auth_jwt.402c6a38.png"},c65d:function(A,t,n){"use strict";n.d(t,"p",function(){return a}),n.d(t,"q",function(){return i}),n.d(t,"r",function(){return s}),n.d(t,"i",function(){return g}),n.d(t,"a",function(){return o}),n.d(t,"e",function(){return r}),n.d(t,"m",function(){return u}),n.d(t,"s",function(){return c}),n.d(t,"j",function(){return p}),n.d(t,"d",function(){return l}),n.d(t,"h",function(){return C}),n.d(t,"o",function(){return B}),n.d(t,"u",function(){return Q}),n.d(t,"k",function(){return E}),n.d(t,"b",function(){return d}),n.d(t,"f",function(){return m}),n.d(t,"n",function(){return f}),n.d(t,"t",function(){return I}),n.d(t,"l",function(){return U}),n.d(t,"c",function(){return q}),n.d(t,"g",function(){return R});var e=n("1f75");function a(A){return e["a"].get("/nodes/".concat(A,"/plugins"))}function i(A){return e["a"].put("/plugins/".concat(A,"/reload"))}function s(A){return e["a"].put("/plugins/".concat(A,"/unload"))}function g(){return e["a"].get("/auth_clientid")}function o(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e["a"].post("/auth_clientid",A)}function r(A){return e["a"].delete("/auth_clientid/".concat(A))}function u(A){return e["a"].get("/auth_clientid/".concat(A))}function c(A,t){return e["a"].put("/auth_clientid/".concat(A),t)}function p(){return e["a"].get("/auth_username")}function l(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e["a"].post("/auth_username",A)}function C(A){return e["a"].delete("/auth_username/".concat(A))}function B(A){return e["a"].get("/auth_username/".concat(A))}function Q(A,t){return e["a"].put("/auth_username/".concat(A),t)}function E(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e["a"].get("/auth_user",{params:A})}function d(A){return e["a"].post("/auth_user",A)}function m(A){return e["a"].delete("/auth_user/".concat(encodeURIComponent(A)))}function f(A){return e["a"].get("/auth_user/".concat(encodeURIComponent(A)))}function I(A,t){return e["a"].put("/auth_user/".concat(encodeURIComponent(A)),t)}function U(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e["a"].get("/emqx_acl",{params:A})}function q(A){return e["a"].post("/emqx_acl",A)}function R(A,t){return e["a"].delete("/emqx_acl/".concat(encodeURIComponent(A),"/").concat(encodeURIComponent(t)))}},cf57:function(A,t,n){A.exports=n.p+"static/img/emqx_tcp.e16bdfbd.png"},d1d3:function(A,t){A.exports="data:image/png;base64,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"},d20b:function(A,t){A.exports="data:image/png;base64,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"},d2d3:function(A,t){A.exports="data:image/png;base64,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"},de62:function(A,t,n){A.exports=n.p+"static/img/emqx_backend_cassa.82e8858e.png"},dec6:function(A,t,n){A.exports=n.p+"static/img/emqx_lwm2m.0fe3f19e.png"},ea95:function(A,t,n){A.exports=n.p+"static/img/emqx_backend_influxdb.0cb90da7.png"},ec4d:function(A,t,n){var e={"./emqx_auth_http.png":"c015","./emqx_auth_jwt.png":"c4a5","./emqx_auth_ldap.png":"d2d3","./emqx_auth_mnesia.png":"7a31","./emqx_auth_mongo.png":"d1d3","./emqx_auth_mysql.png":"a840","./emqx_auth_pgsql.png":"a420","./emqx_auth_redis.png":"4ed8","./emqx_backend_cassa.png":"de62","./emqx_backend_dynamo.png":"9b1d","./emqx_backend_influxdb.png":"ea95","./emqx_backend_mongo.png":"8d2c","./emqx_backend_mysql.png":"bd09","./emqx_backend_opentsdb.png":"fc39","./emqx_backend_pgsql.png":"c0f5","./emqx_backend_redis.png":"edad","./emqx_backend_timescale.png":"9c03","./emqx_bridge_kafka.png":"61d0","./emqx_bridge_mqtt.png":"9c0b","./emqx_bridge_pulsar.png":"279d","./emqx_bridge_rabbit.png":"062d","./emqx_bridge_rocket.png":"7c3f","./emqx_coap.png":"d20b","./emqx_conf.png":"67e5","./emqx_dashboard.png":"f43a8","./emqx_exhook.png":"264e","./emqx_exproto.png":"3957","./emqx_gbt32960.png":"7f6b","./emqx_jt808.png":"3f72","./emqx_lua_hook.png":"bd4d","./emqx_lwm2m.png":"dec6","./emqx_management.png":"567d","./emqx_modules.png":"2e75","./emqx_prometheus.png":"8c08","./emqx_psk_file.png":"68a59","./emqx_recon.png":"a467","./emqx_retainer.png":"3feb","./emqx_rule_engine.png":"442c","./emqx_sasl.png":"a84e","./emqx_schema_registry.png":"64a5","./emqx_sn.png":"682b","./emqx_stomp.png":"7c94","./emqx_tcp.png":"cf57","./emqx_web_hook.png":"f6b1"};function a(A){var t=i(A);return n(t)}function i(A){var t=e[A];if(!(t+1)){var n=new Error("Cannot find module '"+A+"'");throw n.code="MODULE_NOT_FOUND",n}return t}a.keys=function(){return Object.keys(e)},a.resolve=i,A.exports=a,a.id="ec4d"},edad:function(A,t,n){A.exports=n.p+"static/img/emqx_backend_redis.e0ec3147.png"},ee23:function(A,t,n){"use strict";var e=n("47d7"),a=n.n(e);a.a},f43a8:function(A,t,n){A.exports=n.p+"static/img/emqx_dashboard.6937edc4.png"},f6b1:function(A,t,n){A.exports=n.p+"static/img/emqx_web_hook.a0bd461e.png"},fc39:function(A,t){A.exports="data:image/png;base64,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"}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7b01e2fb.f369a777.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7b01e2fb.f369a777.js new file mode 100644 index 000000000..3d7410ba0 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-7b01e2fb.f369a777.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7b01e2fb"],{"01c8":function(e,t,n){"use strict";n.d(t,"a",function(){return i});var r=n("178b"),s=n("3953"),a=n("1df6");function i(e){return Object(r["a"])(e)||Object(s["a"])(e)||Object(a["a"])()}},"3f42":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"settings"},[e.showSettings?r("div",{staticClass:"app-wrapper"},[r("el-tabs",{attrs:{type:"card","before-leave":e.handleBeforeLeave},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[r("el-tab-pane",{attrs:{label:e.$t("Settings.basic"),name:"baseSettings"}},["baseSettings"===e.activeName?r("base-settings",{ref:"baseSettings"}):e._e()],1),r("el-tab-pane",{attrs:{label:"Zone",name:"zoneSettings"}},["zoneSettings"===e.activeName?r("zone-settings",{ref:"zoneSettings"}):e._e()],1),r("el-tab-pane",{attrs:{label:e.$t("Settings.listeners"),name:"listenerSettings"}},["listenerSettings"===e.activeName?r("listener-settings",{ref:"listenerSettings"}):e._e()],1),r("el-tab-pane",{attrs:{label:e.$t("Settings.monitorAlarm"),name:"monitorSettings"}},["monitorSettings"===e.activeName?r("monitor-settings",{ref:"monitorSettings"}):e._e()],1),r("el-tab-pane",{attrs:{label:e.$t("Settings.cluster"),name:"clusterSettings"}},["clusterSettings"===e.activeName?r("cluster-settings",{ref:"clusterSettings"}):e._e()],1)],1)],1):r("div",{staticClass:"not-settings"},[r("img",{attrs:{src:n("bf60"),alt:"",width:"375"}}),r("p",{domProps:{innerHTML:e._s(e.$t("Settings.openModuleTip"))}},[e._v(e._s(e.$t("Settings.openModuleTip")))]),r("el-button",{staticClass:"confirm-btn",attrs:{size:"small",type:"primary"},on:{click:e.handleModLoad}},[e._v("\n "+e._s(e.$t("Analysis.enable"))+"\n ")])],1)])},s=[],a=(n("7514"),n("96cf"),n("3b8d")),i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-card",{staticClass:"base-settings emq-list-card"},[e.mqttRecord?n("config-form",e._b({ref:"mqttForm",staticClass:"base-form",attrs:{record:e.mqttRecord,rules:e.rules,"btn-loading":e.saveLoading,labelWidth:"260px"},on:{update:function(t){var n=arguments.length,r=Array(n);while(n--)r[n]=arguments[n];return e.handleUpdate.apply(void 0,r.concat(["emqx"]))}},model:{value:e.disabled,callback:function(t){e.disabled=t},expression:"disabled"}},"config-form",e.allOptions,!1)):[n("a-skeleton",{attrs:{active:""}})]],2)},o=[],c=(n("456d"),n("ac6a"),n("6762"),n("2fdb"),n("1f75")),l=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c["a"].get("/configs");case 2:return t=e.sent,n=t.find(function(e){return"emqx"===e.type}).configs,r=[],t.forEach(function(e){e.type.includes("mon")&&r.push(e)}),e.abrupt("return",{mqttRes:n,monitorResList:r});case 7:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),u=function(){return c["a"].get("/configs/zones")},d=function(e){return c["a"].delete("/configs/zones/".concat(e))},f=function(){return c["a"].get("/configs/listeners")},p=function(e,t){return c["a"].delete("/configs/listeners/".concat(e,"?transport_type=").concat(t))},m=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,r,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:{},e.prev=1,e.next=4,c["a"].put("/configs/".concat(t),n);case 4:return r=e.sent,e.abrupt("return",r);case 8:return e.prev=8,e.t0=e["catch"](1),e.abrupt("return",!1);case 11:case"end":return e.stop()}},e,null,[[1,8]])}));return function(t){return e.apply(this,arguments)}}(),g=function(){return c["a"].get("/configs_spec")},h=function(){return c["a"].get("/configs_spec/zone")},b=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r,s,a=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return r=a.length>2&&void 0!==a[2]?a[2]:{},e.prev=1,e.next=4,c["a"].put("/configs/".concat(t,"/").concat(n),r);case 4:return s=e.sent,e.abrupt("return",s);case 8:return e.prev=8,e.t0=e["catch"](1),e.abrupt("return",!1);case 11:case"end":return e.stop()}},e,null,[[1,8]])}));return function(t,n){return e.apply(this,arguments)}}(),v=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,r,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=s.length>1&&void 0!==s[1]?s[1]:{},e.prev=1,e.next=4,c["a"].post("/configs/".concat(t),n);case 4:return r=e.sent,e.abrupt("return",r);case 8:return e.prev=8,e.t0=e["catch"](1),e.abrupt("return",!1);case 11:case"end":return e.stop()}},e,null,[[1,8]])}));return function(t){return e.apply(this,arguments)}}(),y=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-row",{staticClass:"config-form",attrs:{gutter:12}},[n("el-form",{ref:"record",staticClass:"basic-config-form",attrs:{size:"small","label-suffix":":","label-width":e.labelWidth,"label-position":"right",model:e.recordConfig,rules:e.rules}},e._l(e.showKeyList,function(t,r){return n("div",{key:r},[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:""===t?"listener_on":t,prop:t}},["true"===e.deepRecord[t]||"false"===e.deepRecord[t]?[n("emq-select",{attrs:{field:{options:e.boolOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:"allow"===e.deepRecord[t]||"deny"===e.deepRecord[t]?[n("emq-select",{attrs:{field:{options:e.permitOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:"ignore"===e.deepRecord[t]||"disconnect"===e.deepRecord[t]?[n("emq-select",{attrs:{field:{options:e.actionOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:"on"===e.deepRecord[t]||"off"===e.deepRecord[t]?[n("emq-select",{attrs:{field:{options:e.enableOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:"highest"===e.deepRecord[t]||"lowest"===e.deepRecord[t]?[n("emq-select",{attrs:{field:{options:e.priorityOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:"max_qos_allowed"===t||"mqtt_max_qos_allowed"===t?[n("emq-select",{attrs:{field:{options:e.qosOptions}},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]:[n("el-input",{staticClass:"form-item-input",attrs:{placeholder:e.recordConfig[t]},model:{value:e.recordConfig[t],callback:function(n){e.$set(e.recordConfig,t,n)},expression:"recordConfig[key]"}})]],2)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("span",""!==t?[e._v(e._s(e.$t("Settings."+t)))]:[e._v(e._s(e.$t("Settings.listener_on")))])])],1)}),0),e.recordKeys["nullKeyList"].length?n("el-col",{staticClass:"show-more",attrs:{span:24}},[n("a",{attrs:{href:"javascript:;"},on:{click:e.toggleRecords}},[e._v("\n "+e._s(e.showMoreItems?e.$t("Clients.collapse"):e.$t("Clients.expand"))+"\n "),n("i",{class:e.showMoreItems?"el-icon-arrow-up":"el-icon-arrow-down"})])]):e._e(),n("el-col",{staticClass:"button-group__center",attrs:{span:12}},[n("el-button",{attrs:{plain:"",disabled:e.selfDisabled,type:"default",size:"medium"},on:{click:e.cancel}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),n("el-button",{attrs:{disabled:e.selfDisabled,loading:e.btnLoading,type:"primary",size:"medium"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.apply"))+"\n ")])],1)],1)},w=[],$=(n("55dd"),{name:"ConfigForm",model:{prop:"disabled",event:"updateDisabled"},props:{disabled:{type:Boolean,default:!1},record:{type:Object,requried:!0,default:function(){return{}}},rules:{type:Object,requried:!0,default:function(){return{}}},btnLoading:{type:Boolean,default:!1},boolOptions:{type:Array,default:function(){return[]}},permitOptions:{type:Array,default:function(){return[]}},actionOptions:{type:Array,default:function(){return[]}},enableOptions:{type:Array,default:function(){return[]}},priorityOptions:{type:Array,default:function(){return[]}},qosOptions:{type:Array,default:function(){return[]}},labelWidth:{type:String,default:"225px"}},data:function(){return{deepRecord:JSON.parse(JSON.stringify(this.record)),showMoreItems:!1,showKeyList:[],recordConfig:{},selfDisabled:!1}},computed:{recordKeys:function(){var e=this,t={},n=[],r=[];return Object.keys(this.record).forEach(function(t){"null"!==e.record[t]?n.push(t):r.push(t)}),t={keyList:n.sort(),nullKeyList:r.sort()},t}},watch:{recordConfig:{deep:!0,immediate:!0,handler:"handleRecordChange"},showMoreItems:function(e){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;e&&setTimeout(function(){document.documentElement.scrollTop=t,document.body.scrollTop=t},2)},disabled:function(e){this.selfDisabled=e}},created:function(){this.initData()},methods:{handleRecordChange:function(e,t){if(!t||"{}"===JSON.stringify(t))return this.selfDisabled=!0,void this.$emit("updateDisabled",this.selfDisabled);this.selfDisabled=!1,this.$emit("updateDisabled",this.selfDisabled)},initData:function(){this.showKeyList=this.recordKeys.keyList;var e=Object.assign({},this.record);Object.keys(e).forEach(function(t){"null"===e[t]&&(e[t]="")}),this.recordConfig=e},toggleRecords:function(){if(this.showMoreItems=!this.showMoreItems,this.showMoreItems){var e=this.recordKeys,t=e.keyList,n=e.nullKeyList;this.showKeyList=t.concat(n)}else this.showKeyList=this.recordKeys.keyList},cancel:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=function(){e.initData(),setTimeout(function(){e.selfDisabled=!0,e.$emit("updateDisabled",e.selfDisabled)},500)};t?this.$confirm(this.$t("Settings.cancelConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")}).then(function(){n()}).catch(function(){}):n()},save:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.$refs.record.validate();case 2:if(t=e.sent,t){e.next=6;break}return this.showMoreItems=!0,e.abrupt("return");case 6:this.showMoreItems=!1,n=Object.assign({},this.recordConfig),Object.keys(n).forEach(function(e){""===n[e]&&(n[e]="null")}),this.$emit("update",n);case 10:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}}),x=$,_=(n("f833"),n("2877")),k=Object(_["a"])(x,y,w,!1,null,null,null),C=k.exports,O={boolOptions:[{label:"true",value:!0},{label:"false",value:!1}],permitOptions:[{label:"allow",value:"allow"},{label:"deny",value:"deny"}],actionOptions:[{label:"ignore",value:"ignore"},{label:"disconnect",value:"disconnect"}],enableOptions:[{label:"on",value:"on"},{label:"off",value:"off"}],qosOptions:[{label:"0",value:"0"},{label:"1",value:"1"},{label:"2",value:"2"}]},S={name:"BaseSettings",components:{ConfigForm:C},data:function(){return{saveLoading:!1,mqttRecord:null,initMqtt:{},rules:{},disabled:!1}},computed:{allOptions:function(){return O}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,l();case 2:t=e.sent,n=t.mqttRes,Object.keys(n).forEach(function(e){r.rules[e]=[{required:!0,message:r.$t("Settings.pleaseEnter")}]}),this.mqttRecord=n,Object.assign(this.initMqtt,n);case 7:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleUpdate:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.saveLoading=!0,e.next=3,m(n,t);case 3:r=e.sent,r&&(this.disabled=!0,this.$message.success(this.$t("Base.applySuccess")),Object.assign(this.initMqtt,this.mqttRecord),this.loadData()),this.saveLoading=!1;case 6:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}()}},R=S,j=(n("62d1"),Object(_["a"])(R,i,o,!1,null,null,null)),L=j.exports,D=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-card",{staticClass:"zone-settings emq-list-card"},[n("el-tabs",{attrs:{"before-leave":e.handleBeforeLeave},model:{value:e.settingType,callback:function(t){e.settingType=t},expression:"settingType"}},[e._l(e.zoneList,function(t,r){return n("el-tab-pane",{key:r,attrs:{label:"",name:t.name}},[n("div",{staticClass:"label-box",attrs:{slot:"label",size:"mini"},slot:"label"},[e._v("\n "+e._s(t.name)+"\n "),n("span",{class:t.name===e.settingType?"delete-icon":"hide-delete",on:{click:function(n){return e.deleteZone(t.name)}}},[n("i",{staticClass:"el-icon-minus"})])]),e.settingType===t.name&&t.configs?n("config-detail",{ref:t.name,refInFor:!0,attrs:{oper:"edit",editConfig:t.configs,"btn-loading":e.saveLoading,from:"zone"},on:{update:function(t){return e.handleUpdate.apply(void 0,arguments)}},model:{value:e.disabled,callback:function(t){e.disabled=t},expression:"disabled"}}):[n("a-skeleton",{attrs:{active:""}})]],2)}),n("el-tab-pane",{attrs:{label:"",name:"addZone"}},[n("span",{attrs:{slot:"label",size:"mini"},slot:"label"},[n("i",{staticClass:"el-icon-plus"})]),"addZone"===e.settingType?n("config-detail",{ref:"addZone",attrs:{oper:"add",from:"zone","btn-loading":e.saveLoading},on:{update:function(t){return e.handleUpdate.apply(void 0,arguments)}},model:{value:e.disabled,callback:function(t){e.disabled=t},expression:"disabled"}}):e._e()],1)],2)],1)},T=[],B=(n("7f7f"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"config-detail"},[n("el-row",{staticClass:"config-form",attrs:{gutter:12}},[n("el-form",{ref:"record",class:"listener"===e.from?"no-form-margin":"form-margin",attrs:{size:"small","label-suffix":":","label-width":e.labelWidth,"label-position":"right",model:e.record,rules:e.rules}},[e.showConfigList.length?["listener"===e.from?[n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("el-form-item",{attrs:{label:"type",prop:"type"}},[n("emq-select",{attrs:{disabled:"edit"===e.oper,field:{options:e.typeOptions}},on:{selectChange:e.addConfigsAccordingType},model:{value:e.record["type"],callback:function(t){e.$set(e.record,"type",t)},expression:"record['type']"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("span",[e._v(e._s(e.$t("Settings.listenerType")))])])]:e._e(),"add"===e.oper?[n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("el-form-item",{attrs:{label:"name",prop:"name"}},[n("el-input",{model:{value:e.record["name"],callback:function(t){e.$set(e.record,"name",t)},expression:"record['name']"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},["zone"===e.from?n("span",[e._v(e._s(e.$t("Settings.zoneName")))]):n("span",[e._v(e._s(e.$t("Settings.listenerName")))])])]:e._e(),e._l(e.showConfigList,function(t,r){return n("div",{key:r},[n("el-col",{attrs:{span:12}},[n("el-form-item",e._b({attrs:{label:t.key}},"el-form-item",t.formItemAttributes,!1),["zone"===t.key?[n("emq-select",{attrs:{field:{options:e.listenerZoneOptions}},model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,n)},expression:"record.configs[item.key]"}})]:["select"!==t.elType?["number"===t.type?n("el-input",e._b({model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,e._n(n))},expression:"record.configs[item.key]"}},"el-input",t.bindAttributes,!1)):"password"===t.type?n("el-input",e._b({attrs:{"show-password":""},model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,n)},expression:"record.configs[item.key]"}},"el-input",t.bindAttributes,!1)):n("el-input",e._b({model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,n)},expression:"record.configs[item.key]"}},"el-input",t.bindAttributes,!1))]:["number"===t.type?n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,e._n(n))},expression:"record.configs[item.key]"}},"emq-select",t.bindAttributes,!1)):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.configs[t.key],callback:function(n){e.$set(e.record.configs,t.key,n)},expression:"record.configs[item.key]"}},"emq-select",t.bindAttributes,!1))]]],2)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("span",[e._v(e._s(t.formItemAttributes.description))])])],1)})]:[n("a-skeleton",{attrs:{active:""}})]],2),e.nullKeys.length?n("el-col",{staticClass:"show-more",attrs:{span:24}},[n("a",{attrs:{href:"javascript:;"},on:{click:e.toggleRecords}},[n("span",[e._v("\n "+e._s(e.showMoreItems?e.$t("Clients.collapse"):e.$t("Clients.expand"))+"\n "),n("i",{class:e.showMoreItems?"el-icon-arrow-up":"el-icon-arrow-down"})])])]):e._e(),n("el-col",{staticClass:"button-group__center",attrs:{span:12}},[n("el-button",{attrs:{plain:"",disabled:e.selfDisabled,type:"default",size:"medium"},on:{click:e.cancel}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),n("el-button",{attrs:{disabled:e.selfDisabled,loading:e.btnLoading,type:"primary",size:"medium"},on:{click:e.save}},["add"===e.oper?n("span",[e._v(e._s(e.$t("Base.add")))]):n("span",[e._v(e._s(e.$t("Base.apply")))])])],1)],1)],1)}),q=[],N=n("01c8"),E=n("cebc"),I=(n("6b54"),n("75fc")),K=n("a8db"),z=n("90b9"),M=n("2ef0"),A=n.n(M),U={name:"ConfigDetail",model:{prop:"disabled",event:"updateDisabled"},data:function(){return{hasValKeyConfigList:[],nullKeyConfigList:[],nullKeys:[],configList:[],showConfigList:[],rules:{configs:{},name:[{required:!0,validator:z["q"]}]},record:{configs:{},name:"",type:"tcp"},originRecord:{configs:{},name:"",type:"tcp"},selfDisabled:!0,showMoreItems:!1,typeOptions:[{label:"tcp",value:"tcp"},{label:"ssl",value:"ssl"},{label:"ws",value:"ws"},{label:"wss",value:"wss"}],configData:{},configOptions:{}}},props:{labelWidth:{type:String,default:"225px"},disabled:{type:Boolean,default:!1},oper:{type:String,default:"add"},editConfig:{type:Object,default:function(){}},from:{type:String,default:""},btnLoading:{type:Boolean,default:!1},listenerType:{type:String,default:"tcp"},listenerZoneOptions:{type:Array,default:function(){return[]}}},computed:{lang:function(){return this.$store.state.lang},recordConfig:function(){return this.record.configs}},watch:{record:{deep:!0,immediate:!0,handler:"handleRecordChange"},showMoreItems:function(e){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;e&&setTimeout(function(){document.documentElement.scrollTop=t,document.body.scrollTop=t},2)},disabled:function(e){this.selfDisabled=e}},created:function(){this.loadData()},methods:{loadData:function(){var e=this;this.loadConfigParams().then(function(t){t&&e.loadConfig()}).catch()},loadConfigParams:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if("listener"!==this.from){e.next=3;break}return t=this.loadConfigOptions().then(function(e){return e}).catch(),e.abrupt("return",t);case 3:return e.next=5,h();case 5:return n=e.sent,Object.keys(n).forEach(function(e){n[e].description=n[e].description[r.lang]}),this.configData=Object(z["l"])(n,"configs"),e.abrupt("return",this.configData);case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadConfigOptions:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r,s,a=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,g();case 2:return t=e.sent,t.zone,n=Object(K["a"])(t,["zone"]),Object.keys(n).forEach(function(e){var t=n[e];Object.keys(t).forEach(function(e){t[e].description=t[e].description[a.lang]}),"tcp"===e?(a.configData=Object(z["l"])(t,"configs"),a.configOptions[e]={}):a.configOptions[e]=Object(z["l"])(t,"configs")}),r=Object.assign({},this.configOptions.ssl),s=Object.assign({},this.configOptions.ws),this.configOptions.wss={form:s.form.concat(r.form),rules:Object.assign(r.rules,s.rules)},e.abrupt("return",this.configOptions);case 10:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleRecordChange:function(e){if(A.a.isEqual(e,this.originRecord))return this.selfDisabled=!0,void this.$emit("updateDisabled",this.selfDisabled);this.selfDisabled=!1,this.$emit("updateDisabled",this.selfDisabled)},sortKeyName:function(e,t){var n=e.key,r=t.key;return n0&&void 0!==arguments[0])||arguments[0],n=function(){setTimeout(function(){e.selfDisabled=!0;var t=Object.assign({},e.originRecord.configs);e.record.configs=t,"add"===e.oper&&(e.record.name="",e.$refs.record&&setTimeout(e.$refs.record.clearValidate,10)),e.$emit("updateDisabled",e.selfDisabled)},500)};t?this.$confirm(this.$t("Settings.cancelConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")}).then(function(){n()}).catch(function(){}):n()},save:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r,s,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.$refs.record.validate();case 2:if(t=e.sent,t){e.next=6;break}return this.showMoreItems=!0,e.abrupt("return");case 6:this.showMoreItems=!1,n=Object.assign({},this.recordConfig),r=this.record,s=r.name,a=r.type,Object.keys(n).forEach(function(e){""===n[e]&&(n[e]="null")}),this.$emit("update",s,n,a);case 11:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},Z=U,V=(n("6350"),Object(_["a"])(Z,B,q,!1,null,null,null)),J=V.exports,W={name:"ZoneSettings",components:{ConfigDetail:J},data:function(){return{saveLoading:!1,settingType:"external",disabled:!1,zoneList:[],canChangeTab:!1}},computed:{lang:function(){return this.$store.state.lang}},created:function(){this.loadData()},methods:{handleBeforeLeave:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.canChangeTab||t===n){e.next=10;break}if(this.disabled){e.next=10;break}return e.next=4,this.$confirm(this.$t("Settings.noSaveConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")});case 4:if(r=e.sent,"confirm"!==r){e.next=9;break}return s=this.$refs[n].length?this.$refs[n][0]:this.$refs[n],s.cancel(!1),e.abrupt("return",!0);case 9:return e.abrupt("return",!1);case 10:return e.abrupt("return",!0);case 11:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}(),loadData:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u();case 2:n=e.sent,this.zoneList=n,"edit"!==t&&(this.settingType=this.zoneList[0].name,this.canChangeTab=!0,setTimeout(function(){r.canChangeTab=!1},2));case 5:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleUpdate:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.saveLoading=!0,"addZone"===this.settingType){e.next=7;break}return e.next=4,b("zones",this.settingType,n);case 4:r=e.sent,e.next=10;break;case 7:return e.next=9,v("zones",{name:t,configs:n});case 9:r=e.sent;case 10:r&&(s=t?"add":"edit",this.disabled=!0,this.loadData(s),this.settingType=t||this.settingType,this.updataSuccessTip(t)),this.saveLoading=!1;case 12:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}(),updataSuccessTip:function(e){e?this.$message.success(this.$t("Base.createSuccess")):this.$message.success(this.$t("Base.applySuccess"))},deleteZone:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm(this.$t("Settings.isDeleteZone"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function e(){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,d(t);case 2:r=e.sent,r&&(n.$message.success(n.$t("Base.deleteSuccess")),n.loadData());case 4:case"end":return e.stop()}},e)}))).catch(function(){});case 1:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}()}},F=W,P=(n("d0a9"),Object(_["a"])(F,D,T,!1,null,null,null)),Y=P.exports,H=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-card",{staticClass:"cluster-settings emq-list-card"},[n("div",{staticClass:"emq-title"},[e._v(e._s(e.$t("Settings.clusterInfo")))]),n("el-row",{attrs:{gutter:20}},[n("el-form",{ref:"record",staticClass:"cluster-form",attrs:{size:"small","label-suffix":":","label-width":"120px","label-position":"left",model:e.record,rules:e.rules}},[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.clusterType"),prop:"type"}},[n("emq-select",{attrs:{disabled:!0,field:{options:e.clusterTypes}},model:{value:e.record.type,callback:function(t){e.$set(e.record,"type",t)},expression:"record.type"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[e._v("\n "+e._s(e.descriptionDict[e.record.type]||"")+"\n ")]),[n("el-col",{attrs:{span:24}},[n("el-form-item",{attrs:{label:e.$t("Settings.currentNode")}},e._l(e.currentNodes,function(t,r){return n("div",{key:r},[n("span",{class:["join-status",t.joined?"is-join":"not-join"],attrs:{span:14}},[e._v("\n "+e._s(t.name)+"\n ")]),t.joined?n("a",{staticClass:"node-oper",attrs:{href:"javascript:;"},on:{click:function(n){return e.toNodeDetails(t.name)}}},[e._v("\n "+e._s(e.$t("Overview.view"))+"\n ")]):e._e(),t.joined&&e.currentNodes.length>1&&"manual"===e.record.type?n("a",{staticClass:"node-oper danger",attrs:{href:"javascript:;"},on:{click:function(n){return e.removeNode(t.name)}}},[e._v("\n "+e._s(e.$t("Settings.remove"))+"\n ")]):t.joined||"static"!==e.record.type?e._e():n("span",{staticClass:"not-join__desc"},[e._v("\n "+e._s(e.$t("Settings.notJoined"))+"\n ")])])}),0)],1),"manual"===e.record.type?[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"config.node"}},[n("el-input",{attrs:{placeholder:e.$t("Settings.nodeRequired")},model:{value:e.record.config.node,callback:function(t){e.$set(e.record.config,"node",t)},expression:"record.config.node"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[n("a",{attrs:{href:"javascript:;"},on:{click:e.handleInviteNode}},[e._v("\n "+e._s(e.$t("Settings.invite"))+"\n ")])])]:e._e()],"dns"===e.record.type?[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.dnsName"),prop:"config.name"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.name,callback:function(t){e.$set(e.record.config,"name",t)},expression:"record.config.name"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.app"),prop:"config.app"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.app,callback:function(t){e.$set(e.record.config,"app",t)},expression:"record.config.app"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[e._v("\n "+e._s(e.$t("Settings.app_desc"))+"\n ")])]:e._e(),"mcast"===e.record.type?[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.addr"),prop:"config.addr"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.addr,callback:function(t){e.$set(e.record.config,"addr",t)},expression:"record.config.addr"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.ports"),prop:"config.ports"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.ports,callback:function(t){e.$set(e.record.config,"ports",t)},expression:"record.config.ports"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.iface"),prop:"config.iface"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.iface,callback:function(t){e.$set(e.record.config,"iface",t)},expression:"record.config.iface"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.ttl"),prop:"config.ttl"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.ttl,callback:function(t){e.$set(e.record.config,"ttl",t)},expression:"record.config.ttl"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.loop"),prop:"config.loop"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.loop,callback:function(t){e.$set(e.record.config,"loop",t)},expression:"record.config.loop"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}})]:e._e(),"etcd"===e.record.type?[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.server"),prop:"config.server"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.server,callback:function(t){e.$set(e.record.config,"server",t)},expression:"record.config.server"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.prefix"),prop:"config.prefix"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.prefix,callback:function(t){e.$set(e.record.config,"prefix",t)},expression:"record.config.prefix"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[e._v("\n "+e._s(e.$t("Settings.prefix_desc"))+"\n ")]),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:"TTL",prop:"config.node_ttl"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.node_ttl,callback:function(t){e.$set(e.record.config,"node_ttl",t)},expression:"record.config.node_ttl"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}})]:e._e(),"k8s"===e.record.type?[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.apiserver"),prop:"config.apiserver"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.apiserver,callback:function(t){e.$set(e.record.config,"apiserver",t)},expression:"record.config.apiserver"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.service_name"),prop:"config.service_name"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.service_name,callback:function(t){e.$set(e.record.config,"service_name",t)},expression:"record.config.service_name"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.address_type"),prop:"config.address_type"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.address_type,callback:function(t){e.$set(e.record.config,"address_type",t)},expression:"record.config.address_type"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[e._v("\n "+e._s(e.$t("Settings.address_type_desc"))+"\n ")]),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.app_name"),prop:"config.app_name"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.app_name,callback:function(t){e.$set(e.record.config,"app_name",t)},expression:"record.config.app_name"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}},[e._v("\n "+e._s(e.$t("Settings.app_name_desc"))+"\n ")]),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.namespace"),prop:"config.namespace"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.namespace,callback:function(t){e.$set(e.record.config,"namespace",t)},expression:"record.config.namespace"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}}),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{label:e.$t("Settings.suffix"),prop:"config.suffix"}},[n("el-input",{attrs:{disabled:!0},model:{value:e.record.config.suffix,callback:function(t){e.$set(e.record.config,"suffix",t)},expression:"record.config.suffix"}})],1)],1),n("el-col",{staticClass:"form-item-desc",attrs:{span:12}})]:e._e()],2)],1)],1)},G=[],Q=(n("5df3"),n("4f7f"),function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c["a"].get("/nodes");case 2:return t=e.sent,n=t.map(function(e){return e.node}),e.abrupt("return",n);case 5:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}()),X=function(e){var t=e;return"number"!==typeof t&&(t=parseInt(t,10)),"".concat(t/1e3,"s")},ee=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,c["a"].get("/cluster");case 2:return t=e.sent,n=t.config,"mcast"===t.type?(t.config.ports=n.ports.join(","),t.config.loop=JSON.stringify(n.loop)):"etcd"===t.type&&(t.config.node_ttl=X(n.node_ttl)),e.abrupt("return",t);case 6:case"end":return e.stop()}},e)}));return function(){return e.apply(this,arguments)}}(),te=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n={node:t.config.node},e.prev=1,e.abrupt("return",c["a"].post("/cluster/invite_node",n));case 5:return e.prev=5,e.t0=e["catch"](1),console.error(e.t0),e.abrupt("return",!1);case 9:case"end":return e.stop()}},e,null,[[1,5]])}));return function(t){return e.apply(this,arguments)}}(),ne=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,c["a"].delete("/cluster/force_leave/".concat(t));case 3:return n=e.sent,e.abrupt("return",n);case 7:return e.prev=7,e.t0=e["catch"](0),console.error(e.t0),e.abrupt("return",!1);case 11:case"end":return e.stop()}},e,null,[[0,7]])}));return function(t){return e.apply(this,arguments)}}(),re={name:"ClusterSettings",data:function(){return{record:{config:{}},rules:{},clusterTypes:[{label:this.$t("Settings.manual"),value:"manual"},{label:this.$t("Settings.dns"),value:"dns"},{label:this.$t("Settings.static"),value:"static"},{label:this.$t("Settings.mcast"),value:"mcast"},{label:this.$t("Settings.etcd"),value:"etcd"},{label:this.$t("Settings.k8s"),value:"k8s"}],currentNodes:[],descriptionDict:{}}},created:function(){this.getCluster()},methods:{getCluster:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,ee();case 2:return t=e.sent,this.record=t,e.next=6,Q();case 6:n=e.sent,r=this.record.config.seeds||[],this.currentNodes=this.getNodes(n,r);case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleInviteNode:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.$refs.record.validate();case 2:if(t=e.sent,t){e.next=5;break}return e.abrupt("return");case 5:return e.next=7,te(this.record);case 7:n=e.sent,n&&(this.$message.success(this.$t("Settings.inviteSuccess")),this.getCluster());case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),toNodeDetails:function(e){this.$router.push({path:"/monitor/node",query:{name:e}})},removeNode:function(e){var t=this;this.$confirm(this.$t("Settings.removeConfirm"),this.$t("Base.warning"),{type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function n(){var r;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,ne(e);case 2:r=n.sent,r&&(t.$message.success(t.$t("Settings.removeSuccess")),t.getCluster());case 4:case"end":return n.stop()}},n)}))).catch(function(){})},getNodes:function(e,t){if(!t.length)return e.map(function(e){return{name:e,joined:!0}});var n=function(e){return Object(I["a"])(new Set(e))},r=[].concat(Object(I["a"])(e),Object(I["a"])(t)),s=r.filter(function(e){return r.indexOf(e)===r.lastIndexOf(e)}),a=n(r);return a.map(function(e){var t={name:e,joined:!0};return s.includes(e)&&(t.joined=!1),t})}}},se=re,ae=(n("f8c7"),Object(_["a"])(se,H,G,!1,null,null,null)),ie=ae.exports,oe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-card",{staticClass:"listener-settings emq-list-card"},[e.showConfigDetail?[n("el-row",[n("el-col",{attrs:{span:4}},[n("span",{staticClass:"return-button",on:{click:e.returnList}},[n("i",{staticClass:"el-icon-arrow-left"},[e._v(e._s(e.$t("Settings.returnList")))])])]),"edit"===e.oper?n("el-col",{attrs:{span:4,offset:16}},[n("span",{staticClass:"delete-button",on:{click:e.deleteListener}},[e._v(e._s(e.$t("Base.delete")))])]):e._e()],1),n("config-detail",{attrs:{oper:e.oper,editConfig:e.editConfig,from:"listener",listenerType:e.transport_type,"btn-loading":e.saveLoading,labelWidth:"170px",listenerZoneOptions:e.listenerZoneOptions},on:{update:function(t){return e.handleUpdate.apply(void 0,arguments)}},model:{value:e.disabled,callback:function(t){e.disabled=t},expression:"disabled"}})]:[n("div",{staticClass:"emq-table-header"},[n("el-button",{staticClass:"confirm-btn",attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:e.addListener}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1),n("el-table",{attrs:{data:e.listeners}},[n("el-table-column",{attrs:{prop:"name",label:e.$t("Settings.listenerName")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("a",{on:{click:function(t){return e.editListener(r)}}},[e._v(e._s(r.name))])]}}],null,!1,2637449987)}),n("el-table-column",{attrs:{prop:"transport_type",label:e.$t("Modules.listener_type")}}),n("el-table-column",{attrs:{prop:"configs.listener",label:e.$t("Modules.listen_on")}}),n("el-table-column",{attrs:{prop:"configs.acceptors",label:"Acceptors"}}),n("el-table-column",{attrs:{label:e.$t("Settings.isOpened")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("el-switch",{attrs:{"active-color":"#13ce66","inactive-color":"#d0d3e0"},on:{change:function(t){var n=arguments.length,s=Array(n);while(n--)s[n]=arguments[n];return e.updataStatus.apply(void 0,s.concat([r]))}},model:{value:r.enabled,callback:function(t){e.$set(r,"enabled",t)},expression:"row.enabled"}})]}}],null,!1,2370169121)})],1)]],2)},ce=[],le={name:"ListenerSettings",components:{ConfigDetail:J},data:function(){return{listeners:[],showConfigDetail:!1,editConfig:{},transport_type:"tcp",editListenerName:"",disabled:!0,listenerZoneOptions:[],saveLoading:!1,oper:"edit"}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,f();case 2:return this.listeners=e.sent,this.listenerZoneOptions=[],e.next=6,u();case 6:t=e.sent,t.forEach(function(e){var t={label:e.name,value:e.name};n.listenerZoneOptions.push(t)});case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),returnList:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=function(){r.showConfigDetail=!1,r.loadData()},this.disabled){e.next=9;break}return e.next=4,this.$confirm(this.$t("Settings.noSaveConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")});case 4:if(n=e.sent,"confirm"!==n){e.next=8;break}return t(),e.abrupt("return",!0);case 8:return e.abrupt("return",!1);case 9:return t(),e.abrupt("return",!0);case 11:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),addListener:function(){this.oper="add",this.showConfigDetail=!0,this.transport_type="tcp",this.editConfig={}},editListener:function(e){this.oper="edit",this.showConfigDetail=!0,this.editConfig=Object(E["a"])({},e.configs),this.transport_type=e.transport_type,this.editListenerName=e.name},handleUpdate:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n,r){var s,i,o,c=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.saveLoading=!0,i=Object.assign({},n),"add"===this.oper){e.next=7;break}s={transport_type:r,configs:i},this.$confirm(this.$t("Settings.confirmUpdateListener"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,b("listeners",c.editListenerName,s);case 2:n=e.sent,n&&c.updataSuccess(t,"edit");case 4:case"end":return e.stop()}},e)}))).catch(function(){}),e.next=12;break;case 7:return s={name:t,transport_type:r,configs:i},e.next=10,v("listeners",s);case 10:o=e.sent,o&&this.updataSuccess(t);case 12:this.saveLoading=!1;case 13:case"end":return e.stop()}},e,this)}));function t(t,n,r){return e.apply(this,arguments)}return t}(),updataSuccess:function(e){this.loadData(),this.disabled=!0,e?this.$message.success(this.$t("Base.createSuccess")):this.$message.success(this.$t("Base.applySuccess")),this.showConfigDetail=!1},updataStatus:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r,s,i,o=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:n.enabled=!t,r=n.transport_type,s=n.enabled,i={type:"listener",transport_type:r,enabled:!s},s?this.$confirm("".concat(this.$t("Settings.isStopListener")+n.name,"?"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:o.toggleEnabled(n,i);case 1:case"end":return e.stop()}},e)}))).catch(function(){}):this.toggleEnabled(n,i);case 4:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}(),toggleEnabled:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,b("listeners",t.name,n);case 2:this.loadData();case 3:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}(),deleteListener:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm(this.$t("Settings.isDeleteListener"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,p(t.editListenerName,t.transport_type);case 2:n=e.sent,n&&(t.$message.success(t.$t("Base.deleteSuccess")),t.returnList());case 4:case"end":return e.stop()}},e)}))).catch(function(){});case 1:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},ue=le,de=(n("6e10"),Object(_["a"])(ue,oe,ce,!1,null,null,null)),fe=de.exports,pe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a-card",{staticClass:"monitor-settings emq-list-card"},[n("el-tabs",{attrs:{"before-leave":e.handleBeforeLeave},model:{value:e.settingType,callback:function(t){e.settingType=t},expression:"settingType"}},e._l(e.monitorList,function(t,r){return n("el-tab-pane",{key:r,attrs:{label:t.type,name:t.type}},[e.settingType===t.type&&t.configs?n("config-form",{ref:t.type,refInFor:!0,attrs:{record:t.configs,rules:t.rules,"btn-loading":e.saveLoading,labelWidth:"195px"},on:{update:function(n){var r=arguments.length,s=Array(r);while(r--)s[r]=arguments[r];return e.handleUpdate.apply(void 0,s.concat([t.type]))}},model:{value:e.disabled,callback:function(t){e.disabled=t},expression:"disabled"}}):[n("a-skeleton",{attrs:{active:""}})]],2)}),1)],1)},me=[],ge={name:"MonitorSettings",components:{ConfigForm:C},data:function(){return{saveLoading:!1,settingType:"vm_mon",disabled:!1,monitorList:[]}},created:function(){this.loadData()},methods:{handleBeforeLeave:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t===n){e.next=9;break}if(this.disabled){e.next=9;break}return e.next=4,this.$confirm(this.$t("Settings.noSaveConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")});case 4:if(r=e.sent,"confirm"!==r){e.next=8;break}return this.$refs[n][0].cancel(!1),e.abrupt("return",!0);case 8:return e.abrupt("return",!1);case 9:return e.abrupt("return",!0);case 10:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}(),loadData:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,l();case 2:t=e.sent,n=t.monitorResList,this.monitorList=n,n.forEach(function(e){e.rules={},Object.keys(e.configs).forEach(function(t){e.rules[t]=[{required:!0,message:r.$t("Settings.pleaseEnter")}]})});case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleUpdate:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.saveLoading=!0,e.next=3,m(n,t);case 3:r=e.sent,r&&(this.disabled=!0,this.$message.success(this.$t("Base.applySuccess")),this.loadData()),this.saveLoading=!1;case 6:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}()}},he=ge,be=Object(_["a"])(he,pe,me,!1,null,null,null),ve=be.exports,ye=n("94b0"),we=n("943d"),$e={name:"Settings",components:{BaseSettings:L,ZoneSettings:Y,ClusterSettings:ie,ListenerSettings:fe,MonitorSettings:ve},data:function(){return{activeName:"baseSettings",showSettings:!1}},created:function(){this.getStatus()},methods:{getStatus:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(we["q"])();case 2:t=e.sent,n=t.find(function(e){return"hot_confs"===e.type&&!0===e.enabled}),this.showSettings=void 0!==n;case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleModLoad:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(ye["c"])({type:"hot_confs"});case 2:this.$message.success(this.$t("Base.enableSuccess")),this.showSettings=!0;case 4:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleBeforeLeave:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t,n){var r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if("clusterSettings"===n||t===n){e.next=9;break}if(r=this.$refs[n]._data.disabled,r){e.next=9;break}return e.next=5,this.$confirm(this.$t("Settings.noSaveConfirm"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Settings.no")});case 5:if(s=e.sent,"confirm"!==s){e.next=8;break}return e.abrupt("return",!0);case 8:return e.abrupt("return",!1);case 9:return e.abrupt("return",!0);case 10:case"end":return e.stop()}},e,this)}));function t(t,n){return e.apply(this,arguments)}return t}()}},xe=$e,_e=(n("68a5"),Object(_["a"])(xe,r,s,!1,null,null,null));t["default"]=_e.exports},6060:function(e,t,n){},"62d1":function(e,t,n){"use strict";var r=n("db39"),s=n.n(r);s.a},6350:function(e,t,n){"use strict";var r=n("c7a2"),s=n.n(r);s.a},"68a5":function(e,t,n){"use strict";var r=n("da65"),s=n.n(r);s.a},"6c41":function(e,t,n){},"6d1b":function(e,t,n){},"6e10":function(e,t,n){"use strict";var r=n("6060"),s=n.n(r);s.a},"943d":function(e,t,n){"use strict";n.d(t,"o",function(){return a}),n.d(t,"d",function(){return i}),n.d(t,"q",function(){return o}),n.d(t,"s",function(){return c}),n.d(t,"i",function(){return l}),n.d(t,"v",function(){return u}),n.d(t,"b",function(){return d}),n.d(t,"p",function(){return f}),n.d(t,"u",function(){return p}),n.d(t,"g",function(){return m}),n.d(t,"n",function(){return g}),n.d(t,"a",function(){return h}),n.d(t,"f",function(){return b}),n.d(t,"e",function(){return v}),n.d(t,"m",function(){return y}),n.d(t,"c",function(){return $}),n.d(t,"j",function(){return x}),n.d(t,"h",function(){return _}),n.d(t,"t",function(){return k}),n.d(t,"k",function(){return C}),n.d(t,"l",function(){return O}),n.d(t,"r",function(){return S});n("ac6a"),n("456d"),n("96cf");var r=n("3b8d"),s=n("1f75");function a(){return s["a"].get("/module_types")}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s["a"].post("/modules",e)}function o(){return s["a"].get("/modules")}function c(e){return s["a"].get("/modules/".concat(e))}function l(e){return s["a"].delete("/modules/".concat(e))}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s["a"].put("/modules/".concat(e),t)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s["a"].post("/auth_".concat(e),t)}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s["a"].get("/auth_".concat(e),{params:t})}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return s["a"].put("/auth_".concat(e,"/").concat(encodeURIComponent(t)),n)}function m(e,t){return s["a"].delete("/auth_".concat(e,"/").concat(encodeURIComponent(t)))}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s["a"].get("/acl/".concat(e),{params:t})}function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s["a"].post("/acl",e)}function b(e,t,n){return s["a"].delete("/acl/".concat(e,"/").concat(encodeURIComponent(t),"/topic/").concat(encodeURIComponent(n)))}function v(e){return s["a"].delete("/acl/$all/topic/".concat(encodeURIComponent(e)))}function y(e){return w.apply(this,arguments)}function w(){return w=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n,r,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,s["a"].get("/sasl?mechanism=".concat(t));case 2:return n=e.sent,r=Object.keys(n)[0],a=[],n[r].forEach(function(e){var t={username:e};a.push(t)}),e.abrupt("return",a);case 7:case"end":return e.stop()}},e)})),w.apply(this,arguments)}function $(e){return s["a"].post("/sasl",e)}function x(e){return s["a"].put("/sasl",e)}function _(e,t){return s["a"].delete("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function k(e,t){return s["a"].get("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function C(e){return s["a"].get("/nodes/".concat(e,"/lwm2m_channels"))}function O(e,t,n,r){return s["a"].get("/nodes/".concat(e,"/lookup_cmd/").concat(t,"?msgType=").concat(n,"&path=").concat(r))}function S(e){return s["a"].post("/mqtt/publish",e)}},"94b0":function(e,t,n){"use strict";n.d(t,"d",function(){return s}),n.d(t,"c",function(){return a}),n.d(t,"a",function(){return i}),n.d(t,"b",function(){return o}),n.d(t,"e",function(){return c});var r=n("1f75");function s(){return r["a"].get("/topic-metrics")}function a(e){return r["a"].post("/maybe_start_modules",e)}function i(e){return r["a"].post("/topic-metrics",e)}function o(e){return r["a"].delete("/topic-metrics/".concat(encodeURIComponent(e)))}function c(e){return r["a"].get("/topic-metrics/".concat(encodeURIComponent(e)))}},a8db:function(e,t,n){"use strict";var r=n("e265"),s=n.n(r),a=n("a4bb"),i=n.n(a);function o(e,t){if(null==e)return{};var n,r,s={},a=i()(e);for(r=0;r=0||(s[n]=e[n]);return s}function c(e,t){if(null==e)return{};var n,r,a=o(e,t);if(s.a){var i=s()(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}n.d(t,"a",function(){return c})},bf60:function(e,t,n){e.exports=n.p+"static/img/not_settings.01e8bfc4.png"},c7a2:function(e,t,n){},d0a9:function(e,t,n){"use strict";var r=n("6d1b"),s=n.n(r);s.a},da65:function(e,t,n){},db01:function(e,t,n){},db39:function(e,t,n){},f833:function(e,t,n){"use strict";var r=n("db01"),s=n.n(r);s.a},f8c7:function(e,t,n){"use strict";var r=n("6c41"),s=n.n(r);s.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-8ed2d5e8.20b6effa.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-8ed2d5e8.20b6effa.js new file mode 100644 index 000000000..425d7bc3f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-8ed2d5e8.20b6effa.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-8ed2d5e8"],{"0870":function(e,t,n){"use strict";var r=n("d283"),i=n.n(r);i.a},2118:function(e,t,n){},"6fc1":function(e,t,n){},"7d5c":function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-dialog",e._g(e._b({staticClass:"resource-dialog",attrs:{title:"edit"===e.oper?e.$t("RuleEngine.editResources"):e.$t("RuleEngine.createResources"),width:"520px",visible:e.dialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.dialogVisible=t},open:e.loadData,close:e.clearForm}},"el-dialog",e.$attrs,!1),e.$listeners),[n("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules,"label-position":"top",size:"small"}},[n("el-form-item",{attrs:{prop:"type",label:e.$t("RuleEngine.resourceTypes")}},[n("emq-select",{attrs:{filterable:"",disabled:e.disabledSelect,"field-name":{label:"title",value:"name"},field:{options:e.availableTypes}},on:{change:e.resourceTypeChange},model:{value:e.record.type,callback:function(t){e.$set(e.record,"type",t)},expression:"record.type"}}),n("el-button",{staticStyle:{"margin-left":"20px"},attrs:{loading:"testButton"===e.loadingButton,disabled:!e.record.type,type:"primary"},on:{click:function(t){return e.handleCreate(!0)}}},[e._v("\n "+e._s(e.$t("RuleEngine.testConnection"))+"\n ")])],1),e.record.type?n("el-row",{staticClass:"config-item-wrapper",attrs:{gutter:20}},[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"id",label:e.$t("RuleEngine.resourceID")}},[n("el-input",{attrs:{disabled:"edit"===e.oper},model:{value:e.record.id,callback:function(t){e.$set(e.record,"id",t)},expression:"record.id"}})],1)],1),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"description",label:e.$t("RuleEngine.resourceDes")}},[n("el-input",{attrs:{placeholder:e.$t("RuleEngine.pleaseEnter")},model:{value:e.record.description,callback:function(t){e.$set(e.record,"description",t)},expression:"record.description"}})],1)],1),n("el-col",{attrs:{span:24}},[n("div",{staticClass:"line"})]),e.configLoading?n("div",{staticClass:"params-loading-wrapper"},[n("a-skeleton",{attrs:{active:""}})],1):e.configList.length>0?[e._l(e.configList,function(t,r){return n("el-col",{key:r,attrs:{span:"textarea"===t.type||"object"===t.type?24:12}},["file"===t.elType||["verify","tls_version"].includes(t.key)?[["true",!0].includes(e.record.config["https_enabled"])||["true",!0].includes(e.record.config["ssl"])||void 0===e.record.config["ssl"]&&void 0===e.record.config["https_enabled"]?n("el-form-item",e._b({},"el-form-item",t.formItemAttributes,!1),["file"===t.elType?n("file-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}}):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1))],1):e._e()]:n("el-form-item",e._b({},"el-form-item",t.formItemAttributes,!1),[t.formItemAttributes.description?n("template",{slot:"label"},[e._v("\n "+e._s(t.formItemAttributes.label)+"\n "),n("el-popover",{attrs:{width:"220",trigger:"hover",placement:"top"}},[n("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(t.formItemAttributes.description)}}),n("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1):e._e(),"object"===t.elType?[n("key-and-value-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}})]:"select"!==t.elType?["number"===t.type?n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):"password"===t.type?n("el-input",e._b({attrs:{"show-password":""},model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1))]:["number"===t.type?n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1)):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1))]],2)],2)}),[!1,"false"].includes(e.record.config["ssl"])&&e.wholeConfigList.length>11||![!1,"false"].includes(e.record.config["ssl"])&&e.wholeConfigList.length>8?n("el-col",{staticClass:"show-more",attrs:{span:24}},[n("a",{attrs:{href:"javascript:;"},on:{click:e.showWholeList}},[e._v("\n "+e._s(e.showMoreItem?e.$t("Clients.collapse"):e.$t("Clients.expand"))+"\n "),n("i",{class:e.showMoreItem?"el-icon-arrow-up":"el-icon-arrow-down"})])]):e._e()]:e._e()],2):"edit"===e.oper&&(!e.record.type||e.resourceTypes.length<1)?n("a-skeleton",{attrs:{active:""}}):e._e()],1),n("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{attrs:{size:"small"},on:{click:e.handleCache}},[e._v(e._s(e.$t("Base.cancel")))]),n("el-button",{staticClass:"dialog-primary-btn",attrs:{loading:"createButton"===e.loadingButton,type:"primary",size:"small"},on:{click:function(t){return e.handleCreate(!1)}}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)},i=[],s=(n("96cf"),n("3b8d")),a=n("7618"),o=(n("456d"),n("ac6a"),n("7514"),n("55dd"),n("7f7f"),n("6762"),n("2fdb"),n("6b54"),n("bd43")),c=n("90b9"),u=n("caba"),l=n("faa11"),d=n("2ef0"),f=n.n(d),p={name:"ResourceDialog",components:{KeyAndValueEditor:u["a"],FileEditor:l["a"]},inheritAttrs:!1,props:{value:{},visible:{type:Boolean,default:!1},oper:{type:String,default:"add"},editItem:{type:Object,default:function(){}}},data:function(){return{loadingButton:void 0,showMoreItem:!1,configLoading:!1,selfVisible:!1,resourceTypes:[],configList:[],wholeConfigList:[],types:[],selectedResource:{name:"",description:"",params:{},title:""},record:{config:{},description:"",type:"",id:"resource:".concat(Math.random().toString().slice(3,9))},rules:{config:{},type:{required:!0,message:this.$t("RuleEngine.pleaseChoose")},id:{required:!0,validator:c["q"]}}}},computed:{availableTypes:function(){var e=this,t=this.types.length>0?this.resourceTypes.filter(function(t){return e.types.includes(t.name)}):this.resourceTypes;return t.sort(function(e,t){return e.title.localeCompare(t.title)})},disabledSelect:function(){return 1===this.types.length||"edit"===this.oper},dialogVisible:{get:function(){return this.visible||this.selfVisible},set:function(e){this.selfVisible=!1,this.$emit("update:visible",e)}},rawValue:{get:function(){return this.value},set:function(e){this.$emit("update:value",e)}},sslValue:function(){var e=this.record.config.ssl;return e}},watch:{sslValue:{handler:function(e){e&&"true"===e.toString()&&(this.showMoreItem=!0,this.configList=this.wholeConfigList)},deep:!0}},methods:{showWholeList:function(){!1===this.showMoreItem?(this.showMoreItem=!0,this.configList=this.wholeConfigList):(this.showMoreItem=!1,this.configList=this.wholeConfigList.slice(0,8))},clearForm:function(){var e=this;this.$refs.record&&setTimeout(function(){e.$refs.record.resetFields(),e.record={config:{},description:"",type:"",id:"resource:".concat(Math.random().toString().slice(3,9))},e.wholeConfigList=[],e.configList=[]},10)},resourceTypeChange:function(e){this.record.name=e,this.selectedResource=this.resourceTypes.find(function(t){return t.name===e}),this.configLoading=!0,this.wholeConfigList=[],this.configList=[],setTimeout(this.loadConfigList,200)},loadConfigList:function(){var e=this,t=this.selectedResource.params,n=Object(c["l"])(t,"config"),r=n.form,i=n.rules;this.rules.config=i,this.record.config={},this.wholeConfigList=r,this.showMoreItem=!1,this.configList=r.length>8?r.slice(0,8):r,"edit"===this.oper?this.assignValuesToRecord():r.forEach(function(t){var n=t.key,r=t.value;e.$set(e.record.config,n,r)}),this.configLoading=!1,setTimeout(this.$refs.record.clearValidate,10)},cleanFileContent:function(e){var t=[!1,"false"];(t.includes(e.ssl)||t.includes(e.https_enabled))&&(e.verify=!1,Object.keys(e).forEach(function(t){var n=e[t];"object"===Object(a["a"])(n)&&Object.keys(n).includes("file")&&(e[t]={file:"",filename:""})}))},assignValuesToRecord:function(){var e=this,t=f.a.cloneDeep(this.editItem),n=t.configVal,r=t.description,i=t.type,s=t.id;Object.assign(this.record,{type:i,id:s,description:r}),Object.keys(n).forEach(function(t){var r=n[t];e.$set(e.record.config,t,r)})},handleEdit:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(t){var n,r,i,a,c,u=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(n=this.editItem.configVal,r=t.config,i=t.description,a=f.a.isEqual(n,r)&&i===this.editItem.description,!a){e.next=7;break}return this.dialogVisible=!1,this.selfVisible=!1,e.abrupt("return");case 7:c=function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Object(o["f"])(t);case 3:n=e.sent,u.handleOperateSuccess(!1,n.id),e.next=10;break;case 7:e.prev=7,e.t0=e["catch"](0),setTimeout(function(){u.loadingButton=void 0},100);case 10:case"end":return e.stop()}},e,null,[[0,7]])}));return function(){return e.apply(this,arguments)}}(),this.$confirm(this.$t("RuleEngine.editResourceTips"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Base.cancel"),confirmButtonText:this.$t("Base.confirm")}).then(Object(s["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:u.loadingButton="createButton",c();case 2:case"end":return e.stop()}},e)}))).catch(function(){});case 9:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleOperateSuccess:function(e,t){var n=this;if(setTimeout(function(){n.loadingButton=void 0},100),e)this.$message.success(this.$t("RuleEngine.resourceAvailable"));else{var r="add"===this.oper?this.$t("Base.createSuccess"):this.$t("Base.editSuccess");this.$message.success(r),this.$emit("created",t),this.dialogVisible=!1,this.selfVisible=!1}},handleCreate:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t,n,r,i,s=this,a=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=a.length>0&&void 0!==a[0]&&a[0],e.next=3,this.$refs.record.validate();case 3:if(n=e.sent,n){e.next=6;break}return e.abrupt("return");case 6:if(this.loadingButton=t?"testButton":"createButton",r=this.record.config,Object.keys(r).forEach(function(e){var t=r[e];"true"===t&&(s.record.config[e]=!0),"false"===t&&(s.record.config[e]=!1)}),this.cleanFileContent(r),e.prev=10,"edit"!==this.oper||t){e.next=15;break}return this.loadingButton=void 0,this.handleEdit(this.record),e.abrupt("return");case 15:return e.next=17,Object(o["b"])(this.record,t);case 17:i=e.sent,this.handleOperateSuccess(t,i.id),e.next=24;break;case 21:e.prev=21,e.t0=e["catch"](10),setTimeout(function(){s.loadingButton=void 0},100);case 24:case"end":return e.stop()}},e,this,[[10,21]])}));function t(){return e.apply(this,arguments)}return t}(),handleCache:function(){this.dialogVisible=!1,this.selfVisible=!1,this.$emit("cache",!0)},loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.types=[],e.next=3,Object(o["k"])();case 3:this.resourceTypes=e.sent,"edit"===this.oper&&(t=this.editItem.type,this.resourceTypeChange(t));case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),setup:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.selfVisible=!0;var n=t.types,r=void 0===n?[]:n;this.loadData().then(function(){e.types=r,e.record.type=r[0],e.resourceTypeChange(e.record.type)})}}},h=p,m=(n("df52"),n("2877")),g=Object(m["a"])(h,r,i,!1,null,null,null);t["a"]=g.exports},bd43:function(e,t,n){"use strict";n.d(t,"m",function(){return c}),n.d(t,"n",function(){return l}),n.d(t,"l",function(){return d}),n.d(t,"g",function(){return p}),n.d(t,"e",function(){return m}),n.d(t,"d",function(){return g}),n.d(t,"o",function(){return b}),n.d(t,"a",function(){return v}),n.d(t,"h",function(){return y}),n.d(t,"k",function(){return w}),n.d(t,"i",function(){return _}),n.d(t,"j",function(){return j}),n.d(t,"b",function(){return O}),n.d(t,"f",function(){return E}),n.d(t,"c",function(){return T}),n.d(t,"p",function(){return I});n("7f7f"),n("456d"),n("ac6a"),n("96cf");var r=n("3b8d"),i=n("1f75"),s=n("90b9"),a=[],o={};function c(){return u.apply(this,arguments)}function u(){return u=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==a.length){e.next=5;break}return e.next=3,i["a"].get("/rule_events");case 3:t=e.sent,a=Object(s["c"])(t,["title","description"]);case 5:return a.forEach(function(e){o[e.event]=e}),e.abrupt("return",a);case 7:case"end":return e.stop()}},e)})),u.apply(this,arguments)}function l(e){return i["a"].get("/rules",e)}function d(e){return f.apply(this,arguments)}function f(){return f=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i["a"].get("/rules/".concat(t));case 2:return n=e.sent,e.next=5,c();case 5:return n.events=n.for.map(function(e){return o[e]?o[e]:o["$events/message_publish"]}),n.metricsData={},n.metrics.forEach(function(e){["matched","speed","speed_last5m","speed_max"].forEach(function(t){n.metricsData[t]=n.metricsData[t]||0,n.metricsData[t]+=e[t]||0})}),n.actions=n.actions.map(function(e){return e.failed=0,e.success=0,e.metrics.forEach(function(t){e.failed+=t.failed,e.success+=t.success}),e}),e.abrupt("return",n);case 10:case"end":return e.stop()}},e)})),f.apply(this,arguments)}function p(){return h.apply(this,arguments)}function h(){return h=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:{fillI18n:!1},e.next=3,i["a"].get("/actions");case 3:if(n=e.sent,t.fillI18n){e.next=6;break}return e.abrupt("return",n);case 6:return e.abrupt("return",Object(s["c"])(n,["title","description"]));case 7:case"end":return e.stop()}},e)})),h.apply(this,arguments)}function m(e){return i["a"].delete("/rules/".concat(e))}function g(e){return i["a"].delete("/resources/".concat(e))}function b(e){return i["a"].post("/resources/".concat(e))}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules?test=true",e,{params:{_m:!1}})}function y(){return k.apply(this,arguments)}function k(){return k=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:{},e.next=3,i["a"].get("/actions",{params:t});case 3:return n=e.sent,e.abrupt("return",n.map(function(e){return e=Object(s["c"])(e,["title","description"]),e.params=Object(s["c"])(e.params,!0),e}));case 5:case"end":return e.stop()}},e)})),k.apply(this,arguments)}function w(){return x.apply(this,arguments)}function x(){return x=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i["a"].get("/resource_types");case 2:return t=e.sent,t=Object(s["c"])(t,["title","description"]).map(function(e){return e.params=Object(s["c"])(e.params,!0),e}),e.abrupt("return",t);case 5:case"end":return e.stop()}},e)})),x.apply(this,arguments)}var $={};function _(){return C.apply(this,arguments)}function C(){return C=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=s.length>0&&void 0!==s[0]?s[0]:{},0!==Object.keys($).length){e.next=6;break}return e.next=4,w();case 4:n=e.sent,n.forEach(function(e){$[e.name]=e});case 6:return e.next=8,i["a"].get("/resources",{params:t});case 8:return r=e.sent,e.abrupt("return",r.map(function(e){var t=e.config;return e.configVal=t,e.config=$[e.type]||{},e}));case 10:case"end":return e.stop()}},e)})),C.apply(this,arguments)}function j(e){return R.apply(this,arguments)}function R(){return R=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==Object.keys($).length){e.next=5;break}return e.next=3,w();case 3:n=e.sent,n.forEach(function(e){$[e.name]=e});case 5:return e.prev=5,e.next=8,i["a"].get("/resources/".concat(t));case 8:return r=e.sent,r.typeInfo=$[r.type]||{},r._config=[],Object.keys(r.config).forEach(function(e){var t=r.config[e],n=r.typeInfo.params[e]||{},i=n.title,s=n.description;r._config.push({key:e,value:t,title:i||t,description:s})}),e.abrupt("return",r);case 15:return e.prev=15,e.t0=e["catch"](5),console.error(e.t0),e.abrupt("return",!1);case 19:case"end":return e.stop()}},e,null,[[5,15]])})),R.apply(this,arguments)}function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i["a"].post("/resources",e,{params:{test:t?"true":void 0}})}function E(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].put("/resources/".concat(e.id),e)}function T(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules",e)}function I(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i["a"].put("/rules/".concat(e),t)}},caba:function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-table",{staticClass:"key-and-value-editor",attrs:{data:e.tableData,size:"mini"}},[n("el-table-column",{attrs:{prop:"key",label:e.$t("components.key"),"min-width":"80px"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("el-input",{staticClass:"key-input",staticStyle:{width:"120px !important"},attrs:{size:"mini",placeholder:e.$t("components.objectKey")},on:{input:e.atInputChange},model:{value:r.key,callback:function(t){e.$set(r,"key",t)},expression:"row.key"}})]}}])}),n("el-table-column",{attrs:{prop:"value",label:e.$t("components.value"),"min-width":"150px"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("el-input",{attrs:{size:"mini"},on:{input:e.atInputChange},model:{value:r.value,callback:function(t){e.$set(r,"value",t)},expression:"row.value"}})]}}])}),n("el-table-column",{attrs:{width:"60px"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("span",{staticClass:"btn",on:{click:function(t){return e.deleteItem(r)}}},[e._v("\n "+e._s(e.$t("components.delete"))+"\n ")])]}}])},[n("span",{staticClass:"btn",attrs:{slot:"header"},on:{click:e.addColumn},slot:"header"},[e._v("\n "+e._s(e.$t("components.add"))+"\n ")])])],1)},i=[],s=n("768b"),a=(n("ffc1"),n("ac6a"),{name:"KeyAndValueEditor",components:{},model:{prop:"value",event:"update"},props:{value:{type:Object,required:!0},notNull:{type:Boolean,default:!1}},data:function(){return{row:{key:"",value:"",state:0},tableData:[]}},computed:{},created:function(){var e=[],t=this.value;Object.entries(t).forEach(function(t){var n=Object(s["a"])(t,2),r=n[0],i=n[1];e.push({key:r,value:i,state:0})}),this.tableData=e},methods:{atInputChange:function(){var e={};this.tableData.forEach(function(t){var n=t.key,r=t.value;e[n]=r}),this.$emit("update",e)},deleteItem:function(e){this.tableData=this.tableData.filter(function(t){return t.key!==e.key}),this.atInputChange()},addColumn:function(){this.tableData.push({key:"",value:"",state:0})}}}),o=a,c=(n("db2b"),n("2877")),u=Object(c["a"])(o,r,i,!1,null,null,null);t["a"]=u.exports},d283:function(e,t,n){},db2b:function(e,t,n){"use strict";var r=n("6fc1"),i=n.n(r);i.a},df52:function(e,t,n){"use strict";var r=n("2118"),i=n.n(r);i.a},faa11:function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"file-editor"},[n("el-row",[n("el-col",{attrs:{span:22}},[n("el-form-item",{staticStyle:{"margin-bottom":"0px"}},[n("el-input",{attrs:{placeholder:e.$t("Modules.fileTip")},model:{value:e.value.filename,callback:function(t){e.$set(e.value,"filename",t)},expression:"value.filename"}})],1)],1),n("el-col",{attrs:{span:2}},[n("el-upload",{ref:"upload",attrs:{"show-file-list":!1,action:"/api/v4/data/file","auto-upload":!1,"on-change":e.handleChange,"on-error":e.handleError}},[n("i",{staticClass:"el-icon-folder-opened file-icon"})])],1)],1)],1)},i=[],s=(n("6b54"),n("7f7f"),n("96cf"),n("3b8d")),a={name:"FileEditor",model:{prop:"value",event:"update"},props:{value:{type:Object,required:!0}},methods:{handleChange:function(e){var t=this,n=new FileReader;n.readAsText(e.raw),n.onload=function(){var n=Object(s["a"])(regeneratorRuntime.mark(function n(r){var i,s;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:i=r.currentTarget.result,s={file:i,filename:e.name},t.$emit("update",s);case 3:case"end":return n.stop()}},n)}));return function(e){return n.apply(this,arguments)}}(),n.onerror=function(){t.$message.error(t.$t("Backup.uploadFailed"))}},handleError:function(e){this.$message.error(e.toString())}}},o=a,c=(n("0870"),n("2877")),u=Object(c["a"])(o,r,i,!1,null,null,null);t["a"]=u.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-94b856f2.8df186b1.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-94b856f2.8df186b1.js new file mode 100644 index 000000000..8999fce1a --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-94b856f2.8df186b1.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-94b856f2"],{1202:function(e,t,n){"use strict";var a=n("1242"),i=n.n(a);i.a},1242:function(e,t,n){},"2c28":function(e,t,n){"use strict";var a=n("486e"),i=n.n(a);i.a},"486e":function(e,t,n){},"4dd1":function(e,t){e.exports=function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},i={className:"subst",begin:"\\$\\{",end:"\\}",keywords:n,contains:[]},s={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,i]};i.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,a,e.REGEXP_MODE];var r=i.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{aliases:["js","jsx"],keywords:n,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:n,contains:r}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{begin://,subLanguage:"xml",contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{begin:/<[A-Za-z0-9\\._:-]+/,end:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,contains:[{begin:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:r}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}},"5ad2":function(e,t){e.exports=function(e){var t={literal:"true false null"},n=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],a={end:",",endsWithParent:!0,excludeEnd:!0,contains:n,keywords:t},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(a,{begin:/:/})],illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[e.inherit(a)],illegal:"\\S"};return n.splice(n.length,0,i,s),{contains:n,keywords:t,illegal:"\\S"}}},"61fb":function(e,t,n){},"6c3e":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"rule-view"},[n("page-header",[n("div",{staticClass:"page-header-title-view"},[n("div",{staticClass:"title"},[e._v("\n "+e._s(e.ruleId)+"\n ")])]),n("div",{staticClass:"page-header-top-start btn"},[n("el-button",{attrs:{type:"danger",size:"small"},on:{click:e.deleteRule}},[e._v("\n "+e._s(e.$t("RuleEngine.delete"))+"\n ")])],1)]),n("div",{staticClass:"emq-list-body rule-wrapper app-wrapper"},[n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.loading}},[n("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("RuleEngine.runningMetrics"))+"\n "),n("i",{staticClass:"btn btn-default",class:e.reloading?"el-icon-loading":"el-icon-refresh",on:{click:e.refreshData}})]),n("el-row",{staticClass:"metrics-wrapper",attrs:{gutter:40}},[n("el-col",{staticClass:"metrics-card",attrs:{span:8}},[n("div",{staticClass:"card-title"},[e._v("\n "+e._s(e.$t("RuleEngine.numberOfHits"))+"\n ")]),n("div",{staticClass:"card-value"},[e._v("\n "+e._s(e.record.metricsData.matched)+"\n "),n("span",{staticClass:"card-unit"},[e._v(e._s(e.$t("RuleEngine.times")))])]),n("div",{staticClass:"card-desc"},[e._v("\n "+e._s(e.$t("RuleEngine.numberOfRulesExecutedAfterEnabling"))+"\n ")])]),n("el-col",{staticClass:"metrics-card",attrs:{span:8}},[n("div",{staticClass:"card-title"},[e._v("\n "+e._s(e.$t("RuleEngine.currentSpeed"))+"\n ")]),n("div",{staticClass:"card-value"},[e._v("\n "+e._s(e.record.metricsData.speed)+"\n "),n("span",{staticClass:"card-unit"},[e._v(e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second")))])]),n("div",{staticClass:"card-desc"},[e._v("\n "+e._s(e.$t("RuleEngine.maximumSpeed"))+": "+e._s(e.record.metricsData.speed_max)+" "+e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second"))+"\n ")])]),n("el-col",{staticClass:"metrics-card last-child",attrs:{span:8}},[n("div",{staticClass:"card-title"},[e._v("\n "+e._s(e.$t("RuleEngine.last5MinutesSpeed"))+"\n ")]),n("div",{staticClass:"card-value"},[e._v("\n "+e._s(e.record.metricsData.speed_last5m)+"\n "),n("span",{staticClass:"card-unit"},[e._v(e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second")))])]),n("div",{staticClass:"card-desc"},[e._v("\n "+e._s(e.$t("RuleEngine.averageExecutionSpeedInTheLast5Minutes"))+"\n ")])]),n("el-col",{attrs:{span:24}},[n("rule-metrics-table",{attrs:{metrics:e.record.metrics}})],1)],1)],1),n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.loading}},[n("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("RuleEngine.basicInfo"))+"\n ")]),n("ul",{staticClass:"field-info"},[n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.topic"))+":")]),e.configItem.events?n("span",{staticClass:"field-value"},e._l(e.configItem.events,function(t,a){return n("span",{key:a},[e._v("\n "+e._s(t.title)+" ("+e._s(t.event)+")\n ")])}),0):e._e()]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.resourceDes"))+":")]),n("span",{staticClass:"field-value"},[e._v(e._s(e.configItem.description))])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.selectFiled"))+":")]),n("span",{staticClass:"field-value"},[e._v(e._s(e.configItem.fields))])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.selectConditions"))+":")]),n("span",{staticClass:"field-value"},[e._v(e._s(e.configItem.where))])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.rule"))+" SQL:")]),n("div",{staticClass:"field-content"},[e.record.rawsql?n("code-view",{attrs:{lang:"sql",code:e.record.rawsql}}):e._e()],1)])])]),n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.loading}},[n("div",{staticClass:"emq-title"},[e._v("\n "+e._s(e.$t("RuleEngine.responseAction"))+"\n "),n("span",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("RuleEngine.messageProcessingForHitRules"))+"\n ")])]),n("rule-actions",{ref:"ruleActions",attrs:{disabled:""},model:{value:e.record.actions,callback:function(t){e.$set(e.record,"actions",t)},expression:"record.actions"}})],1)],1)],1)},i=[],s=(n("96cf"),n("3b8d")),r=n("cebc"),l=(n("28a5"),n("4917"),n("a481"),n("bd43")),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("pre",{ref:"codeView",staticClass:"code-view"},[n("code",{class:e.lang},[e._v(e._s(e.code))])])])},c=[],d=n("a70e"),u=n.n(d),m=(n("61fb"),n("5ad2")),g=n.n(m),p=n("de09"),_=n.n(p),f=n("4dd1"),b=n.n(f);u.a.registerLanguage("javascript",b.a),u.a.registerLanguage("json",g.a),u.a.registerLanguage("sql",_.a);var h={name:"CodeView",components:{},props:{code:{type:String,default:""},lang:{type:String,default:"json"}},data:function(){return{}},watch:{code:function(){this.render()},lang:function(){this.render()}},mounted:function(){this.render()},methods:{render:function(){u.a.highlightBlock(this.$refs.codeView)}}},v=h,E=(n("2c28"),n("2877")),y=Object(E["a"])(v,o,c,!1,null,null,null),w=y.exports,x=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.showComponent?n("div",{staticClass:"rule-metrics-table"},[n("div",{staticClass:"oper-wrapper"},[n("div",{staticClass:"ctl-title btn btn-default",on:{click:e.toggleShowTable}},[e._t("default",[n("span",[e._v("\n "+e._s(e.showTable?e.$t("RuleEngine.foldDetails"):e.$t("RuleEngine.showDetails"))+"\n ")]),n("i",{class:e.showTable?"el-icon-arrow-up":"el-icon-arrow-down"})])],2),n("el-collapse-transition",[e.showTable?n("el-table",{attrs:{data:e.metrics}},[n("el-table-column",{attrs:{prop:"node",label:e.$t("RuleEngine.node")}}),n("el-table-column",{attrs:{prop:"matched",label:e.$t("RuleEngine.numberOfHits")}}),n("el-table-column",{attrs:{prop:"speed",label:e.$t("RuleEngine.currentSpeed")}}),n("el-table-column",{attrs:{prop:"speed_max",label:e.$t("RuleEngine.maximumSpeed")}}),n("el-table-column",{attrs:{prop:"speed_last5m",label:e.$t("RuleEngine.last5MinutesSpeed")}})],1):e._e()],1)],1)]):e._e()},R=[],C={name:"RuleMetricsTable",components:{},props:{metrics:{type:Array,default:function(){return{}}}},data:function(){return{showTable:!1}},computed:{showComponent:function(){return this.metrics&&this.metrics.length>0}},created:function(){},methods:{toggleShowTable:function(){this.showTable=!this.showTable}}},k=C,N=(n("1202"),Object(E["a"])(k,x,R,!1,null,null,null)),M=N.exports,O=n("ad43"),S={name:"RuleView",components:{RuleMetricsTable:M,CodeView:w,RuleActions:O["a"]},props:{},data:function(){return{loading:!0,timer:0,record:{for:[],actions:[],metricsData:{matched:0,speed:0,speed_last5m:0,speed_max:0},metrics:[]}}},computed:{reloading:function(){return this.$store.state.loading},ruleId:function(){return this.$route.params.id},configItem:function(){if(!this.record.id)return{event:{}};var e=this.record.rawsql,t=void 0===e?"":e,n=t.replace(/\n/g," "),a=n.match(/SELECT (.+) FROM/),i=a?a[1]:"*",s=n.split(" WHERE "),l=s&&s[1]?s[1]:"";return Object(r["a"])({fields:i,where:l},this.record)}},watch:{$route:function(){this.record.rawsql="",this.loadData()}},created:function(){this.loadData()},methods:{refreshData:function(){this.loadData(),this.$refs.ruleActions.loadActions()},loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(l["l"])(this.ruleId);case 2:this.record=e.sent,this.loading=!1;case 4:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteRule:function(){var e=this;this.$msgbox.confirm(this.$t("RuleEngine.deleteRuleConfirm"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(s["a"])(regeneratorRuntime.mark(function t(){return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(l["e"])(e.record.id);case 2:e.$message.success(e.$t("RuleEngine.successfulDeletion")),setTimeout(function(){e.$router.push({path:"/rules"})},500);case 4:case"end":return t.stop()}},t)}))).catch(function(){})}}},A=S,T=(n("7203"),Object(E["a"])(A,a,i,!1,null,null,null));t["default"]=T.exports},7203:function(e,t,n){"use strict";var a=n("bc0e"),i=n.n(a);i.a},a70e:function(e,t,n){(function(e){"object"===typeof window&&window||"object"===typeof self&&self;e(t)})(function(e){var t,n=[],a=Object.keys,i={},s={},r=/^(no-?highlight|plain|text)$/i,l=/\blang(?:uage)?-([\w-]+)\b/i,o=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,c="",d={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function u(e){return e.replace(/&/g,"&").replace(//g,">")}function m(e){return e.nodeName.toLowerCase()}function g(e,t){var n=e&&e.exec(t);return n&&0===n.index}function p(e){return r.test(e)}function _(e){var t,n,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",n=l.exec(s),n)return T(n[1])?n[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;t"}function c(e){s+=""}function d(e){("start"===e.event?o:c)(e.node)}while(e.length||t.length){var g=l();if(s+=u(a.substring(i,g[0].offset)),i=g[0].offset,g===e){r.reverse().forEach(c);do{d(g.splice(0,1)[0]),g=l()}while(g===e&&g.length&&g[0].offset===i);r.reverse().forEach(o)}else"start"===g[0].event?r.push(g[0].node):r.pop(),d(g.splice(0,1)[0])}return s+u(a.substr(i))}function v(e){return e.variants&&!e.cached_variants&&(e.cached_variants=e.variants.map(function(t){return f(e,{variants:null},t)})),e.cached_variants||e.endsWithParent&&[f(e)]||[e]}function E(e){if(t&&!e.langApiRestored){for(var n in e.langApiRestored=!0,t)e[n]&&(e[t[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(E)}}function y(e){function t(e){return e&&e.source||e}function n(n,a){return new RegExp(t(n),"m"+(e.case_insensitive?"i":"")+(a?"g":""))}function i(e,n){for(var a=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,i=0,s="",r=0;r0&&(s+=n);while(o.length>0){var c=a.exec(o);if(null==c){s+=o;break}s+=o.substring(0,c.index),o=o.substring(c.index+c[0].length),"\\"==c[0][0]&&c[1]?s+="\\"+String(Number(c[1])+l):(s+=c[0],"("==c[0]&&i++)}}return s}function s(r,l){if(!r.compiled){if(r.compiled=!0,r.keywords=r.keywords||r.beginKeywords,r.keywords){var o={},c=function(t,n){e.case_insensitive&&(n=n.toLowerCase()),n.split(" ").forEach(function(e){var n=e.split("|");o[n[0]]=[t,n[1]?Number(n[1]):1]})};"string"===typeof r.keywords?c("keyword",r.keywords):a(r.keywords).forEach(function(e){c(e,r.keywords[e])}),r.keywords=o}r.lexemesRe=n(r.lexemes||/\w+/,!0),l&&(r.beginKeywords&&(r.begin="\\b("+r.beginKeywords.split(" ").join("|")+")\\b"),r.begin||(r.begin=/\B|\b/),r.beginRe=n(r.begin),r.endSameAsBegin&&(r.end=r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),r.end&&(r.endRe=n(r.end)),r.terminator_end=t(r.end)||"",r.endsWithParent&&l.terminator_end&&(r.terminator_end+=(r.end?"|":"")+l.terminator_end)),r.illegal&&(r.illegalRe=n(r.illegal)),null==r.relevance&&(r.relevance=1),r.contains||(r.contains=[]),r.contains=Array.prototype.concat.apply([],r.contains.map(function(e){return v("self"===e?r:e)})),r.contains.forEach(function(e){s(e,r)}),r.starts&&s(r.starts,l);var d=r.contains.map(function(e){return e.beginKeywords?"\\.?(?:"+e.begin+")\\.?":e.begin}).concat([r.terminator_end,r.illegal]).map(t).filter(Boolean);r.terminators=d.length?n(i(d,"|"),!0):{exec:function(){return null}}}}s(e)}function w(e,t,n,a){function s(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function r(e,t){var n,a;for(n=0,a=t.contains.length;n',e?s+t+r:t}function _(){var e,t,n,a;if(!C.keywords)return u(M);a="",t=0,C.lexemesRe.lastIndex=0,n=C.lexemesRe.exec(M);while(n)a+=u(M.substring(t,n.index)),e=m(C,n),e?(O+=e[1],a+=p(e[0],u(n[0]))):a+=u(n[0]),t=C.lexemesRe.lastIndex,n=C.lexemesRe.exec(M);return a+u(M.substr(t))}function f(){var e="string"===typeof C.subLanguage;if(e&&!i[C.subLanguage])return u(M);var t=e?w(C.subLanguage,M,!0,k[C.subLanguage]):x(M,C.subLanguage.length?C.subLanguage:void 0);return C.relevance>0&&(O+=t.relevance),e&&(k[C.subLanguage]=t.top),p(t.language,t.value,!1,!0)}function b(){N+=null!=C.subLanguage?f():_(),M=""}function h(e){N+=e.className?p(e.className,"",!0):"",C=Object.create(e,{parent:{value:C}})}function v(e,t){if(M+=e,null==t)return b(),0;var n=r(t,C);if(n)return n.skip?M+=t:(n.excludeBegin&&(M+=t),b(),n.returnBegin||n.excludeBegin||(M=t)),h(n,t),n.returnBegin?0:t.length;var a=l(C,t);if(a){var i=C;i.skip?M+=t:(i.returnEnd||i.excludeEnd||(M+=t),b(),i.excludeEnd&&(M=t));do{C.className&&(N+=c),C.skip||C.subLanguage||(O+=C.relevance),C=C.parent}while(C!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.endRe=a.endRe),h(a.starts,"")),i.returnEnd?0:t.length}if(o(t,C))throw new Error('Illegal lexeme "'+t+'" for mode "'+(C.className||"")+'"');return M+=t,t.length||1}var E=T(e);if(!E)throw new Error('Unknown language: "'+e+'"');y(E);var R,C=a||E,k={},N="";for(R=C;R!==E;R=R.parent)R.className&&(N=p(R.className,"",!0)+N);var M="",O=0;try{var S,A,D=0;while(1){if(C.terminators.lastIndex=D,S=C.terminators.exec(t),!S)break;A=v(t.substring(D,S.index),S[0]),D=S.index+A}for(v(t.substr(D)),R=C;R.parent;R=R.parent)R.className&&(N+=c);return{relevance:O,value:N,language:e,top:C}}catch(B){if(B.message&&-1!==B.message.indexOf("Illegal"))return{relevance:0,value:u(t)};throw B}}function x(e,t){t=t||d.languages||a(i);var n={relevance:0,value:u(e)},s=n;return t.filter(T).filter(D).forEach(function(t){var a=w(t,e,!1);a.language=t,a.relevance>s.relevance&&(s=a),a.relevance>n.relevance&&(s=n,n=a)}),s.language&&(n.second_best=s),n}function R(e){return d.tabReplace||d.useBR?e.replace(o,function(e,t){return d.useBR&&"\n"===e?"
    ":d.tabReplace?t.replace(/\t/g,d.tabReplace):""}):e}function C(e,t,n){var a=t?s[t]:n,i=[e.trim()];return e.match(/\bhljs\b/)||i.push("hljs"),-1===e.indexOf(a)&&i.push(a),i.join(" ").trim()}function k(e){var t,n,a,i,s,r=_(e);p(r)||(d.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):t=e,s=t.textContent,a=r?w(r,s,!0):x(s),n=b(t),n.length&&(i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),i.innerHTML=a.value,a.value=h(n,b(i),s)),a.value=R(a.value),e.innerHTML=a.value,e.className=C(e.className,r,a.language),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function N(e){d=f(d,e)}function M(){if(!M.called){M.called=!0;var e=document.querySelectorAll("pre code");n.forEach.call(e,k)}}function O(){addEventListener("DOMContentLoaded",M,!1),addEventListener("load",M,!1)}function S(t,n){var a=i[t]=n(e);E(a),a.aliases&&a.aliases.forEach(function(e){s[e]=t})}function A(){return a(i)}function T(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}function D(e){var t=T(e);return t&&!t.disableAutodetect}return e.highlight=w,e.highlightAuto=x,e.fixMarkup=R,e.highlightBlock=k,e.configure=N,e.initHighlighting=M,e.initHighlightingOnLoad=O,e.registerLanguage=S,e.listLanguages=A,e.getLanguage=T,e.autoDetection=D,e.inherit=f,e.IDENT_RE="[a-zA-Z]\\w*",e.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",e.NUMBER_RE="\\b\\d+(\\.\\d+)?",e.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BINARY_NUMBER_RE="\\b(0b[01]+)",e.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},e.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},e.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.COMMENT=function(t,n,a){var i=e.inherit({className:"comment",begin:t,end:n,contains:[]},a||{});return i.contains.push(e.PHRASAL_WORDS_MODE),i.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),i},e.C_LINE_COMMENT_MODE=e.COMMENT("//","$"),e.C_BLOCK_COMMENT_MODE=e.COMMENT("/\\*","\\*/"),e.HASH_COMMENT_MODE=e.COMMENT("#","$"),e.NUMBER_MODE={className:"number",begin:e.NUMBER_RE,relevance:0},e.C_NUMBER_MODE={className:"number",begin:e.C_NUMBER_RE,relevance:0},e.BINARY_NUMBER_MODE={className:"number",begin:e.BINARY_NUMBER_RE,relevance:0},e.CSS_NUMBER_MODE={className:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},e.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}]},e.TITLE_MODE={className:"title",begin:e.IDENT_RE,relevance:0},e.UNDERSCORE_TITLE_MODE={className:"title",begin:e.UNDERSCORE_IDENT_RE,relevance:0},e.METHOD_GUARD={begin:"\\.\\s*"+e.UNDERSCORE_IDENT_RE,relevance:0},e})},bc0e:function(e,t,n){},de09:function(e,t){e.exports=function(e){var t=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE,{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[e.BACKSLASH_ESCAPE,{begin:'""'}]},{className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,t,e.HASH_COMMENT_MODE]}}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a14add7e.e87d1b79.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a14add7e.e87d1b79.js new file mode 100644 index 000000000..848e0abbe --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a14add7e.e87d1b79.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-a14add7e"],{1038:function(e,t,a){},"21ca":function(e,t,a){"use strict";var n=a("a2c8"),r=a.n(n);r.a},"2dc2":function(e,t,a){},"3bee":function(e,t,a){},"3ec5":function(e,t,a){"use strict";var n=a("c614"),r=a.n(n);r.a},"41db":function(e,t,a){"use strict";var n=a("f107"),r=a.n(n);r.a},"4fac8":function(e,t,a){"use strict";var n=a("1038"),r=a.n(n);r.a},"87e5":function(e,t,a){},"943d":function(e,t,a){"use strict";a.d(t,"o",function(){return s}),a.d(t,"d",function(){return i}),a.d(t,"q",function(){return c}),a.d(t,"s",function(){return o}),a.d(t,"i",function(){return l}),a.d(t,"v",function(){return u}),a.d(t,"b",function(){return d}),a.d(t,"p",function(){return p}),a.d(t,"u",function(){return m}),a.d(t,"g",function(){return h}),a.d(t,"n",function(){return f}),a.d(t,"a",function(){return b}),a.d(t,"f",function(){return v}),a.d(t,"e",function(){return g}),a.d(t,"m",function(){return y}),a.d(t,"c",function(){return _}),a.d(t,"j",function(){return $}),a.d(t,"h",function(){return C}),a.d(t,"t",function(){return x}),a.d(t,"k",function(){return k}),a.d(t,"l",function(){return O}),a.d(t,"r",function(){return R});a("ac6a"),a("456d"),a("96cf");var n=a("3b8d"),r=a("1f75");function s(){return r["a"].get("/module_types")}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/modules",e)}function c(){return r["a"].get("/modules")}function o(e){return r["a"].get("/modules/".concat(e))}function l(e){return r["a"].delete("/modules/".concat(e))}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].put("/modules/".concat(e),t)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].post("/auth_".concat(e),t)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].get("/auth_".concat(e),{params:t})}function m(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r["a"].put("/auth_".concat(e,"/").concat(encodeURIComponent(t)),a)}function h(e,t){return r["a"].delete("/auth_".concat(e,"/").concat(encodeURIComponent(t)))}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].get("/acl/".concat(e),{params:t})}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/acl",e)}function v(e,t,a){return r["a"].delete("/acl/".concat(e,"/").concat(encodeURIComponent(t),"/topic/").concat(encodeURIComponent(a)))}function g(e){return r["a"].delete("/acl/$all/topic/".concat(encodeURIComponent(e)))}function y(e){return w.apply(this,arguments)}function w(){return w=Object(n["a"])(regeneratorRuntime.mark(function e(t){var a,n,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,r["a"].get("/sasl?mechanism=".concat(t));case 2:return a=e.sent,n=Object.keys(a)[0],s=[],a[n].forEach(function(e){var t={username:e};s.push(t)}),e.abrupt("return",s);case 7:case"end":return e.stop()}},e)})),w.apply(this,arguments)}function _(e){return r["a"].post("/sasl",e)}function $(e){return r["a"].put("/sasl",e)}function C(e,t){return r["a"].delete("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function x(e,t){return r["a"].get("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function k(e){return r["a"].get("/nodes/".concat(e,"/lwm2m_channels"))}function O(e,t,a,n){return r["a"].get("/nodes/".concat(e,"/lookup_cmd/").concat(t,"?msgType=").concat(a,"&path=").concat(n))}function R(e){return r["a"].post("/mqtt/publish",e)}},"94b0":function(e,t,a){"use strict";a.d(t,"d",function(){return r}),a.d(t,"c",function(){return s}),a.d(t,"a",function(){return i}),a.d(t,"b",function(){return c}),a.d(t,"e",function(){return o});var n=a("1f75");function r(){return n["a"].get("/topic-metrics")}function s(e){return n["a"].post("/maybe_start_modules",e)}function i(e){return n["a"].post("/topic-metrics",e)}function c(e){return n["a"].delete("/topic-metrics/".concat(encodeURIComponent(e)))}function o(e){return n["a"].get("/topic-metrics/".concat(encodeURIComponent(e)))}},a2c8:function(e,t,a){},a88f:function(e,t,a){"use strict";var n=a("3bee"),r=a.n(n);r.a},a8db:function(e,t,a){"use strict";var n=a("e265"),r=a.n(n),s=a("a4bb"),i=a.n(s);function c(e,t){if(null==e)return{};var a,n,r={},s=i()(e);for(n=0;n=0||(r[a]=e[a]);return r}function o(e,t){if(null==e)return{};var a,n,s=c(e,t);if(r.a){var i=r()(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}a.d(t,"a",function(){return o})},c614:function(e,t,a){},d19d:function(e,t,a){"use strict";a.d(t,"b",function(){return s}),a.d(t,"a",function(){return i}),a.d(t,"c",function(){return c}),a.d(t,"d",function(){return l}),a.d(t,"f",function(){return u}),a.d(t,"e",function(){return d});a("96cf");var n=a("3b8d"),r=a("1f75");function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].get("/nodes/".concat(e,"/clients"),{params:t})}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return r["a"].delete("/clients/".concat(encodeURIComponent(e)))}function c(e){return o.apply(this,arguments)}function o(){return o=Object(n["a"])(regeneratorRuntime.mark(function e(t){var a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,r["a"].get("/clients/".concat(encodeURIComponent(t)));case 2:return a=e.sent,e.abrupt("return",a.length&&a[0]||{});case 4:case"end":return e.stop()}},e)})),o.apply(this,arguments)}function l(e,t){return r["a"].get("/nodes/".concat(e,"/subscriptions/").concat(encodeURIComponent(t)))}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/mqtt/unsubscribe",e)}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/mqtt/subscribe",e)}},ec9b:function(e,t,a){"use strict";var n=a("2dc2"),r=a.n(n);r.a},f107:function(e,t,a){},fcce:function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"module-manage"},[a("div",{class:{"app-wrapper":"topic_metrics"!==e.type}},["mnesia_authentication"===e.type?a("auth-mnesia"):"jwt_authentication"===e.type?a("jwt-authentication"):"auth_sasl"===e.type?a("auth-sasl"):"lwm2m_protocol"===e.type?a("lw-clients"):"topic_metrics"===e.type?a("topic-metrics"):e._e()],1)])},r=[],s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"auth-mnesia"},[a("el-tabs",{attrs:{type:"card"},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:e.$t("Modules.auth"),name:"auth"}},["auth"===e.activeName?a("mnesia-auth-table",{ref:"auth"}):e._e()],1),a("el-tab-pane",{attrs:{label:"ACL",name:"acl"}},["acl"===e.activeName?a("mnesia-acl-table",{ref:"acl"}):e._e()],1)],1)],1)},i=[],c=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("a-card",{staticClass:"mnesia-auth-table emq-list-card"},[a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules}},[a("el-col",{attrs:{span:6}},[a("el-form-item",[a("emq-select",{attrs:{field:{options:e.typeOptions},size:"small"},on:{selectChange:e.typeChange},model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)],1),a("el-col",{attrs:{span:6}},[a("el-form-item",{attrs:{prop:"clientid"===e.type?"clientid":"username"}},["clientid"===e.type?a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.clientId"),clearable:""},model:{value:e.record.clientid,callback:function(t){e.$set(e.record,"clientid",t)},expression:"record.clientid"}}):a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.username"),clearable:""},model:{value:e.record.username,callback:function(t){e.$set(e.record,"username",t)},expression:"record.username"}})],1)],1),a("el-col",{attrs:{span:6}},[a("el-form-item",{attrs:{prop:"password"}},[a("el-input",{attrs:{size:"small",type:"password",placeholder:e.$t("Base.password"),"show-password":"",clearable:""},model:{value:e.record.password,callback:function(t){e.$set(e.record,"password",t)},expression:"record.password"}})],1)],1)],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{loading:e.addLoading,type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:12}},[a("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.idListLoading,expression:"idListLoading"}],staticClass:"data-list",attrs:{data:e.clientidTableData}},[a("el-table-column",{attrs:{prop:"clientid",label:e.$t("Clients.clientId")}}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showEdit(n,"clientid")}}},[e._v("\n "+e._s(e.$t("Base.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleDelete(n,"clientid")}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1),a("div",{staticClass:"emq-table-footer"},[e.clientidCount>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,50,100,500],"page-size":e.clientidParams._limit,"current-page":e.clientidParams._page,total:e.clientidCount},on:{"update:pageSize":function(t){return e.$set(e.clientidParams,"_limit",t)},"update:page-size":function(t){return e.$set(e.clientidParams,"_limit",t)},"update:currentPage":function(t){return e.$set(e.clientidParams,"_page",t)},"update:current-page":function(t){return e.$set(e.clientidParams,"_page",t)},"size-change":function(t){return e.handleSizeChange("clientid")},"current-change":function(t){return e.handleCurrentPageChange("clientid")}}}):e._e()],1)],1),a("el-col",{attrs:{span:12}},[a("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.nameListLoading,expression:"nameListLoading"}],staticClass:"data-list",attrs:{data:e.usernameTableData}},[a("el-table-column",{attrs:{prop:"username",label:e.$t("Clients.username")}}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showEdit(n,"username")}}},[e._v("\n "+e._s(e.$t("Base.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleDelete(n,"username")}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1),a("div",{staticClass:"emq-table-footer"},[e.usernameCount>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,50,100,500],"page-size":e.usernameParams._limit,"current-page":e.usernameParams._page,total:e.usernameCount},on:{"update:pageSize":function(t){return e.$set(e.usernameParams,"_limit",t)},"update:page-size":function(t){return e.$set(e.usernameParams,"_limit",t)},"update:currentPage":function(t){return e.$set(e.usernameParams,"_page",t)},"update:current-page":function(t){return e.$set(e.usernameParams,"_page",t)},"size-change":function(t){return e.handleSizeChange("username")},"current-change":function(t){return e.handleCurrentPageChange("username")}}}):e._e()],1)],1)],1),a("el-dialog",{attrs:{visible:e.editVisible,width:"400px",title:e.$t("Base.edit")},on:{"update:visible":function(t){e.editVisible=t}},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleEdit(t)}}},[a("el-form",{ref:"editRecord",staticClass:"el-form--public app-info",attrs:{size:"medium",rules:e.rules,model:e.editRecord}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"login",label:"clientid"===e.operType?e.$t("Clients.clientId"):e.$t("Clients.username")}},[a("el-input",{attrs:{disabled:""},model:{value:e.editRecord.login,callback:function(t){e.$set(e.editRecord,"login",t)},expression:"editRecord.login"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"password",label:"Password"}},[a("el-input",{attrs:{type:"password"},model:{value:e.editRecord.password,callback:function(t){e.$set(e.editRecord,"password",t)},expression:"editRecord.password"}})],1)],1)],1)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{staticClass:"cache-btn",attrs:{plain:"",size:"small"},on:{click:function(t){e.editVisible=!1}}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleEdit}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],1)},o=[],l=a("a8db"),u=a("cebc"),d=(a("96cf"),a("3b8d")),p=a("943d"),m={name:"MnesiaAuthTable",data:function(){return{type:"clientid",record:{username:"",clientid:"",password:""},typeOptions:[{label:this.$t("Clients.clientId"),value:"clientid"},{label:this.$t("Clients.username"),value:"username"}],clientidTableData:[],usernameTableData:[],clientidCount:0,usernameCount:0,clientidParams:{_limit:10,_page:1},usernameParams:{_limit:10,_page:1},idListLoading:!1,usernameListLoading:!1,editVisible:!1,editRecord:{},rules:{clientid:{required:!0,message:this.$t("Clients.pleaseEnter")},username:{required:!0,message:this.$t("Clients.pleaseEnter")},password:{required:!0,message:this.$t("Clients.pleaseEnter")}},addLoading:!1,operType:"clientid"}},created:function(){this.loadData()},methods:{typeChange:function(){this.$refs.record.resetFields()},loadOneData:function(e){"clientid"===e?this.loadClinetIdData():this.loadUsernameData()},loadData:function(){this.loadClinetIdData(),this.loadUsernameData()},loadClinetIdData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t,a,n,r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.idListLoading=!0,e.next=3,Object(p["p"])("clientid",Object(u["a"])({},this.clientidParams));case 3:t=e.sent,a=t.items,n=void 0===a?[]:a,r=t.meta.count,s=void 0===r?0:r,this.clientidTableData=n,this.clientidCount=s,this.idListLoading=!1;case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadUsernameData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t,a,n,r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.nameListLoading=!0,e.next=3,Object(p["p"])("username",Object(u["a"])({},this.usernameParams));case 3:t=e.sent,a=t.items,n=void 0===a?[]:a,r=t.meta.count,s=void 0===r?0:r,this.usernameTableData=n,this.usernameCount=s,this.nameListLoading=!1;case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),save:function(){var e=this;this.$refs.record.validate(function(t){if(t){if(e.addLoading=!0,"clientid"===e.type){var a=e.record,n=(a.username,Object(l["a"])(a,["username"]));e.addData(n)}else{var r=e.record,s=(r.clientid,Object(l["a"])(r,["clientid"]));e.addData(s)}setTimeout(function(){e.addLoading=!1},200)}})},addData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t){var a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(p["b"])(this.type,t);case 2:a=e.sent,a&&this.addSuccess(this.type);case 4:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),addSuccess:function(e){this.$message.success(this.$t("Base.createSuccess")),this.loadOneData(e),this.$refs.record.resetFields()},showEdit:function(e,t){this.editVisible=!0,this.operType=t;var a=Object.assign({},e);this.editRecord={login:a[t],password:a.password}},handleDelete:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t,a){var n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm(this.$t("Modules.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(d["a"])(regeneratorRuntime.mark(function e(){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if("clientid"!==a){e.next=6;break}return e.next=3,Object(p["g"])(a,t.clientid);case 3:r=e.sent,e.next=9;break;case 6:return e.next=8,Object(p["g"])(a,t.username);case 8:r=e.sent;case 9:r&&(n.loadOneData(a),n.$message.success(n.$t("Base.deleteSuccess")));case 10:case"end":return e.stop()}},e)}))).catch(function(){});case 1:case"end":return e.stop()}},e,this)}));function t(t,a){return e.apply(this,arguments)}return t}(),handleSizeChange:function(e){this.loadOneData(e)},handleCurrentPageChange:function(e){this.loadOneData(e)},handleEdit:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$refs.editRecord.validate(function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(a){var n,r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return");case 2:return n=t.editRecord,r=n.login,s=n.password,e.next=5,Object(p["u"])(t.operType,r,{password:s});case 5:t.$message.success(t.$t("Base.editSuccess")),t.editRecord={},t.editVisible=!1,t.$refs.editRecord.resetFields();case 9:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},h=m,f=(a("41db"),a("2877")),b=Object(f["a"])(h,c,o,!1,null,null,null),v=b.exports,g=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"mnesia-acl-table"},[a("a-card",[a("el-tabs",{model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:e.$t("Clients.clientid"),name:"clientid"}},["clientid"===e.activeName?a("acl-table-page",{attrs:{type:"clientid"}}):e._e()],1),a("el-tab-pane",{attrs:{label:e.$t("Clients.username"),name:"username"}},["username"===e.activeName?a("acl-table-page",{attrs:{type:"username"}}):e._e()],1),a("el-tab-pane",{attrs:{label:e.$t("Clients.$all"),name:"$all"}},["$all"===e.activeName?a("acl-table-page",{attrs:{type:"$all"}}):e._e()],1)],1)],1)],1)},y=[],w=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"acl-table-page"},[a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules}},["$all"!==e.type?a("el-col",{attrs:{span:6}},[a("el-form-item",{attrs:{prop:e.type}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients."+e.type)},model:{value:e.record[e.type],callback:function(t){e.$set(e.record,e.type,t)},expression:"record[type]"}})],1)],1):e._e(),a("el-col",{attrs:{span:6}},[a("el-form-item",{attrs:{prop:"topic"}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Topics.topic")},model:{value:e.record.topic,callback:function(t){e.$set(e.record,"topic",t)},expression:"record.topic"}})],1)],1),a("el-col",{attrs:{span:4}},[a("el-form-item",{attrs:{prop:"access"}},[a("emq-select",{attrs:{size:"small",field:{options:e.accessOptions}},model:{value:e.record.access,callback:function(t){e.$set(e.record,"access",t)},expression:"record.access"}})],1)],1),a("el-col",{attrs:{span:4}},[a("el-form-item",{attrs:{prop:"action"}},[a("emq-select",{attrs:{size:"small",field:{options:e.actionOptions}},model:{value:e.record.action,callback:function(t){e.$set(e.record,"action",t)},expression:"record.action"}})],1)],1)],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{loading:e.addLoading,type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.listLoading,expression:"listLoading"}],staticClass:"data-list",attrs:{data:e.tableData}},["$all"!==e.type?a("el-table-column",{attrs:{prop:e.type,label:e.$t("Clients."+e.type)}}):e._e(),a("el-table-column",{attrs:{prop:"topic",label:e.$t("Topics.topic")}}),a("el-table-column",{attrs:{prop:"action",label:e.$t("Modules.action")}}),a("el-table-column",{attrs:{prop:"access",label:e.$t("Modules.isAllow")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[e._v("\n "+e._s("allow"===a.access?e.$t("Modules.allow"):e.$t("Modules.deny"))+"\n ")]}}])}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleDelete(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1),a("div",{staticClass:"emq-table-footer"},[e.count>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,50,100,500],"page-size":e.aclParams._limit,"current-page":e.aclParams._page,total:e.count},on:{"update:pageSize":function(t){return e.$set(e.aclParams,"_limit",t)},"update:page-size":function(t){return e.$set(e.aclParams,"_limit",t)},"update:currentPage":function(t){return e.$set(e.aclParams,"_page",t)},"update:current-page":function(t){return e.$set(e.aclParams,"_page",t)},"size-change":e.handleSizeChange,"current-change":e.handleCurrentPageChange}}):e._e()],1)],1)},_=[],$={name:"AclTablePage",props:{type:{type:String,default:"username"}},data:function(){return{tableData:[],listLoading:!1,addLoading:!1,record:{action:"pubsub",access:"allow"},rules:{topic:{required:!0,message:this.$t("Clients.pleaseEnter")},access:{required:!0,message:this.$t("Clients.pleaseEnter")},action:{required:!0,message:this.$t("Clients.pleaseEnter")},username:{required:!0,message:this.$t("Clients.pleaseEnter")},clientid:{required:!0,message:this.$t("Clients.pleaseEnter")}},aclParams:{_limit:10,_page:1},count:0,accessOptions:[{label:this.$t("Modules.allow"),value:"allow"},{label:this.$t("Modules.deny"),value:"deny"}],actionOptions:[{label:"pub",value:"pub"},{label:"sub",value:"sub"},{label:"pubsub",value:"pubsub"}]}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t,a,n,r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.listLoading=!0,e.next=3,Object(p["n"])(this.type,Object(u["a"])({},this.aclParams));case 3:t=e.sent,a=t.items,n=void 0===a?[]:a,r=t.meta.count,s=void 0===r?0:r,this.tableData=n,this.count=s,this.listLoading=!1;case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),save:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$refs.record.validate(function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(a){var n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(a){e.next=2;break}return e.abrupt("return");case 2:return t.addLoading=!0,n=Object.assign({},t.record),e.next=6,Object(p["a"])(n);case 6:r=e.sent,"ok"===r.result&&(t.$message.success(t.$t("Base.createSuccess")),t.loadData(),t.$refs.record.resetFields()),setTimeout(function(){t.addLoading=!1},200);case 9:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleSizeChange:function(){this.loadData()},handleCurrentPageChange:function(){this.loadData()},handleDelete:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t){var a=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$confirm(this.$t("Modules.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(d["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if("$all"===a.type){e.next=6;break}return e.next=3,Object(p["f"])(a.type,t[a.type],t.topic);case 3:n=e.sent,e.next=9;break;case 6:return e.next=8,Object(p["e"])(t.topic);case 8:n=e.sent;case 9:n&&(a.loadData(),a.$message.success(a.$t("Base.deleteSuccess")));case 10:case"end":return e.stop()}},e)}))).catch(function(){});case 1:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}()}},C=$,x=(a("21ca"),Object(f["a"])(C,w,_,!1,null,null,null)),k=x.exports,O={name:"MnesiaAclTable",components:{AclTablePage:k},data:function(){return{activeName:"clientid"}}},R=O,j=Object(f["a"])(R,g,y,!1,null,null,null),T=j.exports,D={name:"AuthMnesia",components:{MnesiaAuthTable:v,MnesiaAclTable:T},data:function(){return{activeName:"auth"}}},B=D,I=Object(f["a"])(B,s,i,!1,null,null,null),L=I.exports,S=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"jwt-authentication"},[a("a-card",{staticClass:"emq-list-card"},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:14}},[a("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"alg"}},[a("emq-select",{staticClass:"el-select--public",attrs:{size:"small","popper-class":"el-select--public",field:{list:e.algsOptions},placeholder:e.$t("Plugins.algorithm")},model:{value:e.record.alg,callback:function(t){e.$set(e.record,"alg",t)},expression:"record.alg"}})],1)],1),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"secret"}},[a("el-input",{attrs:{placeholder:e.$t("Plugins.secret"),size:"small"},model:{value:e.record.secret,callback:function(t){e.$set(e.record,"secret",t)},expression:"record.secret"}})],1)],1)],1),a("el-form-item",[a("el-checkbox",{attrs:{size:"small"},model:{value:e.payloadVisible,callback:function(t){e.payloadVisible=t},expression:"payloadVisible"}},[e._v("Payload")])],1),e.payloadVisible?[a("p",{staticClass:"jwt-payload-desc"},[e._v("\n "+e._s(e.$t("Plugins.payloadDesc"))+"\n "),a("a",{attrs:{href:e.jwtDoc,target:"_blank",rel:"noopener"}},[e._v(e._s(e.$t("Plugins.jwtDoc")))])]),a("el-form-item",{attrs:{prop:"payload"}},[a("div",{staticClass:"monaco-container",staticStyle:{height:"200px"}},[a("monaco",{attrs:{id:"jwt-payload",lang:"json"},model:{value:e.record.payload,callback:function(t){e.$set(e.record,"payload",t)},expression:"record.payload"}})],1)]),a("p",{staticClass:"jwt-payload-desc"},[e._v("\n "+e._s(e.$t("Plugins.dataDesc"))+"\n ")]),a("el-form-item",{attrs:{prop:"data"}},[a("div",{staticClass:"monaco-container",staticStyle:{height:"200px"}},[a("monaco",{attrs:{id:"jwt-data",lang:"plaintext"},model:{value:e.record.data,callback:function(t){e.$set(e.record,"data",t)},expression:"record.data"}})],1)])]:e._e(),a("el-form-item",{attrs:{prop:"expired"}},[a("el-date-picker",{attrs:{"picker-options":e.pickerOptions,placeholder:e.$t("General.neverExpire"),"value-format":"timestamp",size:"small"},model:{value:e.record.expired,callback:function(t){e.$set(e.record,"expired",t)},expression:"record.expired"}})],1),a("el-button",{staticClass:"add",attrs:{type:"primary",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.generate"))+"\n ")])],2)],1)],1),a("el-table",{attrs:{data:e.records}},[a("el-table-column",{attrs:{prop:"username",label:"Username"}}),a("el-table-column",{attrs:{prop:"clientid",label:"Client ID"}}),a("el-table-column",{attrs:{"min-width":"160px",prop:"token",label:"token","show-overflow-tooltip":""}}),a("el-table-column",{attrs:{width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{directives:[{name:"clipboard",rawName:"v-clipboard:cpoy",value:n.token,expression:"row.token",arg:"cpoy"},{name:"clipboard",rawName:"v-clipboard:success",value:e.copySuccessed,expression:"copySuccessed",arg:"success"}],attrs:{type:"dashed",size:"mini",icon:"el-icon-document-copy"}},[e._v("\n "+e._s(e.$t("Base.copy"))+"\n ")])]}}])})],1)],1)],1)},z=[],P=(a("a481"),a("768b")),q=(a("28a5"),a("14b7")),E=a.n(q),A=a("9146"),N=a("90b9"),M={name:"JwtAuthentication",components:{Monaco:A["a"]},data:function(){return{record:{alg:"HS256",payload:JSON.stringify({username:"%u",clientid:"%c"},null,2),data:""},rules:{secret:{required:!0,message:this.$t("Plugins.secretRequired")},payload:{required:!0,message:this.$t("Plugins.payloadRequired")},data:{required:!0,message:this.$t("Plugins.dataRequired")}},algsOptions:["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"],payloadVisible:!1,pickerOptions:{disabledDate:function(e){return e.getTime()1?"520px":"400px",visible:e.writeDialogVisible},on:{"update:visible":function(t){e.writeDialogVisible=t},close:e.handleClose}},[a("el-form",{ref:"record",staticClass:"el-form--public",attrs:{model:e.record,rules:e.rules,size:"small","label-position":"top"}},[a("el-row",{attrs:{gutter:20}},e._l(e.configList,function(t,n){return a("div",{key:n},[a("el-col",{attrs:{span:e.configList.length>1&&"Opaque"!==t.dataType?12:24}},[a("el-form-item",{attrs:{prop:t.path,label:""}},[a("div",{attrs:{slot:"label"},slot:"label"},[t.name.length>30?a("span",{attrs:{title:t.name}},[e._v(e._s(t.name.slice(0,30)+"..."))]):a("span",[e._v(e._s(t.name))])]),"Boolean"===t.dataType?a("emq-select",{attrs:{field:{list:["true","false"]}},model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,a)},expression:"record[item.path]"}}):"String"===t.dataType?a("el-input",{model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,a)},expression:"record[item.path]"}}):"Time"===t.dataType?[a("el-date-picker",{attrs:{type:"datetime"},model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,a)},expression:"record[item.path]"}})]:"Integer"===t.dataType?a("el-input-number",{attrs:{"controls-position":"right",precision:0},model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,e._n(a))},expression:"record[item.path]"}}):"Float"===t.dataType?a("el-input-number",{attrs:{"controls-position":"right"},model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,e._n(a))},expression:"record[item.path]"}}):e._e(),"Opaque"===t.dataType?[a("el-col",{attrs:{span:16}},[a("el-input",{model:{value:e.record[t.path],callback:function(a){e.$set(e.record,t.path,a)},expression:"record[item.path]"}})],1),a("el-col",{attrs:{span:8}},[a("el-radio",{attrs:{label:"hex"},model:{value:e.record.encoding[t.path],callback:function(a){e.$set(e.record.encoding,t.path,a)},expression:"record.encoding[item.path]"}},[e._v("Hex")]),a("el-radio",{attrs:{label:"plain"},model:{value:e.record.encoding[t.path],callback:function(a){e.$set(e.record.encoding,t.path,a)},expression:"record.encoding[item.path]"}},[e._v("Plain")])],1)]:e._e()],2)],1)],1)}),0)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{plain:"",size:"small"},on:{click:e.handleClose}},[e._v(e._s(e.$t("Base.cancel")))]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleWrite}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1),a("el-dialog",{staticClass:"create-object",attrs:{title:e.$t("Base.create"),width:"400px",visible:e.createDialogVisible},on:{"update:visible":function(t){e.createDialogVisible=t},close:e.handleCancelCreate}},[a("emq-select",{attrs:{field:{list:e.basePathOptions},size:"small"},model:{value:e.createBasePath,callback:function(t){e.createBasePath=t},expression:"createBasePath"}}),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{plain:"",size:"small"},on:{click:e.handleCancelCreate}},[e._v(e._s(e.$t("Base.cancel")))]),a("el-button",{attrs:{type:"primary",size:"small",disabled:!e.createBasePath},on:{click:e.handleCreate}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],1)},ee=[],te=(a("7f7f"),a("6b54"),a("7618")),ae=(a("6762"),a("2fdb"),a("456d"),a("55dd"),a("ac6a"),{name:"LwClientDetails",props:{nodeName:{required:!0,type:String}},data:function(){return{activeName:"",objectNames:[],objectList:{},objectResources:{},currentImei:this.$route.query.imei,configList:[],record:{dataType:{},encoding:{}},rules:{},writeDialogVisible:!1,readTimeId:null,resourcesOperations:{},btnLoading:!1,clickedButton:"",listLoading:!1,createDialogVisible:!1,createBasePath:"",basePathOptions:[],resultTimeId:null}},watch:{activeName:{handler:function(e,t){var a=this;!e&&t&&Array.isArray(this.objectResources[t])&&this.objectResources[t].forEach(function(e){e.timeId=a.clearTimer(e.timeId)}),this.readTimeId=this.clearTimer(this.readTimeId),this.resultTimeId=this.clearTimer(this.resultTimeId)},deep:!0}},created:function(){this.loadObjectList()},beforeDestroy:function(){var e=this;this.activeName&&Array.isArray(this.objectResources[this.activeName])&&this.objectResources[this.activeName].forEach(function(t){t.timeId=e.clearTimer(t.timeId)}),this.readTimeId=this.clearTimer(this.readTimeId),this.resultTimeId=this.clearTimer(this.resultTimeId)},methods:{publishOneOrder:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t,a){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n={topic:"lwm2m/".concat(this.currentImei,"/dn"),payload:{reqID:"2",msgType:t,data:a}},e.next=3,Object(p["r"])(n);case 3:case"end":return e.stop()}},e,this)}));function t(t,a){return e.apply(this,arguments)}return t}(),clearTimer:function(e){return e&&clearInterval(e),null},loadObjectList:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t,a,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(p["k"])(this.nodeName);case 2:if(t=e.sent,a=t.filter(function(e){return e.imei===r.currentImei}),!(a.length<1)){e.next=8;break}return this.$message.warning(this.$t("Modules.lwClientOffline")),this.backListPage(),e.abrupt("return");case 8:this.objectList=a[0].objectList,n=function(e,t){var a=parseInt(e.replace("/",""),10),n=parseInt(t.replace("/",""),10);return a>n?1:-1},this.objectNames=Object.keys(this.objectList).sort(n),this.objectNames.forEach(function(e){r.basePathOptions.push("/".concat(e.split("/")[1])),r.$set(r.objectResources,e,[])});case 12:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),initObjectResourseValues:function(e){e.forEach(function(e){e.operations.includes("R")&&(e.values=[])})},handleObjectChange:function(e){var t=this;if(e){this.listLoading=!0,this.publishOneOrder("discover",{path:e});var a=function(){var a=Object(d["a"])(regeneratorRuntime.mark(function a(){var n,r,s,i;return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,t.resourcesOperations[e]="",a.next=4,Object(p["l"])(t.nodeName,t.currentImei,"discover",e);case 4:return n=a.sent,r=n.code,s=n.content,i=n.codeMsg,Array.isArray(s)?(t.initObjectResourseValues(s),t.objectResources[e]=s,s.forEach(function(a){a.operations.includes("W")?t.resourcesOperations[e]=t.resourcesOperations[e].concat("W"):a.operations.includes("R")&&(t.resourcesOperations[e]=t.resourcesOperations[e].concat("R"))})):"object"!==Object(te["a"])(s)||Array.isArray(s)?i&&(t.objectResources[e]=i):(t.objectResources[e]=[],Object.keys(s).forEach(function(a){var n={name:a,path:s[a],operations:""};t.objectResources[e].push(n)})),a.abrupt("return",t.hasGotResponseCallBack(r,i));case 12:return a.prev=12,a.t0=a["catch"](0),a.abrupt("return",!1);case 15:case"end":return a.stop()}},a,null,[[0,12]])}));return function(){return a.apply(this,arguments)}}();this.getOrderResult(a)}},pubOrderByButton:function(e,t,a){return this.btnLoading=!0,this.clickedButton="".concat(e).concat(t),this.publishOneOrder(e,{path:t}),this.clearTimer(a)},intervalGetReadResult:function(e,t,a){var n=this,r=function(e){n.readTimeId=n.clearTimer(n.readTimeId),Array.isArray(a)?a.forEach(function(t){t.values=["".concat(e)]}):a.values=["".concat(e)]},s=0;this.readTimeId=setInterval(Object(d["a"])(regeneratorRuntime.mark(function i(){var c,o;return regeneratorRuntime.wrap(function(i){while(1)switch(i.prev=i.next){case 0:return i.prev=0,s+=1,i.next=4,Object(p["l"])(n.nodeName,n.currentImei,"read",t);case 4:c=i.sent,o=c.content,o?(e(o),n.readTimeId=n.clearTimer(n.readTimeId)):s>=10&&r("Timed out",a),i.next=12;break;case 9:i.prev=9,i.t0=i["catch"](0),r("Error: ".concat(i.t0.toString()),a);case 12:n.btnLoading=!1,n.clickedButton="";case 14:case"end":return i.stop()}},i,null,[[0,9]])})),1e3)},batchRead:function(e){var t=this;this.readTimeId=this.pubOrderByButton("read",e,this.readTimeId),this.initObjectResourseValues(this.objectResources[e]),this.intervalGetReadResult(function(a){a.forEach(function(a){t.objectResources[e].forEach(function(e){(a.path.includes("".concat(e.path,"/"))||a.path===e.path)&&e.values.push(a.value)})})},e,this.objectResources[e])},singleRead:function(e){this.readTimeId=this.pubOrderByButton("read",e.path,this.readTimeId),this.intervalGetReadResult(function(t){var a=[];t.forEach(function(e){a.push(e.value)}),e.values=a},e.path,e)},getObserveResult:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t,a){var n,r,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Object(p["l"])(this.nodeName,this.currentImei,t,a.path);case 3:n=e.sent,r=n.content,r&&(s=[],r.forEach(function(e){s.push(e.value)}),a.values=s),e.next=12;break;case 8:e.prev=8,e.t0=e["catch"](0),a.timeId=this.clearTimer(a.timeId),a.values=["Error: ".concat(e.t0.toString())];case 12:case"end":return e.stop()}},e,this,[[0,8]])}));function t(t,a){return e.apply(this,arguments)}return t}(),doObserve:function(e){var t=this;e.timeId=this.pubOrderByButton("observe",e.path,e.timeId),setTimeout(function(){t.getObserveResult("observe",e)},10),e.timeId=setInterval(function(){t.getObserveResult("observe",e)},5e3)},cancelObserve:function(e){var t=this;this.pubOrderByButton("cancel-observe",e.path,e.timeId),setTimeout(function(){t.getObserveResult("cancel-observe",e)},10),e.timeId=null},doExecute:function(e){var t=this;this.$confirm("Are you sure to ".concat(e.name,"?"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(function(){t.pubOrderByButton("execute",e.path);var a=function(){var a=Object(d["a"])(regeneratorRuntime.mark(function a(){var n,r,s;return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Object(p["l"])(t.nodeName,t.currentImei,"execute",e.path);case 3:return n=a.sent,r=n.code,s=n.codeMsg,r&&parseFloat(r)<3?t.$message.success(t.$t("Base.operateSuccess")):s&&t.$message.error(s),a.abrupt("return",t.hasGotResponseCallBack(r,s));case 10:return a.prev=10,a.t0=a["catch"](0),a.abrupt("return",!1);case 13:case"end":return a.stop()}},a,null,[[0,10]])}));return function(){return a.apply(this,arguments)}}();t.getOrderResult(a)}).catch(function(){})},batchWrite:function(e){var t=this;this.writeDialogVisible=!0,this.objectResources[e].forEach(function(e){if(e.operations.includes("W")){t.configList.push(e);var a=e.path,n=e.dataType;t.record.dataType[a]=n}"Opaque"===e.dataType&&(t.record.encoding[e.path]="plain")}),this.record.basePath=e},singleWrite:function(e){this.writeDialogVisible=!0,this.configList.push(e),this.record.dataType[e.path]=e.dataType,"Opaque"===e.dataType&&(this.record.encoding[e.path]="plain")},handleWrite:function(){var e=this,t=[],a=this.record,n=a.basePath,r=a.dataType,s=a.encoding,i=Object(l["a"])(a,["basePath","dataType","encoding"]);Object.keys(i).forEach(function(e){if("Boolean"===r[e])i[e]="true"===i[e];else if("Time"===r[e]){var a=new Date(i[e]).getTime();i[e]=Math.floor(a/1e3)}var c={path:n?e.replace("".concat(n,"/"),""):e,type:r[e],value:i[e]};"Opaque"===r[e]&&(c[s]=s[e]),t.push(c)});var c=n?{basePath:n,content:t}:t[0],o=n||c.path,u=!this.verifyWriteContent(t),p=function(){var a=Object(d["a"])(regeneratorRuntime.mark(function a(){var r;return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:return a.next=2,e.getWriteResult(o,t,n);case 2:return r=a.sent,a.abrupt("return",r);case 4:case"end":return a.stop()}},a)}));return function(){return a.apply(this,arguments)}}();u&&(this.publishOneOrder("write",c),this.getOrderResult(p),this.handleClose())},getWriteResult:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t,a,n){var r,s,i,c,o,l;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Object(p["l"])(this.nodeName,this.currentImei,"write",t);case 3:return r=e.sent,s=r.code,i=r.codeMsg,s&&parseFloat(s)<3?(this.$message.success(this.$t("Base.editSuccess")),c=a[0].path.split("/"),o="/".concat(c[1],"/").concat(c[2]),l=n||o,this.objectResources[l].forEach(function(e){a.forEach(function(a){var r=a.path,s=n?"".concat(n,"/").concat(r):t;e.path===s&&(e.values=[a.value])})})):i&&this.$message.error(i),e.abrupt("return",this.hasGotResponseCallBack(s,i));case 10:return e.prev=10,e.t0=e["catch"](0),e.abrupt("return",!1);case 13:case"end":return e.stop()}},e,this,[[0,10]])}));function t(t,a,n){return e.apply(this,arguments)}return t}(),handleClose:function(){this.writeDialogVisible=!1,this.configList=[],this.$refs.record.resetFields(),this.record={dataType:{},encoding:{}}},backListPage:function(){this.$router.push({path:"/modules/manage",query:{type:"lwm2m_protocol"}})},handleCreate:function(){var e=this;this.publishOneOrder("create",{path:this.createBasePath,content:[]});var t=function(){var t=Object(d["a"])(regeneratorRuntime.mark(function t(){var a,n,r;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,Object(p["l"])(e.nodeName,e.currentImei,"create",e.createBasePath);case 3:return a=t.sent,n=a.code,r=a.codeMsg,n&&parseFloat(n)<3?(e.$message.success(e.$t("Base.createSuccess")),e.loadObjectList()):r&&e.$message.error(r),t.abrupt("return",e.hasGotResponseCallBack(n,r));case 10:return t.prev=10,t.t0=t["catch"](0),t.abrupt("return",!1);case 13:case"end":return t.stop()}},t,null,[[0,10]])}));return function(){return t.apply(this,arguments)}}();this.getOrderResult(t),this.handleCancelCreate()},handleCancelCreate:function(){this.createDialogVisible=!1,this.createBasePath=""},handleDelete:function(e){var t=this;this.$confirm(this.$t("Modules.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(function(){t.pubOrderByButton("delete",e);var a=function(){var a=Object(d["a"])(regeneratorRuntime.mark(function a(){var n,r,s;return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:return a.prev=0,a.next=3,Object(p["l"])(t.nodeName,t.currentImei,"delete",e);case 3:return n=a.sent,r=n.code,s=n.codeMsg,r&&parseFloat(r)<3?(t.$message.success(t.$t("Base.deleteSuccess")),t.activeName="",t.loadObjectList()):s&&t.$message.error(s),a.abrupt("return",t.hasGotResponseCallBack(r,s));case 10:return a.prev=10,a.t0=a["catch"](0),a.abrupt("return",!1);case 13:case"end":return a.stop()}},a,null,[[0,10]])}));return function(){return a.apply(this,arguments)}}();t.getOrderResult(a)}).catch(function(){})},intervalGetOrderResult:function(e){var t=this,a=function(e){e>=10&&(t.$message.error(t.$t("Modules.requestTimeout")),t.resultTimeId=t.clearTimer(t.resultTimeId),t.listLoading=!1)},n=0;this.resultTimeId=setInterval(Object(d["a"])(regeneratorRuntime.mark(function r(){var s;return regeneratorRuntime.wrap(function(r){while(1)switch(r.prev=r.next){case 0:return n+=1,r.prev=1,r.next=4,e();case 4:s=r.sent,s&&(t.resultTimeId=t.clearTimer(t.resultTimeId),t.listLoading=!1),a(n),r.next=12;break;case 9:r.prev=9,r.t0=r["catch"](1),a(n);case 12:case"end":return r.stop()}},r,null,[[1,9]])})),1e3)},getOrderResult:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t){var a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,t();case 2:a=e.sent,a?this.listLoading=!1:this.intervalGetOrderResult(t);case 4:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),hasGotResponseCallBack:function(e,t){return!(!e&&!t)},verifyWriteContent:function(e){var t=[];return e.forEach(function(e){var a=e.value;(!1===a||a)&&t.push(e)}),!t.length}}}),ne=ae,re=(a("ec9b"),Object(f["a"])(ne,Z,ee,!1,null,null,null)),se=re.exports,ie=a("2934"),ce=a("d19d"),oe={name:"LwClients",components:{LwClientDetails:se},data:function(){return{searchVal:"",searchLoading:!1,showTableData:[],tableData:[],connectedCount:0,nodeName:"",currentNodes:[]}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(ie["d"])();case 2:this.currentNodes=e.sent,this.nodeName=this.nodeName||(this.currentNodes[0]||{}).node,this.listLoading=!1,this.loadClientList();case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadClientList:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(p["k"])(this.nodeName);case 2:t=e.sent,this.tableData=t,this.showTableData=t,this.connectedCount=t.length;case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),showClientDetails:function(e){var t=e.imei;this.$router.push({path:"/modules/manage",query:{type:"lwm2m_protocol",imei:t}})},handleDisconnect:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t){var a,n,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:a=this.$t("Clients.willDisconnectTheConnection"),n=this.$t("Clients.successfulDisconnection"),this.$msgbox.confirm(a,{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(d["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(ce["a"])(t.imei);case 2:r.$message.success(n),setTimeout(function(){r.loadClientList()},500);case 4:case"end":return e.stop()}},e)}))).catch(function(){});case 3:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),searchClient:function(){var e=this;if(this.searchLoading=!0,""===this.searchVal)return this.showTableData=this.tableData,void(this.searchLoading=!1);setTimeout(Object(d["a"])(regeneratorRuntime.mark(function t(){var a;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(N["k"])(e.tableData,"imei",e.searchVal);case 2:a=t.sent,a?(e.showTableData=a,e.searchLoading=!1):e.searchLoading=!1;case 4:case"end":return t.stop()}},t)})),500)},handleNodeChange:function(){this.loadClientList()}}},le=oe,ue=(a("3ec5"),Object(f["a"])(le,X,Y,!1,null,null,null)),de=ue.exports,pe=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"topic-metrics"},[a("page-header",[a("div",{staticClass:"page-header-content-view"},[a("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("Analysis.metricsTip"))+"\n ")])])]),a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[a("div",{staticClass:"emq-table-header"},[e.modClosed?a("el-button",{staticClass:"confirm-btn",attrs:{size:"small",type:"primary"},on:{click:e.handleModLoad}},[e._v("\n "+e._s(e.$t("Analysis.enable"))+"\n ")]):a("el-button",{staticClass:"confirm-btn",attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:e.handleOperation}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),a("el-table",{ref:"crudTable",attrs:{data:e.topics,"row-key":e.getRowKeys,"expand-row-keys":e.expands},on:{"expand-change":e.handleExpandChange}},[a("el-table-column",{attrs:{type:"expand"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("div",{staticClass:"expand-header"},[e._v("\n "+e._s(e.$t("Analysis.details"))+"\n "),a("el-radio-group",{staticClass:"topic-qos-radio",attrs:{prop:t,size:"mini"},model:{value:e.topicQos,callback:function(t){e.topicQos=t},expression:"topicQos"}},[a("el-radio-button",{attrs:{label:"all"}},[e._v(e._s(e.$t("Plugins.all")))]),a("el-radio-button",{attrs:{label:"qos0"}},[e._v("QoS 0")]),a("el-radio-button",{attrs:{label:"qos1"}},[e._v("QoS 1")]),a("el-radio-button",{attrs:{label:"qos2"}},[e._v("QoS 2")])],1)],1),a("el-row",{staticClass:"expand-body",attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("div",{staticClass:"message-card in"},[a("div",[e._v("\n "+e._s(e.$t("Analysis.messageIn"))+"\n "),a("span",{staticClass:"message-rate"},[e._v("\n "+e._s(e.$t("Analysis.rateItem",[e.getCurrentTopicData("in","rate")]))+"\n "+e._s(e.$t("Analysis.rate"))+"\n ")])]),a("div",{staticClass:"message-card--body"},[e._v("\n "+e._s(e.getCurrentTopicData("in","count"))+"\n ")])])]),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"message-card out"},[a("div",[e._v("\n "+e._s(e.$t("Analysis.messageOut"))+"\n "),a("span",{staticClass:"message-rate"},[e._v("\n "+e._s(e.$t("Analysis.rateItem",[e.getCurrentTopicData("out","rate")]))+"\n "+e._s(e.$t("Analysis.rate"))+"\n ")])]),a("div",{staticClass:"message-card--body"},[e._v("\n "+e._s(e.getCurrentTopicData("out","count"))+"\n ")])])]),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"message-card drop"},[a("div",[e._v("\n "+e._s(e.$t("Analysis.messageDrop"))+"\n "),a("span",{staticClass:"message-rate"},[e._v("\n "+e._s(e.$t("Analysis.rateItem",[e.getCurrentTopicDropRate(e.currentTopic["messages.dropped.rate"])]))+"\n "+e._s(e.$t("Analysis.rate"))+"\n ")])]),a("div",{staticClass:"message-card--body"},[e._v("\n "+e._s(e.currentTopic["messages.dropped.count"])+"\n ")])])])],1)]}}])}),a("el-table-column",{attrs:{prop:"topic",label:e.$t("Topics.topic")}}),a("el-table-column",{attrs:{prop:"messageIn",label:e.$t("Analysis.messageIn")}}),a("el-table-column",{attrs:{prop:"messageOut",label:e.$t("Analysis.messageOut")}}),a("el-table-column",{attrs:{prop:"messageDrop",label:e.$t("Analysis.messageDrop")}}),a("el-table-column",{scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row,r=t.$index;return[a("el-button",{attrs:{size:"mini",type:"dashed"},on:{click:function(t){return e.viewTopicDetails(n,r)}}},[e._v("\n "+e._s(e.$t("Base.view"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteTopicMetric(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1)],1)],1),a("el-dialog",{staticClass:"create-subscribe",attrs:{title:e.$t("Analysis.addTopic"),width:"400px",visible:e.addVisible},on:{"update:visible":function(t){e.addVisible=t}},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleAdd(t)}}},[a("el-form",{ref:"record",staticClass:"el-form--public",attrs:{model:e.record,rules:e.rules,size:"small","label-position":"top"}},[a("el-form-item",{attrs:{prop:"topic",label:e.$t("Topics.topic")}},[a("el-input",{attrs:{placeholder:"Topic"},model:{value:e.record.topic,callback:function(t){e.$set(e.record,"topic",t)},expression:"record.topic"}})],1)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{plain:"",size:"small"},on:{click:e.handleClose}},[e._v(e._s(e.$t("Base.cancel")))]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleAdd}},[e._v(e._s(e.$t("Base.confirm")))])],1)],1)],1)},me=[],he=a("94b0"),fe={name:"TopicMetrics",data:function(){return{expands:[],addVisible:!1,popoverVisible:!1,modClosed:!1,topicQos:"all",timer:0,listLoading:!0,topics:[],currentExpandRow:{},currentTopic:{},record:{},rules:{topic:{required:!0,message:this.$t("Clients.pleaseEnter")}}}},watch:{currentExpandRow:{deep:!0,handler:function(){clearInterval(this.timer)}}},created:function(){this.loadData()},beforeDestroy:function(){clearInterval(this.timer)},methods:{getRowKeys:function(e){return e.topic},loadData:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Object(he["d"])();case 3:t=e.sent,this.topics=t.map(function(e){var t=e.metrics;return{topic:e.topic,messageIn:t["messages.in.count"],messageOut:t["messages.out.count"],messageDrop:t["messages.dropped.count"]}}),this.listLoading=!1,this.modClosed=!1,e.next=13;break;case 9:e.prev=9,e.t0=e["catch"](0),this.listLoading=!1,this.modClosed=!0;case 13:case"end":return e.stop()}},e,this,[[0,9]])}));function t(){return e.apply(this,arguments)}return t}(),hidePopover:function(){var e=this;this.popoverVisible=!0,setTimeout(function(){e.popoverVisible=!1},0)},handleOperation:function(){this.addVisible=!0},handleModLoad:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(he["c"])({type:"topic_metrics"});case 2:this.$message.success(this.$t("Base.enableSuccess")),this.loadData(),this.modClosed=!1;case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteTopicMetric:function(e){var t=this;this.$confirm(this.$t("Plugins.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(d["a"])(regeneratorRuntime.mark(function a(){return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:return a.next=2,Object(he["b"])(e.topic);case 2:t.loadData();case 3:case"end":return a.stop()}},a)}))).catch(function(){})},handleAdd:function(){var e=this;this.$refs.record.validate(function(){var t=Object(d["a"])(regeneratorRuntime.mark(function t(a){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(a){t.next=2;break}return t.abrupt("return");case 2:return n={},Object.assign(n,e.record),t.next=6,Object(he["a"])(n);case 6:e.handleClose(),e.loadData();case 8:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},handleClose:function(){this.addVisible=!1,this.$refs.record.resetFields()},viewTopicDetails:function(e,t){var a=document.querySelectorAll(".el-table__expand-icon")[t];a&&a.click()},loadDetail:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(he["e"])(this.currentTopic.topic);case 2:t=e.sent,this.currentTopic=t,this.loadData();case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),setLoadDetailInterval:function(){var e=this;this.timer=setInterval(Object(d["a"])(regeneratorRuntime.mark(function t(){var a;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(he["e"])(e.currentExpandRow.topic);case 2:a=t.sent,a&&(e.currentTopic=a);case 4:case"end":return t.stop()}},t)})),1e4)},handleExpandChange:function(){var e=Object(d["a"])(regeneratorRuntime.mark(function e(t,a){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(a.length){e.next=4;break}return this.currentExpandRow={},clearInterval(this.timer),e.abrupt("return");case 4:return this.currentExpandRow=t,this.currentTopic={},e.next=8,Object(he["e"])(t.topic);case 8:n=e.sent,n&&(this.currentTopic=n,this.$refs.crudTable.store.states.expandRows=a.length?[t]:[],this.loadData(),this.setLoadDetailInterval());case 10:case"end":return e.stop()}},e,this)}));function t(t,a){return e.apply(this,arguments)}return t}(),getCurrentTopicData:function(e,t){var a={all:"messages",qos0:"messages.qos0",qos1:"messages.qos1",qos2:"messages.qos2"},n=a[this.topicQos],r=this.currentTopic["".concat(n,".").concat(e,".").concat(t)];return"rate"===t&&r?r.toFixed(2):r},getCurrentTopicDropRate:function(e){return e?e.toFixed(2):e}},beforeRouteLeave:function(e,t,a){clearInterval(this.timer),a()}},be=fe,ve=(a("4fac8"),Object(f["a"])(be,pe,me,!1,null,null,null)),ge=ve.exports,ye={name:"ModuleManage",components:{AuthMnesia:L,JwtAuthentication:U,AuthSasl:K,LwClients:de,TopicMetrics:ge},data:function(){return{}},computed:{type:function(){return this.$route.query.type}}},we=ye,_e=Object(f["a"])(we,n,r,!1,null,null,null);t["default"]=_e.exports},fd4f:function(e,t,a){"use strict";var n=a("87e5"),r=a.n(n);r.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a8ae90d8.42887868.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a8ae90d8.42887868.js new file mode 100644 index 000000000..9cb03ca4d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a8ae90d8.42887868.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-a8ae90d8"],{1959:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"modules"},[s("page-header",[s("div",{staticClass:"page-header-content-view"},[s("div",{staticClass:"content"},[s("div",{staticClass:"content-left"},[t._v("\n "+t._s(t.$t("Modules.modules"))+"\n "),s("span",{staticClass:"modules-num"},[t._v(t._s(t.moduleCount))]),s("el-button",{staticClass:"confirm-btn",attrs:{type:"primary",size:"small"},on:{click:function(e){return t.$router.push("/modules/select")}}},[t._v("\n "+t._s(t.$t("Base.select"))+"\n ")])],1),s("el-col",{attrs:{span:6}},[s("el-input",{staticClass:"search-input",attrs:{type:"text",size:"small",clearable:"",placeholder:t.$t("Modules.searchTip")},on:{input:t.searchModule},model:{value:t.searchVal,callback:function(e){t.searchVal=e},expression:"searchVal"}},[t.searchLoading?s("i",{staticClass:"el-icon-loading",attrs:{slot:"prefix"},slot:"prefix"}):s("i",{staticClass:"el-icon-search",attrs:{slot:"prefix"},slot:"prefix"})])],1)],1)])]),s("div",{staticClass:"app-wrapper"},[t.showList.length?s("el-row",{staticClass:"emq-list-card plugin-cards-wrapper",attrs:{gutter:20}},t._l(t.showList,function(e){return s("el-col",{key:e.id,attrs:{span:12}},[s("div",{staticClass:"item-box"},[s("span",{directives:[{name:"show",rawName:"v-show",value:"[]"===JSON.stringify(e.config)||"{}"===JSON.stringify(e.config),expression:"\n (JSON.stringify(item.config) === '[]' || JSON.stringify(item.config) === '{}')\n "}],staticClass:"delete-icon",on:{click:function(s){return t.deleteModule(e)}}}),s("el-card",{attrs:{shadow:"hover"}},[s("div",{class:["module-item",-1===t.canManageModuleTypes.indexOf(e.type)?"no-pointer":""],on:{click:function(s){return t.manageModule(e)}}},[s("div",{staticClass:"left-box"},[s("img",{staticClass:"item-img",attrs:{src:e.img,alt:"module-logo"}}),s("div",{staticClass:"item-content"},[s("div",{staticClass:"item-title"},[t._v(t._s(e.title[t.lang]))]),s("div",{staticClass:"item-des"},[t._v("\n "+t._s(e.description[t.lang])+"\n ")])])]),s("div",{staticClass:"item-handle",on:{click:function(t){t.stopPropagation()}}},[s("div",{staticClass:"handle-icons"},[e.enabled?s("i",{staticClass:"el-icon-switch-button close",on:{click:function(s){return s.stopPropagation(),t.updataModule(e,!1)}}}):s("i",{staticClass:"el-icon-caret-right open",on:{click:function(s){return s.stopPropagation(),t.updataModule(e,!0)}}}),Object.keys(e.config).length?s("i",{staticClass:"el-icon-edit-outline",on:{click:function(s){return s.stopPropagation(),t.toEditModule(e)}}}):t._e()]),s("a",{staticClass:"know-more",attrs:{href:"javascript:;"},on:{click:function(s){return s.stopPropagation(),t.toReadMore(e.type)}}},[t._v("\n "+t._s(t.$t("Modules.readMore"))+"\n ")])])])])],1)])}),1):s("a-card",{staticClass:"null-modules"},[t.list.length?s("p",[t._v(t._s(t.$t("Modules.listNull")))]):s("p",[t._v(t._s(t.$t("Modules.noData")))])])],1)],1)},n=[],i=(s("ac6a"),s("96cf"),s("3b8d")),o=s("943d"),c=s("90b9"),r={name:"Modules",data:function(){return{searchLoading:!1,searchVal:"",list:[],showList:[],moduleCount:0,selectedModule:{},canManageModuleTypes:["mnesia_authentication","jwt_authentication","auth_sasl","lwm2m_protocol","topic_metrics"]}},computed:{lang:function(){return this.$store.state.lang}},created:function(){this.loadData()},methods:{manageModule:function(t){-1!==this.canManageModuleTypes.indexOf(t.type)&&this.$router.push("/modules/manage?type=".concat(t.type))},deleteModule:function(t){var e=this;this.$msgbox.confirm(this.$t("Modules.thisActionWillDeleteTheModule"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function s(){var a;return regeneratorRuntime.wrap(function(s){while(1)switch(s.prev=s.next){case 0:return s.next=2,Object(o["i"])(t.id);case 2:e.$message.success(e.$t("Base.deleteSuccess")),a=JSON.parse(localStorage.getItem("addedModules"))||{},delete a[t.type],localStorage.setItem("addedModules",JSON.stringify(a)),e.loadData();case 7:case"end":return s.stop()}},s)}))).catch(function(){})},updataModule:function(){var t=Object(i["a"])(regeneratorRuntime.mark(function t(e,s){var a=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(s){t.next=4;break}this.$msgbox.confirm(this.$t("Modules.thisActionWillStopTheModule"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function t(){return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(o["v"])(e.id,{enabled:s});case 2:a.$message.success(a.$t("Modules.stopSuccess")),e.enabled=s;case 4:case"end":return t.stop()}},t)}))).catch(function(){}),t.next=8;break;case 4:return t.next=6,Object(o["v"])(e.id,{enabled:s});case 6:this.$message.success(this.$t("Modules.startSuccess")),e.enabled=s;case 8:case"end":return t.stop()}},t,this)}));function e(e,s){return t.apply(this,arguments)}return e}(),searchModule:function(){var t=this;if(this.searchLoading=!0,""===this.searchVal)return this.showList=this.list,void(this.searchLoading=!1);setTimeout(Object(i["a"])(regeneratorRuntime.mark(function e(){var s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["k"])(t.list,"localTitle",t.searchVal);case 2:s=e.sent,s?(t.showList=s,t.searchLoading=!1):t.searchLoading=!1;case 4:case"end":return e.stop()}},e)})),500)},toEditModule:function(t){this.selectedModule=t,this.selectedModule.from="modules",this.selectedModule.oper="edit",this.$store.dispatch("UPDATE_MODULE",this.selectedModule),this.$router.push("/modules/detail")},loadData:function(){var t=Object(i["a"])(regeneratorRuntime.mark(function t(){var e,a=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return this.searchVal="",e={},this.list=[],t.next=5,Object(o["q"])();case 5:this.list=t.sent,this.moduleCount=this.list.length,this.moduleCount?(this.list.forEach(function(t){t.localTitle=t.title[a.lang];try{t.img=s("1775")("./".concat(t.type,".png"))}catch(n){console.log(n)}e[t.type]=t.id}),localStorage.setItem("addedModules",JSON.stringify(e))):localStorage.removeItem("addedModules"),this.showList=this.list;case 9:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),toReadMore:function(t){var e="zh"===this.lang?"cn/cn/":"io/en/",s="https://docs.emqx.".concat(e,"enterprise/latest/modules/").concat(t,".html"),a=window.open(s);a.opener=null}}},l=r,u=(s("3ea3"),s("2877")),d=Object(u["a"])(l,a,n,!1,null,"6f2e92f1",null);e["default"]=d.exports},3383:function(t,e,s){},"3ea3":function(t,e,s){"use strict";var a=s("3383"),n=s.n(a);n.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a950fa80.ed5136ae.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a950fa80.ed5136ae.js new file mode 100644 index 000000000..908f25472 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-a950fa80.ed5136ae.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-a950fa80"],{"010e":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}});return t})},"02fb":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,a){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}});return t})},"03ec":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){var t=/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран";return e+t},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}});return t})},"0558":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e){return e%100===11||e%10!==1}function a(e,a,n,s){var r=e+" ";switch(n){case"s":return a||s?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?r+(a||s?"sekúndur":"sekúndum"):r+"sekúnda";case"m":return a?"mínúta":"mínútu";case"mm":return t(e)?r+(a||s?"mínútur":"mínútum"):a?r+"mínúta":r+"mínútu";case"hh":return t(e)?r+(a||s?"klukkustundir":"klukkustundum"):r+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return t(e)?a?r+"dagar":r+(s?"daga":"dögum"):a?r+"dagur":r+(s?"dag":"degi");case"M":return a?"mánuður":s?"mánuð":"mánuði";case"MM":return t(e)?a?r+"mánuðir":r+(s?"mánuði":"mánuðum"):a?r+"mánuður":r+(s?"mánuð":"mánuði");case"y":return a||s?"ár":"ári";case"yy":return t(e)?r+(a||s?"ár":"árum"):r+(a||s?"ár":"ári")}}var n=e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:a,ss:a,m:a,mm:a,h:"klukkustund",hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return n})},"0721":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})},"079e":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,a){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}});return a})},"0e49":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});return t})},"0e6b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},"0e81":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},a=e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,s=e%100-n,r=e>=100?100:null;return e+(t[n]||t[s]||t[r])}},week:{dow:1,doy:7}});return a})},"0f14":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})},"0f38":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});return t})},"0ff2":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return t})},"10e8":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,a){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return t})},"13e9":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,n){var s=t.words[n];return 1===n.length?a?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}},a=e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var e=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},"1b45":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},"1cfd":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},a=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,s,r,d){var i=a(t),_=n[e][a(t)];return 2===i&&(_=_[s?0:1]),_.replace(/%d/i,t)}},r=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],d=e.defineLocale("ar-ly",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d})},"1fc1":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t){var a=e.split("_");return t%10===1&&t%100!==11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}function a(e,a,n){var s={ss:a?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:a?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:a?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===n?a?"хвіліна":"хвіліну":"h"===n?a?"гадзіна":"гадзіну":e+" "+t(s[n],+e)}var n=e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:a,mm:a,h:a,hh:a,d:"дзень",dd:a,M:"месяц",MM:a,y:"год",yy:a},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!==2&&e%10!==3||e%100===12||e%100===13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}});return n})},"201b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20===0||e%100===0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}});return t})},"22f8":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,a){return e<12?"오전":"오후"}});return t})},2421:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"],s=e.defineLocale("ku",{months:n,monthsShort:n,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,a){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return s})},2554:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a){var n=e+" ";switch(a){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi",n;case"m":return t?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta",n;case"h":return t?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati",n;case"dd":return n+=1===e?"dan":"dana",n;case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci",n;case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina",n}}var a=e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},"26f9":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function a(e,t,a,n){return t?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function n(e,t,a,n){return t?r(a)[0]:n?r(a)[1]:r(a)[2]}function s(e){return e%10===0||e>10&&e<20}function r(e){return t[e].split("_")}function d(e,t,a,d){var i=e+" ";return 1===e?i+n(e,t,a[0],d):t?i+(s(e)?r(a)[1]:r(a)[0]):d?i+r(a)[1]:i+(s(e)?r(a)[1]:r(a)[2])}var i=e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,ss:d,m:n,mm:d,h:n,hh:d,d:n,dd:d,M:n,MM:d,y:n,yy:d},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});return i})},2921:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"sa":"SA":a?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});return t})},"293c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,n){var s=t.words[n];return 1===n.length?a?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}},a=e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},"2bfb":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,a){return e<12?a?"vm":"VM":a?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return t})},"2e8c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}});return t})},3886:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}});return t})},"39a6":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},"39bd":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function n(e,t,a,n){var s="";if(t)switch(a){case"s":s="काही सेकंद";break;case"ss":s="%d सेकंद";break;case"m":s="एक मिनिट";break;case"mm":s="%d मिनिटे";break;case"h":s="एक तास";break;case"hh":s="%d तास";break;case"d":s="एक दिवस";break;case"dd":s="%d दिवस";break;case"M":s="एक महिना";break;case"MM":s="%d महिने";break;case"y":s="एक वर्ष";break;case"yy":s="%d वर्षे";break}else switch(a){case"s":s="काही सेकंदां";break;case"ss":s="%d सेकंदां";break;case"m":s="एका मिनिटा";break;case"mm":s="%d मिनिटां";break;case"h":s="एका तासा";break;case"hh":s="%d तासां";break;case"d":s="एका दिवसा";break;case"dd":s="%d दिवसां";break;case"M":s="एका महिन्या";break;case"MM":s="%d महिन्यां";break;case"y":s="एका वर्षा";break;case"yy":s="%d वर्षां";break}return s.replace(/%d/i,e)}var s=e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}});return s})},"3a39":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},n=e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,a){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}});return n})},"3b1b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"},a=e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){var a=e%10,n=e>=100?100:null;return e+(t[e]||t[a]||t[n])},week:{dow:1,doy:7}});return a})},"3c0d":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),a="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),n=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],s=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function r(e){return e>1&&e<5&&1!==~~(e/10)}function d(e,t,a,n){var s=e+" ";switch(a){case"s":return t||n?"pár sekund":"pár sekundami";case"ss":return t||n?s+(r(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":n?"minutu":"minutou";case"mm":return t||n?s+(r(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?s+(r(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||n?"den":"dnem";case"dd":return t||n?s+(r(e)?"dny":"dní"):s+"dny";case"M":return t||n?"měsíc":"měsícem";case"MM":return t||n?s+(r(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||n?"rok":"rokem";case"yy":return t||n?s+(r(e)?"roky":"let"):s+"lety"}}var i=e.defineLocale("cs",{months:t,monthsShort:a,monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:d,ss:d,m:d,mm:d,h:d,hh:d,d:d,dd:d,M:d,MM:d,y:d,yy:d},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return i})},"3de5":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},a={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"},n=e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,a){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t?e:"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}});return n})},"3e92":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},a={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"},n=e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}});return n})},"423e":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}});return t})},"440c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?s[a][0]:s[a][1]}function a(e){var t=e.substr(0,e.indexOf(" "));return s(t)?"a "+e:"an "+e}function n(e){var t=e.substr(0,e.indexOf(" "));return s(t)?"viru "+e:"virun "+e}function s(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10,a=e/10;return s(0===t?a:t)}if(e<1e4){while(e>=10)e/=10;return s(e)}return e/=1e3,s(e)}var r=e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:a,past:n,s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r})},4678:function(e,t,a){var n={"./af":"2bfb","./af.js":"2bfb","./ar":"8e73","./ar-dz":"a356","./ar-dz.js":"a356","./ar-kw":"423e","./ar-kw.js":"423e","./ar-ly":"1cfd","./ar-ly.js":"1cfd","./ar-ma":"0a84","./ar-ma.js":"0a84","./ar-sa":"8230","./ar-sa.js":"8230","./ar-tn":"6d83","./ar-tn.js":"6d83","./ar.js":"8e73","./az":"485c","./az.js":"485c","./be":"1fc1","./be.js":"1fc1","./bg":"84aa","./bg.js":"84aa","./bm":"a7fa","./bm.js":"a7fa","./bn":"9043","./bn.js":"9043","./bo":"d26a","./bo.js":"d26a","./br":"6887","./br.js":"6887","./bs":"2554","./bs.js":"2554","./ca":"d716","./ca.js":"d716","./cs":"3c0d","./cs.js":"3c0d","./cv":"03ec","./cv.js":"03ec","./cy":"9797","./cy.js":"9797","./da":"0f14","./da.js":"0f14","./de":"b469","./de-at":"b3eb","./de-at.js":"b3eb","./de-ch":"bb71","./de-ch.js":"bb71","./de.js":"b469","./dv":"598a","./dv.js":"598a","./el":"8d47","./el.js":"8d47","./en-SG":"cdab","./en-SG.js":"cdab","./en-au":"0e6b","./en-au.js":"0e6b","./en-ca":"3886","./en-ca.js":"3886","./en-gb":"39a6","./en-gb.js":"39a6","./en-ie":"e1d3","./en-ie.js":"e1d3","./en-il":"73332","./en-il.js":"73332","./en-nz":"6f50","./en-nz.js":"6f50","./eo":"65db","./eo.js":"65db","./es":"898b","./es-do":"0a3c","./es-do.js":"0a3c","./es-us":"55c9","./es-us.js":"55c9","./es.js":"898b","./et":"ec18","./et.js":"ec18","./eu":"0ff2","./eu.js":"0ff2","./fa":"8df48","./fa.js":"8df48","./fi":"81e9","./fi.js":"81e9","./fo":"0721","./fo.js":"0721","./fr":"9f26","./fr-ca":"d9f8","./fr-ca.js":"d9f8","./fr-ch":"0e49","./fr-ch.js":"0e49","./fr.js":"9f26","./fy":"7118","./fy.js":"7118","./ga":"5120","./ga.js":"5120","./gd":"f6b46","./gd.js":"f6b46","./gl":"8840","./gl.js":"8840","./gom-latn":"0caa","./gom-latn.js":"0caa","./gu":"e0c5","./gu.js":"e0c5","./he":"c7aa","./he.js":"c7aa","./hi":"dc4d","./hi.js":"dc4d","./hr":"4ba9","./hr.js":"4ba9","./hu":"5b14","./hu.js":"5b14","./hy-am":"d6b6","./hy-am.js":"d6b6","./id":"5038","./id.js":"5038","./is":"0558","./is.js":"0558","./it":"6e98","./it-ch":"6f12","./it-ch.js":"6f12","./it.js":"6e98","./ja":"079e","./ja.js":"079e","./jv":"b540","./jv.js":"b540","./ka":"201b","./ka.js":"201b","./kk":"6d79","./kk.js":"6d79","./km":"e81d","./km.js":"e81d","./kn":"3e92","./kn.js":"3e92","./ko":"22f8","./ko.js":"22f8","./ku":"2421","./ku.js":"2421","./ky":"9609","./ky.js":"9609","./lb":"440c","./lb.js":"440c","./lo":"b29d","./lo.js":"b29d","./lt":"26f9","./lt.js":"26f9","./lv":"b97c","./lv.js":"b97c","./me":"293c","./me.js":"293c","./mi":"688b","./mi.js":"688b","./mk":"6909","./mk.js":"6909","./ml":"02fb","./ml.js":"02fb","./mn":"958b","./mn.js":"958b","./mr":"39bd","./mr.js":"39bd","./ms":"ebe4","./ms-my":"6403","./ms-my.js":"6403","./ms.js":"ebe4","./mt":"1b45","./mt.js":"1b45","./my":"8689","./my.js":"8689","./nb":"6ce3","./nb.js":"6ce3","./ne":"3a39","./ne.js":"3a39","./nl":"facd","./nl-be":"db29","./nl-be.js":"db29","./nl.js":"facd","./nn":"b84c","./nn.js":"b84c","./pa-in":"f3ff","./pa-in.js":"f3ff","./pl":"8d57","./pl.js":"8d57","./pt":"f260","./pt-br":"d2d4","./pt-br.js":"d2d4","./pt.js":"f260","./ro":"972c","./ro.js":"972c","./ru":"957c","./ru.js":"957c","./sd":"6784","./sd.js":"6784","./se":"ffff","./se.js":"ffff","./si":"eda5","./si.js":"eda5","./sk":"7be6","./sk.js":"7be6","./sl":"8155","./sl.js":"8155","./sq":"c8f3","./sq.js":"c8f3","./sr":"cf1e","./sr-cyrl":"13e9","./sr-cyrl.js":"13e9","./sr.js":"cf1e","./ss":"52bd","./ss.js":"52bd","./sv":"5fbd","./sv.js":"5fbd","./sw":"74dc","./sw.js":"74dc","./ta":"3de5","./ta.js":"3de5","./te":"5cbb","./te.js":"5cbb","./tet":"576c","./tet.js":"576c","./tg":"3b1b","./tg.js":"3b1b","./th":"10e8","./th.js":"10e8","./tl-ph":"0f38","./tl-ph.js":"0f38","./tlh":"cf75","./tlh.js":"cf75","./tr":"0e81","./tr.js":"0e81","./tzl":"cf51","./tzl.js":"cf51","./tzm":"c109","./tzm-latn":"b53d","./tzm-latn.js":"b53d","./tzm.js":"c109","./ug-cn":"6117","./ug-cn.js":"6117","./uk":"ada2","./uk.js":"ada2","./ur":"5294","./ur.js":"5294","./uz":"2e8c","./uz-latn":"010e","./uz-latn.js":"010e","./uz.js":"2e8c","./vi":"2921","./vi.js":"2921","./x-pseudo":"fd7e","./x-pseudo.js":"fd7e","./yo":"7f33","./yo.js":"7f33","./zh-cn":"5c3a","./zh-cn.js":"5c3a","./zh-hk":"49ab","./zh-hk.js":"49ab","./zh-tw":"90ea","./zh-tw.js":"90ea"};function s(e){var t=r(e);return a(t)}function r(e){var t=n[e];if(!(t+1)){var a=new Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}return t}s.keys=function(){return Object.keys(n)},s.resolve=r,e.exports=s,s.id="4678"},"485c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"},a=e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,a){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var a=e%10,n=e%100-a,s=e>=100?100:null;return e+(t[a]||t[n]||t[s])},week:{dow:1,doy:7}});return a})},"49ab":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return t})},"4ba9":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a){var n=e+" ";switch(a){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi",n;case"m":return t?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta",n;case"h":return t?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati",n;case"dd":return n+=1===e?"dan":"dana",n;case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci",n;case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina",n}}var a=e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},5038:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return t})},5120:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],a=["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],n=["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],s=["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],r=["Do","Lu","Má","Ce","Dé","hA","Sa"],d=e.defineLocale("ga",{months:t,monthsShort:a,monthsParseExact:!0,weekdays:n,weekdaysShort:s,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10===2?"na":"mh";return e+t},week:{dow:1,doy:4}});return d})},5294:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],a=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"],n=e.defineLocale("ur",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}});return n})},"52bd":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,a){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}});return t})},"55c9":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,r=e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?a[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}});return r})},"576c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},"598a":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],a=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"],n=e.defineLocale("dv",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,a){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}});return n})},"5b14":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function a(e,t,a,n){var s=e;switch(a){case"s":return n||t?"néhány másodperc":"néhány másodperce";case"ss":return s+(n||t)?" másodperc":" másodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return s+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" óra":" órája");case"hh":return s+(n||t?" óra":" órája");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return s+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" hónap":" hónapja");case"MM":return s+(n||t?" hónap":" hónapja");case"y":return"egy"+(n||t?" év":" éve");case"yy":return s+(n||t?" év":" éve")}return""}function n(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}var s=e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,a){return e<12?!0===a?"de":"DE":!0===a?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return s})},"5c3a":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return t})},"5cbb":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}});return t})},"5fbd":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"e":1===t?"a":2===t?"a":"e";return e+a},week:{dow:1,doy:4}});return t})},6117:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,a){var n=100*e+t;return n<600?"يېرىم كېچە":n<900?"سەھەر":n<1130?"چۈشتىن بۇرۇن":n<1230?"چۈش":n<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}});return t})},6403:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return t})},"65db":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,a){return e>11?a?"p.t.m.":"P.T.M.":a?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});return t})},6784:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],a=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"],n=e.defineLocale("sd",{months:t,monthsShort:t,weekdays:a,weekdaysShort:a,weekdaysMin:a,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,a){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}});return n})},6887:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a){var n={mm:"munutenn",MM:"miz",dd:"devezh"};return e+" "+s(n[a],e)}function a(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function n(e){return e>9?n(e%10):e}function s(e,t){return 2===t?r(e):e}function r(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}var d=e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:a},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){var t=1===e?"añ":"vet";return e+t},week:{dow:1,doy:4}});return d})},"688b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},6909:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return t})},"6ce3":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})},"6d79":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"},a=e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var a=e%10,n=e>=100?100:null;return e+(t[e]||t[a]||t[n])},week:{dow:1,doy:7}});return a})},"6d83":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return t})},"6e98":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},"6f12":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},"6f50":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},7118:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),a="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),n=e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?a[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return n})},73332:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}});return t})},"74dc":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});return t})},"7be6":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),a="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function n(e){return e>1&&e<5}function s(e,t,a,s){var r=e+" ";switch(a){case"s":return t||s?"pár sekúnd":"pár sekundami";case"ss":return t||s?r+(n(e)?"sekundy":"sekúnd"):r+"sekundami";case"m":return t?"minúta":s?"minútu":"minútou";case"mm":return t||s?r+(n(e)?"minúty":"minút"):r+"minútami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?r+(n(e)?"hodiny":"hodín"):r+"hodinami";case"d":return t||s?"deň":"dňom";case"dd":return t||s?r+(n(e)?"dni":"dní"):r+"dňami";case"M":return t||s?"mesiac":"mesiacom";case"MM":return t||s?r+(n(e)?"mesiace":"mesiacov"):r+"mesiacmi";case"y":return t||s?"rok":"rokom";case"yy":return t||s?r+(n(e)?"roky":"rokov"):r+"rokmi"}}var r=e.defineLocale("sk",{months:t,monthsShort:a,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:s,ss:s,m:s,mm:s,h:s,hh:s,d:s,dd:s,M:s,MM:s,y:s,yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r})},"7f33":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}});return t})},8155:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s=e+" ";switch(a){case"s":return t||n?"nekaj sekund":"nekaj sekundami";case"ss":return s+=1===e?t?"sekundo":"sekundi":2===e?t||n?"sekundi":"sekundah":e<5?t||n?"sekunde":"sekundah":"sekund",s;case"m":return t?"ena minuta":"eno minuto";case"mm":return s+=1===e?t?"minuta":"minuto":2===e?t||n?"minuti":"minutama":e<5?t||n?"minute":"minutami":t||n?"minut":"minutami",s;case"h":return t?"ena ura":"eno uro";case"hh":return s+=1===e?t?"ura":"uro":2===e?t||n?"uri":"urama":e<5?t||n?"ure":"urami":t||n?"ur":"urami",s;case"d":return t||n?"en dan":"enim dnem";case"dd":return s+=1===e?t||n?"dan":"dnem":2===e?t||n?"dni":"dnevoma":t||n?"dni":"dnevi",s;case"M":return t||n?"en mesec":"enim mesecem";case"MM":return s+=1===e?t||n?"mesec":"mesecem":2===e?t||n?"meseca":"mesecema":e<5?t||n?"mesece":"meseci":t||n?"mesecev":"meseci",s;case"y":return t||n?"eno leto":"enim letom";case"yy":return s+=1===e?t||n?"leto":"letom":2===e?t||n?"leti":"letoma":e<5?t||n?"leta":"leti":t||n?"let":"leti",s}}var a=e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},"81e9":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),a=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function n(e,t,a,n){var r="";switch(a){case"s":return n?"muutaman sekunnin":"muutama sekunti";case"ss":return n?"sekunnin":"sekuntia";case"m":return n?"minuutin":"minuutti";case"mm":r=n?"minuutin":"minuuttia";break;case"h":return n?"tunnin":"tunti";case"hh":r=n?"tunnin":"tuntia";break;case"d":return n?"päivän":"päivä";case"dd":r=n?"päivän":"päivää";break;case"M":return n?"kuukauden":"kuukausi";case"MM":r=n?"kuukauden":"kuukautta";break;case"y":return n?"vuoden":"vuosi";case"yy":r=n?"vuoden":"vuotta";break}return r=s(e,n)+" "+r,r}function s(e,n){return e<10?n?a[e]:t[e]:e}var r=e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r})},8230:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}});return n})},"84aa":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,a=e%100;return 0===e?e+"-ев":0===a?e+"-ен":a>10&&a<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}});return t})},8689:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},a={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"},n=e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}});return n})},8840:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},"898b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),a="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],s=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,r=e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?a[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return r})},"8d47":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}var a=e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"===typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,a){return e>11?a?"μμ":"ΜΜ":a?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var n=this._calendarEl[e],s=a&&a.hours();return t(n)&&(n=n.apply(a)),n.replace("{}",s%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return a})},"8d57":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function n(e){return e%10<5&&e%10>1&&~~(e/10)%10!==1}function s(e,t,a){var s=e+" ";switch(a){case"ss":return s+(n(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return s+(n(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return s+(n(e)?"godziny":"godzin");case"MM":return s+(n(e)?"miesiące":"miesięcy");case"yy":return s+(n(e)?"lata":"lat")}}var r=e.defineLocale("pl",{months:function(e,n){return e?""===n?"("+a[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(n)?a[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return r})},"8df48":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},a={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},n=e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,a){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return n})},"8e73":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},a={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},s={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,a,r,d){var i=n(t),_=s[e][n(t)];return 2===i&&(_=_[a?0:1]),_.replace(/%d/i,t)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],i=e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,a){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return a[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return i})},9043:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},a={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"},n=e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,a){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}});return n})},"90ea":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,a){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}});return t})},"957c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t){var a=e.split("_");return t%10===1&&t%100!==11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}function a(e,a,n){var s={ss:a?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:a?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?a?"минута":"минуту":e+" "+t(s[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],s=e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:a,m:a,mm:a,h:"час",hh:a,d:"день",dd:a,M:"месяц",MM:a,y:"год",yy:a},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}});return s})},"958b":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){switch(a){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}var a=e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,a){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}});return a})},9609:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"},a=e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){var a=e%10,n=e>=100?100:null;return e+(t[e]||t[a]||t[n])},week:{dow:1,doy:7}});return a})},"972c":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a){var n={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},s=" ";return(e%100>=20||e>=100&&e%100===0)&&(s=" de "),e+s+n[a]}var a=e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}});return a})},9797:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t=e,a="",n=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return t>20?a=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(a=n[t]),e+a},week:{dow:1,doy:4}});return t})},"9f26":function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});return t})},a356:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}});return t})},a7fa:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});return t})},ada2:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t){var a=e.split("_");return t%10===1&&t%100!==11?a[0]:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?a[1]:a[2]}function a(e,a,n){var s={ss:a?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:a?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:a?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?a?"хвилина":"хвилину":"h"===n?a?"година":"годину":e+" "+t(s[n],+e)}function n(e,t){var a={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!0===e)return a["nominative"].slice(1,7).concat(a["nominative"].slice(0,1));if(!e)return a["nominative"];var n=/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative";return a[n][e.day()]}function s(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}var r=e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:s("[Сьогодні "),nextDay:s("[Завтра "),lastDay:s("[Вчора "),nextWeek:s("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[Минулої] dddd [").call(this);case 1:case 2:case 4:return s("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:a,m:a,mm:a,h:"годину",hh:a,d:"день",dd:a,M:"місяць",MM:a,y:"рік",yy:a},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,a){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}});return r})},b29d:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,a){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}});return t})},b3eb:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[a][0]:s[a][1]}var a=e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a})},b469:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[a][0]:s[a][1]}var a=e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a})},b53d:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}});return t})},b540:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}});return t})},b84c:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})},b97c:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function a(e,t,a){return a?t%10===1&&t%100!==11?e[2]:e[3]:t%10===1&&t%100!==11?e[0]:e[1]}function n(e,n,s){return e+" "+a(t[s],e,n)}function s(e,n,s){return a(t[s],e,n)}function r(e,t){return t?"dažas sekundes":"dažām sekundēm"}var d=e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,ss:n,m:s,mm:n,h:s,hh:n,d:s,dd:n,M:s,MM:n,y:s,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d})},bb71:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?s[a][0]:s[a][1]}var a=e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a})},c109:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}});return t})},c1df:function(e,t,a){(function(e){(function(t,a){e.exports=a()})(0,function(){"use strict";var t,n;function s(){return t.apply(null,arguments)}function r(e){t=e}function d(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function _(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}function o(e){return void 0===e}function u(e){return"number"===typeof e||"[object Number]"===Object.prototype.toString.call(e)}function m(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function l(e,t){var a,n=[];for(a=0;a>>0,n=0;n0)for(a=0;a0?"future":"past"];return P(a)?a(t):a.replace(/%s/i,t)}var $={};function q(e,t){var a=e.toLowerCase();$[a]=$[a+"s"]=$[t]=e}function B(e){return"string"===typeof e?$[e]||$[e.toLowerCase()]:void 0}function Q(e){var t,a,n={};for(a in e)c(e,a)&&(t=B(a),t&&(n[t]=e[a]));return n}var X={};function ee(e,t){X[e]=t}function te(e){var t=[];for(var a in e)t.push({unit:a,priority:X[a]});return t.sort(function(e,t){return e.priority-t.priority}),t}function ae(e,t,a){var n=""+Math.abs(e),s=t-n.length,r=e>=0;return(r?a?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+n}var ne=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,se=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,re={},de={};function ie(e,t,a,n){var s=n;"string"===typeof n&&(s=function(){return this[n]()}),e&&(de[e]=s),t&&(de[t[0]]=function(){return ae(s.apply(this,arguments),t[1],t[2])}),a&&(de[a]=function(){return this.localeData().ordinal(s.apply(this,arguments),e)})}function _e(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function oe(e){var t,a,n=e.match(ne);for(t=0,a=n.length;t=0&&se.test(e))e=e.replace(se,n),se.lastIndex=0,a-=1;return e}var le=/\d/,ce=/\d\d/,Me=/\d{3}/,he=/\d{4}/,Le=/[+-]?\d{6}/,Ye=/\d\d?/,fe=/\d\d\d\d?/,ye=/\d\d\d\d\d\d?/,ke=/\d{1,3}/,pe=/\d{1,4}/,De=/[+-]?\d{1,6}/,Te=/\d+/,ge=/[+-]?\d+/,we=/Z|[+-]\d\d:?\d\d/gi,ve=/Z|[+-]\d\d(?::?\d\d)?/gi,be=/[+-]?\d+(\.\d{1,3})?/,Se=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,He={};function je(e,t,a){He[e]=P(t)?t:function(e,n){return e&&a?a:t}}function xe(e,t){return c(He,e)?He[e](t._strict,t._locale):new RegExp(Oe(e))}function Oe(e){return Pe(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,a,n,s){return t||a||n||s}))}function Pe(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var We={};function Ae(e,t){var a,n=t;for("string"===typeof e&&(e=[e]),u(t)&&(n=function(e,a){a[t]=v(e)}),a=0;a68?1900:2e3)};var $e,qe=Qe("FullYear",!0);function Be(){return Ze(this.year())}function Qe(e,t){return function(a){return null!=a?(et(this,e,a),s.updateOffset(this,t),this):Xe(this,e)}}function Xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function et(e,t,a){e.isValid()&&!isNaN(a)&&("FullYear"===t&&Ze(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](a,e.month(),st(a,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](a))}function tt(e){return e=B(e),P(this[e])?this[e]():this}function at(e,t){if("object"===typeof e){e=Q(e);for(var a=te(e),n=0;n=0?(i=new Date(e+400,t,a,n,s,r,d),isFinite(i.getFullYear())&&i.setFullYear(e)):i=new Date(e,t,a,n,s,r,d),i}function pt(e){var t;if(e<100&&e>=0){var a=Array.prototype.slice.call(arguments);a[0]=e+400,t=new Date(Date.UTC.apply(null,a)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Dt(e,t,a){var n=7+t-a,s=(7+pt(e,0,n).getUTCDay()-t)%7;return-s+n-1}function Tt(e,t,a,n,s){var r,d,i=(7+a-n)%7,_=Dt(e,n,s),o=1+7*(t-1)+i+_;return o<=0?(r=e-1,d=Ke(r)+o):o>Ke(e)?(r=e+1,d=o-Ke(e)):(r=e,d=o),{year:r,dayOfYear:d}}function gt(e,t,a){var n,s,r=Dt(e.year(),t,a),d=Math.floor((e.dayOfYear()-r-1)/7)+1;return d<1?(s=e.year()-1,n=d+wt(s,t,a)):d>wt(e.year(),t,a)?(n=d-wt(e.year(),t,a),s=e.year()+1):(s=e.year(),n=d),{week:n,year:s}}function wt(e,t,a){var n=Dt(e,t,a),s=Dt(e+1,t,a);return(Ke(e)-n+s)/7}function vt(e){return gt(e,this._week.dow,this._week.doy).week}ie("w",["ww",2],"wo","week"),ie("W",["WW",2],"Wo","isoWeek"),q("week","w"),q("isoWeek","W"),ee("week",5),ee("isoWeek",5),je("w",Ye),je("ww",Ye,ce),je("W",Ye),je("WW",Ye,ce),Ee(["w","ww","W","WW"],function(e,t,a,n){t[n.substr(0,1)]=v(e)});var bt={dow:0,doy:6};function St(){return this._week.dow}function Ht(){return this._week.doy}function jt(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function xt(e){var t=gt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Ot(e,t){return"string"!==typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"===typeof e?e:null):parseInt(e,10)}function Pt(e,t){return"string"===typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Wt(e,t){return e.slice(t,7).concat(e.slice(0,t))}ie("d",0,"do","day"),ie("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),ie("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),ie("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),ie("e",0,0,"weekday"),ie("E",0,0,"isoWeekday"),q("day","d"),q("weekday","e"),q("isoWeekday","E"),ee("day",11),ee("weekday",11),ee("isoWeekday",11),je("d",Ye),je("e",Ye),je("E",Ye),je("dd",function(e,t){return t.weekdaysMinRegex(e)}),je("ddd",function(e,t){return t.weekdaysShortRegex(e)}),je("dddd",function(e,t){return t.weekdaysRegex(e)}),Ee(["dd","ddd","dddd"],function(e,t,a,n){var s=a._locale.weekdaysParse(e,n,a._strict);null!=s?t.d=s:Y(a).invalidWeekday=e}),Ee(["d","e","E"],function(e,t,a,n){t[n]=v(e)});var At="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");function Et(e,t){var a=d(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Wt(a,this._week.dow):e?a[e.day()]:a}var Ft="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");function zt(e){return!0===e?Wt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}var Jt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Nt(e){return!0===e?Wt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Rt(e,t,a){var n,s,r,d=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=h([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,"").toLocaleLowerCase();return a?"dddd"===t?(s=$e.call(this._weekdaysParse,d),-1!==s?s:null):"ddd"===t?(s=$e.call(this._shortWeekdaysParse,d),-1!==s?s:null):(s=$e.call(this._minWeekdaysParse,d),-1!==s?s:null):"dddd"===t?(s=$e.call(this._weekdaysParse,d),-1!==s?s:(s=$e.call(this._shortWeekdaysParse,d),-1!==s?s:(s=$e.call(this._minWeekdaysParse,d),-1!==s?s:null))):"ddd"===t?(s=$e.call(this._shortWeekdaysParse,d),-1!==s?s:(s=$e.call(this._weekdaysParse,d),-1!==s?s:(s=$e.call(this._minWeekdaysParse,d),-1!==s?s:null))):(s=$e.call(this._minWeekdaysParse,d),-1!==s?s:(s=$e.call(this._weekdaysParse,d),-1!==s?s:(s=$e.call(this._shortWeekdaysParse,d),-1!==s?s:null)))}function Ct(e,t,a){var n,s,r;if(this._weekdaysParseExact)return Rt.call(this,e,t,a);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(s=h([2e3,1]).day(n),a&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(r="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[n]=new RegExp(r.replace(".",""),"i")),a&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(a&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(a&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!a&&this._weekdaysParse[n].test(e))return n}}function It(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Ot(e,this.localeData()),this.add(e-t,"d")):t}function Ut(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function Gt(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Pt(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}var Vt=Se;function Kt(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Qt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Vt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}var Zt=Se;function $t(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Qt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Zt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}var qt=Se;function Bt(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Qt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qt(){function e(e,t){return t.length-e.length}var t,a,n,s,r,d=[],i=[],_=[],o=[];for(t=0;t<7;t++)a=h([2e3,1]).day(t),n=this.weekdaysMin(a,""),s=this.weekdaysShort(a,""),r=this.weekdays(a,""),d.push(n),i.push(s),_.push(r),o.push(n),o.push(s),o.push(r);for(d.sort(e),i.sort(e),_.sort(e),o.sort(e),t=0;t<7;t++)i[t]=Pe(i[t]),_[t]=Pe(_[t]),o[t]=Pe(o[t]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+d.join("|")+")","i")}function Xt(){return this.hours()%12||12}function ea(){return this.hours()||24}function ta(e,t){ie(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function aa(e,t){return t._meridiemParse}function na(e){return"p"===(e+"").toLowerCase().charAt(0)}ie("H",["HH",2],0,"hour"),ie("h",["hh",2],0,Xt),ie("k",["kk",2],0,ea),ie("hmm",0,0,function(){return""+Xt.apply(this)+ae(this.minutes(),2)}),ie("hmmss",0,0,function(){return""+Xt.apply(this)+ae(this.minutes(),2)+ae(this.seconds(),2)}),ie("Hmm",0,0,function(){return""+this.hours()+ae(this.minutes(),2)}),ie("Hmmss",0,0,function(){return""+this.hours()+ae(this.minutes(),2)+ae(this.seconds(),2)}),ta("a",!0),ta("A",!1),q("hour","h"),ee("hour",13),je("a",aa),je("A",aa),je("H",Ye),je("h",Ye),je("k",Ye),je("HH",Ye,ce),je("hh",Ye,ce),je("kk",Ye,ce),je("hmm",fe),je("hmmss",ye),je("Hmm",fe),je("Hmmss",ye),Ae(["H","HH"],Re),Ae(["k","kk"],function(e,t,a){var n=v(e);t[Re]=24===n?0:n}),Ae(["a","A"],function(e,t,a){a._isPm=a._locale.isPM(e),a._meridiem=e}),Ae(["h","hh"],function(e,t,a){t[Re]=v(e),Y(a).bigHour=!0}),Ae("hmm",function(e,t,a){var n=e.length-2;t[Re]=v(e.substr(0,n)),t[Ce]=v(e.substr(n)),Y(a).bigHour=!0}),Ae("hmmss",function(e,t,a){var n=e.length-4,s=e.length-2;t[Re]=v(e.substr(0,n)),t[Ce]=v(e.substr(n,2)),t[Ie]=v(e.substr(s)),Y(a).bigHour=!0}),Ae("Hmm",function(e,t,a){var n=e.length-2;t[Re]=v(e.substr(0,n)),t[Ce]=v(e.substr(n))}),Ae("Hmmss",function(e,t,a){var n=e.length-4,s=e.length-2;t[Re]=v(e.substr(0,n)),t[Ce]=v(e.substr(n,2)),t[Ie]=v(e.substr(s))});var sa=/[ap]\.?m?\.?/i;function ra(e,t,a){return e>11?a?"pm":"PM":a?"am":"AM"}var da,ia=Qe("Hours",!0),_a={calendar:F,longDateFormat:J,invalidDate:R,ordinal:I,dayOfMonthOrdinalParse:U,relativeTime:V,months:dt,monthsShort:_t,week:bt,weekdays:At,weekdaysMin:Jt,weekdaysShort:Ft,meridiemParse:sa},oa={},ua={};function ma(e){return e?e.toLowerCase().replace("_","-"):e}function la(e){var t,a,n,s,r=0;while(r0){if(n=ca(s.slice(0,t).join("-")),n)return n;if(a&&a.length>=t&&b(s,a,!0)>=t-1)break;t--}r++}return da}function ca(t){var n=null;if(!oa[t]&&"undefined"!==typeof e&&e&&e.exports)try{n=da._abbr;a("4678")("./"+t),Ma(n)}catch(s){}return oa[t]}function Ma(e,t){var a;return e&&(a=o(t)?Ya(e):ha(e,t),a?da=a:"undefined"!==typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),da._abbr}function ha(e,t){if(null!==t){var a,n=_a;if(t.abbr=e,null!=oa[e])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=oa[e]._config;else if(null!=t.parentLocale)if(null!=oa[t.parentLocale])n=oa[t.parentLocale]._config;else{if(a=ca(t.parentLocale),null==a)return ua[t.parentLocale]||(ua[t.parentLocale]=[]),ua[t.parentLocale].push({name:e,config:t}),null;n=a._config}return oa[e]=new E(A(n,t)),ua[e]&&ua[e].forEach(function(e){ha(e.name,e.config)}),Ma(e),oa[e]}return delete oa[e],null}function La(e,t){if(null!=t){var a,n,s=_a;n=ca(e),null!=n&&(s=n._config),t=A(s,t),a=new E(t),a.parentLocale=oa[e],oa[e]=a,Ma(e)}else null!=oa[e]&&(null!=oa[e].parentLocale?oa[e]=oa[e].parentLocale:null!=oa[e]&&delete oa[e]);return oa[e]}function Ya(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return da;if(!d(e)){if(t=ca(e),t)return t;e=[e]}return la(e)}function fa(){return j(oa)}function ya(e){var t,a=e._a;return a&&-2===Y(e).overflow&&(t=a[Je]<0||a[Je]>11?Je:a[Ne]<1||a[Ne]>st(a[ze],a[Je])?Ne:a[Re]<0||a[Re]>24||24===a[Re]&&(0!==a[Ce]||0!==a[Ie]||0!==a[Ue])?Re:a[Ce]<0||a[Ce]>59?Ce:a[Ie]<0||a[Ie]>59?Ie:a[Ue]<0||a[Ue]>999?Ue:-1,Y(e)._overflowDayOfYear&&(tNe)&&(t=Ne),Y(e)._overflowWeeks&&-1===t&&(t=Ge),Y(e)._overflowWeekday&&-1===t&&(t=Ve),Y(e).overflow=t),e}function ka(e,t,a){return null!=e?e:null!=t?t:a}function pa(e){var t=new Date(s.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function Da(e){var t,a,n,s,r,d=[];if(!e._d){for(n=pa(e),e._w&&null==e._a[Ne]&&null==e._a[Je]&&Ta(e),null!=e._dayOfYear&&(r=ka(e._a[ze],n[ze]),(e._dayOfYear>Ke(r)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),a=pt(r,0,e._dayOfYear),e._a[Je]=a.getUTCMonth(),e._a[Ne]=a.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=d[t]=n[t];for(;t<7;t++)e._a[t]=d[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Re]&&0===e._a[Ce]&&0===e._a[Ie]&&0===e._a[Ue]&&(e._nextDay=!0,e._a[Re]=0),e._d=(e._useUTC?pt:kt).apply(null,d),s=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Re]=24),e._w&&"undefined"!==typeof e._w.d&&e._w.d!==s&&(Y(e).weekdayMismatch=!0)}}function Ta(e){var t,a,n,s,r,d,i,_;if(t=e._w,null!=t.GG||null!=t.W||null!=t.E)r=1,d=4,a=ka(t.GG,e._a[ze],gt(Za(),1,4).year),n=ka(t.W,1),s=ka(t.E,1),(s<1||s>7)&&(_=!0);else{r=e._locale._week.dow,d=e._locale._week.doy;var o=gt(Za(),r,d);a=ka(t.gg,e._a[ze],o.year),n=ka(t.w,o.week),null!=t.d?(s=t.d,(s<0||s>6)&&(_=!0)):null!=t.e?(s=t.e+r,(t.e<0||t.e>6)&&(_=!0)):s=r}n<1||n>wt(a,r,d)?Y(e)._overflowWeeks=!0:null!=_?Y(e)._overflowWeekday=!0:(i=Tt(a,n,s,r,d),e._a[ze]=i.year,e._dayOfYear=i.dayOfYear)}var ga=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,va=/Z|[+-]\d\d(?::?\d\d)?/,ba=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Sa=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ha=/^\/?Date\((\-?\d+)/i;function ja(e){var t,a,n,s,r,d,i=e._i,_=ga.exec(i)||wa.exec(i);if(_){for(Y(e).iso=!0,t=0,a=ba.length;t0&&Y(e).unusedInput.push(d),i=i.slice(i.indexOf(a)+a.length),o+=a.length),de[r]?(a?Y(e).empty=!1:Y(e).unusedTokens.push(r),Fe(r,a,e)):e._strict&&!a&&Y(e).unusedTokens.push(r);Y(e).charsLeftOver=_-o,i.length>0&&Y(e).unusedInput.push(i),e._a[Re]<=12&&!0===Y(e).bigHour&&e._a[Re]>0&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[Re]=Ra(e._locale,e._a[Re],e._meridiem),Da(e),ya(e)}else za(e);else ja(e)}function Ra(e,t,a){var n;return null==a?t:null!=e.meridiemHour?e.meridiemHour(t,a):null!=e.isPM?(n=e.isPM(a),n&&t<12&&(t+=12),n||12!==t||(t=0),t):t}function Ca(e){var t,a,n,s,r;if(0===e._f.length)return Y(e).invalidFormat=!0,void(e._d=new Date(NaN));for(s=0;sthis?this:e:y()});function Ba(e,t){var a,n;if(1===t.length&&d(t[0])&&(t=t[0]),!t.length)return Za();for(a=t[0],n=1;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function pn(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(p(e,this),e=Ga(e),e._a){var t=e._isUTC?h(e._a):Za(e._a);this._isDSTShifted=this.isValid()&&b(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Dn(){return!!this.isValid()&&!this._isUTC}function Tn(){return!!this.isValid()&&this._isUTC}function gn(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}s.updateOffset=function(){};var wn=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,vn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function bn(e,t){var a,n,s,r=e,d=null;return dn(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:u(e)?(r={},t?r[t]=e:r.milliseconds=e):(d=wn.exec(e))?(a="-"===d[1]?-1:1,r={y:0,d:v(d[Ne])*a,h:v(d[Re])*a,m:v(d[Ce])*a,s:v(d[Ie])*a,ms:v(_n(1e3*d[Ue]))*a}):(d=vn.exec(e))?(a="-"===d[1]?-1:1,r={y:Sn(d[2],a),M:Sn(d[3],a),w:Sn(d[4],a),d:Sn(d[5],a),h:Sn(d[6],a),m:Sn(d[7],a),s:Sn(d[8],a)}):null==r?r={}:"object"===typeof r&&("from"in r||"to"in r)&&(s=jn(Za(r.from),Za(r.to)),r={},r.ms=s.milliseconds,r.M=s.months),n=new rn(r),dn(e)&&c(e,"_locale")&&(n._locale=e._locale),n}function Sn(e,t){var a=e&&parseFloat(e.replace(",","."));return(isNaN(a)?0:a)*t}function Hn(e,t){var a={};return a.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(a.months,"M").isAfter(t)&&--a.months,a.milliseconds=+t-+e.clone().add(a.months,"M"),a}function jn(e,t){var a;return e.isValid()&&t.isValid()?(t=ln(t,e),e.isBefore(t)?a=Hn(e,t):(a=Hn(t,e),a.milliseconds=-a.milliseconds,a.months=-a.months),a):{milliseconds:0,months:0}}function xn(e,t){return function(a,n){var s,r;return null===n||isNaN(+n)||(O(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=a,a=n,n=r),a="string"===typeof a?+a:a,s=bn(a,n),On(this,s,e),this}}function On(e,t,a,n){var r=t._milliseconds,d=_n(t._days),i=_n(t._months);e.isValid()&&(n=null==n||n,i&<(e,Xe(e,"Month")+i*a),d&&et(e,"Date",Xe(e,"Date")+d*a),r&&e._d.setTime(e._d.valueOf()+r*a),n&&s.updateOffset(e,d||i))}bn.fn=rn.prototype,bn.invalid=sn;var Pn=xn(1,"add"),Wn=xn(-1,"subtract");function An(e,t){var a=e.diff(t,"days",!0);return a<-6?"sameElse":a<-1?"lastWeek":a<0?"lastDay":a<1?"sameDay":a<2?"nextDay":a<7?"nextWeek":"sameElse"}function En(e,t){var a=e||Za(),n=ln(a,this).startOf("day"),r=s.calendarFormat(this,n)||"sameElse",d=t&&(P(t[r])?t[r].call(this,a):t[r]);return this.format(d||this.localeData().calendar(r,this,Za(a)))}function Fn(){return new T(this)}function zn(e,t){var a=g(e)?e:Za(e);return!(!this.isValid()||!a.isValid())&&(t=B(t)||"millisecond","millisecond"===t?this.valueOf()>a.valueOf():a.valueOf()9999?ue(a,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):P(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",ue(a,"Z")):ue(a,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function Zn(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var a="["+e+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",s="-MM-DD[T]HH:mm:ss.SSS",r=t+'[")]';return this.format(a+n+s+r)}function $n(e){e||(e=this.isUtc()?s.defaultFormatUtc:s.defaultFormat);var t=ue(this,e);return this.localeData().postformat(t)}function qn(e,t){return this.isValid()&&(g(e)&&e.isValid()||Za(e).isValid())?bn({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Bn(e){return this.from(Za(),e)}function Qn(e,t){return this.isValid()&&(g(e)&&e.isValid()||Za(e).isValid())?bn({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function Xn(e){return this.to(Za(),e)}function es(e){var t;return void 0===e?this._locale._abbr:(t=Ya(e),null!=t&&(this._locale=t),this)}s.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",s.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ts=H("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function as(){return this._locale}var ns=1e3,ss=60*ns,rs=60*ss,ds=3506328*rs;function is(e,t){return(e%t+t)%t}function _s(e,t,a){return e<100&&e>=0?new Date(e+400,t,a)-ds:new Date(e,t,a).valueOf()}function os(e,t,a){return e<100&&e>=0?Date.UTC(e+400,t,a)-ds:Date.UTC(e,t,a)}function us(e){var t;if(e=B(e),void 0===e||"millisecond"===e||!this.isValid())return this;var a=this._isUTC?os:_s;switch(e){case"year":t=a(this.year(),0,1);break;case"quarter":t=a(this.year(),this.month()-this.month()%3,1);break;case"month":t=a(this.year(),this.month(),1);break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=a(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=is(t+(this._isUTC?0:this.utcOffset()*ss),rs);break;case"minute":t=this._d.valueOf(),t-=is(t,ss);break;case"second":t=this._d.valueOf(),t-=is(t,ns);break}return this._d.setTime(t),s.updateOffset(this,!0),this}function ms(e){var t;if(e=B(e),void 0===e||"millisecond"===e||!this.isValid())return this;var a=this._isUTC?os:_s;switch(e){case"year":t=a(this.year()+1,0,1)-1;break;case"quarter":t=a(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=a(this.year(),this.month()+1,1)-1;break;case"week":t=a(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=a(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=a(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=rs-is(t+(this._isUTC?0:this.utcOffset()*ss),rs)-1;break;case"minute":t=this._d.valueOf(),t+=ss-is(t,ss)-1;break;case"second":t=this._d.valueOf(),t+=ns-is(t,ns)-1;break}return this._d.setTime(t),s.updateOffset(this,!0),this}function ls(){return this._d.valueOf()-6e4*(this._offset||0)}function cs(){return Math.floor(this.valueOf()/1e3)}function Ms(){return new Date(this.valueOf())}function hs(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Ls(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Ys(){return this.isValid()?this.toISOString():null}function fs(){return f(this)}function ys(){return M({},Y(this))}function ks(){return Y(this).overflow}function ps(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Ds(e,t){ie(0,[e,e.length],0,t)}function Ts(e){return bs.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function gs(e){return bs.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function ws(){return wt(this.year(),1,4)}function vs(){var e=this.localeData()._week;return wt(this.year(),e.dow,e.doy)}function bs(e,t,a,n,s){var r;return null==e?gt(this,n,s).year:(r=wt(e,n,s),t>r&&(t=r),Ss.call(this,e,t,a,n,s))}function Ss(e,t,a,n,s){var r=Tt(e,t,a,n,s),d=pt(r.year,0,r.dayOfYear);return this.year(d.getUTCFullYear()),this.month(d.getUTCMonth()),this.date(d.getUTCDate()),this}function Hs(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}ie(0,["gg",2],0,function(){return this.weekYear()%100}),ie(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ds("gggg","weekYear"),Ds("ggggg","weekYear"),Ds("GGGG","isoWeekYear"),Ds("GGGGG","isoWeekYear"),q("weekYear","gg"),q("isoWeekYear","GG"),ee("weekYear",1),ee("isoWeekYear",1),je("G",ge),je("g",ge),je("GG",Ye,ce),je("gg",Ye,ce),je("GGGG",pe,he),je("gggg",pe,he),je("GGGGG",De,Le),je("ggggg",De,Le),Ee(["gggg","ggggg","GGGG","GGGGG"],function(e,t,a,n){t[n.substr(0,2)]=v(e)}),Ee(["gg","GG"],function(e,t,a,n){t[n]=s.parseTwoDigitYear(e)}),ie("Q",0,"Qo","quarter"),q("quarter","Q"),ee("quarter",7),je("Q",le),Ae("Q",function(e,t){t[Je]=3*(v(e)-1)}),ie("D",["DD",2],"Do","date"),q("date","D"),ee("date",9),je("D",Ye),je("DD",Ye,ce),je("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),Ae(["D","DD"],Ne),Ae("Do",function(e,t){t[Ne]=v(e.match(Ye)[0])});var js=Qe("Date",!0);function xs(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}ie("DDD",["DDDD",3],"DDDo","dayOfYear"),q("dayOfYear","DDD"),ee("dayOfYear",4),je("DDD",ke),je("DDDD",Me),Ae(["DDD","DDDD"],function(e,t,a){a._dayOfYear=v(e)}),ie("m",["mm",2],0,"minute"),q("minute","m"),ee("minute",14),je("m",Ye),je("mm",Ye,ce),Ae(["m","mm"],Ce);var Os=Qe("Minutes",!1);ie("s",["ss",2],0,"second"),q("second","s"),ee("second",15),je("s",Ye),je("ss",Ye,ce),Ae(["s","ss"],Ie);var Ps,Ws=Qe("Seconds",!1);for(ie("S",0,0,function(){return~~(this.millisecond()/100)}),ie(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),ie(0,["SSS",3],0,"millisecond"),ie(0,["SSSS",4],0,function(){return 10*this.millisecond()}),ie(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),ie(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),ie(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),ie(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),ie(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),q("millisecond","ms"),ee("millisecond",16),je("S",ke,le),je("SS",ke,ce),je("SSS",ke,Me),Ps="SSSS";Ps.length<=9;Ps+="S")je(Ps,Te);function As(e,t){t[Ue]=v(1e3*("0."+e))}for(Ps="S";Ps.length<=9;Ps+="S")Ae(Ps,As);var Es=Qe("Milliseconds",!1);function Fs(){return this._isUTC?"UTC":""}function zs(){return this._isUTC?"Coordinated Universal Time":""}ie("z",0,0,"zoneAbbr"),ie("zz",0,0,"zoneName");var Js=T.prototype;function Ns(e){return Za(1e3*e)}function Rs(){return Za.apply(null,arguments).parseZone()}function Cs(e){return e}Js.add=Pn,Js.calendar=En,Js.clone=Fn,Js.diff=Un,Js.endOf=ms,Js.format=$n,Js.from=qn,Js.fromNow=Bn,Js.to=Qn,Js.toNow=Xn,Js.get=tt,Js.invalidAt=ks,Js.isAfter=zn,Js.isBefore=Jn,Js.isBetween=Nn,Js.isSame=Rn,Js.isSameOrAfter=Cn,Js.isSameOrBefore=In,Js.isValid=fs,Js.lang=ts,Js.locale=es,Js.localeData=as,Js.max=qa,Js.min=$a,Js.parsingFlags=ys,Js.set=at,Js.startOf=us,Js.subtract=Wn,Js.toArray=hs,Js.toObject=Ls,Js.toDate=Ms,Js.toISOString=Kn,Js.inspect=Zn,Js.toJSON=Ys,Js.toString=Vn,Js.unix=cs,Js.valueOf=ls,Js.creationData=ps,Js.year=qe,Js.isLeapYear=Be,Js.weekYear=Ts,Js.isoWeekYear=gs,Js.quarter=Js.quarters=Hs,Js.month=ct,Js.daysInMonth=Mt,Js.week=Js.weeks=jt,Js.isoWeek=Js.isoWeeks=xt,Js.weeksInYear=vs,Js.isoWeeksInYear=ws,Js.date=js,Js.day=Js.days=It,Js.weekday=Ut,Js.isoWeekday=Gt,Js.dayOfYear=xs,Js.hour=Js.hours=ia,Js.minute=Js.minutes=Os,Js.second=Js.seconds=Ws,Js.millisecond=Js.milliseconds=Es,Js.utcOffset=Mn,Js.utc=Ln,Js.local=Yn,Js.parseZone=fn,Js.hasAlignedHourOffset=yn,Js.isDST=kn,Js.isLocal=Dn,Js.isUtcOffset=Tn,Js.isUtc=gn,Js.isUTC=gn,Js.zoneAbbr=Fs,Js.zoneName=zs,Js.dates=H("dates accessor is deprecated. Use date instead.",js),Js.months=H("months accessor is deprecated. Use month instead",ct),Js.years=H("years accessor is deprecated. Use year instead",qe),Js.zone=H("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",hn),Js.isDSTShifted=H("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",pn);var Is=E.prototype;function Us(e,t,a,n){var s=Ya(),r=h().set(n,t);return s[a](r,e)}function Gs(e,t,a){if(u(e)&&(t=e,e=void 0),e=e||"",null!=t)return Us(e,t,a,"month");var n,s=[];for(n=0;n<12;n++)s[n]=Us(e,n,a,"month");return s}function Vs(e,t,a,n){"boolean"===typeof e?(u(t)&&(a=t,t=void 0),t=t||""):(t=e,a=t,e=!1,u(t)&&(a=t,t=void 0),t=t||"");var s,r=Ya(),d=e?r._week.dow:0;if(null!=a)return Us(t,(a+d)%7,n,"day");var i=[];for(s=0;s<7;s++)i[s]=Us(t,(s+d)%7,n,"day");return i}function Ks(e,t){return Gs(e,t,"months")}function Zs(e,t){return Gs(e,t,"monthsShort")}function $s(e,t,a){return Vs(e,t,a,"weekdays")}function qs(e,t,a){return Vs(e,t,a,"weekdaysShort")}function Bs(e,t,a){return Vs(e,t,a,"weekdaysMin")}Is.calendar=z,Is.longDateFormat=N,Is.invalidDate=C,Is.ordinal=G,Is.preparse=Cs,Is.postformat=Cs,Is.relativeTime=K,Is.pastFuture=Z,Is.set=W,Is.months=it,Is.monthsShort=ot,Is.monthsParse=mt,Is.monthsRegex=ft,Is.monthsShortRegex=Lt,Is.week=vt,Is.firstDayOfYear=Ht,Is.firstDayOfWeek=St,Is.weekdays=Et,Is.weekdaysMin=Nt,Is.weekdaysShort=zt,Is.weekdaysParse=Ct,Is.weekdaysRegex=Kt,Is.weekdaysShortRegex=$t,Is.weekdaysMinRegex=Bt,Is.isPM=na,Is.meridiem=ra,Ma("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===v(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a}}),s.lang=H("moment.lang is deprecated. Use moment.locale instead.",Ma),s.langData=H("moment.langData is deprecated. Use moment.localeData instead.",Ya);var Qs=Math.abs;function Xs(){var e=this._data;return this._milliseconds=Qs(this._milliseconds),this._days=Qs(this._days),this._months=Qs(this._months),e.milliseconds=Qs(e.milliseconds),e.seconds=Qs(e.seconds),e.minutes=Qs(e.minutes),e.hours=Qs(e.hours),e.months=Qs(e.months),e.years=Qs(e.years),this}function er(e,t,a,n){var s=bn(t,a);return e._milliseconds+=n*s._milliseconds,e._days+=n*s._days,e._months+=n*s._months,e._bubble()}function tr(e,t){return er(this,e,t,1)}function ar(e,t){return er(this,e,t,-1)}function nr(e){return e<0?Math.floor(e):Math.ceil(e)}function sr(){var e,t,a,n,s,r=this._milliseconds,d=this._days,i=this._months,_=this._data;return r>=0&&d>=0&&i>=0||r<=0&&d<=0&&i<=0||(r+=864e5*nr(dr(i)+d),d=0,i=0),_.milliseconds=r%1e3,e=w(r/1e3),_.seconds=e%60,t=w(e/60),_.minutes=t%60,a=w(t/60),_.hours=a%24,d+=w(a/24),s=w(rr(d)),i+=s,d-=nr(dr(s)),n=w(i/12),i%=12,_.days=d,_.months=i,_.years=n,this}function rr(e){return 4800*e/146097}function dr(e){return 146097*e/4800}function ir(e){if(!this.isValid())return NaN;var t,a,n=this._milliseconds;if(e=B(e),"month"===e||"quarter"===e||"year"===e)switch(t=this._days+n/864e5,a=this._months+rr(t),e){case"month":return a;case"quarter":return a/3;case"year":return a/12}else switch(t=this._days+Math.round(dr(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}}function _r(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*v(this._months/12):NaN}function or(e){return function(){return this.as(e)}}var ur=or("ms"),mr=or("s"),lr=or("m"),cr=or("h"),Mr=or("d"),hr=or("w"),Lr=or("M"),Yr=or("Q"),fr=or("y");function yr(){return bn(this)}function kr(e){return e=B(e),this.isValid()?this[e+"s"]():NaN}function pr(e){return function(){return this.isValid()?this._data[e]:NaN}}var Dr=pr("milliseconds"),Tr=pr("seconds"),gr=pr("minutes"),wr=pr("hours"),vr=pr("days"),br=pr("months"),Sr=pr("years");function Hr(){return w(this.days()/7)}var jr=Math.round,xr={ss:44,s:45,m:45,h:22,d:26,M:11};function Or(e,t,a,n,s){return s.relativeTime(t||1,!!a,e,n)}function Pr(e,t,a){var n=bn(e).abs(),s=jr(n.as("s")),r=jr(n.as("m")),d=jr(n.as("h")),i=jr(n.as("d")),_=jr(n.as("M")),o=jr(n.as("y")),u=s<=xr.ss&&["s",s]||s0,u[4]=a,Or.apply(null,u)}function Wr(e){return void 0===e?jr:"function"===typeof e&&(jr=e,!0)}function Ar(e,t){return void 0!==xr[e]&&(void 0===t?xr[e]:(xr[e]=t,"s"===e&&(xr.ss=t-1),!0))}function Er(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),a=Pr(this,!e,t);return e&&(a=t.pastFuture(+this,a)),t.postformat(a)}var Fr=Math.abs;function zr(e){return(e>0)-(e<0)||+e}function Jr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,a,n=Fr(this._milliseconds)/1e3,s=Fr(this._days),r=Fr(this._months);e=w(n/60),t=w(e/60),n%=60,e%=60,a=w(r/12),r%=12;var d=a,i=r,_=s,o=t,u=e,m=n?n.toFixed(3).replace(/\.?0+$/,""):"",l=this.asSeconds();if(!l)return"P0D";var c=l<0?"-":"",M=zr(this._months)!==zr(l)?"-":"",h=zr(this._days)!==zr(l)?"-":"",L=zr(this._milliseconds)!==zr(l)?"-":"";return c+"P"+(d?M+d+"Y":"")+(i?M+i+"M":"")+(_?h+_+"D":"")+(o||u||m?"T":"")+(o?L+o+"H":"")+(u?L+u+"M":"")+(m?L+m+"S":"")}var Nr=rn.prototype;return Nr.isValid=nn,Nr.abs=Xs,Nr.add=tr,Nr.subtract=ar,Nr.as=ir,Nr.asMilliseconds=ur,Nr.asSeconds=mr,Nr.asMinutes=lr,Nr.asHours=cr,Nr.asDays=Mr,Nr.asWeeks=hr,Nr.asMonths=Lr,Nr.asQuarters=Yr,Nr.asYears=fr,Nr.valueOf=_r,Nr._bubble=sr,Nr.clone=yr,Nr.get=kr,Nr.milliseconds=Dr,Nr.seconds=Tr,Nr.minutes=gr,Nr.hours=wr,Nr.days=vr,Nr.weeks=Hr,Nr.months=br,Nr.years=Sr,Nr.humanize=Er,Nr.toISOString=Jr,Nr.toString=Jr,Nr.toJSON=Jr,Nr.locale=es,Nr.localeData=as,Nr.toIsoString=H("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Jr),Nr.lang=ts,ie("X",0,0,"unix"),ie("x",0,0,"valueOf"),je("x",ge),je("X",be),Ae("X",function(e,t,a){a._d=new Date(1e3*parseFloat(e,10))}),Ae("x",function(e,t,a){a._d=new Date(v(e))}),s.version="2.24.0",r(Za),s.fn=Js,s.min=Qa,s.max=Xa,s.now=en,s.utc=h,s.unix=Ns,s.months=Ks,s.isDate=m,s.locale=Ma,s.invalid=y,s.duration=bn,s.isMoment=g,s.weekdays=$s,s.parseZone=Rs,s.localeData=Ya,s.isDuration=dn,s.monthsShort=Zs,s.weekdaysMin=Bs,s.defineLocale=ha,s.updateLocale=La,s.locales=fa,s.weekdaysShort=qs,s.normalizeUnits=B,s.relativeTimeRounding=Wr,s.relativeTimeThreshold=Ar,s.calendarFormat=An,s.prototype=Js,s.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},s})}).call(this,a("62e4")(e))},c7aa:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10===0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,a){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?a?'לפנה"צ':"לפני הצהריים":e<18?a?'אחה"צ':"אחרי הצהריים":"בערב"}});return t})},c8f3:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,a){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})},cdab:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},cf1e:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,a,n){var s=t.words[n];return 1===n.length?a?s[0]:s[1]:e+" "+t.correctGrammaticalCase(e,s)}},a=e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var e=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return e[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return a})},cf51:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,a){return e>11?a?"d'o":"D'O":a?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});function a(e,t,a,n){var s={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return n?s[a][0]:t?s[a][0]:s[a][1]}return t})},cf75:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function a(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq",t}function n(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret",t}function s(e,t,a,n){var s=r(e);switch(a){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}function r(e){var a=Math.floor(e%1e3/100),n=Math.floor(e%100/10),s=e%10,r="";return a>0&&(r+=t[a]+"vatlh"),n>0&&(r+=(""!==r?" ":"")+t[n]+"maH"),s>0&&(r+=(""!==r?" ":"")+t[s]),""===r?"pagh":r}var d=e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:a,past:n,s:"puS lup",ss:s,m:"wa’ tup",mm:s,h:"wa’ rep",hh:s,d:"wa’ jaj",dd:s,M:"wa’ jar",MM:s,y:"wa’ DIS",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d})},d26a:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},a={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"},n=e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,a){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}});return n})},d2d4:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"});return t})},d6b6:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}});return t})},d716:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var a=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(a="a"),e+a},week:{dow:1,doy:4}});return t})},d9f8:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}});return t})},db29:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,r=e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?a[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return r})},dc4d:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},a={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},n=e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}});return n})},e0c5:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},a={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"},n=e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}});return n})},e1d3:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},e81d:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},a={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"},n=e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,a){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}});return n})},ebe4:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,a){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return t})},ec18:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";function t(e,t,a,n){var s={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?s[a][2]?s[a][2]:s[a][1]:n?s[a][0]:s[a][1]}var a=e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a})},eda5:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,a){return e>11?a?"ප.ව.":"පස් වරු":a?"පෙ.ව.":"පෙර වරු"}});return t})},f260:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t})},f3ff:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},a={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"},n=e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return a[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,a){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}});return n})},f6b46:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],a=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],n=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],s=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],r=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],d=e.defineLocale("gd",{months:t,monthsShort:a,monthsParseExact:!0,weekdays:n,weekdaysShort:s,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){var t=1===e?"d":e%10===2?"na":"mh";return e+t},week:{dow:1,doy:4}});return d})},facd:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),a="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],s=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,r=e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?a[e.month()]:t[e.month()]:t},monthsRegex:s,monthsShortRegex:s,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}});return r})},fd7e:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,a=1===~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th";return e+a},week:{dow:1,doy:4}});return t})},ffff:function(e,t,a){(function(e,t){t(a("c1df"))})(0,function(e){"use strict";var t=e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return t})}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-c5bf9d5c.e162d642.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-c5bf9d5c.e162d642.js new file mode 100644 index 000000000..3c2ab33f7 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-c5bf9d5c.e162d642.js @@ -0,0 +1,8 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-c5bf9d5c"],{"0960":function(t,e,r){t.exports=r("b19a")},1:function(t,e){},"1fb5":function(t,e,r){"use strict";e.byteLength=h,e.toByteArray=c,e.fromByteArray=g;for(var n=[],i=[],o="undefined"!==typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");-1===r&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function h(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n}function l(t,e,r){return 3*(e+r)/4-r}function c(t){for(var e,r=f(t),n=r[0],a=r[1],s=new o(l(t,n,a)),u=0,h=a>0?n-4:n,c=0;c>16&255,s[u++]=e>>8&255,s[u++]=255&e;return 2===a&&(e=i[t.charCodeAt(c)]<<2|i[t.charCodeAt(c+1)]>>4,s[u++]=255&e),1===a&&(e=i[t.charCodeAt(c)]<<10|i[t.charCodeAt(c+1)]<<4|i[t.charCodeAt(c+2)]>>2,s[u++]=e>>8&255,s[u++]=255&e),s}function d(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function p(t,e,r){for(var n,i=[],o=e;ou?u:s+a));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},2:function(t,e){},"27bf":function(t,e,r){"use strict";t.exports=a;var n=r("b19a"),i=r("3a7c");function o(t,e){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=e&&this.push(e),n(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return t}}),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),w(r)?n.showHidden=r:r&&e._extend(n,r),R(n.showHidden)&&(n.showHidden=!1),R(n.depth)&&(n.depth=2),R(n.colors)&&(n.colors=!1),R(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),l(n,t,n.depth)}function u(t,e){var r=s.styles[e];return r?"["+s.colors[r][0]+"m"+t+"["+s.colors[r][1]+"m":t}function f(t,e){return t}function h(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function l(t,r,n){if(t.customInspect&&r&&O(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return S(i)||(i=l(t,i,n)),i}var o=c(t,r);if(o)return o;var a=Object.keys(r),s=h(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),k(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return d(r);if(0===a.length){if(O(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(x(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(A(r))return t.stylize(Date.prototype.toString.call(r),"date");if(k(r))return d(r)}var f,w="",v=!1,m=["{","}"];if(b(r)&&(v=!0,m=["[","]"]),O(r)){var _=r.name?": "+r.name:"";w=" [Function"+_+"]"}return x(r)&&(w=" "+RegExp.prototype.toString.call(r)),A(r)&&(w=" "+Date.prototype.toUTCString.call(r)),k(r)&&(w=" "+d(r)),0!==a.length||v&&0!=r.length?n<0?x(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),f=v?p(t,r,n,s,a):a.map(function(e){return g(t,r,n,s,e,v)}),t.seen.pop(),y(f,w,m)):m[0]+w+m[1]}function c(t,e){if(R(e))return t.stylize("undefined","undefined");if(S(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return _(e)?t.stylize(""+e,"number"):w(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function d(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i){for(var o=[],a=0,s=e.length;a-1&&(s=o?s.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+s.split("\n").map(function(t){return" "+t}).join("\n"))):s=t.stylize("[Circular]","special")),R(a)){if(o&&i.match(/^\d+$/))return s;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+s}function y(t,e,r){var n=t.reduce(function(t,e){return 0,e.indexOf("\n")>=0&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function b(t){return Array.isArray(t)}function w(t){return"boolean"===typeof t}function v(t){return null===t}function m(t){return null==t}function _(t){return"number"===typeof t}function S(t){return"string"===typeof t}function E(t){return"symbol"===typeof t}function R(t){return void 0===t}function x(t){return T(t)&&"[object RegExp]"===j(t)}function T(t){return"object"===typeof t&&null!==t}function A(t){return T(t)&&"[object Date]"===j(t)}function k(t){return T(t)&&("[object Error]"===j(t)||t instanceof Error)}function O(t){return"function"===typeof t}function P(t){return null===t||"boolean"===typeof t||"number"===typeof t||"string"===typeof t||"symbol"===typeof t||"undefined"===typeof t}function j(t){return Object.prototype.toString.call(t)}function M(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(r){if(R(o)&&(o=Object({VUE_APP_BUILD_ENV:"emqx",NODE_ENV:"production",BASE_URL:"/"}).NODE_DEBUG||""),r=r.toUpperCase(),!a[r])if(new RegExp("\\b"+r+"\\b","i").test(o)){var n=t.pid;a[r]=function(){var t=e.format.apply(e,arguments);console.error("%s %d: %s",r,n,t)}}else a[r]=function(){};return a[r]},e.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=b,e.isBoolean=w,e.isNull=v,e.isNullOrUndefined=m,e.isNumber=_,e.isString=S,e.isSymbol=E,e.isUndefined=R,e.isRegExp=x,e.isObject=T,e.isDate=A,e.isError=k,e.isFunction=O,e.isPrimitive=P,e.isBuffer=r("d60a");var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function B(){var t=new Date,e=[M(t.getHours()),M(t.getMinutes()),M(t.getSeconds())].join(":");return[t.getDate(),C[t.getMonth()],e].join(" ")}function L(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",B(),e.format.apply(e,arguments))},e.inherits=r("3fb5"),e._extend=function(t,e){if(!e||!T(e))return t;var r=Object.keys(e),n=r.length;while(n--)t[r[n]]=e[r[n]];return t};var U="undefined"!==typeof Symbol?Symbol("util.promisify.custom"):void 0;function D(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}function N(e){if("function"!==typeof e)throw new TypeError('The "original" argument must be of type Function');function r(){for(var r=[],n=0;n0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";var e=this.head,r=""+e.data;while(e=e.next)r+=t+e.data;return r},t.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;var e=i.allocUnsafe(t>>>0),r=this.head,n=0;while(r)a(r.data,e,n),n+=r.data.length,r=r.next;return e},t}(),o&&o.inspect&&o.inspect.custom&&(t.exports.prototype[o.inspect.custom]=function(){var t=o.inspect({length:this.length});return this.constructor.name+" "+t})},"780f":function(t,e,r){"use strict";t.exports=o;var n=r("27bf"),i=r("3a7c");function o(t){if(!(this instanceof o))return new o(t);n.call(this,t)}i.inherits=r("3fb5"),i.inherits(o,n),o.prototype._transform=function(t,e,r){r(null,t)}},"7d72":function(t,e,r){"use strict";var n=r("8707").Buffer,i=n.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){if(!t)return"utf8";var e;while(1)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function a(t){var e=o(t);if("string"!==typeof e&&(n.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}function s(t){var e;switch(this.encoding=a(t),this.encoding){case"utf16le":this.text=p,this.end=g,e=4;break;case"utf8":this.fillLast=l,e=4;break;case"base64":this.text=y,this.end=b,e=3;break;default:return this.write=w,void(this.end=v)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(e)}function u(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function f(t,e,r){var n=e.length-1;if(n=0?(i>0&&(t.lastNeed=i-1),i):--n=0?(i>0&&(t.lastNeed=i-2),i):--n=0?(i>0&&(2===i?i=0:t.lastNeed=i-3),i):0))}function h(t,e,r){if(128!==(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!==(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!==(192&e[2]))return t.lastNeed=2,"�"}}function l(t){var e=this.lastTotal-this.lastNeed,r=h(this,t,e);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function c(t,e){var r=f(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e}function p(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function g(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function y(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function b(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function w(t){return t.toString(this.encoding)}function v(t){return t&&t.length?this.write(t):""}e.StringDecoder=s,s.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),void 0===e)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>1,h=-7,l=r?i-1:0,c=r?-1:1,d=t[e+l];for(l+=c,o=d&(1<<-h)-1,d>>=-h,h+=s;h>0;o=256*o+t[e+l],l+=c,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+l],l+=c,h-=8);if(0===o)o=1-f;else{if(o===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),o-=f}return(d?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,u,f=8*o-i-1,h=(1<>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+l>=1?c/u:c*Math.pow(2,1-l),e*u>=2&&(a++,u/=2),a+l>=h?(s=0,a=h):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[r+d]=255&s,d+=p,s/=256,i-=8);for(a=a<0;t[r+d]=255&a,d+=p,a/=256,f-=8);t[r+d-p]|=128*g}},"966d":function(t,e,r){"use strict";(function(e){function r(t,r,n,i){if("function"!==typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:o=new Array(s-1),a=0;while(a0?("string"===typeof e||a.objectMode||Object.getPrototypeOf(e)===f.prototype||(e=l(e)),n?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):R(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?R(t,a,e,!1):C(t,a)):R(t,a,e,!1))):n||(a.reading=!1));return T(a)}function R(t,e,r,n){e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,n?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&j(t)),C(t,e)}function x(t,e){var r;return c(e)||"string"===typeof e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function T(t){return!t.ended&&(t.needReadable||t.length=A?t=A:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function O(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=k(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function P(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,j(t)}}function j(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(g("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(M,t):M(t))}function M(t){g("emit readable"),t.emit("readable"),I(t)}function C(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(B,t,e))}function B(t,e){var r=e.length;while(!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=F(t,e.buffer,e.decoder),r);var r}function F(t,e,r){var n;return to.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function q(t,e){var r=f.allocUnsafe(t),n=e.head,i=1;n.data.copy(r),t-=n.data.length;while(n=n.next){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function z(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(H,e,t))}function H(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function J(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return g("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?z(this):j(this),null;if(t=O(t,e),0===t&&e.ended)return 0===e.length&&z(this),null;var n,i=e.needReadable;return g("need readable",i),(0===e.length||e.length-t0?Y(t,e):null,null===n?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&z(this)),null!==n&&this.emit("data",n),n},S.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},S.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,g("pipe count=%d opts=%j",o.pipesCount,e);var a=(!e||!1!==e.end)&&t!==n.stdout&&t!==n.stderr,u=a?h:_;function f(t,e){g("onunpipe"),t===r&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,d())}function h(){g("onend"),t.end()}o.endEmitted?i.nextTick(u):r.once("end",u),t.on("unpipe",f);var l=L(r);t.on("drain",l);var c=!1;function d(){g("cleanup"),t.removeListener("close",w),t.removeListener("finish",v),t.removeListener("drain",l),t.removeListener("error",b),t.removeListener("unpipe",f),r.removeListener("end",h),r.removeListener("end",_),r.removeListener("data",y),c=!0,!o.awaitDrain||t._writableState&&!t._writableState.needDrain||l()}var p=!1;function y(e){g("ondata"),p=!1;var n=t.write(e);!1!==n||p||((1===o.pipesCount&&o.pipes===t||o.pipesCount>1&&-1!==J(o.pipes,t))&&!c&&(g("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,p=!0),r.pause())}function b(e){g("onerror",e),_(),t.removeListener("error",b),0===s(t,"error")&&t.emit("error",e)}function w(){t.removeListener("finish",v),_()}function v(){g("onfinish"),t.removeListener("close",w),_()}function _(){g("unpipe"),r.unpipe(t)}return r.on("data",y),m(t,"error",b),t.once("close",w),t.once("finish",v),t.emit("pipe",r),o.flowing||(g("pipe resume"),r.resume()),t},S.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o + * @license MIT + */ +var n=r("1fb5"),i=r("9152"),o=r("e3db");function a(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"===typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(e){return!1}}function s(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,e){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function v(t){return+t!=t&&(t=0),f.alloc(+t)}function m(t,e){if(f.isBuffer(t))return t.length;if("undefined"!==typeof ArrayBuffer&&"function"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!==typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Z(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Q(t).length;default:if(n)return Z(t).length;e=(""+e).toLowerCase(),n=!0}}function _(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";t||(t="utf8");while(1)switch(t){case"hex":return D(this,e,r);case"utf8":case"utf-8":return M(this,e,r);case"ascii":return L(this,e,r);case"latin1":case"binary":return U(this,e,r);case"base64":return j(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function S(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function E(t,e,r,n,i){if(0===t.length)return-1;if("string"===typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"===typeof e&&(e=f.from(e,n)),f.isBuffer(e))return 0===e.length?-1:R(t,e,r,n,i);if("number"===typeof e)return e&=255,f.TYPED_ARRAY_SUPPORT&&"function"===typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):R(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function R(t,e,r,n,i){var o,a=1,s=t.length,u=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,r/=2}function f(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var h=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){for(var l=!0,c=0;ci&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a239?4:f>223?3:f>191?2:1;if(i+l<=r)switch(l){case 1:f<128&&(h=f);break;case 2:o=t[i+1],128===(192&o)&&(u=(31&f)<<6|63&o,u>127&&(h=u));break;case 3:o=t[i+1],a=t[i+2],128===(192&o)&&128===(192&a)&&(u=(15&f)<<12|(63&o)<<6|63&a,u>2047&&(u<55296||u>57343)&&(h=u));break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128===(192&o)&&128===(192&a)&&128===(192&s)&&(u=(15&f)<<18|(63&o)<<12|(63&a)<<6|63&s,u>65535&&u<1114112&&(h=u))}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return B(n)}e.Buffer=f,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,f.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:a(),e.kMaxLength=s(),f.poolSize=8192,f._augment=function(t){return t.__proto__=f.prototype,t},f.from=function(t,e,r){return h(null,t,e,r)},f.TYPED_ARRAY_SUPPORT&&(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,"undefined"!==typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})),f.alloc=function(t,e,r){return c(null,t,e,r)},f.allocUnsafe=function(t){return d(null,t)},f.allocUnsafeSlow=function(t){return d(null,t)},f.isBuffer=function(t){return!(null==t||!t._isBuffer)},f.compare=function(t,e){if(!f.isBuffer(t)||!f.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},f.prototype.compare=function(t,e,r,n,i){if(!f.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,a=r-e,s=Math.min(o,a),u=this.slice(n,i),h=t.slice(e,r),l=0;li)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return x(this,t,e,r);case"utf8":case"utf-8":return T(this,t,e,r);case"ascii":return A(this,t,e,r);case"latin1":case"binary":return k(this,t,e,r);case"base64":return O(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function B(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r="",n=0;while(nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function Y(t,e,r,n,i,o){if(!f.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function W(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function q(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function z(t,e,r,n,o){return o||q(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),i.write(t,e,r,n,23,4),r+4}function H(t,e,r,n,o){return o||q(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),i.write(t,e,r,n,52,8),r+8}f.prototype.slice=function(t,e){var r,n=this.length;if(t=~~t,e=void 0===e?n:~~e,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),e0&&(i*=256))n+=this[t+--e]*i;return n},f.prototype.readUInt8=function(t,e){return e||I(t,1,this.length),this[t]},f.prototype.readUInt16LE=function(t,e){return e||I(t,2,this.length),this[t]|this[t+1]<<8},f.prototype.readUInt16BE=function(t,e){return e||I(t,2,this.length),this[t]<<8|this[t+1]},f.prototype.readUInt32LE=function(t,e){return e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},f.prototype.readUInt32BE=function(t,e){return e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},f.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);var n=this[t],i=1,o=0;while(++o=i&&(n-=Math.pow(2,8*e)),n},f.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);var n=e,i=1,o=this[t+--n];while(n>0&&(i*=256))o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},f.prototype.readInt8=function(t,e){return e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},f.prototype.readInt16LE=function(t,e){e||I(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt16BE=function(t,e){e||I(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt32LE=function(t,e){return e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},f.prototype.readInt32BE=function(t,e){return e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},f.prototype.readFloatLE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!0,23,4)},f.prototype.readFloatBE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!1,23,4)},f.prototype.readDoubleLE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!0,52,8)},f.prototype.readDoubleBE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!1,52,8)},f.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;Y(this,t,e,r,i,0)}var o=1,a=0;this[e]=255&t;while(++a=0&&(a*=256))this[e+o]=t/a&255;return e+r},f.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,1,255,0),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},f.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},f.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},f.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):W(this,t,e,!0),e+4},f.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):W(this,t,e,!1),e+4},f.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);Y(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;this[e]=255&t;while(++o>0)-s&255;return e+r},f.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);Y(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;this[e+o]=255&t;while(--o>=0&&(a*=256))t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},f.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,1,127,-128),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},f.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},f.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},f.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):W(this,t,e,!0),e+4},f.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||Y(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),f.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):W(this,t,e,!1),e+4},f.prototype.writeFloatLE=function(t,e,r){return z(this,t,e,!0,r)},f.prototype.writeFloatBE=function(t,e,r){return z(this,t,e,!1,r)},f.prototype.writeDoubleLE=function(t,e,r){return H(this,t,e,!0,r)},f.prototype.writeDoubleBE=function(t,e,r){return H(this,t,e,!1,r)},f.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"===typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function K(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n)}return o}function Q(t){return n.toByteArray(V(t))}function tt(t,e,r,n){for(var i=0;i=e.length||i>=t.length)break;e[i+r]=t[i]}return i}function et(t){return t!==t}}).call(this,r("c8ba"))},b7d1:function(t,e,r){(function(e){function r(t,e){if(n("noDeprecation"))return t;var r=!1;function i(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}return i}function n(t){try{if(!e.localStorage)return!1}catch(n){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=r}).call(this,r("c8ba"))},d60a:function(t,e){t.exports=function(t){return t&&"object"===typeof t&&"function"===typeof t.copy&&"function"===typeof t.fill&&"function"===typeof t.readUInt8}},dc14:function(t,e,r){"use strict";(function(e,n){var i=r("966d");function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){U(e,t)}}t.exports=v;var a,s=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?setImmediate:i.nextTick;v.WritableState=w;var u=r("3a7c");u.inherits=r("3fb5");var f={deprecate:r("b7d1")},h=r("429b"),l=r("8707").Buffer,c=n.Uint8Array||function(){};function d(t){return l.from(t)}function p(t){return l.isBuffer(t)||t instanceof c}var g,y=r("4681");function b(){}function w(t,e){a=a||r("b19a"),t=t||{};var n=e instanceof a;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,s=t.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var f=!1===t.decodeStrings;this.decodeStrings=!f,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){A(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){if(a=a||r("b19a"),!g.call(v,this)&&!(this instanceof a))return new v(t);this._writableState=new w(t,this),this.writable=!0,t&&("function"===typeof t.write&&(this._write=t.write),"function"===typeof t.writev&&(this._writev=t.writev),"function"===typeof t.destroy&&(this._destroy=t.destroy),"function"===typeof t.final&&(this._final=t.final)),h.call(this)}function m(t,e){var r=new Error("write after end");t.emit("error",r),i.nextTick(e,r)}function _(t,e,r,n){var o=!0,a=!1;return null===r?a=new TypeError("May not write null values to stream"):"string"===typeof r||void 0===r||e.objectMode||(a=new TypeError("Invalid non-string/buffer chunk")),a&&(t.emit("error",a),i.nextTick(n,a),o=!1),o}function S(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!==typeof e||(e=l.from(e,r)),e}function E(t,e,r,n,i,o){if(!r){var a=S(e,n,i);n!==a&&(r=!0,i="buffer",n=a)}var s=e.objectMode?1:n.length;e.length+=s;var u=e.length-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new Error("_write() is not implemented"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var n=this._writableState;"function"===typeof t?(r=t,t=null,e=null):"function"===typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||L(this,n,r)},Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=y.destroy,v.prototype._undestroy=y.undestroy,v.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,r("f28c"),r("c8ba"))},e372:function(t,e,r){e=t.exports=r("ad71"),e.Stream=e,e.Readable=e,e.Writable=r("dc14"),e.Duplex=r("b19a"),e.Transform=r("27bf"),e.PassThrough=r("780f")},e3db:function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},faa1:function(t,e,r){"use strict";var n,i="object"===typeof Reflect?Reflect:null,o=i&&"function"===typeof i.apply?i.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};function a(t){console&&console.warn&&console.warn(t)}n=i&&"function"===typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var s=Number.isNaN||function(t){return t!==t};function u(){u.init.call(this)}t.exports=u,u.EventEmitter=u,u.prototype._events=void 0,u.prototype._eventsCount=0,u.prototype._maxListeners=void 0;var f=10;function h(t){return void 0===t._maxListeners?u.defaultMaxListeners:t._maxListeners}function l(t,e,r,n){var i,o,s;if("function"!==typeof r)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r);if(o=t._events,void 0===o?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"===typeof s?s=o[e]=n?[r,s]:[s,r]:n?s.unshift(r):s.push(r),i=h(t),i>0&&s.length>i&&!s.warned){s.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=s.length,a(u)}return t}function c(){for(var t=[],e=0;e0&&(a=e[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var u=i[t];if(void 0===u)return!1;if("function"===typeof u)o(u,this,e);else{var f=u.length,h=y(u,f);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){a=r[o].listener,i=o;break}if(i<0)return this;0===i?r.shift():b(r,i),1===r.length&&(n[t]=r[0]),void 0!==n.removeListener&&this.emit("removeListener",t,a||e)}return this},u.prototype.off=u.prototype.removeListener,u.prototype.removeAllListeners=function(t){var e,r,n;if(r=this._events,void 0===r)return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[t]&&(0===--this._eventsCount?this._events=Object.create(null):delete r[t]),this;if(0===arguments.length){var i,o=Object.keys(r);for(n=0;n=0;n--)this.removeListener(t,e[n]);return this},u.prototype.listeners=function(t){return p(this,t,!0)},u.prototype.rawListeners=function(t){return p(this,t,!1)},u.listenerCount=function(t,e){return"function"===typeof t.listenerCount?t.listenerCount(e):g.call(t,e)},u.prototype.listenerCount=g,u.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-cfe3eeda.9f42fde3.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-cfe3eeda.9f42fde3.js new file mode 100644 index 000000000..e85f1942f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-cfe3eeda.9f42fde3.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-cfe3eeda"],{"101d":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"clients"},[n("page-header",[n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("Clients.currentConnection"))+"\n "),n("emq-select",{staticClass:"node-select",attrs:{size:"small",field:{options:e.currentNodes},"field-name":{label:"name",value:"node"}},on:{change:e.handleNodeChange},model:{value:e.nodeName,callback:function(t){e.nodeName=t},expression:"nodeName"}})],1)])]),n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[n("div",{staticClass:"emq-table-header"},[n("el-row",{staticClass:"search-wrapper",attrs:{gutter:20}},[n("el-col",{attrs:{span:8}},[n("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.clientId")},model:{value:e.fuzzyParams._like_clientid,callback:function(t){e.$set(e.fuzzyParams,"_like_clientid",t)},expression:"fuzzyParams._like_clientid"}})],1),n("el-col",{attrs:{span:8}},[n("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.username")},model:{value:e.fuzzyParams._like_username,callback:function(t){e.$set(e.fuzzyParams,"_like_username",t)},expression:"fuzzyParams._like_username"}})],1),e.showMoreQuery?[n("el-col",{attrs:{span:8}},[n("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.ipAddress")},model:{value:e.fuzzyParams.ip_address,callback:function(t){e.$set(e.fuzzyParams,"ip_address",t)},expression:"fuzzyParams.ip_address"}})],1),n("el-col",{attrs:{span:8}},[n("el-select",{attrs:{size:"small",placeholder:e.$t("Clients.connectedStatus")},model:{value:e.fuzzyParams.conn_state,callback:function(t){e.$set(e.fuzzyParams,"conn_state",t)},expression:"fuzzyParams.conn_state"}},[n("el-option",{attrs:{value:"connected"}}),n("el-option",{attrs:{value:"disconnected"}})],1)],1),n("el-col",{attrs:{span:8}},[n("el-row",{staticClass:"form-item-row"},[n("el-col",{attrs:{span:8}},[n("el-select",{staticClass:"comparator",attrs:{size:"small"},model:{value:e.fuzzyParams.comparator,callback:function(t){e.$set(e.fuzzyParams,"comparator",t)},expression:"fuzzyParams.comparator"}},[n("el-option",{attrs:{label:">=",value:"_gte"}}),n("el-option",{attrs:{label:"<=",value:"_lte"}})],1)],1),n("el-col",{attrs:{span:16}},[n("el-date-picker",{staticClass:"datatime",attrs:{type:"datetime","value-format":"timestamp",size:"small",placeholder:e.$t("Clients.createdAt")},model:{value:e.fuzzyParams._connected_at,callback:function(t){e.$set(e.fuzzyParams,"_connected_at",t)},expression:"fuzzyParams._connected_at"}})],1)],1)],1),n("el-col",{attrs:{span:8}},[n("el-select",{attrs:{size:"small",placeholder:e.$t("Clients.protocol")},model:{value:e.fuzzyParams.proto_name,callback:function(t){e.$set(e.fuzzyParams,"proto_name",t)},expression:"fuzzyParams.proto_name"}},e._l(e.protoNames,function(e){return n("el-option",{key:e,attrs:{value:e}})}),1)],1)]:e._e(),n("div",{staticClass:"col-oper"},[n("el-button",{attrs:{type:"primary",icon:"el-icon-search",size:"small"},on:{click:e.handleSearch}},[e._v("\n "+e._s(e.$t("Clients.search"))+"\n ")]),n("el-button",{attrs:{plain:"",size:"small",icon:e.resetIcon},on:{click:e.resetSearch}},[e._v("\n "+e._s(e.$t("Clients.reset"))+"\n ")]),n("a",{staticClass:"show-more",attrs:{href:"javascript:;"},on:{click:function(t){e.showMoreQuery=!e.showMoreQuery}}},[e._v("\n "+e._s(e.showMoreQuery?e.$t("Clients.collapse"):e.$t("Clients.expand"))+"\n "),n("i",{class:e.showMoreQuery?"el-icon-arrow-up":"el-icon-arrow-down"})])],1)],2)],1),n("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[n("el-table-column",{attrs:{prop:"clientid","min-width":"130px",label:e.$t("Clients.clientId")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("router-link",{attrs:{to:{path:"/clients/detail",query:{clientid:a.clientid}}}},[e._v("\n "+e._s(a.clientid)+"\n ")])]}}])}),n("el-table-column",{attrs:{prop:"username","min-width":"120px",label:e.$t("Clients.username")}}),n("el-table-column",{attrs:{prop:"ipaddress","min-width":"120px",label:e.$t("Clients.ipAddress")},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[e._v(" "+e._s(n.ip_address)+":"+e._s(n.port)+" ")]}}])}),n("el-table-column",{attrs:{prop:"keepalive",label:e.$t("Clients.keepalive")}}),n("el-table-column",{attrs:{prop:"proto_name","filter-placement":"bottom",filters:e.filterOptions.protoName,"filter-method":e.protoNameColumnFilter,label:e.$t("Clients.protocol")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("span",{},[e._v("\n "+e._s(a.proto_name)+"\n ")])]}}])}),n("el-table-column",{attrs:{prop:"connected","min-width":"100px",label:e.$t("Clients.connectedStatus")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("a-badge",{attrs:{"is-dot":"",status:a.connected?"success":"error",text:a.connected?e.$t("Clients.connected"):e.$t("Clients.disconnected")}})]}}])}),n("el-table-column",{attrs:{prop:"connected_at","min-width":"140px",label:e.$t("Clients.connectionAt")}}),n("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("el-button",{attrs:{size:"mini",type:"dashed"},on:{click:function(t){return e.handleDisconnect(a)}}},[e._v("\n "+e._s(a.connected?e.$t("Clients.kickOut"):e.$t("Clients.cleanSession"))+"\n ")])]}}])})],1),n("div",{staticClass:"emq-table-footer"},[e.count>10?n("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[20,50,100,500],"page-size":e.params._limit,"current-page":e.params._page,total:e.count},on:{"update:pageSize":function(t){return e.$set(e.params,"_limit",t)},"update:page-size":function(t){return e.$set(e.params,"_limit",t)},"update:currentPage":function(t){return e.$set(e.params,"_page",t)},"update:current-page":function(t){return e.$set(e.params,"_page",t)},"size-change":e.handleSizeChange,"current-change":e.handleCurrentPageChange}}):e._e(),-1===e.count&&e.tableData.length?n("custom-pagination",{attrs:{hasnext:e.hasnext,page:e.params._page},on:{prevClick:e.handlePrevClick,nextClick:e.handleNextClick}}):e._e()],1)],1)],1)],1)},s=[],r=n("cebc"),i=(n("96cf"),n("3b8d")),o=n("806e"),c=n("d19d"),l=n("2934"),u={name:"Clients",components:{CustomPagination:o["a"]},data:function(){return{listLoading:!0,showMoreQuery:!1,tableData:[],hasnext:!1,params:{_page:1,_limit:20},count:0,filterOptions:{protoName:["MQTT","MQTT-SN","CoAP","LwM2M","Stomp"].map(function(e){return{text:e,value:e}})},nodeName:"",currentNodes:[],resetIcon:"el-icon-refresh",fuzzyParams:{comparator:"_gte"},protoNames:["MQTT","MQTT-SN","CoAP","LwM2M"]}},created:function(){this.loadData()},methods:{handleNodeChange:function(){this.loadNodeClients(!0)},handleDisconnect:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var n,a,s=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:n=this.$t("Clients.willDisconnectTheConnection"),a=this.$t("Clients.successfulDisconnection"),t.connected||(n=this.$t("Clients.willCleanSession"),a=this.$t("Clients.successfulCleanSession")),this.$msgbox.confirm(n,{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["a"])(t.clientid);case 2:s.loadNodeClients(),s.$message.success(a);case 4:case"end":return e.stop()}},e)}))).catch(function(){});case 4:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),resetSearch:function(){this.resetIcon="el-icon-loading",this.fuzzyParams={comparator:"_gte"},this.loadNodeClients(!0)},handleSearch:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:t=this.genQueryParams(this.fuzzyParams),this.count=0,this.loadNodeClients(!0,t);case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),genQueryParams:function(e){var t={},n=e._like_clientid,a=e._like_username,s=e.ip_address,r=e.conn_state,i=e.proto_name,o=e.comparator,c=e._connected_at;if(t={_like_clientid:n||void 0,_like_username:a||void 0,ip_address:s||void 0,conn_state:r||void 0,proto_name:i||void 0},c){var l="".concat(o,"_connected_at");t[l]=Math.floor(c/1e3)}return t},handleSizeChange:function(){this.loadNodeClients(!0)},handleCurrentPageChange:function(){this.loadNodeClients()},handlePrevClick:function(){if(1!==this.params._page){this.params._page-=1;var e=this.genQueryParams(this.fuzzyParams);this.loadNodeClients(!1,e)}},handleNextClick:function(){if(this.hasnext){this.params._page+=1;var e=this.genQueryParams(this.fuzzyParams);this.loadNodeClients(!1,e)}},loadData:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(l["d"])();case 2:this.currentNodes=e.sent,this.nodeName=this.nodeName||(this.currentNodes[0]||{}).node,this.listLoading=!1,this.loadNodeClients();case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadNodeClients:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var n,a,s,i,o,l,u,d,p,m=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=m.length>1&&void 0!==m[1]?m[1]:{},t&&(this.params._page=1),e.next=4,Object(c["b"])(this.nodeName,Object(r["a"])({},this.params,n));case 4:a=e.sent,s=a.items,i=void 0===s?[]:s,o=a.meta,l=o.count,u=void 0===l?0:l,d=o.hasnext,p=void 0!==d&&d,this.tableData=i,this.count=u,this.hasnext=p,this.resetIcon="el-icon-refresh";case 10:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),protoNameColumnFilter:function(e,t){return e===t.proto_name}}},d=u,p=(n("f7cc"),n("2877")),m=Object(p["a"])(d,a,s,!1,null,null,null);t["default"]=m.exports},"3b14":function(e,t,n){"use strict";var a=n("cde3"),s=n.n(a);s.a},"3e4b":function(e,t,n){},"806e":function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"custom-pagination"},[n("a",{class:["prev",1===e.page?"disabled":""],attrs:{href:"javascript:;"},on:{click:e.prev}},[n("i",{staticClass:"el-icon-arrow-left"}),e._v("\n "+e._s(e.$t("Base.prev"))+"\n ")]),n("a",{class:["next",e.hasnext?"":"disabled"],attrs:{href:"javascript:;"},on:{click:e.next}},[e._v("\n "+e._s(e.$t("Base.next"))+"\n "),n("i",{staticClass:"el-icon-arrow-right"})])])},s=[],r=(n("c5f6"),{name:"CustomPagination",props:{page:{required:!0,type:Number},hasnext:{required:!0,type:Boolean}},methods:{prev:function(){this.$emit("prevClick")},next:function(){this.$emit("nextClick")}}}),i=r,o=(n("3b14"),n("2877")),c=Object(o["a"])(i,a,s,!1,null,null,null);t["a"]=c.exports},cde3:function(e,t,n){},d19d:function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return i}),n.d(t,"c",function(){return o}),n.d(t,"d",function(){return l}),n.d(t,"f",function(){return u}),n.d(t,"e",function(){return d});n("96cf");var a=n("3b8d"),s=n("1f75");function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s["a"].get("/nodes/".concat(e,"/clients"),{params:t})}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return s["a"].delete("/clients/".concat(encodeURIComponent(e)))}function o(e){return c.apply(this,arguments)}function c(){return c=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,s["a"].get("/clients/".concat(encodeURIComponent(t)));case 2:return n=e.sent,e.abrupt("return",n.length&&n[0]||{});case 4:case"end":return e.stop()}},e)})),c.apply(this,arguments)}function l(e,t){return s["a"].get("/nodes/".concat(e,"/subscriptions/").concat(encodeURIComponent(t)))}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s["a"].post("/mqtt/unsubscribe",e)}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s["a"].post("/mqtt/subscribe",e)}},f7cc:function(e,t,n){"use strict";var a=n("3e4b"),s=n.n(a);s.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-d3537170.7f7eb6fb.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-d3537170.7f7eb6fb.js new file mode 100644 index 000000000..533a01c5d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-d3537170.7f7eb6fb.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-d3537170"],{"12b7":function(e,t,r){},"2b0b":function(e,t,r){"use strict";var a=r("12b7"),n=r.n(a);n.a},"4a36":function(e,t,r){"use strict";r.d(t,"c",function(){return u}),r.d(t,"d",function(){return l}),r.d(t,"b",function(){return d}),r.d(t,"a",function(){return p});r("7f7f"),r("96cf");var a=r("3b8d"),n=r("1f75"),s="3rd-party",c="HTTP",i="TCP",o="Resources",u=function(){return n["a"].get("/schemas")},l=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var r,a,s,u,l,d;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n["a"].get("/schemas/".concat(t));case 3:return r=e.sent,a=r,s=a.parser_addr,s&&(u=s.url,l=s.host,d=s.port,u?a.third_party_type=c:l&&d?(a.third_party_type=i,a.parser_addr.server="".concat(l,":").concat(d)):a.third_party_type=o),e.abrupt("return",a);case 10:return e.prev=10,e.t0=e["catch"](0),console.error(e.t0),e.abrupt("return",!1);case 14:case"end":return e.stop()}},e,null,[[0,10]])}));return function(t){return e.apply(this,arguments)}}(),d=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n["a"].delete("/schemas/".concat(t));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e["catch"](0),console.error(e.t0),e.abrupt("return",!1);case 10:case"end":return e.stop()}},e,null,[[0,6]])}));return function(t){return e.apply(this,arguments)}}(),p=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return r={name:t.name,description:t.description,parser_type:t.parser_type},t.parser_type===s?(r.parser_addr={},r.parser_opts=t.parser_opts,t.third_party_type===c?r.parser_addr.url=t.parser_addr.url:t.third_party_type===i?r.parser_addr.server=t.parser_addr.server:t.third_party_type===o&&(r.parser_addr.resource_id=t.parser_addr.resource_id)):r.schema=t.schema,e.prev=2,e.next=5,n["a"].post("/schemas",r);case 5:return e.abrupt("return",e.sent);case 8:return e.prev=8,e.t0=e["catch"](2),console.error(e.t0),e.abrupt("return",!1);case 12:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t){return e.apply(this,arguments)}}()},5118:function(e,t,r){(function(e){var a="undefined"!==typeof e&&e||"undefined"!==typeof self&&self||window,n=Function.prototype.apply;function s(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new s(n.call(setTimeout,a,arguments),clearTimeout)},t.setInterval=function(){return new s(n.call(setInterval,a,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},s.prototype.unref=s.prototype.ref=function(){},s.prototype.close=function(){this._clearFn.call(a,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r("6017"),t.setImmediate="undefined"!==typeof self&&self.setImmediate||"undefined"!==typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!==typeof self&&self.clearImmediate||"undefined"!==typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r("c8ba"))},6017:function(e,t,r){(function(e,t){(function(e,r){"use strict";if(!e.setImmediate){var a,n=1,s={},c=!1,i=e.document,o=Object.getPrototypeOf&&Object.getPrototypeOf(e);o=o&&o.setTimeout?o:e,"[object process]"==={}.toString.call(e.process)?m():f()?h():e.MessageChannel?v():i&&"onreadystatechange"in i.createElement("script")?_():b(),o.setImmediate=u,o.clearImmediate=l}function u(e){"function"!==typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r0&&void 0!==a[0]?a[0]:{fillI18n:!1},e.next=3,n["a"].get("/actions");case 3:if(r=e.sent,t.fillI18n){e.next=6;break}return e.abrupt("return",r);case 6:return e.abrupt("return",Object(s["c"])(r,["title","description"]));case 7:case"end":return e.stop()}},e)})),f.apply(this,arguments)}function h(e){return n["a"].delete("/rules/".concat(e))}function v(e){return n["a"].delete("/resources/".concat(e))}function _(e){return n["a"].post("/resources/".concat(e))}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/rules?test=true",e,{params:{_m:!1}})}function y(){return g.apply(this,arguments)}function g(){return g=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,r,a=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=a.length>0&&void 0!==a[0]?a[0]:{},e.next=3,n["a"].get("/actions",{params:t});case 3:return r=e.sent,e.abrupt("return",r.map(function(e){return e=Object(s["c"])(e,["title","description"]),e.params=Object(s["c"])(e.params,!0),e}));case 5:case"end":return e.stop()}},e)})),g.apply(this,arguments)}function w(){return x.apply(this,arguments)}function x(){return x=Object(a["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,n["a"].get("/resource_types");case 2:return t=e.sent,t=Object(s["c"])(t,["title","description"]).map(function(e){return e.params=Object(s["c"])(e.params,!0),e}),e.abrupt("return",t);case 5:case"end":return e.stop()}},e)})),x.apply(this,arguments)}var T={};function $(){return k.apply(this,arguments)}function k(){return k=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,r,a,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=s.length>0&&void 0!==s[0]?s[0]:{},0!==Object.keys(T).length){e.next=6;break}return e.next=4,w();case 4:r=e.sent,r.forEach(function(e){T[e.name]=e});case 6:return e.next=8,n["a"].get("/resources",{params:t});case 8:return a=e.sent,e.abrupt("return",a.map(function(e){var t=e.config;return e.configVal=t,e.config=T[e.type]||{},e}));case 10:case"end":return e.stop()}},e)})),k.apply(this,arguments)}function R(e){return O.apply(this,arguments)}function O(){return O=Object(a["a"])(regeneratorRuntime.mark(function e(t){var r,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==Object.keys(T).length){e.next=5;break}return e.next=3,w();case 3:r=e.sent,r.forEach(function(e){T[e.name]=e});case 5:return e.prev=5,e.next=8,n["a"].get("/resources/".concat(t));case 8:return a=e.sent,a.typeInfo=T[a.type]||{},a._config=[],Object.keys(a.config).forEach(function(e){var t=a.config[e],r=a.typeInfo.params[e]||{},n=r.title,s=r.description;a._config.push({key:e,value:t,title:n||t,description:s})}),e.abrupt("return",a);case 15:return e.prev=15,e.t0=e["catch"](5),console.error(e.t0),e.abrupt("return",!1);case 19:case"end":return e.stop()}},e,null,[[5,15]])})),O.apply(this,arguments)}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return n["a"].post("/resources",e,{params:{test:t?"true":void 0}})}function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].put("/resources/".concat(e.id),e)}function I(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/rules",e)}function C(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n["a"].put("/rules/".concat(e),t)}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-e7f1aeea.93c28ea9.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-e7f1aeea.93c28ea9.js new file mode 100644 index 000000000..1238bace7 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-e7f1aeea.93c28ea9.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-e7f1aeea"],{"0af6":function(e,t,n){},"715f":function(e,t,n){},8602:function(e,t,n){"use strict";var a=n("0af6"),s=n.n(a);s.a},9144:function(e,t,n){"use strict";var a=n("715f"),s=n.n(a);s.a},d7a3:function(e,t,n){"use strict";var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"resources-node"},e._l(e.value.status,function(t,a){return n("li",{key:a},[n("a-badge",{attrs:{"is-dot":"",status:t.is_alive?"success":"error"}}),n("span",{staticClass:"node-name"},[e._v(e._s(t.node))]),t.is_alive?e._e():n("el-button",{attrs:{type:"danger",size:"mini",loading:t.loading},on:{click:function(n){return e.resourceReconnect(t)}}},[e._v("\n "+e._s(e.$t("RuleEngine.reconnect"))+"\n ")])],1)}),0)},s=[],i=n("bd43"),r={name:"ResourceNode",components:{},props:{value:{type:Object,required:!0}},data:function(){return{}},created:function(){},methods:{resourceReconnect:function(e){var t=this;this.$set(e,"loading",!0),Object(i["o"])(this.value.id).then(function(){t.$set(e,"loading",!1),t.$emit("change",t.value,!0)}).catch(function(){t.$set(e,"loading",!1)})}}},o=r,c=(n("9144"),n("2877")),u=Object(c["a"])(o,a,s,!1,null,null,null);t["a"]=u.exports},e9f7:function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"resources"},[n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[n("div",{staticClass:"emq-table-header"},[n("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.handleDialogVisible("add")}}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),n("el-table",{staticClass:"data-list",attrs:{data:e.tableData},on:{"expand-change":e.handleExpandChange}},[n("el-table-column",{attrs:{"class-name":"expand-column",prop:"id",type:"expand",width:"1px"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("a-card",{staticClass:"resource-node-wrapper",attrs:{loading:a.loading}},[n("el-row",{attrs:{gutter:40}},[n("el-col",{attrs:{span:12}},[n("div",{staticClass:"emq-title h3"},[e._v("\n "+e._s(e.$t("RuleEngine.resourceStatus"))+"\n "),n("div",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("RuleEngine.resourceStatusTips"))+"\n ")])]),n("resource-node",{attrs:{value:a},on:{change:e.handleExpandChange}})],1)],1)],1)]}}])}),n("el-table-column",{attrs:{prop:"id","min-width":"80px",label:e.$t("RuleEngine.resourceID")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("span",{staticClass:"btn",on:{click:function(t){return e.showResource(a)}}},[e._v(e._s(a.id))])]}}])}),n("el-table-column",{attrs:{prop:"config.title","show-overflow-tooltip":"",label:e.$t("RuleEngine.resourceTypes"),filters:e.filterOptions.resourceTypes,"filter-method":e.resourceTypesColumnFilter,"filter-placement":"bottom"}}),n("el-table-column",{attrs:{"min-width":"100px",prop:"description","show-overflow-tooltip":"",label:e.$t("RuleEngine.resourceDes")}}),n("el-table-column",{attrs:{prop:"isAvailable"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("a-badge",{staticStyle:{"font-size":"12px"},attrs:{status:a.isAvailable?"success":"error",text:a.isAvailable?e.$t("RuleEngine.available"):e.$t("RuleEngine.notAvailable"),dot:""}})]}}])}),n("el-table-column",{attrs:{width:"200px",prop:"id"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row,s=t.$index;return[n("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.viewResourcesStatus(a,s)}}},[e._v("\n "+e._s(e.$t("RuleEngine.status"))+"\n ")]),n("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.handleDialogVisible("edit",a)}}},[e._v("\n "+e._s(e.$t("RuleEngine.edit"))+"\n ")]),n("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteResource(a)}}},[e._v("\n "+e._s(e.$t("RuleEngine.delete"))+"\n ")])]}}])})],1)],1)],1),n("resource-dialog",{attrs:{editItem:e.resourceToEdit,oper:e.oper,visible:e.dialogVisible},on:{"update:visible":function(t){e.dialogVisible=t},created:e.loadData}})],1)},s=[],i=n("cebc"),r=(n("7f7f"),n("96cf"),n("3b8d")),o=n("bd43"),c=n("d7a3"),u=n("7d5c"),l={name:"Resources",components:{ResourceNode:c["a"],ResourceDialog:u["a"]},props:{},data:function(){return{listLoading:!1,dialogVisible:!1,tableData:[],filterOptions:{resourceTypes:[]},oper:"add",resourceToEdit:{}}},created:function(){this.listLoading=!0,this.initData(),this.loadData()},methods:{toggleShowConfig:function(e){var t=!e.showConfig;this.$set(e,"showConfig",t)},viewResourcesStatus:function(e,t){var n=document.querySelectorAll(".el-table__expand-icon")[t];n&&n.click()},handleExpandChange:function(){var e=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n,a,s=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(n=s.length>1&&void 0!==s[1]&&s[1],n||!(t.status.length>0)){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Object(o["j"])(t.id);case 5:a=e.sent,a&&(this.$set(t,"status",a.status),this.$set(t,"typeInfo",a.typeInfo),this.$set(t,"_config",a._config));case 7:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),deleteResource:function(e){var t=this;this.$msgbox.confirm(this.$t("RuleEngine.deleteResource"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(r["a"])(regeneratorRuntime.mark(function n(){return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,Object(o["d"])(e.id);case 2:t.loadData(),t.$message.success(t.$t("RuleEngine.successfulDeletion"));case 4:case"end":return n.stop()}},n)}))).catch(function(){})},initData:function(){var e=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(o["k"])();case 2:t=e.sent,this.filterOptions.resourceTypes=t.map(function(e){return{text:e.title,value:e.name}});case 4:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadData:function(){var e=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,this.listLoading=!0,e.next=4,Object(o["i"])();case 4:t=e.sent,this.tableData=t.map(function(e){return e.isAvailable=e.status,delete e.status,e._config=[],e.typeInfo={},e.status=[],e}),e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](0),console.log(e.t0);case 11:return e.prev=11,this.listLoading=!1,e.finish(11);case 14:case"end":return e.stop()}},e,this,[[0,8,11,14]])}));function t(){return e.apply(this,arguments)}return t}(),handleDialogVisible:function(e,t){this.dialogVisible=!0,this.oper=e,"edit"===e&&(this.resourceToEdit=Object(i["a"])({},t))},showResource:function(e){this.$router.push({path:"/resources/".concat(e.id),query:{oper:"view"}})},resourceTypesColumnFilter:function(e,t){return t.config.name===e}}},d=l,p=(n("8602"),n("2877")),f=Object(p["a"])(d,a,s,!1,null,null,null);t["default"]=f.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-ead04a98.b90d2cde.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-ead04a98.b90d2cde.js new file mode 100644 index 000000000..757cd6d28 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-ead04a98.b90d2cde.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-ead04a98"],{"00dc":function(e,t,r){(function(e){var i=r("58a2"),n=r("c24d"),a=r("561d");function f(t){var r=new e(n[t].prime,"hex"),i=new e(n[t].gen,"hex");return new a(r,i)}var o={binary:!0,hex:!0,base64:!0};function s(t,r,n,f){return e.isBuffer(r)||void 0===o[r]?s(t,"binary",r,n):(r=r||"binary",f=f||"binary",n=n||new e([2]),e.isBuffer(n)||(n=new e(n,f)),"number"===typeof t?new a(i(t,n),n,!0):(e.isBuffer(t)||(t=new e(t,r)),new a(t,n,!0)))}t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=f,t.createDiffieHellman=t.DiffieHellman=s}).call(this,r("b639").Buffer)},"0145":function(e,t){t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},"0184":function(e,t,r){"use strict";var i=r("da3e");function n(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}e.exports=n,n.prototype._init=function(){},n.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},n.prototype._buffer=function(e,t){for(var r=Math.min(this.buffer.length-this.bufferOff,e.length-t),i=0;i0;i--)t+=this._buffer(e,t),r+=this._flushBuffer(n,r);return t+=this._buffer(e,t),n},n.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},n.prototype._pad=function(e,t){if(0===t)return!1;while(t>>27}function d(e){return e<<30|e>>>2}function h(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(s,n),s.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},s.prototype._update=function(e){for(var t=this._w,r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,o=0|this._e,s=0;s<16;++s)t[s]=e.readInt32BE(4*s);for(;s<80;++s)t[s]=t[s-3]^t[s-8]^t[s-14]^t[s-16];for(var u=0;u<80;++u){var l=~~(u/20),p=c(r)+h(l,i,n,a)+o+t[u]+f[l]|0;o=a,a=n,n=d(i),i=r,r=p}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0},s.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=s},"09f5":function(e,t,r){var i=r("39f5"),n=r("8707").Buffer,a=r("6430"),f=r("3fb5");function o(e,t,r,f){a.call(this),this._cipher=new i.AES(t),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=f,this._mode=e}f(o,a),o.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},o.prototype._final=function(){this._cipher.scrub()},e.exports=o},"0be8":function(e,t){t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},"0cbb":function(e,t,r){"use strict";var i,n=t,a=r("7d92"),f=r("3337"),o=f.utils.assert;function s(e){"short"===e.type?this.curve=new f.curve.short(e):"edwards"===e.type?this.curve=new f.curve.edwards(e):this.curve=new f.curve.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,o(this.g.validate(),"Invalid curve"),o(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(e,t){Object.defineProperty(n,e,{configurable:!0,enumerable:!0,get:function(){var r=new s(t);return Object.defineProperty(n,e,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=s,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r("409b")}catch(d){i=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},"0da4":function(e,t,r){"use strict";var i=r("da3e"),n=r("3fb5"),a={};function f(e){i.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;tp+(r.clockTolerance||0))return l(new n("jwt not active",new Date(1e3*g.nbf)))}if("undefined"!==typeof g.exp&&!r.ignoreExpiration){if("number"!==typeof g.exp)return l(new i("invalid exp value"));if(p>=g.exp+(r.clockTolerance||0))return l(new a("jwt expired",new Date(1e3*g.exp)))}if(r.audience){var w=Array.isArray(r.audience)?r.audience:[r.audience],_=Array.isArray(g.aud)?g.aud:[g.aud],S=_.some(function(e){return w.some(function(t){return t instanceof RegExp?t.test(e):t===e})});if(!S)return l(new i("jwt audience invalid. expected: "+w.join(" or ")))}if(r.issuer){var M="string"===typeof r.issuer&&g.iss!==r.issuer||Array.isArray(r.issuer)&&-1===r.issuer.indexOf(g.iss);if(M)return l(new i("jwt issuer invalid. expected: "+r.issuer))}if(r.subject&&g.sub!==r.subject)return l(new i("jwt subject invalid. expected: "+r.subject));if(r.jwtid&&g.jti!==r.jwtid)return l(new i("jwt jwtid invalid. expected: "+r.jwtid));if(r.nonce&&g.nonce!==r.nonce)return l(new i("jwt nonce invalid. expected: "+r.nonce));if(r.maxAge){if("number"!==typeof g.iat)return l(new i("iat required when maxAge is specified"));var E=o(r.maxAge,g.iat);if("undefined"===typeof E)return l(new i('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'));if(p>=E+(r.clockTolerance||0))return l(new a("maxAge exceeded",new Date(1e3*E)))}if(!0===r.complete){var k=b.signature;return l(null,{header:y,payload:g,signature:k})}return l(null,g)})}},"0f2c":function(e,t,r){var i=r("2aee"),n=r("f460"),a=r("83d5"),f=r("399f"),o=r("a958"),s=r("98e6"),c=r("5291"),d=r("8707").Buffer;function h(e,t){var r=e.modulus.byteLength(),i=s("sha1").update(d.alloc(0)).digest(),f=i.length;if(0!==t[0])throw new Error("decryption error");var o=t.slice(1,f+1),c=t.slice(f+1),h=a(o,n(c,f)),u=a(c,n(h,r-f-1));if(l(i,u.slice(0,f)))throw new Error("decryption error");var p=f;while(0===u[p])p++;if(1!==u[p++])throw new Error("decryption error");return u.slice(p)}function u(e,t,r){var i=t.slice(0,2),n=2,a=0;while(0!==t[n++])if(n>=t.length){a++;break}var f=t.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&a++,f.length<8&&a++,a)throw new Error("decryption error");return t.slice(n)}function l(e,t){e=d.from(e),t=d.from(t);var r=0,i=e.length;e.length!==t.length&&(r++,i=Math.min(e.length,t.length));var n=-1;while(++nl||new f(t).cmp(s.modulus)>=0)throw new Error("decryption error");a=r?c(new f(t),s):o(t,s);var p=d.alloc(l-a.length);if(a=d.concat([p,a],l),4===n)return h(s,a);if(1===n)return u(s,a,r);if(3===n)return a;throw new Error("unknown padding")}},"116d":function(e,t,r){e.exports=r("b4e8")},"11dc":function(e,t,r){"use strict";(function(t,i){var n=65536,a=4294967295;function f(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}var o=r("8707").Buffer,s=t.crypto||t.msCrypto;function c(e,t){if(e>a)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(e);if(e>0)if(e>n)for(var f=0;f100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var s=parseFloat(t[1]),c=(t[2]||"ms").toLowerCase();switch(c){case"years":case"year":case"yrs":case"yr":case"y":return s*o;case"weeks":case"week":case"w":return s*f;case"days":case"day":case"d":return s*a;case"hours":case"hour":case"hrs":case"hr":case"h":return s*n;case"minutes":case"minute":case"mins":case"min":case"m":return s*i;case"seconds":case"second":case"secs":case"sec":case"s":return s*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}}}function c(e){var t=Math.abs(e);return t>=a?Math.round(e/a)+"d":t>=n?Math.round(e/n)+"h":t>=i?Math.round(e/i)+"m":t>=r?Math.round(e/r)+"s":e+"ms"}function d(e){var t=Math.abs(e);return t>=a?h(e,t,a,"day"):t>=n?h(e,t,n,"hour"):t>=i?h(e,t,i,"minute"):t>=r?h(e,t,r,"second"):e+" ms"}function h(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}e.exports=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return s(e);if("number"===r&&isFinite(e))return t.long?d(e):c(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},"14b7":function(e,t,r){e.exports={decode:r("3975"),verify:r("0eec"),sign:r("2567"),JsonWebTokenError:r("2910"),NotBeforeError:r("f309"),TokenExpiredError:r("6e69")}},1545:function(e,t,r){"use strict";t.utils=r("5ee7"),t.Cipher=r("0184"),t.DES=r("4e2b"),t.CBC=r("0da4"),t.EDE=r("1fec")},"182f":function(e,t,r){var i=r("8707").Buffer,n=r("a1c1"),a=r("79e8"),f=r("d485"),o=r("0da7"),s=r("3022"),c=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function h(e){if(d(e))return e;try{return JSON.parse(e)}catch(t){return}}function u(e){var t=e.split(".",1)[0];return h(i.from(t,"base64").toString("binary"))}function l(e){return e.split(".",2).join(".")}function p(e){return e.split(".")[2]}function b(e,t){t=t||"utf8";var r=e.split(".")[1];return i.from(r,"base64").toString(t)}function v(e){return c.test(e)&&!!u(e)}function m(e,t,r){if(!t){var i=new Error("Missing algorithm parameter for jws.verify");throw i.code="MISSING_ALGORITHM",i}e=o(e);var n=p(e),f=l(e),s=a(t);return s.verify(f,n,r)}function y(e,t){if(t=t||{},e=o(e),!v(e))return null;var r=u(e);if(!r)return null;var i=b(e);return("JWT"===r.typ||t.json)&&(i=JSON.parse(i,t.encoding)),{header:r,payload:i,signature:p(e)}}function g(e){e=e||{};var t=e.secret||e.publicKey||e.key,r=new n(t);this.readable=!0,this.algorithm=e.algorithm,this.encoding=e.encoding,this.secret=this.publicKey=this.key=r,this.signature=new n(e.signature),this.secret.once("close",function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once("close",function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}s.inherits(g,f),g.prototype.verify=function(){try{var e=m(this.signature.buffer,this.algorithm,this.key.buffer),t=y(this.signature.buffer,this.encoding);return this.emit("done",e,t),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(r){this.readable=!1,this.emit("error",r),this.emit("close")}},g.decode=y,g.isValid=v,g.verify=m,e.exports=g},"1a2a":function(e,t,r){"use strict";var i=r("3fb5"),n=r("d424"),a=r("6430"),f=r("8707").Buffer,o=r("5a76"),s=r("b5ca"),c=r("69f2"),d=f.alloc(128);function h(e,t){a.call(this,"digest"),"string"===typeof t&&(t=f.from(t));var r="sha512"===e||"sha384"===e?128:64;if(this._alg=e,this._key=t,t.length>r){var i="rmd160"===e?new s:c(e);t=i.update(t).digest()}else t.lengththis.blockSize&&(e=(new this.Hash).update(e).digest()),n(e.length<=this.blockSize);for(var t=e.length;t0)return c(new Error("invalid "+d.join(",")+" option for "+typeof e+" payload"))}if("undefined"!==typeof e.exp&&"undefined"!==typeof n.expiresIn)return c(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.'));if("undefined"!==typeof e.nbf&&"undefined"!==typeof n.notBefore)return c(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.'));try{m(n)}catch(p){return c(p)}var h=e.iat||Math.floor(Date.now()/1e3);if(n.noTimestamp?delete e.iat:o&&(e.iat=h),"undefined"!==typeof n.notBefore){try{e.nbf=i(n.notBefore,h)}catch(b){return c(b)}if("undefined"===typeof e.nbf)return c(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}if("undefined"!==typeof n.expiresIn&&"object"===typeof e){try{e.exp=i(n.expiresIn,h)}catch(b){return c(b)}if("undefined"===typeof e.exp)return c(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60'))}Object.keys(g).forEach(function(t){var r=g[t];if("undefined"!==typeof n[t]){if("undefined"!==typeof e[r])return c(new Error('Bad "options.'+t+'" option. The payload already has an "'+r+'" property.'));e[r]=n[t]}});var l=n.encoding||"utf8";if("function"!==typeof f)return a.sign({header:s,payload:e,secret:r,encoding:l});f=f&&u(f),a.createSign({header:s,privateKey:r,payload:e,encoding:l}).once("error",f).once("done",function(e){f(null,e)})}}).call(this,r("b639").Buffer)},2801:function(e){e.exports={name:"elliptic",version:"6.4.1",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0",inherits:"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"}}},2910:function(e,t){var r=function(e,t){Error.call(this,e),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.name="JsonWebTokenError",this.message=e,t&&(this.inner=t)};r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,e.exports=r},"2aee":function(e,t,r){var i=r("4111"),n=r("d70e"),a=r("4dd0"),f=r("fda6"),o=r("a099"),s=r("8707").Buffer;function c(e){var t;"object"!==typeof e||s.isBuffer(e)||(t=e.passphrase,e=e.key),"string"===typeof e&&(e=s.from(e));var r,n,f=a(e,t),o=f.tag,c=f.data;switch(o){case"CERTIFICATE":n=i.certificate.decode(c,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(n||(n=i.PublicKey.decode(c,"der")),r=n.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(n.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return n.subjectPrivateKey=n.subjectPublicKey,{type:"ec",data:n};case"1.2.840.10040.4.1":return n.algorithm.params.pub_key=i.DSAparam.decode(n.subjectPublicKey.data,"der"),{type:"dsa",data:n.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+o);case"ENCRYPTED PRIVATE KEY":c=i.EncryptedPrivateKey.decode(c,"der"),c=d(c,t);case"PRIVATE KEY":switch(n=i.PrivateKey.decode(c,"der"),r=n.algorithm.algorithm.join("."),r){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(n.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:n.algorithm.curve,privateKey:i.ECPrivateKey.decode(n.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return n.algorithm.params.priv_key=i.DSAparam.decode(n.subjectPrivateKey,"der"),{type:"dsa",params:n.algorithm.params};default:throw new Error("unknown key id "+r)}throw new Error("unknown key type "+o);case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(c,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(c,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(c,"der")};case"EC PRIVATE KEY":return c=i.ECPrivateKey.decode(c,"der"),{curve:c.parameters.value,privateKey:c.privateKey};default:throw new Error("unknown key type "+o)}}function d(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=n[e.algorithm.decrypt.cipher.algo.join(".")],c=e.algorithm.decrypt.cipher.iv,d=e.subjectPrivateKey,h=parseInt(a.split("-")[1],10)/8,u=o.pbkdf2Sync(t,r,i,h,"sha1"),l=f.createDecipheriv(a,u,c),p=[];return p.push(l.update(d)),p.push(l.final()),s.concat(p)}e.exports=c,c.signature=i.signature},"2c63":function(e,t,r){e.exports=r("dc14")},"2e05":function(e,t,r){"use strict";function i(e){var t=(e/8|0)+(e%8===0?0:1);return t}var n={ES256:i(256),ES384:i(384),ES512:i(521)};function a(e){var t=n[e];if(t)return t;throw new Error('Unknown algorithm "'+e+'"')}e.exports=a},3:function(e,t){},3300:function(e,t,r){"use strict";var i=r("4136"),n=r("3337"),a=r("399f"),f=r("3fb5"),o=i.base,s=n.utils.assert;function c(e){o.call(this,"short",e),this.a=new a(e.a,16).toRed(this.red),this.b=new a(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function d(e,t,r,i){o.BasePoint.call(this,e,"affine"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(t,16),this.y=new a(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function h(e,t,r,i){o.BasePoint.call(this,e,"jacobian"),null===t&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(t,16),this.y=new a(r,16),this.z=new a(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}f(c,o),e.exports=c,c.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r,i;if(e.beta)t=new a(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);t=n[0].cmp(n[1])<0?n[0]:n[1],t=t.toRed(this.red)}if(e.lambda)r=new a(e.lambda,16);else{var f=this._getEndoRoots(this.n);0===this.g.mul(f[0]).x.cmp(this.g.x.redMul(t))?r=f[0]:(r=f[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return i=e.basis?e.basis.map(function(e){return{a:new a(e.a,16),b:new a(e.b,16)}}):this._getEndoBasis(r),{beta:t,lambda:r,basis:i}}},c.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:a.mont(e),r=new a(2).toRed(t).redInvm(),i=r.redNeg(),n=new a(3).toRed(t).redNeg().redSqrt().redMul(r),f=i.redAdd(n).fromRed(),o=i.redSub(n).fromRed();return[f,o]},c.prototype._getEndoBasis=function(e){var t,r,i,n,f,o,s,c,d,h=this.n.ushrn(Math.floor(this.n.bitLength()/2)),u=e,l=this.n.clone(),p=new a(1),b=new a(0),v=new a(0),m=new a(1),y=0;while(0!==u.cmpn(0)){var g=l.div(u);c=l.sub(g.mul(u)),d=v.sub(g.mul(p));var w=m.sub(g.mul(b));if(!i&&c.cmp(h)<0)t=s.neg(),r=p,i=c.neg(),n=d;else if(i&&2===++y)break;s=c,l=u,u=c,v=p,p=d,m=b,b=w}f=c.neg(),o=d;var _=i.sqr().add(n.sqr()),S=f.sqr().add(o.sqr());return S.cmp(_)>=0&&(f=t,o=r),i.negative&&(i=i.neg(),n=n.neg()),f.negative&&(f=f.neg(),o=o.neg()),[{a:i,b:n},{a:f,b:o}]},c.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],i=t[1],n=i.b.mul(e).divRound(this.n),a=r.b.neg().mul(e).divRound(this.n),f=n.mul(r.a),o=a.mul(i.a),s=n.mul(r.b),c=a.mul(i.b),d=e.sub(f).sub(o),h=s.add(c).neg();return{k1:d,k2:h}},c.prototype.pointFromX=function(e,t){e=new a(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var n=i.fromRed().isOdd();return(t&&!n||!t&&n)&&(i=i.redNeg()),this.point(e,i)},c.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,i=this.a.redMul(t),n=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},c.prototype._endoWnafMulAdd=function(e,t,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,a=0;a":""},d.prototype.isInfinity=function(){return this.inf},d.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},d.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),i=e.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(i),a=n.redSqr().redISub(this.x.redAdd(this.x)),f=n.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,f)},d.prototype.getX=function(){return this.x.fromRed()},d.prototype.getY=function(){return this.y.fromRed()},d.prototype.mul=function(e){return e=new a(e,16),this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},d.prototype.mulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},d.prototype.jmulAdd=function(e,t,r){var i=[this,t],n=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},d.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},d.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,i=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return t},d.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e},f(h,o.BasePoint),c.prototype.jpoint=function(e,t,r){return new h(this,e,t,r)},h.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(r,i)},h.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},h.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(t),n=e.x.redMul(r),a=this.y.redMul(t.redMul(e.z)),f=e.y.redMul(r.redMul(this.z)),o=i.redSub(n),s=a.redSub(f);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=o.redSqr(),d=c.redMul(o),h=i.redMul(c),u=s.redSqr().redIAdd(d).redISub(h).redISub(h),l=s.redMul(h.redISub(u)).redISub(a.redMul(d)),p=this.z.redMul(e.z).redMul(o);return this.curve.jpoint(u,l,p)},h.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,i=e.x.redMul(t),n=this.y,a=e.y.redMul(t).redMul(this.z),f=r.redSub(i),o=n.redSub(a);if(0===f.cmpn(0))return 0!==o.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=f.redSqr(),c=s.redMul(f),d=r.redMul(s),h=o.redSqr().redIAdd(c).redISub(d).redISub(d),u=o.redMul(d.redISub(h)).redISub(n.redMul(c)),l=this.z.redMul(f);return this.curve.jpoint(h,u,l)},h.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},3337:function(e,t,r){"use strict";var i=t;i.version=r("2801").version,i.utils=r("f3a3"),i.rand=r("fdac"),i.curve=r("4136"),i.curves=r("0cbb"),i.ec=r("b9a8"),i.eddsa=r("945d")},"33ef":function(e,t,r){var i=r("6c3c"),n=r("182f"),a=["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"];t.ALGORITHMS=a,t.sign=i.sign,t.verify=n.verify,t.decode=n.decode,t.isValid=n.isValid,t.createSign=function(e){return new i(e)},t.createVerify=function(e){return new n(e)}},"343e":function(e,t,r){var i=t;i.der=r("3768"),i.pem=r("85b3")},3505:function(e,t,r){var i=r("8707").Buffer,n=r("8c8a");function a(e,t,r){var a=t.length,f=n(t,e._cache);return e._cache=e._cache.slice(a),e._prev=i.concat([e._prev,r?t:f]),f}t.encrypt=function(e,t,r){var n,f=i.allocUnsafe(0);while(t.length){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=i.allocUnsafe(0)),!(e._cache.length<=t.length)){f=i.concat([f,a(e,t,r)]);break}n=e._cache.length,f=i.concat([f,a(e,t.slice(0,n),r)]),t=t.slice(n)}return f}},3768:function(e,t,r){var i=r("3fb5"),n=r("b639").Buffer,a=r("7f7a"),f=a.base,o=a.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){f.Node.call(this,"der",e)}function d(e){return e<10?"0"+e:e}function h(e,t,r,i){var n;if("seqof"===e?e="seq":"setof"===e&&(e="set"),o.tagByName.hasOwnProperty(e))n=o.tagByName[e];else{if("number"!==typeof e||(0|e)!==e)return i.error("Unknown tag: "+e);n=e}return n>=31?i.error("Multi-octet tag encoding unsupported"):(t||(n|=32),n|=o.tagClassByName[r||"universal"]<<6,n)}e.exports=s,s.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},i(c,f.Node),c.prototype._encodeComposite=function(e,t,r,i){var a=h(e,t,r,this.reporter);if(i.length<128){var f=new n(2);return f[0]=a,f[1]=i.length,this._createEncoderBuffer([f,i])}for(var o=1,s=i.length;s>=256;s>>=8)o++;f=new n(2+o);f[0]=a,f[1]=128|o;s=1+o;for(var c=i.length;c>0;s--,c>>=8)f[s]=255&c;return this._createEncoderBuffer([f,i])},c.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){for(var r=new n(2*e.length),i=0;i=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var a=0;for(i=0;i=128;f>>=7)a++}var o=new n(a),s=o.length-1;for(i=e.length-1;i>=0;i--){f=e[i];o[s--]=127&f;while((f>>=7)>0)o[s--]=128|127&f}return this._createEncoderBuffer(o)},c.prototype._encodeTime=function(e,t){var r,i=new Date(e);return"gentime"===t?r=[d(i.getFullYear()),d(i.getUTCMonth()+1),d(i.getUTCDate()),d(i.getUTCHours()),d(i.getUTCMinutes()),d(i.getUTCSeconds()),"Z"].join(""):"utctime"===t?r=[d(i.getFullYear()%100),d(i.getUTCMonth()+1),d(i.getUTCDate()),d(i.getUTCHours()),d(i.getUTCMinutes()),d(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(r,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(e,t){if("string"===typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!==typeof e&&!n.isBuffer(e)){var r=e.toArray();!e.sign&&128&r[0]&&r.unshift(0),e=new n(r)}if(n.isBuffer(e)){var i=e.length;0===e.length&&i++;var a=new n(i);return e.copy(a),0===e.length&&(a[0]=0),this._createEncoderBuffer(a)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);i=1;for(var f=e;f>=256;f>>=8)i++;for(a=new Array(i),f=a.length-1;f>=0;f--)a[f]=255&e,e>>=8;return 128&a[0]&&a.unshift(0),this._createEncoderBuffer(new n(a))},c.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},c.prototype._use=function(e,t){return"function"===typeof e&&(e=e(t)),e._getEncoder("der").tree},c.prototype._skipDefault=function(e,t,r){var i,n=this._baseState;if(null===n["default"])return!1;var a=e.join();if(void 0===n.defaultBuffer&&(n.defaultBuffer=this._encodeValue(n["default"],t,r).join()),a.length!==n.defaultBuffer.length)return!1;for(i=0;i=49&&f<=54?f-49+10:f>=17&&f<=22?f-17+10:15&f}return i}function s(e,t,r,i){for(var n=0,a=Math.min(e.length,r),f=t;f=49?o-49+10:o>=17?o-17+10:o}return n}a.isBN=function(e){return e instanceof a||null!==e&&"object"===typeof e&&e.constructor.wordSize===a.wordSize&&Array.isArray(e.words)},a.max=function(e,t){return e.cmp(t)>0?e:t},a.min=function(e,t){return e.cmp(t)<0?e:t},a.prototype._init=function(e,t,r){if("number"===typeof e)return this._initNumber(e,t,r);if("object"===typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36),e=e.toString().replace(/\s+/g,"");var n=0;"-"===e[0]&&n++,16===t?this._parseHex(e,n):this._parseBase(e,t,n),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),t,r)},a.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(i(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},a.prototype._initArray=function(e,t,r){if(i("number"===typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var n=0;n=0;n-=3)f=e[n]|e[n-1]<<8|e[n-2]<<16,this.words[a]|=f<>>26-o&67108863,o+=24,o>=26&&(o-=26,a++);else if("le"===r)for(n=0,a=0;n>>26-o&67108863,o+=24,o>=26&&(o-=26,a++);return this.strip()},a.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)n=o(e,r,r+6),this.words[i]|=n<>>26-a&4194303,a+=24,a>=26&&(a-=26,i++);r+6!==t&&(n=o(e,t,r+6),this.words[i]|=n<>>26-a&4194303),this.strip()},a.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=t)i++;i--,n=n/t|0;for(var a=e.length-r,f=a%i,o=Math.min(a,a-f)+r,c=0,d=r;d1&&0===this.words[this.length-1])this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function u(e){for(var t=new Array(e.bitLength()),r=0;r>>n}return t}function l(e,t,r){r.negative=t.negative^e.negative;var i=e.length+t.length|0;r.length=i,i=i-1|0;var n=0|e.words[0],a=0|t.words[0],f=n*a,o=67108863&f,s=f/67108864|0;r.words[0]=o;for(var c=1;c>>26,h=67108863&s,u=Math.min(c,t.length-1),l=Math.max(0,c-e.length+1);l<=u;l++){var p=c-l|0;n=0|e.words[p],a=0|t.words[l],f=n*a+h,d+=f/67108864|0,h=67108863&f}r.words[c]=0|h,s=0|d}return 0!==s?r.words[c]=0|s:r.length--,r.strip()}a.prototype.toString=function(e,t){var r;if(e=e||10,t=0|t||1,16===e||"hex"===e){r="";for(var n=0,a=0,f=0;f>>24-n&16777215,r=0!==a||f!==this.length-1?c[6-s.length]+s+r:s+r,n+=2,n>=26&&(n-=26,f--)}0!==a&&(r=a.toString(16)+r);while(r.length%t!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var u=d[e],l=h[e];r="";var p=this.clone();p.negative=0;while(!p.isZero()){var b=p.modn(l).toString(e);p=p.idivn(l),r=p.isZero()?b+r:c[u-b.length]+b+r}this.isZero()&&(r="0"+r);while(r.length%t!==0)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(e,t){return i("undefined"!==typeof f),this.toArrayLike(f,e,t)},a.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},a.prototype.toArrayLike=function(e,t,r){var n=this.byteLength(),a=r||Math.max(1,n);i(n<=a,"byte array longer than desired length"),i(a>0,"Requested array length <= 0"),this.strip();var f,o,s="le"===t,c=new e(a),d=this.clone();if(s){for(o=0;!d.isZero();o++)f=d.andln(255),d.iushrn(8),c[o]=f;for(;o=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},a.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0===(8191&t)&&(r+=13,t>>>=13),0===(127&t)&&(r+=7,t>>>=7),0===(15&t)&&(r+=4,t>>>=4),0===(3&t)&&(r+=2,t>>>=2),0===(1&t)&&r++,r},a.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},a.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},a.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},a.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},a.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},a.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},a.prototype.inotn=function(e){i("number"===typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},a.prototype.notn=function(e){return this.clone().inotn(e)},a.prototype.setn=function(e,t){i("number"===typeof e&&e>=0);var r=e/26|0,n=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,i=e):(r=e,i=this);for(var n=0,a=0;a>>26;for(;0!==n&&a>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ae.length?this.clone().iadd(e):e.clone().iadd(this)},a.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,i,n=this.cmp(e);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=e):(r=e,i=this);for(var a=0,f=0;f>26,this.words[f]=67108863&t;for(;0!==a&&f>26,this.words[f]=67108863&t;if(0===a&&f>>13,l=0|f[1],p=8191&l,b=l>>>13,v=0|f[2],m=8191&v,y=v>>>13,g=0|f[3],w=8191&g,_=g>>>13,S=0|f[4],M=8191&S,E=S>>>13,k=0|f[5],A=8191&k,x=k>>>13,I=0|f[6],B=8191&I,j=I>>>13,R=0|f[7],P=8191&R,C=R>>>13,O=0|f[8],T=8191&O,D=O>>>13,q=0|f[9],z=8191&q,N=q>>>13,U=0|o[0],L=8191&U,K=U>>>13,H=0|o[1],V=8191&H,F=H>>>13,X=0|o[2],$=8191&X,G=X>>>13,J=0|o[3],W=8191&J,Z=J>>>13,Y=0|o[4],Q=8191&Y,ee=Y>>>13,te=0|o[5],re=8191&te,ie=te>>>13,ne=0|o[6],ae=8191&ne,fe=ne>>>13,oe=0|o[7],se=8191&oe,ce=oe>>>13,de=0|o[8],he=8191&de,ue=de>>>13,le=0|o[9],pe=8191&le,be=le>>>13;r.negative=e.negative^t.negative,r.length=19,i=Math.imul(h,L),n=Math.imul(h,K),n=n+Math.imul(u,L)|0,a=Math.imul(u,K);var ve=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(p,L),n=Math.imul(p,K),n=n+Math.imul(b,L)|0,a=Math.imul(b,K),i=i+Math.imul(h,V)|0,n=n+Math.imul(h,F)|0,n=n+Math.imul(u,V)|0,a=a+Math.imul(u,F)|0;var me=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(me>>>26)|0,me&=67108863,i=Math.imul(m,L),n=Math.imul(m,K),n=n+Math.imul(y,L)|0,a=Math.imul(y,K),i=i+Math.imul(p,V)|0,n=n+Math.imul(p,F)|0,n=n+Math.imul(b,V)|0,a=a+Math.imul(b,F)|0,i=i+Math.imul(h,$)|0,n=n+Math.imul(h,G)|0,n=n+Math.imul(u,$)|0,a=a+Math.imul(u,G)|0;var ye=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(w,L),n=Math.imul(w,K),n=n+Math.imul(_,L)|0,a=Math.imul(_,K),i=i+Math.imul(m,V)|0,n=n+Math.imul(m,F)|0,n=n+Math.imul(y,V)|0,a=a+Math.imul(y,F)|0,i=i+Math.imul(p,$)|0,n=n+Math.imul(p,G)|0,n=n+Math.imul(b,$)|0,a=a+Math.imul(b,G)|0,i=i+Math.imul(h,W)|0,n=n+Math.imul(h,Z)|0,n=n+Math.imul(u,W)|0,a=a+Math.imul(u,Z)|0;var ge=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(ge>>>26)|0,ge&=67108863,i=Math.imul(M,L),n=Math.imul(M,K),n=n+Math.imul(E,L)|0,a=Math.imul(E,K),i=i+Math.imul(w,V)|0,n=n+Math.imul(w,F)|0,n=n+Math.imul(_,V)|0,a=a+Math.imul(_,F)|0,i=i+Math.imul(m,$)|0,n=n+Math.imul(m,G)|0,n=n+Math.imul(y,$)|0,a=a+Math.imul(y,G)|0,i=i+Math.imul(p,W)|0,n=n+Math.imul(p,Z)|0,n=n+Math.imul(b,W)|0,a=a+Math.imul(b,Z)|0,i=i+Math.imul(h,Q)|0,n=n+Math.imul(h,ee)|0,n=n+Math.imul(u,Q)|0,a=a+Math.imul(u,ee)|0;var we=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(A,L),n=Math.imul(A,K),n=n+Math.imul(x,L)|0,a=Math.imul(x,K),i=i+Math.imul(M,V)|0,n=n+Math.imul(M,F)|0,n=n+Math.imul(E,V)|0,a=a+Math.imul(E,F)|0,i=i+Math.imul(w,$)|0,n=n+Math.imul(w,G)|0,n=n+Math.imul(_,$)|0,a=a+Math.imul(_,G)|0,i=i+Math.imul(m,W)|0,n=n+Math.imul(m,Z)|0,n=n+Math.imul(y,W)|0,a=a+Math.imul(y,Z)|0,i=i+Math.imul(p,Q)|0,n=n+Math.imul(p,ee)|0,n=n+Math.imul(b,Q)|0,a=a+Math.imul(b,ee)|0,i=i+Math.imul(h,re)|0,n=n+Math.imul(h,ie)|0,n=n+Math.imul(u,re)|0,a=a+Math.imul(u,ie)|0;var _e=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(_e>>>26)|0,_e&=67108863,i=Math.imul(B,L),n=Math.imul(B,K),n=n+Math.imul(j,L)|0,a=Math.imul(j,K),i=i+Math.imul(A,V)|0,n=n+Math.imul(A,F)|0,n=n+Math.imul(x,V)|0,a=a+Math.imul(x,F)|0,i=i+Math.imul(M,$)|0,n=n+Math.imul(M,G)|0,n=n+Math.imul(E,$)|0,a=a+Math.imul(E,G)|0,i=i+Math.imul(w,W)|0,n=n+Math.imul(w,Z)|0,n=n+Math.imul(_,W)|0,a=a+Math.imul(_,Z)|0,i=i+Math.imul(m,Q)|0,n=n+Math.imul(m,ee)|0,n=n+Math.imul(y,Q)|0,a=a+Math.imul(y,ee)|0,i=i+Math.imul(p,re)|0,n=n+Math.imul(p,ie)|0,n=n+Math.imul(b,re)|0,a=a+Math.imul(b,ie)|0,i=i+Math.imul(h,ae)|0,n=n+Math.imul(h,fe)|0,n=n+Math.imul(u,ae)|0,a=a+Math.imul(u,fe)|0;var Se=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(P,L),n=Math.imul(P,K),n=n+Math.imul(C,L)|0,a=Math.imul(C,K),i=i+Math.imul(B,V)|0,n=n+Math.imul(B,F)|0,n=n+Math.imul(j,V)|0,a=a+Math.imul(j,F)|0,i=i+Math.imul(A,$)|0,n=n+Math.imul(A,G)|0,n=n+Math.imul(x,$)|0,a=a+Math.imul(x,G)|0,i=i+Math.imul(M,W)|0,n=n+Math.imul(M,Z)|0,n=n+Math.imul(E,W)|0,a=a+Math.imul(E,Z)|0,i=i+Math.imul(w,Q)|0,n=n+Math.imul(w,ee)|0,n=n+Math.imul(_,Q)|0,a=a+Math.imul(_,ee)|0,i=i+Math.imul(m,re)|0,n=n+Math.imul(m,ie)|0,n=n+Math.imul(y,re)|0,a=a+Math.imul(y,ie)|0,i=i+Math.imul(p,ae)|0,n=n+Math.imul(p,fe)|0,n=n+Math.imul(b,ae)|0,a=a+Math.imul(b,fe)|0,i=i+Math.imul(h,se)|0,n=n+Math.imul(h,ce)|0,n=n+Math.imul(u,se)|0,a=a+Math.imul(u,ce)|0;var Me=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(T,L),n=Math.imul(T,K),n=n+Math.imul(D,L)|0,a=Math.imul(D,K),i=i+Math.imul(P,V)|0,n=n+Math.imul(P,F)|0,n=n+Math.imul(C,V)|0,a=a+Math.imul(C,F)|0,i=i+Math.imul(B,$)|0,n=n+Math.imul(B,G)|0,n=n+Math.imul(j,$)|0,a=a+Math.imul(j,G)|0,i=i+Math.imul(A,W)|0,n=n+Math.imul(A,Z)|0,n=n+Math.imul(x,W)|0,a=a+Math.imul(x,Z)|0,i=i+Math.imul(M,Q)|0,n=n+Math.imul(M,ee)|0,n=n+Math.imul(E,Q)|0,a=a+Math.imul(E,ee)|0,i=i+Math.imul(w,re)|0,n=n+Math.imul(w,ie)|0,n=n+Math.imul(_,re)|0,a=a+Math.imul(_,ie)|0,i=i+Math.imul(m,ae)|0,n=n+Math.imul(m,fe)|0,n=n+Math.imul(y,ae)|0,a=a+Math.imul(y,fe)|0,i=i+Math.imul(p,se)|0,n=n+Math.imul(p,ce)|0,n=n+Math.imul(b,se)|0,a=a+Math.imul(b,ce)|0,i=i+Math.imul(h,he)|0,n=n+Math.imul(h,ue)|0,n=n+Math.imul(u,he)|0,a=a+Math.imul(u,ue)|0;var Ee=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(z,L),n=Math.imul(z,K),n=n+Math.imul(N,L)|0,a=Math.imul(N,K),i=i+Math.imul(T,V)|0,n=n+Math.imul(T,F)|0,n=n+Math.imul(D,V)|0,a=a+Math.imul(D,F)|0,i=i+Math.imul(P,$)|0,n=n+Math.imul(P,G)|0,n=n+Math.imul(C,$)|0,a=a+Math.imul(C,G)|0,i=i+Math.imul(B,W)|0,n=n+Math.imul(B,Z)|0,n=n+Math.imul(j,W)|0,a=a+Math.imul(j,Z)|0,i=i+Math.imul(A,Q)|0,n=n+Math.imul(A,ee)|0,n=n+Math.imul(x,Q)|0,a=a+Math.imul(x,ee)|0,i=i+Math.imul(M,re)|0,n=n+Math.imul(M,ie)|0,n=n+Math.imul(E,re)|0,a=a+Math.imul(E,ie)|0,i=i+Math.imul(w,ae)|0,n=n+Math.imul(w,fe)|0,n=n+Math.imul(_,ae)|0,a=a+Math.imul(_,fe)|0,i=i+Math.imul(m,se)|0,n=n+Math.imul(m,ce)|0,n=n+Math.imul(y,se)|0,a=a+Math.imul(y,ce)|0,i=i+Math.imul(p,he)|0,n=n+Math.imul(p,ue)|0,n=n+Math.imul(b,he)|0,a=a+Math.imul(b,ue)|0,i=i+Math.imul(h,pe)|0,n=n+Math.imul(h,be)|0,n=n+Math.imul(u,pe)|0,a=a+Math.imul(u,be)|0;var ke=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(z,V),n=Math.imul(z,F),n=n+Math.imul(N,V)|0,a=Math.imul(N,F),i=i+Math.imul(T,$)|0,n=n+Math.imul(T,G)|0,n=n+Math.imul(D,$)|0,a=a+Math.imul(D,G)|0,i=i+Math.imul(P,W)|0,n=n+Math.imul(P,Z)|0,n=n+Math.imul(C,W)|0,a=a+Math.imul(C,Z)|0,i=i+Math.imul(B,Q)|0,n=n+Math.imul(B,ee)|0,n=n+Math.imul(j,Q)|0,a=a+Math.imul(j,ee)|0,i=i+Math.imul(A,re)|0,n=n+Math.imul(A,ie)|0,n=n+Math.imul(x,re)|0,a=a+Math.imul(x,ie)|0,i=i+Math.imul(M,ae)|0,n=n+Math.imul(M,fe)|0,n=n+Math.imul(E,ae)|0,a=a+Math.imul(E,fe)|0,i=i+Math.imul(w,se)|0,n=n+Math.imul(w,ce)|0,n=n+Math.imul(_,se)|0,a=a+Math.imul(_,ce)|0,i=i+Math.imul(m,he)|0,n=n+Math.imul(m,ue)|0,n=n+Math.imul(y,he)|0,a=a+Math.imul(y,ue)|0,i=i+Math.imul(p,pe)|0,n=n+Math.imul(p,be)|0,n=n+Math.imul(b,pe)|0,a=a+Math.imul(b,be)|0;var Ae=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,i=Math.imul(z,$),n=Math.imul(z,G),n=n+Math.imul(N,$)|0,a=Math.imul(N,G),i=i+Math.imul(T,W)|0,n=n+Math.imul(T,Z)|0,n=n+Math.imul(D,W)|0,a=a+Math.imul(D,Z)|0,i=i+Math.imul(P,Q)|0,n=n+Math.imul(P,ee)|0,n=n+Math.imul(C,Q)|0,a=a+Math.imul(C,ee)|0,i=i+Math.imul(B,re)|0,n=n+Math.imul(B,ie)|0,n=n+Math.imul(j,re)|0,a=a+Math.imul(j,ie)|0,i=i+Math.imul(A,ae)|0,n=n+Math.imul(A,fe)|0,n=n+Math.imul(x,ae)|0,a=a+Math.imul(x,fe)|0,i=i+Math.imul(M,se)|0,n=n+Math.imul(M,ce)|0,n=n+Math.imul(E,se)|0,a=a+Math.imul(E,ce)|0,i=i+Math.imul(w,he)|0,n=n+Math.imul(w,ue)|0,n=n+Math.imul(_,he)|0,a=a+Math.imul(_,ue)|0,i=i+Math.imul(m,pe)|0,n=n+Math.imul(m,be)|0,n=n+Math.imul(y,pe)|0,a=a+Math.imul(y,be)|0;var xe=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(xe>>>26)|0,xe&=67108863,i=Math.imul(z,W),n=Math.imul(z,Z),n=n+Math.imul(N,W)|0,a=Math.imul(N,Z),i=i+Math.imul(T,Q)|0,n=n+Math.imul(T,ee)|0,n=n+Math.imul(D,Q)|0,a=a+Math.imul(D,ee)|0,i=i+Math.imul(P,re)|0,n=n+Math.imul(P,ie)|0,n=n+Math.imul(C,re)|0,a=a+Math.imul(C,ie)|0,i=i+Math.imul(B,ae)|0,n=n+Math.imul(B,fe)|0,n=n+Math.imul(j,ae)|0,a=a+Math.imul(j,fe)|0,i=i+Math.imul(A,se)|0,n=n+Math.imul(A,ce)|0,n=n+Math.imul(x,se)|0,a=a+Math.imul(x,ce)|0,i=i+Math.imul(M,he)|0,n=n+Math.imul(M,ue)|0,n=n+Math.imul(E,he)|0,a=a+Math.imul(E,ue)|0,i=i+Math.imul(w,pe)|0,n=n+Math.imul(w,be)|0,n=n+Math.imul(_,pe)|0,a=a+Math.imul(_,be)|0;var Ie=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(z,Q),n=Math.imul(z,ee),n=n+Math.imul(N,Q)|0,a=Math.imul(N,ee),i=i+Math.imul(T,re)|0,n=n+Math.imul(T,ie)|0,n=n+Math.imul(D,re)|0,a=a+Math.imul(D,ie)|0,i=i+Math.imul(P,ae)|0,n=n+Math.imul(P,fe)|0,n=n+Math.imul(C,ae)|0,a=a+Math.imul(C,fe)|0,i=i+Math.imul(B,se)|0,n=n+Math.imul(B,ce)|0,n=n+Math.imul(j,se)|0,a=a+Math.imul(j,ce)|0,i=i+Math.imul(A,he)|0,n=n+Math.imul(A,ue)|0,n=n+Math.imul(x,he)|0,a=a+Math.imul(x,ue)|0,i=i+Math.imul(M,pe)|0,n=n+Math.imul(M,be)|0,n=n+Math.imul(E,pe)|0,a=a+Math.imul(E,be)|0;var Be=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Be>>>26)|0,Be&=67108863,i=Math.imul(z,re),n=Math.imul(z,ie),n=n+Math.imul(N,re)|0,a=Math.imul(N,ie),i=i+Math.imul(T,ae)|0,n=n+Math.imul(T,fe)|0,n=n+Math.imul(D,ae)|0,a=a+Math.imul(D,fe)|0,i=i+Math.imul(P,se)|0,n=n+Math.imul(P,ce)|0,n=n+Math.imul(C,se)|0,a=a+Math.imul(C,ce)|0,i=i+Math.imul(B,he)|0,n=n+Math.imul(B,ue)|0,n=n+Math.imul(j,he)|0,a=a+Math.imul(j,ue)|0,i=i+Math.imul(A,pe)|0,n=n+Math.imul(A,be)|0,n=n+Math.imul(x,pe)|0,a=a+Math.imul(x,be)|0;var je=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(je>>>26)|0,je&=67108863,i=Math.imul(z,ae),n=Math.imul(z,fe),n=n+Math.imul(N,ae)|0,a=Math.imul(N,fe),i=i+Math.imul(T,se)|0,n=n+Math.imul(T,ce)|0,n=n+Math.imul(D,se)|0,a=a+Math.imul(D,ce)|0,i=i+Math.imul(P,he)|0,n=n+Math.imul(P,ue)|0,n=n+Math.imul(C,he)|0,a=a+Math.imul(C,ue)|0,i=i+Math.imul(B,pe)|0,n=n+Math.imul(B,be)|0,n=n+Math.imul(j,pe)|0,a=a+Math.imul(j,be)|0;var Re=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Re>>>26)|0,Re&=67108863,i=Math.imul(z,se),n=Math.imul(z,ce),n=n+Math.imul(N,se)|0,a=Math.imul(N,ce),i=i+Math.imul(T,he)|0,n=n+Math.imul(T,ue)|0,n=n+Math.imul(D,he)|0,a=a+Math.imul(D,ue)|0,i=i+Math.imul(P,pe)|0,n=n+Math.imul(P,be)|0,n=n+Math.imul(C,pe)|0,a=a+Math.imul(C,be)|0;var Pe=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,i=Math.imul(z,he),n=Math.imul(z,ue),n=n+Math.imul(N,he)|0,a=Math.imul(N,ue),i=i+Math.imul(T,pe)|0,n=n+Math.imul(T,be)|0,n=n+Math.imul(D,pe)|0,a=a+Math.imul(D,be)|0;var Ce=(c+i|0)+((8191&n)<<13)|0;c=(a+(n>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,i=Math.imul(z,pe),n=Math.imul(z,be),n=n+Math.imul(N,pe)|0,a=Math.imul(N,be);var Oe=(c+i|0)+((8191&n)<<13)|0;return c=(a+(n>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,s[0]=ve,s[1]=me,s[2]=ye,s[3]=ge,s[4]=we,s[5]=_e,s[6]=Se,s[7]=Me,s[8]=Ee,s[9]=ke,s[10]=Ae,s[11]=xe,s[12]=Ie,s[13]=Be,s[14]=je,s[15]=Re,s[16]=Pe,s[17]=Ce,s[18]=Oe,0!==c&&(s[19]=c,r.length++),r};function b(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var i=0,n=0,a=0;a>>26)|0,n+=f>>>26,f&=67108863}r.words[a]=o,i=f,f=n}return 0!==i?r.words[a]=i:r.length--,r.strip()}function v(e,t,r){var i=new m;return i.mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(p=l),a.prototype.mulTo=function(e,t){var r,i=this.length+e.length;return r=10===this.length&&10===e.length?p(this,e,t):i<63?l(this,e,t):i<1024?b(this,e,t):v(this,e,t),r},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=a.prototype._countBits(e)-1,i=0;i>=1;return i},m.prototype.permute=function(e,t,r,i,n,a){for(var f=0;f>>=1)n++;return 1<>>=13,r[2*f+1]=8191&a,a>>>=13;for(f=2*t;f>=26,t+=n/67108864|0,t+=a>>>26,this.words[r]=67108863&a}return 0!==t&&(this.words[r]=t,this.length++),this},a.prototype.muln=function(e){return this.clone().imuln(e)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(e){var t=u(e);if(0===t.length)return new a(1);for(var r=this,i=0;i=0);var t,r=e%26,n=(e-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var f=0;for(t=0;t>>26-r}f&&(this.words[t]=f,this.length++)}if(0!==n){for(t=this.length-1;t>=0;t--)this.words[t+n]=this.words[t];for(t=0;t=0),n=t?(t-t%26)/26:0;var a=e%26,f=Math.min((e-a)/26,this.length),o=67108863^67108863>>>a<f)for(this.length-=f,c=0;c=0&&(0!==d||c>=n);c--){var h=0|this.words[c];this.words[c]=d<<26-a|h>>>a,d=h&o}return s&&0!==d&&(s.words[s.length++]=d),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(e,t,r){return i(0===this.negative),this.iushrn(e,t,r)},a.prototype.shln=function(e){return this.clone().ishln(e)},a.prototype.ushln=function(e){return this.clone().iushln(e)},a.prototype.shrn=function(e){return this.clone().ishrn(e)},a.prototype.ushrn=function(e){return this.clone().iushrn(e)},a.prototype.testn=function(e){i("number"===typeof e&&e>=0);var t=e%26,r=(e-t)/26,n=1<=0);var t=e%26,r=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var n=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},a.prototype.isubn=function(e){if(i("number"===typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(s/67108864|0),this.words[n+r]=67108863&a}for(;n>26,this.words[n+r]=67108863&a;if(0===o)return this.strip();for(i(-1===o),o=0,n=0;n>26,this.words[n]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(e,t){var r=this.length-e.length,i=this.clone(),n=e,f=0|n.words[n.length-1],o=this._countBits(f);r=26-o,0!==r&&(n=n.ushln(r),i.iushln(r),f=0|n.words[n.length-1]);var s,c=i.length-n.length;if("mod"!==t){s=new a(null),s.length=c+1,s.words=new Array(s.length);for(var d=0;d=0;u--){var l=67108864*(0|i.words[n.length+u])+(0|i.words[n.length+u-1]);l=Math.min(l/f|0,67108863),i._ishlnsubmul(n,l,u);while(0!==i.negative)l--,i.negative=0,i._ishlnsubmul(n,1,u),i.isZero()||(i.negative^=1);s&&(s.words[u]=l)}return s&&s.strip(),i.strip(),"div"!==t&&0!==r&&i.iushrn(r),{div:s||null,mod:i}},a.prototype.divmod=function(e,t,r){return i(!e.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===e.negative?(o=this.neg().divmod(e,t),"mod"!==t&&(n=o.div.neg()),"div"!==t&&(f=o.mod.neg(),r&&0!==f.negative&&f.iadd(e)),{div:n,mod:f}):0===this.negative&&0!==e.negative?(o=this.divmod(e.neg(),t),"mod"!==t&&(n=o.div.neg()),{div:n,mod:o.mod}):0!==(this.negative&e.negative)?(o=this.neg().divmod(e.neg(),t),"div"!==t&&(f=o.mod.neg(),r&&0!==f.negative&&f.isub(e)),{div:o.div,mod:f}):e.length>this.length||this.cmp(e)<0?{div:new a(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new a(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new a(this.modn(e.words[0]))}:this._wordDiv(e,t);var n,f,o},a.prototype.div=function(e){return this.divmod(e,"div",!1).div},a.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},a.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},a.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),n=e.andln(1),a=r.cmp(i);return a<0||1===n&&0===a?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},a.prototype.modn=function(e){i(e<=67108863);for(var t=(1<<26)%e,r=0,n=this.length-1;n>=0;n--)r=(t*r+(0|this.words[n]))%e;return r},a.prototype.idivn=function(e){i(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*t;this.words[r]=n/e|0,t=n%e}return this.strip()},a.prototype.divn=function(e){return this.clone().idivn(e)},a.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();var n=new a(1),f=new a(0),o=new a(0),s=new a(1),c=0;while(t.isEven()&&r.isEven())t.iushrn(1),r.iushrn(1),++c;var d=r.clone(),h=t.clone();while(!t.isZero()){for(var u=0,l=1;0===(t.words[0]&l)&&u<26;++u,l<<=1);if(u>0){t.iushrn(u);while(u-- >0)(n.isOdd()||f.isOdd())&&(n.iadd(d),f.isub(h)),n.iushrn(1),f.iushrn(1)}for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0){r.iushrn(p);while(p-- >0)(o.isOdd()||s.isOdd())&&(o.iadd(d),s.isub(h)),o.iushrn(1),s.iushrn(1)}t.cmp(r)>=0?(t.isub(r),n.isub(o),f.isub(s)):(r.isub(t),o.isub(n),s.isub(f))}return{a:o,b:s,gcd:r.iushln(c)}},a.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();var n,f=new a(1),o=new a(0),s=r.clone();while(t.cmpn(1)>0&&r.cmpn(1)>0){for(var c=0,d=1;0===(t.words[0]&d)&&c<26;++c,d<<=1);if(c>0){t.iushrn(c);while(c-- >0)f.isOdd()&&f.iadd(s),f.iushrn(1)}for(var h=0,u=1;0===(r.words[0]&u)&&h<26;++h,u<<=1);if(h>0){r.iushrn(h);while(h-- >0)o.isOdd()&&o.iadd(s),o.iushrn(1)}t.cmp(r)>=0?(t.isub(r),f.isub(o)):(r.isub(t),o.isub(f))}return n=0===t.cmpn(1)?f:o,n.cmpn(0)<0&&n.iadd(e),n},a.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var i=0;t.isEven()&&r.isEven();i++)t.iushrn(1),r.iushrn(1);do{while(t.isEven())t.iushrn(1);while(r.isEven())r.iushrn(1);var n=t.cmp(r);if(n<0){var a=t;t=r,r=a}else if(0===n||0===r.cmpn(1))break;t.isub(r)}while(1);return r.iushln(i)},a.prototype.invm=function(e){return this.egcd(e).a.umod(e)},a.prototype.isEven=function(){return 0===(1&this.words[0])},a.prototype.isOdd=function(){return 1===(1&this.words[0])},a.prototype.andln=function(e){return this.words[0]&e},a.prototype.bincn=function(e){i("number"===typeof e);var t=e%26,r=(e-t)/26,n=1<>>26,o&=67108863,this.words[f]=o}return 0!==a&&(this.words[f]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),i(e<=67108863,"Number is too big");var n=0|this.words[0];t=n===e?0:ne.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|e.words[r];if(i!==n){in&&(t=1);break}}return t},a.prototype.gtn=function(e){return 1===this.cmpn(e)},a.prototype.gt=function(e){return 1===this.cmp(e)},a.prototype.gten=function(e){return this.cmpn(e)>=0},a.prototype.gte=function(e){return this.cmp(e)>=0},a.prototype.ltn=function(e){return-1===this.cmpn(e)},a.prototype.lt=function(e){return-1===this.cmp(e)},a.prototype.lten=function(e){return this.cmpn(e)<=0},a.prototype.lte=function(e){return this.cmp(e)<=0},a.prototype.eqn=function(e){return 0===this.cmpn(e)},a.prototype.eq=function(e){return 0===this.cmp(e)},a.red=function(e){return new E(e)},a.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},a.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(e){return this.red=e,this},a.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},a.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},a.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},a.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},a.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},a.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},a.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},a.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},a.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var y={k256:null,p224:null,p192:null,p25519:null};function g(e,t){this.name=e,this.p=new a(t,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){g.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){g.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function S(){g.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function M(){g.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function E(e){if("string"===typeof e){var t=a._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function k(e){E.call(this,e),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}g.prototype._tmp=function(){var e=new a(null);return e.words=new Array(Math.ceil(this.n/13)),e},g.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),t=r.bitLength()}while(t>this.n);var i=t0?r.isub(this.p):r.strip(),r},g.prototype.split=function(e,t){e.iushrn(this.n,0,t)},g.prototype.imulK=function(e){return e.imul(this.k)},n(w,g),w.prototype.split=function(e,t){for(var r=4194303,i=Math.min(e.length,9),n=0;n>>22,a=f}a>>>=22,e.words[n-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=n,t=i}return 0!==t&&(e.words[e.length++]=t),e},a._prime=function(e){if(y[e])return y[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new _;else if("p192"===e)t=new S;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new M}return y[e]=t,t},E.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},E.prototype._verify2=function(e,t){i(0===(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},E.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},E.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},E.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},E.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},E.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},E.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},E.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},E.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},E.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},E.prototype.isqr=function(e){return this.imul(e,e.clone())},E.prototype.sqr=function(e){return this.mul(e,e)},E.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2===1),3===t){var r=this.m.add(new a(1)).iushrn(2);return this.pow(e,r)}var n=this.m.subn(1),f=0;while(!n.isZero()&&0===n.andln(1))f++,n.iushrn(1);i(!n.isZero());var o=new a(1).toRed(this),s=o.redNeg(),c=this.m.subn(1).iushrn(1),d=this.m.bitLength();d=new a(2*d*d).toRed(this);while(0!==this.pow(d,c).cmp(s))d.redIAdd(s);var h=this.pow(d,n),u=this.pow(e,n.addn(1).iushrn(1)),l=this.pow(e,n),p=f;while(0!==l.cmp(o)){for(var b=l,v=0;0!==b.cmp(o);v++)b=b.redSqr();i(v=0;n--){for(var d=t.words[n],h=c-1;h>=0;h--){var u=d>>h&1;f!==i[0]&&(f=this.sqr(f)),0!==u||0!==o?(o<<=1,o|=u,s++,(s===r||0===n&&0===h)&&(f=this.mul(f,i[o]),s=0,o=0)):s=0}c=26}return f},E.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},E.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},a.mont=function(e){return new k(e)},n(k,E),k.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},k.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},k.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),a=n;return n.cmp(this.m)>=0?a=n.isub(this.m):n.cmpn(0)<0&&(a=n.iadd(this.m)),a._forceRed(this)},k.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new a(0)._forceRed(this);var r=e.mul(t),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),f=n;return n.cmp(this.m)>=0?f=n.isub(this.m):n.cmpn(0)<0&&(f=n.iadd(this.m)),f._forceRed(this)},k.prototype.invm=function(e){var t=this.imod(e._invmp(this.m).mul(this.r2));return t._forceRed(this)}})(e,this)}).call(this,r("62e4")(e))},"39f5":function(e,t,r){var i=r("8707").Buffer;function n(e){i.isBuffer(e)||(e=i.from(e));for(var t=e.length/4|0,r=new Array(t),n=0;n>>24]^d[p>>>16&255]^h[b>>>8&255]^u[255&v]^t[m++],f=c[p>>>24]^d[b>>>16&255]^h[v>>>8&255]^u[255&l]^t[m++],o=c[b>>>24]^d[v>>>16&255]^h[l>>>8&255]^u[255&p]^t[m++],s=c[v>>>24]^d[l>>>16&255]^h[p>>>8&255]^u[255&b]^t[m++],l=a,p=f,b=o,v=s;return a=(i[l>>>24]<<24|i[p>>>16&255]<<16|i[b>>>8&255]<<8|i[255&v])^t[m++],f=(i[p>>>24]<<24|i[b>>>16&255]<<16|i[v>>>8&255]<<8|i[255&l])^t[m++],o=(i[b>>>24]<<24|i[v>>>16&255]<<16|i[l>>>8&255]<<8|i[255&p])^t[m++],s=(i[v>>>24]<<24|i[l>>>16&255]<<16|i[p>>>8&255]<<8|i[255&b])^t[m++],a>>>=0,f>>>=0,o>>>=0,s>>>=0,[a,f,o,s]}var o=[0,1,2,4,8,16,32,64,128,27,54],s=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],i=[],n=[[],[],[],[]],a=[[],[],[],[]],f=0,o=0,s=0;s<256;++s){var c=o^o<<1^o<<2^o<<3^o<<4;c=c>>>8^255&c^99,r[f]=c,i[c]=f;var d=e[f],h=e[d],u=e[h],l=257*e[c]^16843008*c;n[0][f]=l<<24|l>>>8,n[1][f]=l<<16|l>>>16,n[2][f]=l<<8|l>>>24,n[3][f]=l,l=16843009*u^65537*h^257*d^16843008*f,a[0][c]=l<<24|l>>>8,a[1][c]=l<<16|l>>>16,a[2][c]=l<<8|l>>>24,a[3][c]=l,0===f?f=o=1:(f=d^e[e[e[u^d]]],o^=e[e[o]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:a}}();function c(e){this._key=n(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,i=4*(r+1),n=[],a=0;a>>24,f=s.SBOX[f>>>24]<<24|s.SBOX[f>>>16&255]<<16|s.SBOX[f>>>8&255]<<8|s.SBOX[255&f],f^=o[a/t|0]<<24):t>6&&a%t===4&&(f=s.SBOX[f>>>24]<<24|s.SBOX[f>>>16&255]<<16|s.SBOX[f>>>8&255]<<8|s.SBOX[255&f]),n[a]=n[a-t]^f}for(var c=[],d=0;d>>24]]^s.INV_SUB_MIX[1][s.SBOX[u>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[u>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&u]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return e=n(e),f(e,this._keySchedule,s.SUB_MIX,s.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=i.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){e=n(e);var t=e[1];e[1]=e[3],e[3]=t;var r=f(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX,this._nRounds),a=i.allocUnsafe(16);return a.writeUInt32BE(r[0],0),a.writeUInt32BE(r[3],4),a.writeUInt32BE(r[2],8),a.writeUInt32BE(r[1],12),a},c.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},e.exports.AES=c},"3daf":function(e,t,r){"use strict";var i=r("4136"),n=r("3337"),a=r("399f"),f=r("3fb5"),o=i.base,s=n.utils.assert;function c(e){this.twisted=1!==(0|e.a),this.mOneA=this.twisted&&-1===(0|e.a),this.extended=this.mOneA,o.call(this,"edwards",e),this.a=new a(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new a(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new a(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1===(0|e.c)}function d(e,t,r,i,n){o.BasePoint.call(this,e,"projective"),null===t&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new a(t,16),this.y=new a(r,16),this.z=i?new a(i,16):this.curve.one,this.t=n&&new a(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}f(c,o),e.exports=c,c.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},c.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},c.prototype.jpoint=function(e,t,r,i){return this.point(e,t,r,i)},c.prototype.pointFromX=function(e,t){e=new a(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=this.c2.redSub(this.a.redMul(r)),n=this.one.redSub(this.c2.redMul(this.d).redMul(r)),f=i.redMul(n.redInvm()),o=f.redSqrt();if(0!==o.redSqr().redSub(f).cmp(this.zero))throw new Error("invalid point");var s=o.fromRed().isOdd();return(t&&!s||!t&&s)&&(o=o.redNeg()),this.point(e,o)},c.prototype.pointFromY=function(e,t){e=new a(e,16),e.red||(e=e.toRed(this.red));var r=e.redSqr(),i=r.redSub(this.c2),n=r.redMul(this.d).redMul(this.c2).redSub(this.a),f=i.redMul(n.redInvm());if(0===f.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var o=f.redSqrt();if(0!==o.redSqr().redSub(f).cmp(this.zero))throw new Error("invalid point");return o.fromRed().isOdd()!==t&&(o=o.redNeg()),this.point(o,e)},c.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),r=e.y.redSqr(),i=t.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(r)));return 0===i.cmp(n)},f(d,o.BasePoint),c.prototype.pointFromJSON=function(e){return d.fromJSON(this,e)},c.prototype.point=function(e,t,r,i){return new d(this,e,t,r,i)},d.fromJSON=function(e,t){return new d(e,t[0],t[1],t[2])},d.prototype.inspect=function(){return this.isInfinity()?"":""},d.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},d.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(e),n=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),f=a.redSub(r),o=i.redSub(t),s=n.redMul(f),c=a.redMul(o),d=n.redMul(o),h=f.redMul(a);return this.curve.point(s,c,h,d)},d.prototype._projDbl=function(){var e,t,r,i=this.x.redAdd(this.y).redSqr(),n=this.x.redSqr(),a=this.y.redSqr();if(this.curve.twisted){var f=this.curve._mulA(n),o=f.redAdd(a);if(this.zOne)e=i.redSub(n).redSub(a).redMul(o.redSub(this.curve.two)),t=o.redMul(f.redSub(a)),r=o.redSqr().redSub(o).redSub(o);else{var s=this.z.redSqr(),c=o.redSub(s).redISub(s);e=i.redSub(n).redISub(a).redMul(c),t=o.redMul(f.redSub(a)),r=o.redMul(c)}}else{f=n.redAdd(a),s=this.curve._mulC(this.z).redSqr(),c=f.redSub(s).redSub(s);e=this.curve._mulC(i.redISub(f)).redMul(c),t=this.curve._mulC(f).redMul(n.redISub(a)),r=f.redMul(c)}return this.curve.point(e,t,r)},d.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},d.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),n=this.z.redMul(e.z.redAdd(e.z)),a=r.redSub(t),f=n.redSub(i),o=n.redAdd(i),s=r.redAdd(t),c=a.redMul(f),d=o.redMul(s),h=a.redMul(s),u=f.redMul(o);return this.curve.point(c,d,u,h)},d.prototype._projAdd=function(e){var t,r,i=this.z.redMul(e.z),n=i.redSqr(),a=this.x.redMul(e.x),f=this.y.redMul(e.y),o=this.curve.d.redMul(a).redMul(f),s=n.redSub(o),c=n.redAdd(o),d=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(a).redISub(f),h=i.redMul(s).redMul(d);return this.curve.twisted?(t=i.redMul(c).redMul(f.redSub(this.curve._mulA(a))),r=s.redMul(c)):(t=i.redMul(c).redMul(f.redSub(a)),r=this.curve._mulC(s).redMul(c)),this.curve.point(h,t,r)},d.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},d.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},d.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},d.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},d.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},d.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},d.prototype.getX=function(){return this.normalize(),this.x.fromRed()},d.prototype.getY=function(){return this.normalize(),this.y.fromRed()},d.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},d.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),0===this.x.cmp(t))return!0}},d.prototype.toP=d.prototype.normalize,d.prototype.mixedAdd=d.prototype.add},"3f62":function(e,t,r){var i=r("8707").Buffer,n=i.alloc(16,0);function a(e){return[e.readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)]}function f(e){var t=i.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function o(e){this.h=e,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}o.prototype.ghash=function(e){var t=-1;while(++t0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=f(n)},o.prototype.update=function(e){var t;this.cache=i.concat([this.cache,e]);while(this.cache.length>=16)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},o.prototype.final=function(e,t){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(f([0,e,0,t])),this.state},e.exports=o},4:function(e,t){},"409b":function(e,t){e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},4111:function(e,t,r){"use strict";var i=r("7f7a");t.certificate=r("56b5");var n=i.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});t.RSAPrivateKey=n;var a=i.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});t.RSAPublicKey=a;var f=i.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(o),this.key("subjectPublicKey").bitstr())});t.PublicKey=f;var o=i.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),s=i.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(o),this.key("subjectPrivateKey").octstr())});t.PrivateKey=s;var c=i.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});t.EncryptedPrivateKey=c;var d=i.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});t.DSAPrivateKey=d,t.DSAparam=i.define("DSAparam",function(){this.int()});var h=i.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(u),this.key("publicKey").optional().explicit(1).bitstr())});t.ECPrivateKey=h;var u=i.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});t.signature=i.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},4136:function(e,t,r){"use strict";var i=t;i.base=r("ea53"),i.short=r("3300"),i.mont=r("676f"),i.edwards=r("3daf")},"41df":function(e,t,r){var i=t;i.Reporter=r("d1c8").Reporter,i.DecoderBuffer=r("6283").DecoderBuffer,i.EncoderBuffer=r("6283").EncoderBuffer,i.Node=r("8360")},4228:function(e,t,r){var i=r("82f0"),n=r("8707").Buffer,a=r("bac2"),f=r("09f5"),o=r("6430"),s=r("39f5"),c=r("ae84"),d=r("3fb5");function h(e,t,r){o.call(this),this._cache=new u,this._last=void 0,this._cipher=new s.AES(t),this._prev=n.from(r),this._mode=e,this._autopadding=!0}function u(){this.cache=n.allocUnsafe(0)}function l(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");var r=-1;while(++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},u.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=b,t.createDecipheriv=p},"44a3":function(e,t,r){"use strict";var i=r("399f"),n=r("3337"),a=n.utils,f=a.assert,o=a.cachedProperty,s=a.parseBytes;function c(e,t){this.eddsa=e,"object"!==typeof t&&(t=s(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),f(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof i&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}o(c,"S",function(){return this.eddsa.decodeInt(this.Sencoded())}),o(c,"R",function(){return this.eddsa.decodePoint(this.Rencoded())}),o(c,"Rencoded",function(){return this.eddsa.encodePoint(this.R())}),o(c,"Sencoded",function(){return this.eddsa.encodeInt(this.S())}),c.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},c.prototype.toHex=function(){return a.encode(this.toBytes(),"hex").toUpperCase()},e.exports=c},"4db4":function(e,t){var r=1/0,i=1.7976931348623157e308,n=NaN,a="[object Symbol]",f=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,d=parseInt,h=Object.prototype,u=h.toString;function l(e){return"number"==typeof e&&e==y(e)}function p(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function b(e){return!!e&&"object"==typeof e}function v(e){return"symbol"==typeof e||b(e)&&u.call(e)==a}function m(e){if(!e)return 0===e?e:0;if(e=g(e),e===r||e===-r){var t=e<0?-1:1;return t*i}return e===e?e:0}function y(e){var t=m(e),r=t%1;return t===t?r?t-r:t:0}function g(e){if("number"==typeof e)return e;if(v(e))return n;if(p(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=p(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(f,"");var r=s.test(e);return r||c.test(e)?d(e.slice(2),r?2:8):o.test(e)?n:+e}e.exports=l},"4dd0":function(e,t,r){var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m,f=r("ae84"),o=r("fda6"),s=r("8707").Buffer;e.exports=function(e,t){var r,c=e.toString(),d=c.match(i);if(d){var h="aes"+d[1],u=s.from(d[2],"hex"),l=s.from(d[3].replace(/[\r\n]/g,""),"base64"),p=f(t,u.slice(0,8),parseInt(d[1],10)).key,b=[],v=o.createDecipheriv(h,p,u);b.push(v.update(l)),b.push(v.final()),r=s.concat(b)}else{var m=c.match(a);r=new s(m[2].replace(/[\r\n]/g,""),"base64")}var y=c.match(n)[1];return{tag:y,data:r}}},"4e2b":function(e,t,r){"use strict";var i=r("da3e"),n=r("3fb5"),a=r("1545"),f=a.utils,o=a.Cipher;function s(){this.tmp=new Array(2),this.keys=null}function c(e){o.call(this,e);var t=new s;this._desState=t,this.deriveKeys(t,e.key)}n(c,o),e.exports=c,c.create=function(e){return new c(e)};var d=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];c.prototype.deriveKeys=function(e,t){e.keys=new Array(32),i.equal(t.length,this.blockSize,"Invalid key length");var r=f.readUInt32BE(t,0),n=f.readUInt32BE(t,4);f.pc1(r,n,e.tmp,0),r=e.tmp[0],n=e.tmp[1];for(var a=0;a>>1];r=f.r28shl(r,o),n=f.r28shl(n,o),f.pc2(r,n,e.keys,a)}},c.prototype._update=function(e,t,r,i){var n=this._desState,a=f.readUInt32BE(e,t),o=f.readUInt32BE(e,t+4);f.ip(a,o,n.tmp,0),a=n.tmp[0],o=n.tmp[1],"encrypt"===this.type?this._encrypt(n,a,o,n.tmp,0):this._decrypt(n,a,o,n.tmp,0),a=n.tmp[0],o=n.tmp[1],f.writeUInt32BE(r,a,i),f.writeUInt32BE(r,o,i+4)},c.prototype._pad=function(e,t){for(var r=e.length-t,i=t;i>>0,a=l}f.rip(o,a,i,n)},c.prototype._decrypt=function(e,t,r,i,n){for(var a=r,o=t,s=e.keys.length-2;s>=0;s-=2){var c=e.keys[s],d=e.keys[s+1];f.expand(a,e.tmp,0),c^=e.tmp[0],d^=e.tmp[1];var h=f.substitute(c,d),u=f.permute(h),l=a;a=(o^u)>>>0,o=l}f.rip(a,o,i,n)}},"4fd1":function(e,t,r){var i=r("3fb5"),n=r("b672"),a=r("8707").Buffer,f=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],o=new Array(160);function s(){this.init(),this._w=o,n.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function d(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function u(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function l(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function b(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function v(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function m(e,t){return e>>>0>>0?1:0}i(s,n),s.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},s.prototype._update=function(e){for(var t=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,a=0|this._dh,o=0|this._eh,s=0|this._fh,y=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,S=0|this._cl,M=0|this._dl,E=0|this._el,k=0|this._fl,A=0|this._gl,x=0|this._hl,I=0;I<32;I+=2)t[I]=e.readInt32BE(4*I),t[I+1]=e.readInt32BE(4*I+4);for(;I<160;I+=2){var B=t[I-30],j=t[I-30+1],R=l(B,j),P=p(j,B);B=t[I-4],j=t[I-4+1];var C=b(B,j),O=v(j,B),T=t[I-14],D=t[I-14+1],q=t[I-32],z=t[I-32+1],N=P+D|0,U=R+T+m(N,P)|0;N=N+O|0,U=U+C+m(N,O)|0,N=N+z|0,U=U+q+m(N,z)|0,t[I]=U,t[I+1]=N}for(var L=0;L<160;L+=2){U=t[L],N=t[L+1];var K=d(r,i,n),H=d(w,_,S),V=h(r,w),F=h(w,r),X=u(o,E),$=u(E,o),G=f[L],J=f[L+1],W=c(o,s,y),Z=c(E,k,A),Y=x+$|0,Q=g+X+m(Y,x)|0;Y=Y+Z|0,Q=Q+W+m(Y,Z)|0,Y=Y+J|0,Q=Q+G+m(Y,J)|0,Y=Y+N|0,Q=Q+U+m(Y,N)|0;var ee=F+H|0,te=V+K+m(ee,F)|0;g=y,x=A,y=s,A=k,s=o,k=E,E=M+Y|0,o=a+Q+m(E,M)|0,a=n,M=S,n=i,S=_,i=r,_=w,w=Y+ee|0,r=Q+te+m(w,Y)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+S|0,this._dl=this._dl+M|0,this._el=this._el+E|0,this._fl=this._fl+k|0,this._gl=this._gl+A|0,this._hl=this._hl+x|0,this._ah=this._ah+r+m(this._al,w)|0,this._bh=this._bh+i+m(this._bl,_)|0,this._ch=this._ch+n+m(this._cl,S)|0,this._dh=this._dh+a+m(this._dl,M)|0,this._eh=this._eh+o+m(this._el,E)|0,this._fh=this._fh+s+m(this._fl,k)|0,this._gh=this._gh+y+m(this._gl,A)|0,this._hh=this._hh+g+m(this._hl,x)|0},s.prototype._hash=function(){var e=a.allocUnsafe(64);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=s},5165:function(e,t,r){(function(e){var i=r("8c8a");function n(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}t.encrypt=function(t,r){while(t._cache.length>o%8,e._prev=a(e._prev,r?n:f);return c}function a(e,t){var r=e.length,n=-1,a=i.allocUnsafe(e.length);e=i.concat([e,i.from([t])]);while(++n>7;return a}t.encrypt=function(e,t,r){var a=t.length,f=i.allocUnsafe(a),o=-1;while(++oe)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(c),t.cmp(c)){if(!t.cmp(d))while(r.mod(h).cmp(u))r.iadd(p)}else while(r.mod(a).cmp(l))r.iadd(p);if(f=r.shrn(1),m(f)&&m(r)&&y(f)&&y(r)&&o.test(f)&&o.test(r))return r}}},5919:function(e,t,r){"use strict";t.sha1=r("13e2"),t.sha224=r("07f2"),t.sha256=r("6eed"),t.sha384=r("8b95"),t.sha512=r("b525")},"5a76":function(e,t,r){var i=r("f5767");e.exports=function(e){return(new i).update(e).digest()}},"5ee7":function(e,t,r){"use strict";t.readUInt32BE=function(e,t){var r=e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t];return r>>>0},t.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},t.ip=function(e,t,r,i){for(var n=0,a=0,f=6;f>=0;f-=2){for(var o=0;o<=24;o+=8)n<<=1,n|=t>>>o+f&1;for(o=0;o<=24;o+=8)n<<=1,n|=e>>>o+f&1}for(f=6;f>=0;f-=2){for(o=1;o<=25;o+=8)a<<=1,a|=t>>>o+f&1;for(o=1;o<=25;o+=8)a<<=1,a|=e>>>o+f&1}r[i+0]=n>>>0,r[i+1]=a>>>0},t.rip=function(e,t,r,i){for(var n=0,a=0,f=0;f<4;f++)for(var o=24;o>=0;o-=8)n<<=1,n|=t>>>o+f&1,n<<=1,n|=e>>>o+f&1;for(f=4;f<8;f++)for(o=24;o>=0;o-=8)a<<=1,a|=t>>>o+f&1,a<<=1,a|=e>>>o+f&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.pc1=function(e,t,r,i){for(var n=0,a=0,f=7;f>=5;f--){for(var o=0;o<=24;o+=8)n<<=1,n|=t>>o+f&1;for(o=0;o<=24;o+=8)n<<=1,n|=e>>o+f&1}for(o=0;o<=24;o+=8)n<<=1,n|=t>>o+f&1;for(f=1;f<=3;f++){for(o=0;o<=24;o+=8)a<<=1,a|=t>>o+f&1;for(o=0;o<=24;o+=8)a<<=1,a|=e>>o+f&1}for(o=0;o<=24;o+=8)a<<=1,a|=e>>o+f&1;r[i+0]=n>>>0,r[i+1]=a>>>0},t.r28shl=function(e,t){return e<>>28-t};var i=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,r,n){for(var a=0,f=0,o=i.length>>>1,s=0;s>>i[s]&1;for(s=o;s>>i[s]&1;r[n+0]=a>>>0,r[n+1]=f>>>0},t.expand=function(e,t,r){var i=0,n=0;i=(1&e)<<5|e>>>27;for(var a=23;a>=15;a-=4)i<<=6,i|=e>>>a&63;for(a=11;a>=3;a-=4)n|=e>>>a&63,n<<=6;n|=(31&e)<<1|e>>>31,t[r+0]=i>>>0,t[r+1]=n>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var r=0,i=0;i<4;i++){var a=e>>>18-6*i&63,f=n[64*i+a];r<<=4,r|=f}for(i=0;i<4;i++){a=t>>>18-6*i&63,f=n[256+64*i+a];r<<=4,r|=f}return r>>>0};var a=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,r=0;r>>a[r]&1;return t>>>0},t.padSplit=function(e,t,r){var i=e.toString(2);while(i.length":""},d.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},d.prototype.dbl=function(){var e=this.x.redAdd(this.z),t=e.redSqr(),r=this.x.redSub(this.z),i=r.redSqr(),n=t.redSub(i),a=t.redMul(i),f=n.redMul(i.redAdd(this.curve.a24.redMul(n)));return this.curve.point(a,f)},d.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=e.x.redAdd(e.z),a=e.x.redSub(e.z),f=a.redMul(r),o=n.redMul(i),s=t.z.redMul(f.redAdd(o).redSqr()),c=t.x.redMul(f.redISub(o).redSqr());return this.curve.point(s,c)},d.prototype.mul=function(e){for(var t=e.clone(),r=this,i=this.curve.point(null,null),n=this,a=[];0!==t.cmpn(0);t.iushrn(1))a.push(t.andln(1));for(var f=a.length-1;f>=0;f--)0===a[f]?(r=r.diffAdd(i,n),i=i.dbl()):(i=r.diffAdd(i,n),r=r.dbl());return i},d.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},d.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},d.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},d.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},"67de":function(e,t){var r="[object Number]",i=Object.prototype,n=i.toString;function a(e){return!!e&&"object"==typeof e}function f(e){return"number"==typeof e||a(e)&&n.call(e)==r}e.exports=f},"69f2":function(e,t,r){t=e.exports=function(e){e=e.toLowerCase();var r=t[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r};t.sha=r("087f"),t.sha1=r("7e78"),t.sha224=r("72aa"),t.sha256=r("a255"),t.sha384=r("b837"),t.sha512=r("4fd1")},"6aa23":function(e,t,r){"use strict";var i=r("7d92"),n=r("7658"),a=r("da3e");function f(e){if(!(this instanceof f))return new f(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=n.toArray(e.entropy,e.entropyEnc||"hex"),r=n.toArray(e.nonce,e.nonceEnc||"hex"),i=n.toArray(e.pers,e.persEnc||"hex");a(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,r,i)}e.exports=f,f.prototype._init=function(e,t,r){var i=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(r||[])),this._reseed=1},f.prototype.generate=function(e,t,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!==typeof t&&(i=r,r=t,t=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));var a=[];while(a.length0&&r.ishrn(i),r}function b(e,r){e=p(e,r),e=e.mod(r);var i=new t(e.toArray());if(i.lengthd||e<0)throw new TypeError("offset must be a uint32");if(e>s||e>t)throw new RangeError("offset out of range")}function u(e,t,r){if("number"!==typeof e||e!==e)throw new TypeError("size must be a number");if(e>d||e<0)throw new TypeError("size must be a uint32");if(e+t>r||e>s)throw new RangeError("buffer too small")}function l(t,r,i,n){if(!o.isBuffer(t)&&!(t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"===typeof r)n=r,r=0,i=t.length;else if("function"===typeof i)n=i,i=t.length-r;else if("function"!==typeof n)throw new TypeError('"cb" argument must be a function');return h(r,t.length),u(i,r,t.length),p(t,r,i,n)}function p(e,t,r,n){if(i.browser){var a=e.buffer,o=new Uint8Array(a,t,r);return c.getRandomValues(o),n?void i.nextTick(function(){n(null,e)}):e}if(!n){var s=f(r);return s.copy(e,t),e}f(r,function(r,i){if(r)return n(r);i.copy(e,t),n(null,e)})}function b(t,r,i){if("undefined"===typeof r&&(r=0),!o.isBuffer(t)&&!(t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return h(r,t.length),void 0===i&&(i=t.length-r),u(i,r,t.length),p(t,r,i)}c&&c.getRandomValues||!i.browser?(t.randomFill=l,t.randomFillSync=b):(t.randomFill=n,t.randomFillSync=n)}).call(this,r("c8ba"),r("f28c"))},7658:function(e,t,r){"use strict";var i=t;function n(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"!==typeof e){for(var i=0;i>8,f=255&n;a?r.push(a,f):r.push(f)}return r}function a(e){return 1===e.length?"0"+e:e}function f(e){for(var t="",r=0;r=0);return n},a.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},a.prototype.test=function(e,t,r){var n=e.bitLength(),a=i.mont(e),f=new i(1).toRed(a);t||(t=Math.max(1,n/48|0));for(var o=e.subn(1),s=0;!o.testn(s);s++);for(var c=e.shrn(s),d=o.toRed(a),h=!0;t>0;t--){var u=this._randrange(new i(2),o);r&&r(u);var l=u.toRed(a).redPow(c);if(0!==l.cmp(f)&&0!==l.cmp(d)){for(var p=1;p0;t--){var d=this._randrange(new i(2),f),h=e.gcd(d);if(0!==h.cmpn(1))return h;var u=d.toRed(n).redPow(s);if(0!==u.cmp(a)&&0!==u.cmp(c)){for(var l=1;lr||a!==a)throw new TypeError("Bad key length")}}).call(this,r("b639").Buffer)},"7d92":function(e,t,r){var i=t;i.utils=r("c3c0"),i.common=r("edc9"),i.sha=r("5919"),i.ripemd=r("bb44"),i.hmac=r("2137"),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},"7e78":function(e,t,r){var i=r("3fb5"),n=r("b672"),a=r("8707").Buffer,f=[1518500249,1859775393,-1894007588,-899497514],o=new Array(80);function s(){this.init(),this._w=o,n.call(this,64,56)}function c(e){return e<<1|e>>>31}function d(e){return e<<5|e>>>27}function h(e){return e<<30|e>>>2}function u(e,t,r,i){return 0===e?t&r|~t&i:2===e?t&r|t&i|r&i:t^r^i}i(s,n),s.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},s.prototype._update=function(e){for(var t=this._w,r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,o=0|this._e,s=0;s<16;++s)t[s]=e.readInt32BE(4*s);for(;s<80;++s)t[s]=c(t[s-3]^t[s-8]^t[s-14]^t[s-16]);for(var l=0;l<80;++l){var p=~~(l/20),b=d(r)+u(p,i,n,a)+o+t[l]+f[p]|0;o=a,a=n,n=h(i),i=r,r=b}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0},s.prototype._hash=function(){var e=a.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=s},"7f7a":function(e,t,r){var i=t;i.bignum=r("399f"),i.define=r("ef3a").define,i.base=r("41df"),i.constants=r("0211"),i.decoders=r("20f6"),i.encoders=r("343e")},"82f0":function(e,t,r){var i=r("39f5"),n=r("8707").Buffer,a=r("6430"),f=r("3fb5"),o=r("3f62"),s=r("8c8a"),c=r("bd9d");function d(e,t){var r=0;e.length!==t.length&&r++;for(var i=Math.min(e.length,t.length),n=0;n15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},l.prototype.flush=function(){var e=16-this.cache.length,t=a.allocUnsafe(e),r=-1;while(++r=a;return n&&--i,i}function v(e,t){e=l(e);var r=n(t),f=e.length;if(f!==2*r)throw new TypeError('"'+t+'" signatures must be "'+2*r+'" bytes, saw "'+f+'"');var o=b(e,0,r),s=b(e,r,e.length),c=r-o,u=r-s,p=2+c+1+1+u,v=p)?=?)";var A=c++;s[A]=s[h]+"|x|X|\\*";var x=c++;s[x]=s[d]+"|x|X|\\*";var I=c++;s[I]="[v=\\s]*("+s[x]+")(?:\\.("+s[x]+")(?:\\.("+s[x]+")(?:"+s[m]+")?"+s[w]+"?)?)?";var B=c++;s[B]="[v=\\s]*("+s[A]+")(?:\\.("+s[A]+")(?:\\.("+s[A]+")(?:"+s[y]+")?"+s[w]+"?)?)?";var j=c++;s[j]="^"+s[k]+"\\s*"+s[I]+"$";var R=c++;s[R]="^"+s[k]+"\\s*"+s[B]+"$";var P=c++;s[P]="(?:^|[^\\d])(\\d{1,"+f+"})(?:\\.(\\d{1,"+f+"}))?(?:\\.(\\d{1,"+f+"}))?(?:$|[^\\d])";var C=c++;s[C]="(?:~>?)";var O=c++;s[O]="(\\s*)"+s[C]+"\\s+",o[O]=new RegExp(s[O],"g");var T="$1~",D=c++;s[D]="^"+s[C]+s[I]+"$";var q=c++;s[q]="^"+s[C]+s[B]+"$";var z=c++;s[z]="(?:\\^)";var N=c++;s[N]="(\\s*)"+s[z]+"\\s+",o[N]=new RegExp(s[N],"g");var U="$1^",L=c++;s[L]="^"+s[z]+s[I]+"$";var K=c++;s[K]="^"+s[z]+s[B]+"$";var H=c++;s[H]="^"+s[k]+"\\s*("+M+")$|^$";var V=c++;s[V]="^"+s[k]+"\\s*("+S+")$|^$";var F=c++;s[F]="(\\s*)"+s[k]+"\\s*("+M+"|"+s[I]+")",o[F]=new RegExp(s[F],"g");var X="$1$2$3",$=c++;s[$]="^\\s*("+s[I]+")\\s+-\\s+("+s[I]+")\\s*$";var G=c++;s[G]="^\\s*("+s[B]+")\\s+-\\s+("+s[B]+")\\s*$";var J=c++;s[J]="(<|>)?=?\\s*\\*";for(var W=0;Wn)return null;var r=t.loose?o[E]:o[_];if(!r.test(e))return null;try{return new ee(e,t)}catch(i){return null}}function Y(e,t){var r=Z(e,t);return r?r.version:null}function Q(e,t){var r=Z(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null}function ee(e,t){if(t&&"object"===typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof ee){if(e.loose===t.loose)return e;e=e.version}else if("string"!==typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof ee))return new ee(e,t);i("SemVer",e,t),this.options=t,this.loose=!!t.loose;var r=e.trim().match(t.loose?o[E]:o[_]);if(!r)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>a||this.major<0)throw new TypeError("Invalid major version");if(this.minor>a||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>a||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0)"number"===typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);-1===r&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=te,t.diff=re,t.compareIdentifiers=ne;var ie=/^[0-9]+$/;function ne(e,t){var r=ie.test(e),i=ie.test(t);return r&&i&&(e=+e,t=+t),e===t?0:r&&!i?-1:i&&!r?1:e0}function be(e,t,r){return ce(e,t,r)<0}function ve(e,t,r){return 0===ce(e,t,r)}function me(e,t,r){return 0!==ce(e,t,r)}function ye(e,t,r){return ce(e,t,r)>=0}function ge(e,t,r){return ce(e,t,r)<=0}function we(e,t,r,i){switch(t){case"===":return"object"===typeof e&&(e=e.version),"object"===typeof r&&(r=r.version),e===r;case"!==":return"object"===typeof e&&(e=e.version),"object"===typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return ve(e,r,i);case"!=":return me(e,r,i);case">":return pe(e,r,i);case">=":return ye(e,r,i);case"<":return be(e,r,i);case"<=":return ge(e,r,i);default:throw new TypeError("Invalid operator: "+t)}}function _e(e,t){if(t&&"object"===typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof _e){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof _e))return new _e(e,t);i("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Se?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}t.rcompareIdentifiers=ae,t.major=fe,t.minor=oe,t.patch=se,t.compare=ce,t.compareLoose=de,t.rcompare=he,t.sort=ue,t.rsort=le,t.gt=pe,t.lt=be,t.eq=ve,t.neq=me,t.gte=ye,t.lte=ge,t.cmp=we,t.Comparator=_e;var Se={};function Me(e,t){if(t&&"object"===typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Me)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Me(e.raw,t);if(e instanceof _e)return new Me(e.value,t);if(!(this instanceof Me))return new Me(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(e){return this.parseRange(e.trim())},this).filter(function(e){return e.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function Ee(e,t){return new Me(e,t).set.map(function(e){return e.map(function(e){return e.value}).join(" ").trim().split(" ")})}function ke(e,t){return i("comp",e,t),e=Be(e,t),i("caret",e),e=xe(e,t),i("tildes",e),e=Re(e,t),i("xrange",e),e=Ce(e,t),i("stars",e),e}function Ae(e){return!e||"x"===e.toLowerCase()||"*"===e}function xe(e,t){return e.trim().split(/\s+/).map(function(e){return Ie(e,t)}).join(" ")}function Ie(e,t){var r=t.loose?o[q]:o[D];return e.replace(r,function(t,r,n,a,f){var o;return i("tilde",e,t,r,n,a,f),Ae(r)?o="":Ae(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":Ae(a)?o=">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":f?(i("replaceTilde pr",f),o=">="+r+"."+n+"."+a+"-"+f+" <"+r+"."+(+n+1)+".0"):o=">="+r+"."+n+"."+a+" <"+r+"."+(+n+1)+".0",i("tilde return",o),o})}function Be(e,t){return e.trim().split(/\s+/).map(function(e){return je(e,t)}).join(" ")}function je(e,t){i("caret",e,t);var r=t.loose?o[K]:o[L];return e.replace(r,function(t,r,n,a,f){var o;return i("caret",e,t,r,n,a,f),Ae(r)?o="":Ae(n)?o=">="+r+".0.0 <"+(+r+1)+".0.0":Ae(a)?o="0"===r?">="+r+"."+n+".0 <"+r+"."+(+n+1)+".0":">="+r+"."+n+".0 <"+(+r+1)+".0.0":f?(i("replaceCaret pr",f),o="0"===r?"0"===n?">="+r+"."+n+"."+a+"-"+f+" <"+r+"."+n+"."+(+a+1):">="+r+"."+n+"."+a+"-"+f+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+a+"-"+f+" <"+(+r+1)+".0.0"):(i("no pr"),o="0"===r?"0"===n?">="+r+"."+n+"."+a+" <"+r+"."+n+"."+(+a+1):">="+r+"."+n+"."+a+" <"+r+"."+(+n+1)+".0":">="+r+"."+n+"."+a+" <"+(+r+1)+".0.0"),i("caret return",o),o})}function Re(e,t){return i("replaceXRanges",e,t),e.split(/\s+/).map(function(e){return Pe(e,t)}).join(" ")}function Pe(e,t){e=e.trim();var r=t.loose?o[R]:o[j];return e.replace(r,function(t,r,n,a,f,o){i("xRange",e,t,r,n,a,f,o);var s=Ae(n),c=s||Ae(a),d=c||Ae(f),h=d;return"="===r&&h&&(r=""),s?t=">"===r||"<"===r?"<0.0.0":"*":r&&h?(c&&(a=0),f=0,">"===r?(r=">=",c?(n=+n+1,a=0,f=0):(a=+a+1,f=0)):"<="===r&&(r="<",c?n=+n+1:a=+a+1),t=r+n+"."+a+"."+f):c?t=">="+n+".0.0 <"+(+n+1)+".0.0":d&&(t=">="+n+"."+a+".0 <"+n+"."+(+a+1)+".0"),i("xRange return",t),t})}function Ce(e,t){return i("replaceStars",e,t),e.trim().replace(o[J],"")}function Oe(e,t,r,i,n,a,f,o,s,c,d,h,u){return t=Ae(r)?"":Ae(i)?">="+r+".0.0":Ae(n)?">="+r+"."+i+".0":">="+t,o=Ae(s)?"":Ae(c)?"<"+(+s+1)+".0.0":Ae(d)?"<"+s+"."+(+c+1)+".0":h?"<="+s+"."+c+"."+d+"-"+h:"<="+o,(t+" "+o).trim()}function Te(e,t,r){for(var n=0;n0){var a=e[n].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}function De(e,t,r){try{t=new Me(t,r)}catch(i){return!1}return t.test(e)}function qe(e,t,r){var i=null,n=null;try{var a=new Me(t,r)}catch(f){return null}return e.forEach(function(e){a.test(e)&&(i&&-1!==n.compare(e)||(i=e,n=new ee(i,r)))}),i}function ze(e,t,r){var i=null,n=null;try{var a=new Me(t,r)}catch(f){return null}return e.forEach(function(e){a.test(e)&&(i&&1!==n.compare(e)||(i=e,n=new ee(i,r)))}),i}function Ne(e,t){e=new Me(e,t);var r=new ee("0.0.0");if(e.test(r))return r;if(r=new ee("0.0.0-0"),e.test(r))return r;r=null;for(var i=0;i":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!pe(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}})}return r&&e.test(r)?r:null}function Ue(e,t){try{return new Me(e,t).range||"*"}catch(r){return null}}function Le(e,t,r){return He(e,t,"<",r)}function Ke(e,t,r){return He(e,t,">",r)}function He(e,t,r,i){var n,a,f,o,s;switch(e=new ee(e,i),t=new Me(t,i),r){case">":n=pe,a=ge,f=be,o=">",s=">=";break;case"<":n=be,a=ye,f=pe,o="<",s="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(De(e,t,i))return!1;for(var c=0;c=0.0.0")),h=h||e,u=u||e,n(e.semver,h.semver,i)?h=e:f(e.semver,u.semver,i)&&(u=e)}),h.operator===o||h.operator===s)return!1;if((!u.operator||u.operator===o)&&a(e,u.semver))return!1;if(u.operator===s&&f(e,u.semver))return!1}return!0}function Ve(e,t){var r=Z(e,t);return r&&r.prerelease.length?r.prerelease:null}function Fe(e,t,r){return e=new Me(e,r),t=new Me(t,r),e.intersects(t)}function Xe(e){if(e instanceof ee)return e;if("string"!==typeof e)return null;var t=e.match(o[P]);return null==t?null:Z(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}_e.prototype.parse=function(e){var t=this.options.loose?o[H]:o[V],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=r[1],"="===this.operator&&(this.operator=""),r[2]?this.semver=new ee(r[2],this.options.loose):this.semver=Se},_e.prototype.toString=function(){return this.value},_e.prototype.test=function(e){return i("Comparator.test",e,this.options.loose),this.semver===Se||("string"===typeof e&&(e=new ee(e,this.options)),we(e,this.operator,this.semver,this.options))},_e.prototype.intersects=function(e,t){if(!(e instanceof _e))throw new TypeError("a Comparator is required");var r;if(t&&"object"===typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return r=new Me(e.value,t),De(this.value,r,t);if(""===e.operator)return r=new Me(this.value,t),De(e.semver,r,t);var i=(">="===this.operator||">"===this.operator)&&(">="===e.operator||">"===e.operator),n=("<="===this.operator||"<"===this.operator)&&("<="===e.operator||"<"===e.operator),a=this.semver.version===e.semver.version,f=(">="===this.operator||"<="===this.operator)&&(">="===e.operator||"<="===e.operator),o=we(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),s=we(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return i||n||a&&f||o||s},t.Range=Me,Me.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range},Me.prototype.toString=function(){return this.range},Me.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var r=t?o[G]:o[$];e=e.replace(r,Oe),i("hyphen replace",e),e=e.replace(o[F],X),i("comparator trim",e,o[F]),e=e.replace(o[O],T),e=e.replace(o[N],U),e=e.split(/\s+/).join(" ");var n=t?o[H]:o[V],a=e.split(" ").map(function(e){return ke(e,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(a=a.filter(function(e){return!!e.match(n)})),a=a.map(function(e){return new _e(e,this.options)},this),a},Me.prototype.intersects=function(e,t){if(!(e instanceof Me))throw new TypeError("a Range is required");return this.set.some(function(r){return r.every(function(r){return e.set.some(function(e){return e.every(function(e){return r.intersects(e,t)})})})})},t.toComparators=Ee,Me.prototype.test=function(e){if(!e)return!1;"string"===typeof e&&(e=new ee(e,this.options));for(var t=0;t=this._blockSize){for(var a=this._blockOffset;a0;++o)this._length[o]+=s,s=this._length[o]/4294967296|0,s>0&&(this._length[o]-=4294967296*s);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},o.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=o},"945d":function(e,t,r){"use strict";var i=r("7d92"),n=r("3337"),a=n.utils,f=a.assert,o=a.parseBytes,s=r("380f"),c=r("44a3");function d(e){if(f("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof d))return new d(e);e=n.curves[e].curve;this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=i.sha512}e.exports=d,d.prototype.sign=function(e,t){e=o(e);var r=this.keyFromSecret(t),i=this.hashInt(r.messagePrefix(),e),n=this.g.mul(i),a=this.encodePoint(n),f=this.hashInt(a,r.pubBytes(),e).mul(r.priv()),s=i.add(f).umod(this.curve.n);return this.makeSignature({R:n,S:s,Rencoded:a})},d.prototype.verify=function(e,t,r){e=o(e),t=this.makeSignature(t);var i=this.keyFromPublic(r),n=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S()),f=t.R().add(i.pub().mul(n));return f.eq(a)},d.prototype.hashInt=function(){for(var e=this.hash(),t=0;t=t)throw new Error("invalid sig")}e.exports=o}).call(this,r("b639").Buffer)},"98e6":function(e,t,r){"use strict";var i=r("3fb5"),n=r("f5767"),a=r("b5ca"),f=r("69f2"),o=r("6430");function s(e){o.call(this,"digest"),this._hash=e}i(s,o),s.prototype._update=function(e){this._hash.update(e)},s.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return e=e.toLowerCase(),"md5"===e?new n:"rmd160"===e||"ripemd160"===e?new a:new s(f(e))}},"99f9":function(e,t){var r="[object String]",i=Object.prototype,n=i.toString,a=Array.isArray;function f(e){return!!e&&"object"==typeof e}function o(e){return"string"==typeof e||!a(e)&&f(e)&&n.call(e)==r}e.exports=o},"9cfb2":function(e,t){var r=1/0,i=9007199254740991,n=1.7976931348623157e308,a=NaN,f="[object Arguments]",o="[object Function]",s="[object GeneratorFunction]",c="[object String]",d="[object Symbol]",h=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,p=/^0o[0-7]+$/i,b=/^(?:0|[1-9]\d*)$/,v=parseInt;function m(e,t){var r=-1,i=e?e.length:0,n=Array(i);while(++r-1&&e%1==0&&e-1:!!n&&g(e,t,r)>-1}function T(e){return z(e)&&k.call(e,"callee")&&(!x.call(e,"callee")||A.call(e)==f)}var D=Array.isArray;function q(e){return null!=e&&U(e.length)&&!N(e)}function z(e){return K(e)&&q(e)}function N(e){var t=L(e)?A.call(e):"";return t==o||t==s}function U(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}function L(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function K(e){return!!e&&"object"==typeof e}function H(e){return"string"==typeof e||!D(e)&&K(e)&&A.call(e)==c}function V(e){return"symbol"==typeof e||K(e)&&A.call(e)==d}function F(e){if(!e)return 0===e?e:0;if(e=$(e),e===r||e===-r){var t=e<0?-1:1;return t*n}return e===e?e:0}function X(e){var t=F(e),r=t%1;return t===t?r?t-r:t:0}function $(e){if("number"==typeof e)return e;if(V(e))return a;if(L(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=L(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(h,"");var r=l.test(e);return r||p.test(e)?v(e.slice(2),r?2:8):u.test(e)?a:+e}function G(e){return q(e)?j(e):R(e)}function J(e){return e?S(e,G(e)):[]}e.exports=O},"9f9d":function(e,t,r){(function(t){var r;if(t.browser)r="utf-8";else{var i=parseInt(t.version.split(".")[0].slice(1),10);r=i>=6?"utf-8":"binary"}e.exports=r}).call(this,r("f28c"))},a099:function(e,t,r){t.pbkdf2=r("206d"),t.pbkdf2Sync=r("e07b")},a1c1:function(e,t,r){(function(t){var i=r("8707").Buffer,n=r("d485"),a=r("3022");function f(e){if(this.buffer=null,this.writable=!0,this.readable=!0,!e)return this.buffer=i.alloc(0),this;if("function"===typeof e.pipe)return this.buffer=i.alloc(0),e.pipe(this),this;if(e.length||"object"===typeof e)return this.buffer=e,this.writable=!1,t.nextTick(function(){this.emit("end",e),this.readable=!1,this.emit("close")}.bind(this)),this;throw new TypeError("Unexpected data type ("+typeof e+")")}a.inherits(f,n),f.prototype.write=function(e){this.buffer=i.concat([this.buffer,i.from(e)]),this.emit("data",e)},f.prototype.end=function(e){e&&this.write(e),this.emit("end",e),this.emit("close"),this.writable=!1,this.readable=!1},e.exports=f}).call(this,r("f28c"))},a255:function(e,t,r){var i=r("3fb5"),n=r("b672"),a=r("8707").Buffer,f=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],o=new Array(64);function s(){this.init(),this._w=o,n.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function d(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function u(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function l(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}function p(e){return(e>>>17|e<<15)^(e>>>19|e<<13)^e>>>10}i(s,n),s.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},s.prototype._update=function(e){for(var t=this._w,r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,o=0|this._e,s=0|this._f,b=0|this._g,v=0|this._h,m=0;m<16;++m)t[m]=e.readInt32BE(4*m);for(;m<64;++m)t[m]=p(t[m-2])+t[m-7]+l(t[m-15])+t[m-16]|0;for(var y=0;y<64;++y){var g=v+u(o)+c(o,s,b)+f[y]+t[y]|0,w=h(r)+d(r,i,n)|0;v=b,b=s,s=o,o=a+g|0,a=n,n=i,i=r,r=g+w|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=a+this._d|0,this._e=o+this._e|0,this._f=s+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},s.prototype._hash=function(){var e=a.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=s},a958:function(e,t,r){(function(t){var i=r("399f"),n=r("11dc");function a(e){var t=o(e),r=t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed();return{blinder:r,unblinder:t.invm(e.modulus)}}function f(e,r){var n=a(r),f=r.modulus.byteLength(),o=(i.mont(r.modulus),new i(e).mul(n.blinder).umod(r.modulus)),s=o.toRed(i.mont(r.prime1)),c=o.toRed(i.mont(r.prime2)),d=r.coefficient,h=r.prime1,u=r.prime2,l=s.redPow(r.exponent1),p=c.redPow(r.exponent2);l=l.fromRed(),p=p.fromRed();var b=l.isub(p).imul(d).umod(h);return b.imul(u),p.iadd(b),new t(p.imul(n.unblinder).umod(r.modulus).toArray(!1,f))}function o(e){var t=e.modulus.byteLength(),r=new i(n(t));while(r.cmp(e.modulus)>=0||!r.umod(e.prime1)||!r.umod(e.prime2))r=new i(n(t));return r}e.exports=f,f.getr=o}).call(this,r("b639").Buffer)},aa56:function(e,t,r){"use strict";var i=r("c3c0"),n=i.rotr32;function a(e,t,r,i){return 0===e?f(t,r,i):1===e||3===e?s(t,r,i):2===e?o(t,r,i):void 0}function f(e,t,r){return e&t^~e&r}function o(e,t,r){return e&t^e&r^t&r}function s(e,t,r){return e^t^r}function c(e){return n(e,2)^n(e,13)^n(e,22)}function d(e){return n(e,6)^n(e,11)^n(e,25)}function h(e){return n(e,7)^n(e,18)^e>>>3}function u(e){return n(e,17)^n(e,19)^e>>>10}t.ft_1=a,t.ch32=f,t.maj32=o,t.p32=s,t.s0_256=c,t.s1_256=d,t.g0_256=h,t.g1_256=u},ad25:function(e,t,r){var i=r("2aee"),n=r("11dc"),a=r("98e6"),f=r("f460"),o=r("83d5"),s=r("399f"),c=r("5291"),d=r("a958"),h=r("8707").Buffer;function u(e,t){var r=e.modulus.byteLength(),i=t.length,c=a("sha1").update(h.alloc(0)).digest(),d=c.length,u=2*d;if(i>r-u-2)throw new Error("message too long");var l=h.alloc(r-i-u-2),p=r-d-1,b=n(d),v=o(h.concat([c,l,h.alloc(1,1),t],p),f(b,p)),m=o(b,f(v,d));return new s(h.concat([h.alloc(1),m,v],r))}function l(e,t,r){var i,n=t.length,a=e.modulus.byteLength();if(n>a-11)throw new Error("message too long");return i=r?h.alloc(a-n-3,255):p(a-n-3),new s(h.concat([h.from([0,r?1:2]),i,h.alloc(1),t],a))}function p(e){var t,r=h.allocUnsafe(e),i=0,a=n(2*e),f=0;while(i=0)throw new Error("data too long for modulus")}return r?d(a,f):c(a,f)}},ae84:function(e,t,r){var i=r("8707").Buffer,n=r("f5767");function a(e,t,r,a){if(i.isBuffer(e)||(e=i.from(e,"binary")),t&&(i.isBuffer(t)||(t=i.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");var f=r/8,o=i.alloc(f),s=i.alloc(a||0),c=i.alloc(0);while(f>0||a>0){var d=new n;d.update(c),d.update(e),t&&d.update(t),c=d.digest();var h=0;if(f>0){var u=o.length-f;h=Math.min(f,c.length),c.copy(o,u,0,h),f-=h}if(h0){var l=s.length-a,p=Math.min(a,c.length-h);c.copy(s,l,h,h+p),a-=p}}return c.fill(0),{key:o,iv:s}}e.exports=a},b4e8:function(e){e.exports={sha224WithRSAEncryption:{sign:"rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},"RSA-SHA224":{sign:"ecdsa/rsa",hash:"sha224",id:"302d300d06096086480165030402040500041c"},sha256WithRSAEncryption:{sign:"rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},"RSA-SHA256":{sign:"ecdsa/rsa",hash:"sha256",id:"3031300d060960864801650304020105000420"},sha384WithRSAEncryption:{sign:"rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},"RSA-SHA384":{sign:"ecdsa/rsa",hash:"sha384",id:"3041300d060960864801650304020205000430"},sha512WithRSAEncryption:{sign:"rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA512":{sign:"ecdsa/rsa",hash:"sha512",id:"3051300d060960864801650304020305000440"},"RSA-SHA1":{sign:"rsa",hash:"sha1",id:"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{sign:"ecdsa",hash:"sha1",id:""},sha256:{sign:"ecdsa",hash:"sha256",id:""},sha224:{sign:"ecdsa",hash:"sha224",id:""},sha384:{sign:"ecdsa",hash:"sha384",id:""},sha512:{sign:"ecdsa",hash:"sha512",id:""},"DSA-SHA":{sign:"dsa",hash:"sha1",id:""},"DSA-SHA1":{sign:"dsa",hash:"sha1",id:""},DSA:{sign:"dsa",hash:"sha1",id:""},"DSA-WITH-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-SHA224":{sign:"dsa",hash:"sha224",id:""},"DSA-WITH-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-SHA256":{sign:"dsa",hash:"sha256",id:""},"DSA-WITH-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-SHA384":{sign:"dsa",hash:"sha384",id:""},"DSA-WITH-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-SHA512":{sign:"dsa",hash:"sha512",id:""},"DSA-RIPEMD160":{sign:"dsa",hash:"rmd160",id:""},ripemd160WithRSA:{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},"RSA-RIPEMD160":{sign:"rsa",hash:"rmd160",id:"3021300906052b2403020105000414"},md5WithRSAEncryption:{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"},"RSA-MD5":{sign:"rsa",hash:"md5",id:"3020300c06082a864886f70d020505000410"}}},b525:function(e,t,r){"use strict";var i=r("c3c0"),n=r("edc9"),a=r("da3e"),f=i.rotr64_hi,o=i.rotr64_lo,s=i.shr64_hi,c=i.shr64_lo,d=i.sum64,h=i.sum64_hi,u=i.sum64_lo,l=i.sum64_4_hi,p=i.sum64_4_lo,b=i.sum64_5_hi,v=i.sum64_5_lo,m=n.BlockHash,y=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function g(){if(!(this instanceof g))return new g;m.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=y,this.W=new Array(160)}function w(e,t,r,i,n){var a=e&r^~e&n;return a<0&&(a+=4294967296),a}function _(e,t,r,i,n,a){var f=t&i^~t&a;return f<0&&(f+=4294967296),f}function S(e,t,r,i,n){var a=e&r^e&n^r&n;return a<0&&(a+=4294967296),a}function M(e,t,r,i,n,a){var f=t&i^t&a^i&a;return f<0&&(f+=4294967296),f}function E(e,t){var r=f(e,t,28),i=f(t,e,2),n=f(t,e,7),a=r^i^n;return a<0&&(a+=4294967296),a}function k(e,t){var r=o(e,t,28),i=o(t,e,2),n=o(t,e,7),a=r^i^n;return a<0&&(a+=4294967296),a}function A(e,t){var r=f(e,t,14),i=f(e,t,18),n=f(t,e,9),a=r^i^n;return a<0&&(a+=4294967296),a}function x(e,t){var r=o(e,t,14),i=o(e,t,18),n=o(t,e,9),a=r^i^n;return a<0&&(a+=4294967296),a}function I(e,t){var r=f(e,t,1),i=f(e,t,8),n=s(e,t,7),a=r^i^n;return a<0&&(a+=4294967296),a}function B(e,t){var r=o(e,t,1),i=o(e,t,8),n=c(e,t,7),a=r^i^n;return a<0&&(a+=4294967296),a}function j(e,t){var r=f(e,t,19),i=f(t,e,29),n=s(e,t,6),a=r^i^n;return a<0&&(a+=4294967296),a}function R(e,t){var r=o(e,t,19),i=o(t,e,29),n=c(e,t,6),a=r^i^n;return a<0&&(a+=4294967296),a}i.inherits(g,m),e.exports=g,g.blockSize=1024,g.outSize=512,g.hmacStrength=192,g.padLength=128,g.prototype._prepareBlock=function(e,t){for(var r=this.W,i=0;i<32;i++)r[i]=e[t+i];for(;i>>32-t}function b(e,t,r,i,n,a,f,o){return p(e+(t^r^i)+a+f|0,o)+n|0}function v(e,t,r,i,n,a,f,o){return p(e+(t&r|~t&i)+a+f|0,o)+n|0}function m(e,t,r,i,n,a,f,o){return p(e+((t|~r)^i)+a+f|0,o)+n|0}function y(e,t,r,i,n,a,f,o){return p(e+(t&i|r&~i)+a+f|0,o)+n|0}function g(e,t,r,i,n,a,f,o){return p(e+(t^(r|~i))+a+f|0,o)+n|0}n(l,a),l.prototype._update=function(){for(var e=f,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,i=0|this._b,n=0|this._c,a=0|this._d,l=0|this._e,w=0|this._a,_=0|this._b,S=0|this._c,M=0|this._d,E=0|this._e,k=0;k<80;k+=1){var A,x;k<16?(A=b(r,i,n,a,l,e[o[k]],h[0],c[k]),x=g(w,_,S,M,E,e[s[k]],u[0],d[k])):k<32?(A=v(r,i,n,a,l,e[o[k]],h[1],c[k]),x=y(w,_,S,M,E,e[s[k]],u[1],d[k])):k<48?(A=m(r,i,n,a,l,e[o[k]],h[2],c[k]),x=m(w,_,S,M,E,e[s[k]],u[2],d[k])):k<64?(A=y(r,i,n,a,l,e[o[k]],h[3],c[k]),x=v(w,_,S,M,E,e[s[k]],u[3],d[k])):(A=g(r,i,n,a,l,e[o[k]],h[4],c[k]),x=b(w,_,S,M,E,e[s[k]],u[4],d[k])),r=l,l=a,a=p(n,10),n=i,i=A,w=E,E=M,M=p(S,10),S=_,_=x}var I=this._b+n+M|0;this._b=this._c+a+E|0,this._c=this._d+l+w|0,this._d=this._e+r+_|0,this._e=this._a+i+S|0,this._a=I},l.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.alloc?i.alloc(20):new i(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=l},b5cd:function(e,t,r){"use strict";var i=r("b639").Buffer,n=r("b639").SlowBuffer;function a(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))return!1;if(e.length!==t.length)return!1;for(var r=0,n=0;n=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var a=this._hash();return e?a.toString(e):a},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=n},b692:function(e,t,r){(function(t){var i=r("98e6"),n=r("d485"),a=r("3fb5"),f=r("6fe7"),o=r("980c"),s=r("b4e8");function c(e){n.Writable.call(this);var t=s[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function d(e){n.Writable.call(this);var t=s[e];if(!t)throw new Error("Unknown message digest");this._hash=i(t.hash),this._tag=t.id,this._signType=t.sign}function h(e){return new c(e)}function u(e){return new d(e)}Object.keys(s).forEach(function(e){s[e].id=new t(s[e].id,"hex"),s[e.toLowerCase()]=s[e]}),a(c,n.Writable),c.prototype._write=function(e,t,r){this._hash.update(e),r()},c.prototype.update=function(e,r){return"string"===typeof e&&(e=new t(e,r)),this._hash.update(e),this},c.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),i=f(r,e,this._hashType,this._signType,this._tag);return t?i.toString(t):i},a(d,n.Writable),d.prototype._write=function(e,t,r){this._hash.update(e),r()},d.prototype.update=function(e,r){return"string"===typeof e&&(e=new t(e,r)),this._hash.update(e),this},d.prototype.verify=function(e,r,i){"string"===typeof r&&(r=new t(r,i)),this.end();var n=this._hash.digest();return o(r,n,e,this._signType,this._tag)},e.exports={Sign:h,Verify:u,createSign:h,createVerify:u}}).call(this,r("b639").Buffer)},b73f:function(e,t,r){"use strict";var i=r("399f"),n=r("3337"),a=n.utils,f=a.assert;function o(e,t){if(e instanceof o)return e;this._importDER(e,t)||(f(e.r&&e.s,"Signature without r or s"),this.r=new i(e.r,16),this.s=new i(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function c(e,t){var r=e[t.place++];if(!(128&r))return r;for(var i=15&r,n=0,a=0,f=t.place;a>>3);e.push(128|r);while(--r)e.push(t>>>(r<<3)&255);e.push(t)}}e.exports=o,o.prototype._importDER=function(e,t){e=a.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;var n=c(e,r);if(n+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var f=c(e,r),o=e.slice(r.place,f+r.place);if(r.place+=f,2!==e[r.place++])return!1;var d=c(e,r);if(e.length!==d+r.place)return!1;var h=e.slice(r.place,d+r.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===h[0]&&128&h[1]&&(h=h.slice(1)),this.r=new i(o),this.s=new i(h),this.recoveryParam=null,!0},o.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=d(t),r=d(r);while(!r[0]&&!(128&r[1]))r=r.slice(1);var i=[2];h(i,t.length),i=i.concat(t),i.push(2),h(i,r.length);var n=i.concat(r),f=[48];return h(f,n.length),f=f.concat(n),a.encode(f,e)}},b837:function(e,t,r){var i=r("3fb5"),n=r("4fd1"),a=r("b672"),f=r("8707").Buffer,o=new Array(160);function s(){this.init(),this._w=o,a.call(this,128,112)}i(s,n),s.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},s.prototype._hash=function(){var e=f.allocUnsafe(48);function t(t,r,i){e.writeInt32BE(t,i),e.writeInt32BE(r,i+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=s},b9a8:function(e,t,r){"use strict";var i=r("399f"),n=r("6aa23"),a=r("3337"),f=a.utils,o=f.assert,s=r("bb34"),c=r("b73f");function d(e){if(!(this instanceof d))return new d(e);"string"===typeof e&&(o(a.curves.hasOwnProperty(e),"Unknown curve "+e),e=a.curves[e]),e instanceof a.curves.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=d,d.prototype.keyPair=function(e){return new s(this,e)},d.prototype.keyFromPrivate=function(e,t){return s.fromPrivate(this,e,t)},d.prototype.keyFromPublic=function(e,t){return s.fromPublic(this,e,t)},d.prototype.genKeyPair=function(e){e||(e={});var t=new n({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||a.rand(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),f=this.n.sub(new i(2));do{var o=new i(t.generate(r));if(!(o.cmp(f)>0))return o.iaddn(1),this.keyFromPrivate(o)}while(1)},d.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},d.prototype.sign=function(e,t,r,a){"object"===typeof r&&(a=r,r=null),a||(a={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new i(e,16));for(var f=this.n.byteLength(),o=t.getPrivate().toArray("be",f),s=e.toArray("be",f),d=new n({hash:this.hash,entropy:o,nonce:s,pers:a.pers,persEnc:a.persEnc||"utf8"}),h=this.n.sub(new i(1)),u=0;1;u++){var l=a.k?a.k(u):new i(d.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(h)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var m=l.invm(this.n).mul(v.mul(t.getPrivate()).iadd(e));if(m=m.umod(this.n),0!==m.cmpn(0)){var y=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return a.canonical&&m.cmp(this.nh)>0&&(m=this.n.sub(m),y^=1),new c({r:v,s:m,recoveryParam:y})}}}}}},d.prototype.verify=function(e,t,r,n){e=this._truncateToN(new i(e,16)),r=this.keyFromPublic(r,n),t=new c(t,"hex");var a=t.r,f=t.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(f.cmpn(1)<0||f.cmp(this.n)>=0)return!1;var o=f.invm(this.n),s=o.mul(e).umod(this.n),d=o.mul(a).umod(this.n);if(!this.curve._maxwellTrick){var h=this.g.mulAdd(s,r.getPublic(),d);return!h.isInfinity()&&0===h.getX().umod(this.n).cmp(a)}h=this.g.jmulAdd(s,r.getPublic(),d);return!h.isInfinity()&&h.eqXToP(a)},d.prototype.recoverPubKey=function(e,t,r,n){o((3&r)===r,"The recovery param is more than two bits"),t=new c(t,n);var a=this.n,f=new i(e),s=t.r,d=t.s,h=1&r,u=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&u)throw new Error("Unable to find sencond key candinate");s=u?this.curve.pointFromX(s.add(this.curve.n),h):this.curve.pointFromX(s,h);var l=t.r.invm(a),p=a.sub(f).mul(l).umod(a),b=d.mul(l).umod(a);return this.g.mulAdd(p,s,b)},d.prototype.getKeyRecoveryParam=function(e,t,r,i){if(t=new c(t,i),null!==t.recoveryParam)return t.recoveryParam;for(var n=0;n<4;n++){var a;try{a=this.recoverPubKey(e,t,n)}catch(e){continue}if(a.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},bac2:function(e,t,r){var i={ECB:r("0145"),CBC:r("c119"),CFB:r("3505"),CFB8:r("62c9"),CFB1:r("5239"),OFB:r("5165"),CTR:r("6ade"),GCM:r("6ade")},n=r("e85f");for(var a in n)n[a].module=i[n[a].mode];e.exports=n},bb34:function(e,t,r){"use strict";var i=r("399f"),n=r("3337"),a=n.utils,f=a.assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=o,o.fromPublic=function(e,t,r){return t instanceof o?t:new o(e,{pub:t,pubEnc:r})},o.fromPrivate=function(e,t,r){return t instanceof o?t:new o(e,{priv:t,privEnc:r})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(e,t){return"string"===typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new i(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?f(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||f(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.mul(this.priv).getX()},o.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return""}},bb44:function(e,t,r){"use strict";var i=r("c3c0"),n=r("edc9"),a=i.rotl32,f=i.sum32,o=i.sum32_3,s=i.sum32_4,c=n.BlockHash;function d(){if(!(this instanceof d))return new d;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function h(e,t,r,i){return e<=15?t^r^i:e<=31?t&r|~t&i:e<=47?(t|~r)^i:e<=63?t&i|r&~i:t^(r|~i)}function u(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function l(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}i.inherits(d,c),t.ripemd160=d,d.blockSize=512,d.outSize=160,d.hmacStrength=192,d.padLength=64,d.prototype._update=function(e,t){for(var r=this.h[0],i=this.h[1],n=this.h[2],c=this.h[3],d=this.h[4],y=r,g=i,w=n,_=c,S=d,M=0;M<80;M++){var E=f(a(s(r,h(M,i,n,c),e[p[M]+t],u(M)),v[M]),d);r=d,d=c,c=a(n,10),n=i,i=E,E=f(a(s(y,h(79-M,g,w,_),e[b[M]+t],l(M)),m[M]),S),y=S,S=_,_=a(w,10),w=g,g=E}E=o(this.h[1],n,_),this.h[1]=o(this.h[2],c,S),this.h[2]=o(this.h[3],d,y),this.h[3]=o(this.h[4],r,g),this.h[4]=o(this.h[0],i,w),this.h[0]=E},d.prototype._digest=function(e){return"hex"===e?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],b=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],v=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],m=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},bd9d:function(e,t){function r(e){var t,r=e.length;while(r--){if(t=e.readUInt8(r),255!==t){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}e.exports=r},c119:function(e,t,r){var i=r("8c8a");t.encrypt=function(e,t){var r=i(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},t.decrypt=function(e,t){var r=e._prev;e._prev=t;var n=e._cipher.decryptBlock(t);return i(n,r)}},c24d:function(e){e.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},c2ae:function(e,t,r){e.exports=r("e372").PassThrough},c3c0:function(e,t,r){"use strict";var i=r("da3e"),n=r("3fb5");function a(e,t){return 55296===(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320===(64512&e.charCodeAt(t+1)))}function f(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if("string"===typeof e)if(t){if("hex"===t)for(e=e.replace(/[^a-z0-9]+/gi,""),e.length%2!==0&&(e="0"+e),n=0;n>6|192,r[i++]=63&f|128):a(e,n)?(f=65536+((1023&f)<<10)+(1023&e.charCodeAt(++n)),r[i++]=f>>18|240,r[i++]=f>>12&63|128,r[i++]=f>>6&63|128,r[i++]=63&f|128):(r[i++]=f>>12|224,r[i++]=f>>6&63|128,r[i++]=63&f|128)}else for(n=0;n>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24;return t>>>0}function c(e,t){for(var r="",i=0;i>>0}return f}function l(e,t){for(var r=new Array(4*e.length),i=0,n=0;i>>24,r[n+1]=a>>>16&255,r[n+2]=a>>>8&255,r[n+3]=255&a):(r[n+3]=a>>>24,r[n+2]=a>>>16&255,r[n+1]=a>>>8&255,r[n]=255&a)}return r}function p(e,t){return e>>>t|e<<32-t}function b(e,t){return e<>>32-t}function v(e,t){return e+t>>>0}function m(e,t,r){return e+t+r>>>0}function y(e,t,r,i){return e+t+r+i>>>0}function g(e,t,r,i,n){return e+t+r+i+n>>>0}function w(e,t,r,i){var n=e[t],a=e[t+1],f=i+a>>>0,o=(f>>0,e[t+1]=f}function _(e,t,r,i){var n=t+i>>>0,a=(n>>0}function S(e,t,r,i){var n=t+i;return n>>>0}function M(e,t,r,i,n,a,f,o){var s=0,c=t;c=c+i>>>0,s+=c>>0,s+=c>>0,s+=c>>0}function E(e,t,r,i,n,a,f,o){var s=t+i+a+o;return s>>>0}function k(e,t,r,i,n,a,f,o,s,c){var d=0,h=t;h=h+i>>>0,d+=h>>0,d+=h>>0,d+=h>>0,d+=h>>0}function A(e,t,r,i,n,a,f,o,s,c){var d=t+i+a+o+c;return d>>>0}function x(e,t,r){var i=t<<32-r|e>>>r;return i>>>0}function I(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}function B(e,t,r){return e>>>r}function j(e,t,r){var i=e<<32-r|t>>>r;return i>>>0}t.inherits=n,t.toArray=f,t.toHex=o,t.htonl=s,t.toHex32=c,t.zero2=d,t.zero8=h,t.join32=u,t.split32=l,t.rotr32=p,t.rotl32=b,t.sum32=v,t.sum32_3=m,t.sum32_4=y,t.sum32_5=g,t.sum64=w,t.sum64_hi=_,t.sum64_lo=S,t.sum64_4_hi=M,t.sum64_4_lo=E,t.sum64_5_hi=k,t.sum64_5_lo=A,t.rotr64_hi=x,t.rotr64_lo=I,t.shr64_hi=B,t.shr64_lo=j},cd91:function(e){e.exports={"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}},cd93:function(e,t){var r="[object Object]";function i(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(r){}return t}function n(e,t){return function(r){return e(t(r))}}var a=Function.prototype,f=Object.prototype,o=a.toString,s=f.hasOwnProperty,c=o.call(Object),d=f.toString,h=n(Object.getPrototypeOf,Object);function u(e){return!!e&&"object"==typeof e}function l(e){if(!u(e)||d.call(e)!=r||i(e))return!1;var t=h(e);if(null===t)return!0;var n=s.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&o.call(n)==c}e.exports=l},cfbd:function(e,t,r){var i=r("3fb5"),n=r("7f7a"),a=n.base,f=n.bignum,o=n.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){a.Node.call(this,"der",e)}function d(e,t){var r=e.readUInt8(t);if(e.isError(r))return r;var i=o.tagClass[r>>6],n=0===(32&r);if(31===(31&r)){var a=r;r=0;while(128===(128&a)){if(a=e.readUInt8(t),e.isError(a))return a;r<<=7,r|=127&a}}else r&=31;var f=o.tag[r];return{cls:i,primitive:n,tag:r,tagStr:f}}function h(e,t,r){var i=e.readUInt8(r);if(e.isError(i))return i;if(!t&&128===i)return null;if(0===(128&i))return i;var n=127&i;if(n>4)return e.error("length octect is too long");i=0;for(var a=0;ao?t=e(t):t.lengthn?t=i(t):t.length0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function d(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=c,c.prototype.point=function(){throw new Error("Not implemented")},c.prototype.validate=function(){throw new Error("Not implemented")},c.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),i=f(t,1),n=(1<=o;t--)c=(c<<1)+i[t];a.push(c)}for(var d=this.jpoint(null,null,null),h=this.jpoint(null,null,null),u=n;u>0;u--){for(o=0;o=0;c--){for(t=0;c>=0&&0===a[c];c--)t++;if(c>=0&&t++,o=o.dblp(t),c<0)break;var d=a[c];s(0!==d),o="affine"===e.type?d>0?o.mixedAdd(n[d-1>>1]):o.mixedAdd(n[-d-1>>1].neg()):d>0?o.add(n[d-1>>1]):o.add(n[-d-1>>1].neg())}return"affine"===e.type?o.toP():o},c.prototype._wnafMulAdd=function(e,t,r,i,n){for(var a=this._wnafT1,s=this._wnafT2,c=this._wnafT3,d=0,h=0;h=1;h-=2){var p=h-1,b=h;if(1===a[p]&&1===a[b]){var v=[t[p],null,null,t[b]];0===t[p].y.cmp(t[b].y)?(v[1]=t[p].add(t[b]),v[2]=t[p].toJ().mixedAdd(t[b].neg())):0===t[p].y.cmp(t[b].y.redNeg())?(v[1]=t[p].toJ().mixedAdd(t[b]),v[2]=t[p].add(t[b].neg())):(v[1]=t[p].toJ().mixedAdd(t[b]),v[2]=t[p].toJ().mixedAdd(t[b].neg()));var m=[-3,-1,-5,-7,0,7,5,1,3],y=o(r[p],r[b]);d=Math.max(y[0].length,d),c[p]=new Array(d),c[b]=new Array(d);for(var g=0;g=0;h--){var E=0;while(h>=0){var k=!0;for(g=0;g=0&&E++,S=S.dblp(E),h<0)break;for(g=0;g0?u=s[g][A-1>>1]:A<0&&(u=s[g][-A-1>>1].neg()),S="affine"===u.type?S.mixedAdd(u):S.add(u))}}for(h=0;h=Math.ceil((e.bitLength()+1)/t.step)},d.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n0&&(i=t.apply(this,arguments)),e<=1&&(t=void 0),i}}function b(e){return p(2,e)}function v(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function m(e){return!!e&&"object"==typeof e}function y(e){return"symbol"==typeof e||m(e)&&l.call(e)==f}function g(e){if(!e)return 0===e?e:0;if(e=_(e),e===i||e===-i){var t=e<0?-1:1;return t*n}return e===e?e:0}function w(e){var t=g(e),r=t%1;return t===t?r?t-r:t:0}function _(e){if("number"==typeof e)return e;if(y(e))return a;if(v(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=v(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var r=c.test(e);return r||d.test(e)?h(e.slice(2),r?2:8):s.test(e)?a:+e}e.exports=b},edc9:function(e,t,r){"use strict";var i=r("c3c0"),n=r("da3e");function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=a,a.prototype.update=function(e,t){if(e=i.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var r=e.length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=i.join32(e,0,e.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=e>>>16&255,i[n++]=e>>>8&255,i[n++]=255&e}else for(i[n++]=255&e,i[n++]=e>>>8&255,i[n++]=e>>>16&255,i[n++]=e>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,a=8;a=8.0.0")}).call(this,r("f28c"))},ef3a:function(e,t,r){var i=r("7f7a"),n=r("3fb5"),a=t;function f(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}a.define=function(e,t){return new f(e,t)},f.prototype._createNamed=function(e){var t;try{t=r("0706").runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(i){t=function(e){this._initNamed(e)}}return n(t,e),t.prototype._initNamed=function(t){e.call(this,t)},new t(this)},f.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(i.decoders[e])),this.decoders[e]},f.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},f.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(i.encoders[e])),this.encoders[e]},f.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},f309:function(e,t,r){var i=r("2910"),n=function(e,t){i.call(this,e),this.name="NotBeforeError",this.date=t};n.prototype=Object.create(i.prototype),n.prototype.constructor=n,e.exports=n},f3a3:function(e,t,r){"use strict";var i=t,n=r("399f"),a=r("da3e"),f=r("7658");function o(e,t){var r=[],i=1<=0){var a;if(n.isOdd()){var f=n.andln(i-1);a=f>(i>>1)-1?(i>>1)-f:f,n.isubn(a)}else a=0;r.push(a);for(var o=0!==n.cmpn(0)&&0===n.andln(i-1)?t+1:1,s=1;s0||t.cmpn(-n)>0){var a,f,o=e.andln(3)+i&3,s=t.andln(3)+n&3;if(3===o&&(o=-1),3===s&&(s=-1),0===(1&o))a=0;else{var c=e.andln(7)+i&7;a=3!==c&&5!==c||2!==s?o:-o}if(r[0].push(a),0===(1&s))f=0;else{c=t.andln(7)+n&7;f=3!==c&&5!==c||2!==o?s:-s}r[1].push(f),2*i===a+1&&(i=1-i),2*n===f+1&&(n=1-n),e.iushrn(1),t.iushrn(1)}return r}function c(e,t,r){var i="_"+t;e.prototype[t]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}}function d(e){return"string"===typeof e?i.toArray(e,"hex"):e}function h(e){return new n(e,"hex","le")}i.assert=a,i.toArray=f.toArray,i.zero2=f.zero2,i.toHex=f.toHex,i.encode=f.encode,i.getNAF=o,i.getJSF=s,i.cachedProperty=c,i.parseBytes=d,i.intFromLE=h},f460:function(e,t,r){var i=r("98e6"),n=r("8707").Buffer;function a(e){var t=n.allocUnsafe(4);return t.writeUInt32BE(e,0),t}e.exports=function(e,t){var r,f=n.alloc(0),o=0;while(f.length>>32-t}function c(e,t,r,i,n,a,f){return s(e+(t&r|~t&i)+n+a|0,f)+t|0}function d(e,t,r,i,n,a,f){return s(e+(t&i|r&~i)+n+a|0,f)+t|0}function h(e,t,r,i,n,a,f){return s(e+(t^r^i)+n+a|0,f)+t|0}function u(e,t,r,i,n,a,f){return s(e+(r^(t|~i))+n+a|0,f)+t|0}i(o,n),o.prototype._update=function(){for(var e=f,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,i=this._b,n=this._c,a=this._d;r=c(r,i,n,a,e[0],3614090360,7),a=c(a,r,i,n,e[1],3905402710,12),n=c(n,a,r,i,e[2],606105819,17),i=c(i,n,a,r,e[3],3250441966,22),r=c(r,i,n,a,e[4],4118548399,7),a=c(a,r,i,n,e[5],1200080426,12),n=c(n,a,r,i,e[6],2821735955,17),i=c(i,n,a,r,e[7],4249261313,22),r=c(r,i,n,a,e[8],1770035416,7),a=c(a,r,i,n,e[9],2336552879,12),n=c(n,a,r,i,e[10],4294925233,17),i=c(i,n,a,r,e[11],2304563134,22),r=c(r,i,n,a,e[12],1804603682,7),a=c(a,r,i,n,e[13],4254626195,12),n=c(n,a,r,i,e[14],2792965006,17),i=c(i,n,a,r,e[15],1236535329,22),r=d(r,i,n,a,e[1],4129170786,5),a=d(a,r,i,n,e[6],3225465664,9),n=d(n,a,r,i,e[11],643717713,14),i=d(i,n,a,r,e[0],3921069994,20),r=d(r,i,n,a,e[5],3593408605,5),a=d(a,r,i,n,e[10],38016083,9),n=d(n,a,r,i,e[15],3634488961,14),i=d(i,n,a,r,e[4],3889429448,20),r=d(r,i,n,a,e[9],568446438,5),a=d(a,r,i,n,e[14],3275163606,9),n=d(n,a,r,i,e[3],4107603335,14),i=d(i,n,a,r,e[8],1163531501,20),r=d(r,i,n,a,e[13],2850285829,5),a=d(a,r,i,n,e[2],4243563512,9),n=d(n,a,r,i,e[7],1735328473,14),i=d(i,n,a,r,e[12],2368359562,20),r=h(r,i,n,a,e[5],4294588738,4),a=h(a,r,i,n,e[8],2272392833,11),n=h(n,a,r,i,e[11],1839030562,16),i=h(i,n,a,r,e[14],4259657740,23),r=h(r,i,n,a,e[1],2763975236,4),a=h(a,r,i,n,e[4],1272893353,11),n=h(n,a,r,i,e[7],4139469664,16),i=h(i,n,a,r,e[10],3200236656,23),r=h(r,i,n,a,e[13],681279174,4),a=h(a,r,i,n,e[0],3936430074,11),n=h(n,a,r,i,e[3],3572445317,16),i=h(i,n,a,r,e[6],76029189,23),r=h(r,i,n,a,e[9],3654602809,4),a=h(a,r,i,n,e[12],3873151461,11),n=h(n,a,r,i,e[15],530742520,16),i=h(i,n,a,r,e[2],3299628645,23),r=u(r,i,n,a,e[0],4096336452,6),a=u(a,r,i,n,e[7],1126891415,10),n=u(n,a,r,i,e[14],2878612391,15),i=u(i,n,a,r,e[5],4237533241,21),r=u(r,i,n,a,e[12],1700485571,6),a=u(a,r,i,n,e[3],2399980690,10),n=u(n,a,r,i,e[10],4293915773,15),i=u(i,n,a,r,e[1],2240044497,21),r=u(r,i,n,a,e[8],1873313359,6),a=u(a,r,i,n,e[15],4264355552,10),n=u(n,a,r,i,e[6],2734768916,15),i=u(i,n,a,r,e[13],1309151649,21),r=u(r,i,n,a,e[4],4149444226,6),a=u(a,r,i,n,e[11],3174756917,10),n=u(n,a,r,i,e[2],718787259,15),i=u(i,n,a,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+a|0},o.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=a.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=o},fda6:function(e,t,r){var i=r("8947"),n=r("4228"),a=r("e85f");function f(){return Object.keys(a)}t.createCipher=t.Cipher=i.createCipher,t.createCipheriv=t.Cipheriv=i.createCipheriv,t.createDecipher=t.Decipher=n.createDecipher,t.createDecipheriv=t.Decipheriv=n.createDecipheriv,t.listCiphers=t.getCiphers=f},fdac:function(e,t,r){var i;function n(e){this.rand=e}if(e.exports=function(e){return i||(i=new n(null)),i.generate(e)},e.exports.Rand=n,n.prototype.generate=function(e){return this._rand(e)},n.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;rr)X(e,n=i[r++],t[n]);return e},J=function(e,t){return void 0===t?S(e):Q(S(e),t)},Z=function(e){var t=$.call(this,e=w(e,!0));return!(this===B&&r(j,e)&&!r(F,e))&&(!(t||!r(this,e)||!r(j,e)||r(this,D)&&this[D][e])||t)},ee=function(e,t){if(e=C(e),t=w(t,!0),e!==B||!r(j,t)||r(F,t)){var n=T(e,t);return!n||!r(j,t)||r(e,D)&&e[D][t]||(n.enumerable=!0),n}},te=function(e){var t,n=A(C(e)),i=[],o=0;while(n.length>o)r(j,t=n[o++])||t==D||t==c||i.push(t);return i},ne=function(e){var t,n=e===B,i=A(n?F:C(e)),o=[],a=0;while(i.length>a)!r(j,t=i[a++])||n&&!r(B,t)||o.push(j[t]);return o};W||(H=function(){if(this instanceof H)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(F,n),r(this,D)&&r(this[D],e)&&(this[D][e]=!1),q(this,e,x(1,n))};return o&&K&&q(B,e,{configurable:!0,set:t}),G(e)},s(H[I],"toString",function(){return this._k}),O.f=ee,z.f=X,n("6abf").f=E.f=te,n("355d").f=Z,M.f=ne,o&&!n("b8e3")&&s(B,"propertyIsEnumerable",Z,!0),p.f=function(e){return G(f(e))}),a(a.G+a.W+a.F*!W,{Symbol:H});for(var ie="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;ie.length>re;)f(ie[re++]);for(var oe=k(f.store),ae=0;oe.length>ae;)v(oe[ae++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return r(R,e+="")?R[e]:R[e]=H(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in R)if(R[t]===e)return t},useSetter:function(){K=!0},useSimple:function(){K=!1}}),a(a.S+a.F*!W,"Object",{create:J,defineProperty:X,defineProperties:Q,getOwnPropertyDescriptor:ee,getOwnPropertyNames:te,getOwnPropertySymbols:ne});var se=l(function(){M.f(1)});a(a.S+a.F*se,"Object",{getOwnPropertySymbols:function(e){return M.f(_(e))}}),V&&a(a.S+a.F*(!W||l(function(){var e=H();return"[null]"!=N([e])||"{}"!=N({a:e})||"{}"!=N(Object(e))})),"JSON",{stringify:function(e){var t,n,i=[e],r=1;while(arguments.length>r)i.push(arguments[r++]);if(n=t=i[1],(y(t)||void 0!==e)&&!Y(e))return g(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Y(t))return t}),i[1]=t,N.apply(V,i)}}),H[I][P]||n("35e8")(H[I],P,H[I].valueOf),h(H,"Symbol"),h(Math,"Math",!0),h(i.JSON,"JSON",!0)},"01f9":function(e,t,n){"use strict";var i=n("2d00"),r=n("5ca1"),o=n("2aba"),a=n("32e9"),s=n("84f2"),c=n("41a0"),l=n("7f20"),u=n("38fd"),h=n("2b4c")("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",p="keys",v="values",m=function(){return this};e.exports=function(e,t,n,g,b,y,_){c(n,t,g);var C,w,x,S=function(e){if(!d&&e in z)return z[e];switch(e){case p:return function(){return new n(this,e)};case v:return function(){return new n(this,e)}}return function(){return new n(this,e)}},E=t+" Iterator",O=b==v,M=!1,z=e.prototype,k=z[h]||z[f]||b&&z[b],T=k||S(b),L=b?O?S("entries"):T:void 0,A="Array"==t&&z.entries||k;if(A&&(x=u(A.call(new e)),x!==Object.prototype&&x.next&&(l(x,E,!0),i||"function"==typeof x[h]||a(x,h,m))),O&&k&&k.name!==v&&(M=!0,T=function(){return k.call(this)}),i&&!_||!d&&!M&&z[h]||a(z,h,T),s[t]=T,s[E]=m,b)if(C={values:O?T:S(v),keys:y?T:S(p),entries:L},_)for(w in C)w in z||o(z,w,C[w]);else r(r.P+r.F*(d||M),t,C);return C}},"0298":function(e,t,n){"use strict";var i=n("5ca1"),r=n("4bf8"),o=n("6a99");i(i.P+i.F*n("79e5")(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(e){var t=r(this),n=o(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},"02f4":function(e,t,n){var i=n("4588"),r=n("be13");e.exports=function(e){return function(t,n){var o,a,s=String(r(t)),c=i(n),l=s.length;return c<0||c>=l?e?"":void 0:(o=s.charCodeAt(c),o<55296||o>56319||c+1===l||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):o:e?s.slice(c,c+2):a-56320+(o-55296<<10)+65536)}}},"036c":function(e,t,n){"use strict";var i=n("5ca1"),r=n("4588"),o=n("bef9"),a=n("9744"),s=1..toFixed,c=Math.floor,l=[0,0,0,0,0,0],u="Number.toFixed: incorrect invocation!",h="0",d=function(e,t){var n=-1,i=t;while(++n<6)i+=e*l[n],l[n]=i%1e7,i=c(i/1e7)},f=function(e){var t=6,n=0;while(--t>=0)n+=l[t],l[t]=c(n/e),n=n%e*1e7},p=function(){var e=6,t="";while(--e>=0)if(""!==t||0===e||0!==l[e]){var n=String(l[e]);t=""===t?n:t+a.call(h,7-n.length)+n}return t},v=function(e,t,n){return 0===t?n:t%2===1?v(e,t-1,n*e):v(e*e,t/2,n)},m=function(e){var t=0,n=e;while(n>=4096)t+=12,n/=4096;while(n>=2)t+=1,n/=2;return t};i(i.P+i.F*(!!s&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n("79e5")(function(){s.call({})})),"Number",{toFixed:function(e){var t,n,i,s,c=o(this,u),l=r(e),g="",b=h;if(l<0||l>20)throw RangeError(u);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(g="-",c=-c),c>1e-21)if(t=m(c*v(2,69,1))-69,n=t<0?c*v(2,-t,1):c/v(2,t,1),n*=4503599627370496,t=52-t,t>0){d(0,n),i=l;while(i>=7)d(1e7,0),i-=7;d(v(10,i,1),0),i=t-1;while(i>=23)f(1<<23),i-=23;f(1<0?(s=b.length,b=g+(s<=l?"0."+a.call(h,l-s)+b:b.slice(0,s-l)+"."+b.slice(s-l))):b=g+b,b}})},"0390":function(e,t,n){"use strict";var i=n("02f4")(!0);e.exports=function(e,t,n){return t+(n?i(e,t).length:1)}},"0395":function(e,t,n){var i=n("36c3"),r=n("6abf").f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return r(e)}catch(t){return a.slice()}};e.exports.f=function(e){return a&&"[object Window]"==o.call(e)?s(e):r(i(e))}},"03dd":function(e,t,n){var i=n("eac5"),r=n("57a5"),o=Object.prototype,a=o.hasOwnProperty;function s(e){if(!i(e))return r(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}e.exports=s},"042e":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{fround:n("91ca")})},"0464":function(e,t,n){"use strict";var i=n("41b2"),r=n.n(i);function o(e,t){for(var n=r()({},e),i=0;iC;C++)if((d||C in b)&&(v=b[C],m=y(v,C,g),e))if(n)w[C]=m;else if(m)switch(e){case 3:return!0;case 5:return v;case 6:return C;case 2:w.push(v)}else if(u)return!1;return h?-1:l||u?u:w}}},"0ab2":function(e,t,n){"use strict";n("1b4c"),n("f942")},"0b07":function(e,t,n){var i=n("34ac"),r=n("3698");function o(e,t){var n=r(e,t);return i(n)?n:void 0}e.exports=o},"0b21":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{sign:n("96fb")})},"0bfb":function(e,t,n){"use strict";var i=n("cb7c");e.exports=function(){var e=i(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"0c00":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{DEG_PER_RAD:Math.PI/180})},"0c36":function(e,t,n){var i=n("5ca1");i(i.G,{global:n("7726")})},"0c63":function(e,t,n){"use strict";var i=n("92fa"),r=n.n(i),o=n("6042"),a=n.n(o),s=n("41b2"),c=n.n(s),l=n("9b57"),u=n.n(l),h=n("4d26"),d=n.n(h),f=n("3a9b"),p=n("2adb"),v={primaryColor:"#333",secondaryColor:"#E6E6E6"},m={name:"AntdIcon",props:["type","primaryColor","secondaryColor"],displayName:"IconVue",definitions:new p["a"],data:function(){return{twoToneColorPalette:v}},add:function(){for(var e=arguments.length,t=Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:v;if(e){var n=m.definitions.get(e);return n&&"function"===typeof n.icon&&(n=c()({},n,{icon:n.icon(t.primaryColor,t.secondaryColor)})),n}},setTwoToneColors:function(e){var t=e.primaryColor,n=e.secondaryColor;v.primaryColor=t,v.secondaryColor=n||Object(p["c"])(t)},getTwoToneColors:function(){return c()({},v)},render:function(e){var t=this.$props,n=t.type,i=t.primaryColor,r=t.secondaryColor,o=void 0,a=v;if(i&&(a={primaryColor:i,secondaryColor:r||Object(p["c"])(i)}),Object(p["d"])(n))o=n;else if("string"===typeof n&&(o=m.get(n,a),!o))return null;return o?(o&&"function"===typeof o.icon&&(o=c()({},o,{icon:o.icon(a.primaryColor,a.secondaryColor)})),Object(p["b"])(e,o.icon,"svg-"+o.name,{attrs:{"data-icon":o.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},on:this.$listeners})):(Object(p["e"])("type should be string or icon definiton, but got "+n),null)},install:function(e){e.component(m.name,m)}},g=m,b=g,y=n("4d91"),_=n("8e8e"),C=n.n(_),w=n("daa3"),x=new Set;function S(e){var t=e.scriptUrl,n=e.extraCommonProps,i=void 0===n?{}:n;if("undefined"!==typeof document&&"undefined"!==typeof window&&"function"===typeof document.createElement&&"string"===typeof t&&t.length&&!x.has(t)){var r=document.createElement("script");r.setAttribute("src",t),r.setAttribute("data-namespace",t),x.add(t),document.body.appendChild(r)}var o={functional:!0,name:"AIconfont",props:$.props,render:function(e,t){var n=t.props,r=t.slots,o=t.listeners,a=t.data,s=n.type,c=C()(n,["type"]),l=r(),u=l["default"],h=null;s&&(h=e("use",{attrs:{"xlink:href":"#"+s}})),u&&(h=u);var d=Object(w["m"])(i,a,{props:c,on:o});return e($,d,[h])}};return o}var E=n("6a21"),O={width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",focusable:"false"},M=/-fill$/,z=/-o$/,k=/-twotone$/;function T(e){var t=null;return M.test(e)?t="filled":z.test(e)?t="outlined":k.test(e)&&(t="twoTone"),t}function L(e){return e.replace(M,"").replace(z,"").replace(k,"")}function A(e,t){var n=e;return"filled"===t?n+="-fill":"outlined"===t?n+="-o":"twoTone"===t?n+="-twotone":Object(E["a"])(!1,"This icon '"+e+"' has unknown theme '"+t+"'"),n}function H(e){switch(e){case"cross":return"close";default:}return e}function V(e){return b.setTwoToneColors({primaryColor:e})}function N(){var e=b.getTwoToneColors();return e.primaryColor}b.add.apply(b,u()(Object.keys(f).map(function(e){return f[e]}))),V("#1890ff");var I="outlined",D=void 0,P={functional:!0,name:"AIcon",props:{type:y["a"].string,component:y["a"].any,viewBox:y["a"].any,spin:y["a"].bool.def(!1),theme:y["a"].oneOf(["filled","outlined","twoTone"]),twoToneColor:y["a"].string},render:function(e,t){var n,i=t.props,o=t.slots,s=t.listeners,l=t.data,u=i.type,h=i.component,f=i.viewBox,p=i.spin,v=i.theme,m=i.twoToneColor,g=o(),y=Object(w["b"])(g["default"]);y=0===y.length?void 0:y,Object(E["a"])(Boolean(u||h||y),"Icon should have `type` prop or `component` prop or `children`.");var _=d()(c()({},Object(w["c"])(t),(n={},a()(n,"anticon",!0),a()(n,"anticon-"+u,!!u),n))),C=d()(a()({},"anticon-spin",!!p||"loading"===u)),x=void 0;if(h){var S={attrs:c()({},O,{viewBox:f}),class:C};f||delete S.attrs.viewBox,x=e(h,S,[y])}if(y){Object(E["a"])(Boolean(f)||1===y.length&&"use"===y[0].tag,"Make sure that you provide correct `viewBox` prop (default `0 0 1024 1024`) to the icon.");var M={attrs:c()({},O),class:C};x=e("svg",r()([M,{attrs:{viewBox:f}}]),[y])}if("string"===typeof u){var z=u;if(v){var k=T(u);Object(E["a"])(!k||v===k,"The icon name '"+u+"' already specify a theme '"+k+"', the 'theme' prop '"+v+"' will be ignored.")}z=A(L(H(z)),D||v||I),x=e(b,{class:C,attrs:{type:z,primaryColor:m}})}var V=c()({},l,{on:c()({},s,l.nativeOn),class:_,staticClass:""});return e("i",V,[x])}};P.createFromIconfontCN=S,P.getTwoToneColor=N,P.setTwoToneColor=V,P.install=function(e){e.component(P.name,P)};var $=t["a"]=P},"0c94":function(e,t){var n="\\ud800-\\udfff",i="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",o="\\u20d0-\\u20ff",a=i+r+o,s="\\ufe0e\\ufe0f",c="["+n+"]",l="["+a+"]",u="\\ud83c[\\udffb-\\udfff]",h="(?:"+l+"|"+u+")",d="[^"+n+"]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",v="\\u200d",m=h+"?",g="["+s+"]?",b="(?:"+v+"(?:"+[d,f,p].join("|")+")"+g+m+")*",y=g+m+b,_="(?:"+[d+l+"?",l,f,p,c].join("|")+")",C=RegExp(u+"(?="+u+")|"+_+y,"g");function w(e){return e.match(C)||[]}e.exports=w},"0cd8":function(e,t,n){"use strict";var i=n("5ca1"),r=n("7b23");i(i.P+i.F*!n("2f21")([].reduce,!0),"Array",{reduce:function(e){return r(this,e,arguments.length,arguments[1],!1)}})},"0cdd":function(e,t){window.MutationObserver=window.MutationObserver||function(e){function t(e){this.i=[],this.m=e}function n(e){(function n(){var i=e.takeRecords();i.length&&e.m(i,e),e.h=setTimeout(n,t._period)})()}function i(t){var n,i={type:null,target:null,addedNodes:[],removedNodes:[],previousSibling:null,nextSibling:null,attributeName:null,attributeNamespace:null,oldValue:null};for(n in t)i[n]!==e&&t[n]!==e&&(i[n]=t[n]);return i}function r(e,t){var n=l(e,t);return function(r){var o,a=r.length;t.a&&3===e.nodeType&&e.nodeValue!==n.a&&r.push(new i({type:"characterData",target:e,oldValue:n.a})),t.b&&n.b&&s(r,e,n.b,t.f),(t.c||t.g)&&(o=c(r,e,n,t)),(o||r.length!==a)&&(n=l(e,t))}}function o(e,t){return t.value}function a(e,t){return"style"!==t.name?t.value:e.style.cssText}function s(t,n,r,o){for(var a,s,c={},l=n.attributes,u=l.length;u--;)a=l[u],s=a.name,o&&o[s]===e||(v(n,a)!==r[s]&&t.push(i({type:"attributes",target:n,attributeName:s,oldValue:r[s],attributeNamespace:a.namespaceURI})),c[s]=!0);for(s in r)c[s]||t.push(i({target:n,type:"attributes",attributeName:s,oldValue:r[s]}))}function c(t,n,r,o){function a(e,n,r,a,l){var u,h,d,f=e.length-1;for(l=-~((f-l)/2);d=e.pop();)u=r[d.j],h=a[d.l],o.c&&l&&Math.abs(d.j-d.l)>=f&&(t.push(i({type:"childList",target:n,addedNodes:[u],removedNodes:[u],nextSibling:u.nextSibling,previousSibling:u.previousSibling})),l--),o.b&&h.b&&s(t,u,h.b,o.f),o.a&&3===u.nodeType&&u.nodeValue!==h.a&&t.push(i({type:"characterData",target:u,oldValue:h.a})),o.g&&c(u,h)}function c(n,r){for(var h,d,p,v,m,g=n.childNodes,b=r.c,y=g.length,_=b?b.length:0,C=0,w=0,x=0;w0?arguments[0]:void 0)}},y={get:function(e){if(u(e)){var t=v(e);return!0===t?g(h(this,p)).get(e):t?t[this._i]:void 0}},set:function(e,t){return l.def(h(this,p),e,t)}},_=e.exports=n("e0b8")(p,b,y,l,!0,!0);d&&f&&(i=l.getConstructor(b,p),c(i.prototype,y),s.NEED=!0,o(["delete","has","get","set"],function(e){var t=_.prototype,n=t[e];a(t,e,function(t,r){if(u(t)&&!m(t)){this._f||(this._f=new i);var o=this._f[e](t,r);return"set"==e?this:o}return n.call(this,t,r)})}))},"10bb":function(e,t){var n=Object.prototype,i=n.toString;function r(e){return i.call(e)}e.exports=r},1169:function(e,t,n){var i=n("2d95");e.exports=Array.isArray||function(e){return"Array"==i(e)}},1173:function(e,t){e.exports=function(e,t,n,i){if(!(e instanceof t)||void 0!==i&&i in e)throw TypeError(n+": incorrect invocation!");return e}},"11e6":function(e,t,n){var i=n("67b8");function r(e){return null==e?"":i(e)}e.exports=r},"11e9":function(e,t,n){var i=n("52a7"),r=n("4630"),o=n("6821"),a=n("6a99"),s=n("69a8"),c=n("c69a"),l=Object.getOwnPropertyDescriptor;t.f=n("9e1e")?l:function(e,t){if(e=o(e),t=a(t,!0),c)try{return l(e,t)}catch(n){}if(s(e,t))return r(!i.f.call(e,t),e[t])}},1290:function(e,t){function n(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}e.exports=n},"12f2":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){return{methods:{focus:function(){this.$refs[e].focus()}}}}},"130f":function(e,t,n){var i=n("5ca1"),r=n("1991");i(i.G+i.B,{setImmediate:r.set,clearImmediate:r.clear})},1310:function(e,t){function n(e){return null!=e&&"object"==typeof e}e.exports=n},"134b":function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("4039"),o=i(r),a=n("320c"),s=i(a),c=!0,l=!1,u=["altKey","bubbles","cancelable","ctrlKey","currentTarget","eventPhase","metaKey","shiftKey","target","timeStamp","view","type"];function h(e){return null===e||void 0===e}var d=[{reg:/^key/,props:["char","charCode","key","keyCode","which"],fix:function(e,t){h(e.which)&&(e.which=h(t.charCode)?t.keyCode:t.charCode),void 0===e.metaKey&&(e.metaKey=e.ctrlKey)}},{reg:/^touch/,props:["touches","changedTouches","targetTouches"]},{reg:/^hashchange$/,props:["newURL","oldURL"]},{reg:/^gesturechange$/i,props:["rotation","scale"]},{reg:/^(mousewheel|DOMMouseScroll)$/,props:[],fix:function(e,t){var n=void 0,i=void 0,r=void 0,o=t.wheelDelta,a=t.axis,s=t.wheelDeltaY,c=t.wheelDeltaX,l=t.detail;o&&(r=o/120),l&&(r=0-(l%3===0?l/3:l)),void 0!==a&&(a===e.HORIZONTAL_AXIS?(i=0,n=0-r):a===e.VERTICAL_AXIS&&(n=0,i=r)),void 0!==s&&(i=s/120),void 0!==c&&(n=-1*c/120),n||i||(i=r),void 0!==n&&(e.deltaX=n),void 0!==i&&(e.deltaY=i),void 0!==r&&(e.delta=r)}},{reg:/^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,props:["buttons","clientX","clientY","button","offsetX","relatedTarget","which","fromElement","toElement","offsetY","pageX","pageY","screenX","screenY"],fix:function(e,t){var n=void 0,i=void 0,r=void 0,o=e.target,a=t.button;return o&&h(e.pageX)&&!h(t.clientX)&&(n=o.ownerDocument||document,i=n.documentElement,r=n.body,e.pageX=t.clientX+(i&&i.scrollLeft||r&&r.scrollLeft||0)-(i&&i.clientLeft||r&&r.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||r&&r.scrollTop||0)-(i&&i.clientTop||r&&r.clientTop||0)),e.which||void 0===a||(e.which=1&a?1:2&a?3:4&a?2:0),!e.relatedTarget&&e.fromElement&&(e.relatedTarget=e.fromElement===o?e.toElement:e.fromElement),e}}];function f(){return c}function p(){return l}function v(e){var t=e.type,n="function"===typeof e.stopPropagation||"boolean"===typeof e.cancelBubble;o["default"].call(this),this.nativeEvent=e;var i=p;"defaultPrevented"in e?i=e.defaultPrevented?f:p:"getPreventDefault"in e?i=e.getPreventDefault()?f:p:"returnValue"in e&&(i=e.returnValue===l?f:p),this.isDefaultPrevented=i;var r=[],a=void 0,s=void 0,c=void 0,h=u.concat();d.forEach(function(e){t.match(e.reg)&&(h=h.concat(e.props),e.fix&&r.push(e.fix))}),s=h.length;while(s)c=h[--s],this[c]=e[c];!this.target&&n&&(this.target=e.srcElement||document),this.target&&3===this.target.nodeType&&(this.target=this.target.parentNode),s=r.length;while(s)a=r[--s],a(this,e);this.timeStamp=e.timeStamp||Date.now()}var m=o["default"].prototype;(0,s["default"])(v.prototype,m,{constructor:v,preventDefault:function(){var e=this.nativeEvent;e.preventDefault?e.preventDefault():e.returnValue=l,m.preventDefault.call(this)},stopPropagation:function(){var e=this.nativeEvent;e.stopPropagation?e.stopPropagation():e.cancelBubble=c,m.stopPropagation.call(this)}}),t["default"]=v,e.exports=t["default"]},1368:function(e,t,n){var i=n("da03"),r=function(){var e=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function o(e){return!!r&&r in e}e.exports=o},1448:function(e,t,n){"use strict";n("386b")("strike",function(e){return function(){return e(this,"strike","","")}})},1495:function(e,t,n){var i=n("86cc"),r=n("cb7c"),o=n("0d58");e.exports=n("9e1e")?Object.defineProperties:function(e,t){r(e);var n,a=o(t),s=a.length,c=0;while(s>c)i.f(e,n=a[c++],t[n]);return e}},"14b9":function(e,t,n){var i=n("5ca1");i(i.P,"String",{repeat:n("9744")})},"14e9":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=121)}({121:function(e,t,n){"use strict";n.r(t);var i=n(13),r=n(37),o=n.n(r),a=n(3),s=n(2),c={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function l(e){var t=e.move,n=e.size,i=e.bar,r={},o="translate"+i.axis+"("+t+"%)";return r[i.size]=n,r.transform=o,r.msTransform=o,r.webkitTransform=o,r}var u={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return c[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,i=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+i.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:l({size:t,move:n,bar:i})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),n=this.$refs.thumb[this.bar.offset]/2,i=100*(t-n)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(s["on"])(document,"mousemove",this.mouseMoveDocumentHandler),Object(s["on"])(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),i=this.$refs.thumb[this.bar.offset]-t,r=100*(n-i)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=r*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(s["off"])(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(s["off"])(document,"mouseup",this.mouseUpDocumentHandler)}},h={name:"ElScrollbar",components:{Bar:u},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=o()(),n=this.wrapStyle;if(t){var i="-"+t+"px",r="margin-bottom: "+i+"; margin-right: "+i+";";Array.isArray(this.wrapStyle)?(n=Object(a["toObject"])(this.wrapStyle),n.marginRight=n.marginBottom=i):"string"===typeof this.wrapStyle?n+=r:n=r}var s=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),c=e("div",{ref:"wrap",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[s]]),l=void 0;return l=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:n},[[s]])]:[c,e(u,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(u,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},l)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e=void 0,t=void 0,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(i["addResizeListener"])(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(i["removeResizeListener"])(this.$refs.resize,this.update)},install:function(e){e.component(h.name,h)}};t["default"]=h},13:function(e,t){e.exports=n("4010")},2:function(e,t){e.exports=n("5924")},3:function(e,t){e.exports=n("8122")},37:function(e,t){e.exports=n("e62d")}})},"15ac":function(e,t,n){n("ec30")("Int16",2,function(e){return function(t,n,i){return e(this,t,n,i)}})},"15e2":function(e,t,n){"use strict";t.__esModule=!0;var i=n("719f"),r=s(i),o=n("bafa"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l="top-level",u="block-level",h=function(){function e(t){c(this,e),this.indent=t||" ",this.indentTypes=[]}return e.prototype.getIndent=function(){return(0,r["default"])(this.indent,this.indentTypes.length)},e.prototype.increaseToplevel=function(){this.indentTypes.push(l)},e.prototype.increaseBlockLevel=function(){this.indentTypes.push(u)},e.prototype.decreaseTopLevel=function(){(0,a["default"])(this.indentTypes)===l&&this.indentTypes.pop()},e.prototype.decreaseBlockLevel=function(){while(this.indentTypes.length>0){var e=this.indentTypes.pop();if(e!==l)break}},e}();t["default"]=h,e.exports=t["default"]},1654:function(e,t,n){"use strict";var i=n("71c1")(!0);n("30f1")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})})},"165b":function(e,t,n){var i=n("d3f4");n("5eda")("isExtensible",function(e){return function(t){return!!i(t)&&(!e||e(t))}})},1691:function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},1727:function(e,t,n){e.exports={default:n("469f"),__esModule:!0}},"178b":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("a745"),r=n.n(i);function o(e){if(r()(e))return e}},"17ed":function(e,t,n){e.exports={default:n("d8d6"),__esModule:!0}},1847:function(e,t,n){"use strict";t.__esModule=!0;var i=n("a48e"),r=s(i),o=n("c606"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANT","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MODIFY","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],u=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UPDATE","VALUES","WHERE"],h=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],d=void 0,f=function(){function e(t){c(this,e),this.cfg=t}return e.prototype.format=function(e){return d||(d=new a["default"]({reservedWords:l,reservedToplevelWords:u,reservedNewlineWords:h,stringTypes:['""',"N''","''","``","[]"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":"],lineCommentTypes:["#","--"]})),new r["default"](this.cfg,d).format(e)},e}();t["default"]=f,e.exports=t["default"]},"18a7":function(e,t,n){"use strict";var i={MAC_ENTER:3,BACKSPACE:8,TAB:9,NUM_CENTER:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,PRINT_SCREEN:44,INSERT:45,DELETE:46,ZERO:48,ONE:49,TWO:50,THREE:51,FOUR:52,FIVE:53,SIX:54,SEVEN:55,EIGHT:56,NINE:57,QUESTION_MARK:63,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,META:91,WIN_KEY_RIGHT:92,CONTEXT_MENU:93,NUM_ZERO:96,NUM_ONE:97,NUM_TWO:98,NUM_THREE:99,NUM_FOUR:100,NUM_FIVE:101,NUM_SIX:102,NUM_SEVEN:103,NUM_EIGHT:104,NUM_NINE:105,NUM_MULTIPLY:106,NUM_PLUS:107,NUM_MINUS:109,NUM_PERIOD:110,NUM_DIVISION:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,NUMLOCK:144,SEMICOLON:186,DASH:189,EQUALS:187,COMMA:188,PERIOD:190,SLASH:191,APOSTROPHE:192,SINGLE_QUOTE:222,OPEN_SQUARE_BRACKET:219,BACKSLASH:220,CLOSE_SQUARE_BRACKET:221,WIN_KEY:224,MAC_FF_META:224,WIN_IME:229,isTextModifyingKeyEvent:function(e){var t=e.keyCode;if(e.altKey&&!e.ctrlKey||e.metaKey||t>=i.F1&&t<=i.F12)return!1;switch(t){case i.ALT:case i.CAPS_LOCK:case i.CONTEXT_MENU:case i.CTRL:case i.DOWN:case i.END:case i.ESC:case i.HOME:case i.INSERT:case i.LEFT:case i.MAC_FF_META:case i.META:case i.NUMLOCK:case i.NUM_CENTER:case i.PAGE_DOWN:case i.PAGE_UP:case i.PAUSE:case i.PRINT_SCREEN:case i.RIGHT:case i.SHIFT:case i.UP:case i.WIN_KEY:case i.WIN_KEY_RIGHT:return!1;default:return!0}},isCharacterKey:function(e){if(e>=i.ZERO&&e<=i.NINE)return!0;if(e>=i.NUM_ZERO&&e<=i.NUM_MULTIPLY)return!0;if(e>=i.A&&e<=i.Z)return!0;if(-1!==window.navigation.userAgent.indexOf("WebKit")&&0===e)return!0;switch(e){case i.SPACE:case i.QUESTION_MARK:case i.NUM_PLUS:case i.NUM_MINUS:case i.NUM_PERIOD:case i.NUM_DIVISION:case i.SEMICOLON:case i.DASH:case i.EQUALS:case i.COMMA:case i.PERIOD:case i.SLASH:case i.APOSTROPHE:case i.SINGLE_QUOTE:case i.OPEN_SQUARE_BRACKET:case i.BACKSLASH:case i.CLOSE_SQUARE_BRACKET:return!0;default:return!1}}};t["a"]=i},"18ce":function(e,t,n){"use strict";var i=n("1098"),r=n.n(i),o={transitionstart:{transition:"transitionstart",WebkitTransition:"webkitTransitionStart",MozTransition:"mozTransitionStart",OTransition:"oTransitionStart",msTransition:"MSTransitionStart"},animationstart:{animation:"animationstart",WebkitAnimation:"webkitAnimationStart",MozAnimation:"mozAnimationStart",OAnimation:"oAnimationStart",msAnimation:"MSAnimationStart"}},a={transitionend:{transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd",msTransition:"MSTransitionEnd"},animationend:{animation:"animationend",WebkitAnimation:"webkitAnimationEnd",MozAnimation:"mozAnimationEnd",OAnimation:"oAnimationEnd",msAnimation:"MSAnimationEnd"}},s=[],c=[];function l(){var e=document.createElement("div"),t=e.style;function n(e,n){for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];for(var o in r)if(o in t){n.push(r[o]);break}}}"AnimationEvent"in window||(delete o.animationstart.animation,delete a.animationend.animation),"TransitionEvent"in window||(delete o.transitionstart.transition,delete a.transitionend.transition),n(o,s),n(a,c)}function u(e,t,n){e.addEventListener(t,n,!1)}function h(e,t,n){e.removeEventListener(t,n,!1)}"undefined"!==typeof window&&"undefined"!==typeof document&&l();var d={startEvents:s,addStartEventListener:function(e,t){0!==s.length?s.forEach(function(n){u(e,n,t)}):window.setTimeout(t,0)},removeStartEventListener:function(e,t){0!==s.length&&s.forEach(function(n){h(e,n,t)})},endEvents:c,addEndEventListener:function(e,t){0!==c.length?c.forEach(function(n){u(e,n,t)}):window.setTimeout(t,0)},removeEndEventListener:function(e,t){0!==c.length&&c.forEach(function(n){h(e,n,t)})}},f=d,p=n("3c55"),v=n.n(p),m=n("d41d"),g=0!==f.endEvents.length,b=["Webkit","Moz","O","ms"],y=["-webkit-","-moz-","-o-","ms-",""];function _(e,t){for(var n=window.getComputedStyle(e,null),i="",r=0;rn)t.push(arguments[n++]);return g[++m]=function(){s("function"==typeof e?e:Function(e),t)},i(m),m},f=function(e){delete g[e]},"process"==n("2d95")(h)?i=function(e){h.nextTick(a(y,e,1))}:v&&v.now?i=function(e){v.now(a(y,e,1))}:p?(r=new p,o=r.port2,r.port1.onmessage=_,i=a(o.postMessage,o,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(i=function(e){u.postMessage(e+"","*")},u.addEventListener("message",_,!1)):i=b in l("script")?function(e){c.appendChild(l("script"))[b]=function(){c.removeChild(this),y.call(e)}}:function(e){setTimeout(a(y,e,1),0)}),e.exports={set:d,clear:f}},"1a2d":function(e,t,n){var i=n("42a2"),r=n("1310"),o="[object Map]";function a(e){return r(e)&&i(e)==o}e.exports=a},"1a8c":function(e,t){function n(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=n},"1af6":function(e,t,n){var i=n("63b6");i(i.S,"Array",{isArray:n("9003")})},"1b2b":function(e,t){e.exports=function(e,t,n,i){var r=n?n.call(i,e,t):void 0;if(void 0!==r)return!!r;if(e===t)return!0;if("object"!==typeof e||!e||"object"!==typeof t||!t)return!1;var o=Object.keys(e),a=Object.keys(t);if(o.length!==a.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),c=0;c1?arguments[1]:void 0,m=void 0!==v,g=0,b=u(d);if(m&&(v=i(v,p>2?arguments[2]:void 0,2)),void 0==b||f==Array&&s(b))for(t=c(d.length),n=new f(t);t>g;g++)l(n,g,m?v(d[g],g):d[g]);else for(h=b.call(d),n=new f;!(r=h.next()).done;g++)l(n,g,m?a(h,v,[r.value,g],!0):r.value);return n.length=g,n}})},"1cec":function(e,t,n){var i=n("0b07"),r=n("2b3e"),o=i(r,"Promise");e.exports=o},"1d2b":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),i=0;i=r?e:i(e,t,n)}e.exports=r},"1df0":function(e,t,n){var i=n("83fa"),r=n("7cf4"),o=n("4200"),a=n("7430"),s=/[\\^$.*+?()[\]{}|]/g,c=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,h=l.toString,d=u.hasOwnProperty,f=RegExp("^"+h.call(d).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function p(e){if(!o(e)||r(e))return!1;var t=i(e)?f:c;return t.test(a(e))}e.exports=p},"1df6":function(e,t,n){"use strict";function i(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}n.d(t,"a",function(){return i})},"1ec9":function(e,t,n){var i=n("f772"),r=n("e53d").document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},"1efc":function(e,t){function n(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}e.exports=n},"1f18":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{RAD_PER_DEG:180/Math.PI})},"1f91":function(e,t,n){var i=n("5ca1"),r=n("e9d2"),o=n("91ca");i(i.S,"Math",{fscale:function(e,t,n,i,a){return o(r(e,t,n,i,a))}})},"1fa8":function(e,t,n){var i=n("cb7c");e.exports=function(e,t,n,r){try{return r?t(i(n)[0],n[1]):t(n)}catch(a){var o=e["return"];throw void 0!==o&&i(o.call(e)),a}}},"1fc8":function(e,t,n){var i=n("4245");function r(e,t){var n=i(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}e.exports=r},"1fd5":function(e,t,n){"use strict";var i=n("6042"),r=n.n(i),o=n("41b2"),a=n.n(o),s=n("1098"),c=n.n(s),l=n("4d26"),u=n.n(l),h=n("4d91"),d=n("daa3"),f={prefixCls:h["a"].string,size:h["a"].oneOf(["large","small","default"]),shape:h["a"].oneOf(["circle","square"])},p=h["a"].shape(f).loose,v={props:Object(d["k"])(f,{prefixCls:"ant-skeleton-avatar",size:"large"}),render:function(){var e,t,n=arguments[0],i=this.$props,o=i.prefixCls,a=i.size,s=i.shape,c=u()((e={},r()(e,o+"-lg","large"===a),r()(e,o+"-sm","small"===a),e)),l=u()((t={},r()(t,o+"-circle","circle"===s),r()(t,o+"-square","square"===s),t));return n("span",{class:u()(o,c,l)})}},m=v,g={prefixCls:h["a"].string,width:h["a"].oneOfType([h["a"].number,h["a"].string])},b=h["a"].shape(g),y={props:Object(d["k"])(g,{prefixCls:"ant-skeleton-title"}),render:function(){var e=arguments[0],t=this.$props,n=t.prefixCls,i=t.width,r="number"===typeof i?i+"px":i;return e("h3",{class:n,style:{width:r}})}},_=y,C=n("9b57"),w=n.n(C),x=h["a"].oneOfType([h["a"].number,h["a"].string]),S={prefixCls:h["a"].string,width:h["a"].oneOfType([x,h["a"].arrayOf(x)]),rows:h["a"].number},E=h["a"].shape(S),O={props:Object(d["k"])(S,{prefixCls:"ant-skeleton-paragraph"}),methods:{getWidth:function(e){var t=this.width,n=this.rows,i=void 0===n?2:n;return Array.isArray(t)?t[e]:i-1===e?t:void 0}},render:function(){var e=this,t=arguments[0],n=this.$props,i=n.prefixCls,r=n.rows,o=[].concat(w()(Array(r))).map(function(n,i){var r=e.getWidth(i);return t("li",{key:i,style:{width:"number"===typeof r?r+"px":r}})});return t("ul",{class:i},[o])}},M=O,z={active:h["a"].bool,loading:h["a"].bool,prefixCls:h["a"].string,children:h["a"].any,avatar:h["a"].oneOfType([h["a"].string,p,h["a"].bool]),title:h["a"].oneOfType([h["a"].bool,h["a"].string,b]),paragraph:h["a"].oneOfType([h["a"].bool,h["a"].string,E])};function k(e){return e&&"object"===("undefined"===typeof e?"undefined":c()(e))?e:{}}function T(e,t){return e&&!t?{shape:"square"}:{shape:"circle"}}function L(e,t){return!e&&t?{width:"38%"}:e&&t?{width:"50%"}:{}}function A(e,t){var n={};return e&&t||(n.width="61%"),n.rows=!e&&t?3:2,n}var H={name:"ASkeleton",props:Object(d["k"])(z,{prefixCls:"ant-skeleton",avatar:!1,title:!0,paragraph:!0}),render:function(){var e=arguments[0],t=this.$props,n=t.loading,i=t.prefixCls,o=t.avatar,s=t.title,c=t.paragraph,l=t.active;if(n||!Object(d["j"])(this,"loading")){var h,f=!!o||""===o,p=!!s,v=!!c,g=void 0;if(f){var b={props:a()({},T(p,v),k(o))};g=e("div",{class:i+"-header"},[e(m,b)])}var y=void 0;if(p||v){var C=void 0;if(p){var w={props:a()({},L(f,v),k(s))};C=e(_,w)}var x=void 0;if(v){var S={props:a()({},A(f,p),k(c))};x=e(M,S)}y=e("div",{class:i+"-content"},[C,x])}var E=u()(i,(h={},r()(h,i+"-with-avatar",f),r()(h,i+"-active",l),h));return e("div",{class:E},[g,y])}return this.$slots["default"]&&this.$slots["default"][0]},install:function(e){e.component(H.name,H)}};t["a"]=H},"202a":function(e,t,n){var i=n("3f54"),r=i["__core-js_shared__"];e.exports=r},2071:function(e,t){function n(){return!1}e.exports=n},"20ba":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.presetPrimaryColors=t.presetPalettes=t.generate=void 0;var i=n("b897"),r=o(i);function o(e){return e&&e.__esModule?e:{default:e}}var a={red:"#F5222D",volcano:"#FA541C",orange:"#FA8C16",gold:"#FAAD14",yellow:"#FADB14",lime:"#A0D911",green:"#52C41A",cyan:"#13C2C2",blue:"#1890FF",geekblue:"#2F54EB",purple:"#722ED1",magenta:"#EB2F96",grey:"#666666"},s={};Object.keys(a).forEach(function(e){s[e]=(0,r.default)(a[e])}),t.generate=r.default,t.presetPalettes=s,t.presetPrimaryColors=a},"20d6":function(e,t,n){"use strict";var i=n("5ca1"),r=n("0a49")(6),o="findIndex",a=!0;o in[]&&Array(1)[o](function(){a=!1}),i(i.P+i.F*a,"Array",{findIndex:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")(o)},"20fd":function(e,t,n){"use strict";var i=n("d9f6"),r=n("aebd");e.exports=function(e,t,n){t in e?i.f(e,t,r(0,n)):e[t]=n}},"214f":function(e,t,n){"use strict";n("b0c5");var i=n("2aba"),r=n("32e9"),o=n("79e5"),a=n("be13"),s=n("2b4c"),c=n("520a"),l=s("species"),u=!o(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),h=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var d=s(e),f=!o(function(){var t={};return t[d]=function(){return 7},7!=""[e](t)}),p=f?!o(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[l]=function(){return n}),n[d](""),!t}):void 0;if(!f||!p||"replace"===e&&!u||"split"===e&&!h){var v=/./[d],m=n(a,d,""[e],function(e,t,n,i,r){return t.exec===c?f&&!r?{done:!0,value:v.call(t,n,i)}:{done:!0,value:e.call(n,t,i)}:{done:!1}}),g=m[0],b=m[1];i(String.prototype,e,g),r(RegExp.prototype,d,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)})}}},"217b":function(e,t,n){"use strict";var i=n("d3f4"),r=n("38fd"),o=n("2b4c")("hasInstance"),a=Function.prototype;o in a||n("86cc").f(a,o,{value:function(e){if("function"!=typeof this||!i(e))return!1;if(!i(this.prototype))return e instanceof this;while(e=r(e))if(this.prototype===e)return!0;return!1}})},"217d":function(e,t){function n(e,t){var n,i=0,r=e.length;for(i;i=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};i.forEach(["delete","get","head"],function(e){c.headers[e]={}}),i.forEach(["post","put","patch"],function(e){c.headers[e]=i.merge(o)}),e.exports=c}).call(this,n("f28c"))},2474:function(e,t,n){var i=n("2b3e"),r=i.Uint8Array;e.exports=r},2478:function(e,t,n){var i=n("4245");function r(e){return i(this,e).get(e)}e.exports=r},"24c5":function(e,t,n){"use strict";var i,r,o,a,s=n("b8e3"),c=n("e53d"),l=n("d864"),u=n("40c3"),h=n("63b6"),d=n("f772"),f=n("79aa"),p=n("1173"),v=n("a22a"),m=n("f201"),g=n("4178").set,b=n("aba2")(),y=n("656e"),_=n("4439"),C=n("bc13"),w=n("cd78"),x="Promise",S=c.TypeError,E=c.process,O=E&&E.versions,M=O&&O.v8||"",z=c[x],k="process"==u(E),T=function(){},L=r=y.f,A=!!function(){try{var e=z.resolve(1),t=(e.constructor={})[n("5168")("species")]=function(e){e(T,T)};return(k||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof t&&0!==M.indexOf("6.6")&&-1===C.indexOf("Chrome/66")}catch(i){}}(),H=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},V=function(e,t){if(!e._n){e._n=!0;var n=e._c;b(function(){var i=e._v,r=1==e._s,o=0,a=function(t){var n,o,a,s=r?t.ok:t.fail,c=t.resolve,l=t.reject,u=t.domain;try{s?(r||(2==e._h&&D(e),e._h=1),!0===s?n=i:(u&&u.enter(),n=s(i),u&&(u.exit(),a=!0)),n===t.promise?l(S("Promise-chain cycle")):(o=H(n))?o.call(n,c,l):c(n)):l(i)}catch(h){u&&!a&&u.exit(),l(h)}};while(n.length>o)a(n[o++]);e._c=[],e._n=!1,t&&!e._h&&N(e)})}},N=function(e){g.call(c,function(){var t,n,i,r=e._v,o=I(e);if(o&&(t=_(function(){k?E.emit("unhandledRejection",r,e):(n=c.onunhandledrejection)?n({promise:e,reason:r}):(i=c.console)&&i.error&&i.error("Unhandled promise rejection",r)}),e._h=k||I(e)?2:1),e._a=void 0,o&&t.e)throw t.v})},I=function(e){return 1!==e._h&&0===(e._a||e._c).length},D=function(e){g.call(c,function(){var t;k?E.emit("rejectionHandled",e):(t=c.onrejectionhandled)&&t({promise:e,reason:e._v})})},P=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),V(t,!0))},$=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw S("Promise can't be resolved itself");(t=H(e))?b(function(){var i={_w:n,_d:!1};try{t.call(e,l($,i,1),l(P,i,1))}catch(r){P.call(i,r)}}):(n._v=e,n._s=1,V(n,!1))}catch(i){P.call({_w:n,_d:!1},i)}}};A||(z=function(e){p(this,z,x,"_h"),f(e),i.call(this);try{e(l($,this,1),l(P,this,1))}catch(t){P.call(this,t)}},i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n("5c95")(z.prototype,{then:function(e,t){var n=L(m(this,z));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=k?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&V(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new i;this.promise=e,this.resolve=l($,e,1),this.reject=l(P,e,1)},y.f=L=function(e){return e===z||e===a?new o(e):r(e)}),h(h.G+h.W+h.F*!A,{Promise:z}),n("45f2")(z,x),n("4c95")(x),a=n("584a")[x],h(h.S+h.F*!A,x,{reject:function(e){var t=L(this),n=t.reject;return n(e),t.promise}}),h(h.S+h.F*(s||!A),x,{resolve:function(e){return w(s&&this===a?z:this,e)}}),h(h.S+h.F*!(A&&n("4ee1")(function(e){z.all(e)["catch"](T)})),x,{all:function(e){var t=this,n=L(t),i=n.resolve,r=n.reject,o=_(function(){var n=[],o=0,a=1;v(e,!1,function(e){var s=o++,c=!1;n.push(void 0),a++,t.resolve(e).then(function(e){c||(c=!0,n[s]=e,--a||i(n))},r)}),--a||i(n)});return o.e&&r(o.v),n.promise},race:function(e){var t=this,n=L(t),i=n.reject,r=_(function(){v(e,!1,function(e){t.resolve(e).then(n.resolve,i)})});return r.e&&i(r.v),n.promise}})},2524:function(e,t,n){var i=n("6044"),r="__lodash_hash_undefined__";function o(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=i&&void 0===t?r:t,this}e.exports=o},"253c":function(e,t,n){var i=n("3729"),r=n("1310"),o="[object Arguments]";function a(e){return r(e)&&i(e)==o}e.exports=a},"25c9":function(e,t,n){var i=n("5ca1"),r=Math.exp;i(i.S,"Math",{cosh:function(e){return(r(e=+e)+r(-e))/2}})},"25db":function(e,t,n){n("5eda")("getOwnPropertyNames",function(){return n("7bbc").f})},"25eb":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},2621:function(e,t){t.f=Object.getOwnPropertySymbols},"262f":function(e,t,n){var i=n("5ca1");i(i.G+i.W+i.F*!n("0f88").ABV,{DataView:n("ed0b").DataView})},2673:function(e,t,n){"use strict";t.__esModule=!0;var i=n("a48e"),r=s(i),o=n("c606"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],u=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","END","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UNION ALL","UNION","UPDATE","VALUES","WHERE"],h=["AND","CROSS APPLY","CROSS JOIN","ELSE","END","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"],d=void 0,f=function(){function e(t){c(this,e),this.cfg=t}return e.prototype.format=function(e){return d||(d=new a["default"]({reservedWords:l,reservedToplevelWords:u,reservedNewlineWords:h,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]})),new r["default"](this.cfg,d).format(e)},e}();t["default"]=f,e.exports=t["default"]},"268f":function(e,t,n){e.exports=n("fde4")},"273e":function(e,t,n){var i=n("4200"),r=n("056c"),o=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;function h(e){if("number"==typeof e)return e;if(r(e))return o;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=c.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):s.test(e)?o:+e}e.exports=h},2748:function(e,t,n){var i=n("5ca1"),r=180/Math.PI;i(i.S,"Math",{degrees:function(e){return e*r}})},"27ee":function(e,t,n){var i=n("23c6"),r=n("2b4c")("iterator"),o=n("84f2");e.exports=n("8378").getIteratorMethod=function(e){if(void 0!=e)return e[r]||e["@@iterator"]||o[i(e)]}},2877:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},"28a5":function(e,t,n){"use strict";var i=n("aae3"),r=n("cb7c"),o=n("ebd6"),a=n("0390"),s=n("9def"),c=n("5f1b"),l=n("520a"),u=n("79e5"),h=Math.min,d=[].push,f="split",p="length",v="lastIndex",m=4294967295,g=!u(function(){RegExp(m,"y")});n("214f")("split",2,function(e,t,n,u){var b;return b="c"=="abbc"[f](/(b)*/)[1]||4!="test"[f](/(?:)/,-1)[p]||2!="ab"[f](/(?:ab)*/)[p]||4!="."[f](/(.?)(.?)/)[p]||"."[f](/()()/)[p]>1||""[f](/.?/)[p]?function(e,t){var r=String(this);if(void 0===e&&0===t)return[];if(!i(e))return n.call(r,e,t);var o,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,f=void 0===t?m:t>>>0,g=new RegExp(e.source,u+"g");while(o=l.call(g,r)){if(a=g[v],a>h&&(c.push(r.slice(h,o.index)),o[p]>1&&o.index=f))break;g[v]===o.index&&g[v]++}return h===r[p]?!s&&g.test("")||c.push(""):c.push(r.slice(h)),c[p]>f?c.slice(0,f):c}:"0"[f](void 0,0)[p]?function(e,t){return void 0===e&&0===t?[]:n.call(this,e,t)}:n,[function(n,i){var r=e(this),o=void 0==n?void 0:n[t];return void 0!==o?o.call(n,r,i):b.call(String(r),n,i)},function(e,t){var i=u(b,e,this,t,b!==n);if(i.done)return i.value;var l=r(e),d=String(this),f=o(l,RegExp),p=l.unicode,v=(l.ignoreCase?"i":"")+(l.multiline?"m":"")+(l.unicode?"u":"")+(g?"y":"g"),y=new f(g?l:"^(?:"+l.source+")",v),_=void 0===t?m:t>>>0;if(0===_)return[];if(0===d.length)return null===c(y,d)?[d]:[];var C=0,w=0,x=[];while(w0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;nc&&(e.scrollTop=a-e.clientHeight)}else e.scrollTop=0}},"2aba":function(e,t,n){var i=n("7726"),r=n("32e9"),o=n("69a8"),a=n("ca5a")("src"),s=n("fa5b"),c="toString",l=(""+s).split(c);n("8378").inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var c="function"==typeof n;c&&(o(n,"name")||r(n,"name",t)),e[t]!==n&&(c&&(o(n,a)||r(n,a,e[t]?""+e[t]:l.join(String(t)))),e===i?e[t]=n:s?e[t]?e[t]=n:r(e,t,n):(delete e[t],r(e,t,n)))})(Function.prototype,c,function(){return"function"==typeof this&&this[a]||s.call(this)})},"2adb":function(e,t,n){"use strict";(function(e){n.d(t,"e",function(){return u}),n.d(t,"d",function(){return h}),n.d(t,"a",function(){return f}),n.d(t,"b",function(){return p}),n.d(t,"c",function(){return v}),n.d(t,"f",function(){return m});var i=n("41b2"),r=n.n(i),o=n("8827"),a=n.n(o),s=n("57ba"),c=n.n(s),l=n("20ba");function u(t){e&&Object({VUE_APP_BUILD_ENV:"emqx",NODE_ENV:"production",BASE_URL:"/"})||console.error("[@ant-design/icons-vue]: "+t+".")}function h(e){return"object"===typeof e&&"string"===typeof e.name&&"string"===typeof e.theme&&("object"===typeof e.icon||"function"===typeof e.icon)}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce(function(t,n){var i=e[n];switch(n){case"class":t.className=i,delete t["class"];break;default:t[n]=i}return t},{})}var f=function(){function e(){a()(this,e),this.collection={}}return c()(e,[{key:"clear",value:function(){this.collection={}}},{key:"delete",value:function(e){return delete this.collection[e]}},{key:"get",value:function(e){return this.collection[e]}},{key:"has",value:function(e){return Boolean(this.collection[e])}},{key:"set",value:function(e,t){return this.collection[e]=t,this}},{key:"size",get:function(){return Object.keys(this.collection).length}}]),e}();function p(e,t,n,i){return e(t.tag,i?r()({key:n},i,{attrs:r()({},d(t.attrs),i.attrs)}):{key:n,attrs:r()({},d(t.attrs))},(t.children||[]).map(function(i,r){return p(e,i,n+"-"+t.tag+"-"+r)}))}function v(e){return Object(l["generate"])(e)[0]}function m(e,t){switch(t){case"fill":return e+"-fill";case"outline":return e+"-o";case"twotone":return e+"-twotone";default:throw new TypeError("Unknown theme type: "+t+", name: "+e)}}}).call(this,n("f28c"))},"2aeb":function(e,t,n){var i=n("cb7c"),r=n("1495"),o=n("e11e"),a=n("613b")("IE_PROTO"),s=function(){},c="prototype",l=function(){var e,t=n("230e")("iframe"),i=o.length,r="<",a=">";t.style.display="none",n("fab2").appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(r+"script"+a+"document.F=Object"+r+"/script"+a),e.close(),l=e.F;while(i--)delete l[c][o[i]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[c]=i(e),n=new s,s[c]=null,n[a]=e):n=l(),void 0===t?n:r(n,t)}},"2b0e":function(e,t,n){"use strict";n.r(t),function(e){ +/*! + * Vue.js v2.6.10 + * (c) 2014-2019 Evan You + * Released under the MIT License. + */ +var n=Object.freeze({});function i(e){return void 0===e||null===e}function r(e){return void 0!==e&&null!==e}function o(e){return!0===e}function a(e){return!1===e}function s(e){return"string"===typeof e||"number"===typeof e||"symbol"===typeof e||"boolean"===typeof e}function c(e){return null!==e&&"object"===typeof e}var l=Object.prototype.toString;function u(e){return"[object Object]"===l.call(e)}function h(e){return"[object RegExp]"===l.call(e)}function d(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function f(e){return r(e)&&"function"===typeof e.then&&"function"===typeof e.catch}function p(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===l?JSON.stringify(e,null,2):String(e)}function v(e){var t=parseFloat(e);return isNaN(t)?e:t}function m(e,t){for(var n=Object.create(null),i=e.split(","),r=0;r-1)return e.splice(n,1)}}var y=Object.prototype.hasOwnProperty;function _(e,t){return y.call(e,t)}function C(e){var t=Object.create(null);return function(n){var i=t[n];return i||(t[n]=e(n))}}var w=/-(\w)/g,x=C(function(e){return e.replace(w,function(e,t){return t?t.toUpperCase():""})}),S=C(function(e){return e.charAt(0).toUpperCase()+e.slice(1)}),E=/\B([A-Z])/g,O=C(function(e){return e.replace(E,"-$1").toLowerCase()});function M(e,t){function n(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function z(e,t){return e.bind(t)}var k=Function.prototype.bind?z:M;function T(e,t){t=t||0;var n=e.length-t,i=new Array(n);while(n--)i[n]=e[n+t];return i}function L(e,t){for(var n in t)e[n]=t[n];return e}function A(e){for(var t={},n=0;n0,ne=Z&&Z.indexOf("edge/")>0,ie=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===J),re=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),oe={}.watch,ae=!1;if(X)try{var se={};Object.defineProperty(se,"passive",{get:function(){ae=!0}}),window.addEventListener("test-passive",null,se)}catch(xa){}var ce=function(){return void 0===G&&(G=!X&&!Q&&"undefined"!==typeof e&&(e["process"]&&"server"===e["process"].env.VUE_ENV)),G},le=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ue(e){return"function"===typeof e&&/native code/.test(e.toString())}var he,de="undefined"!==typeof Symbol&&ue(Symbol)&&"undefined"!==typeof Reflect&&ue(Reflect.ownKeys);he="undefined"!==typeof Set&&ue(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var fe=H,pe=0,ve=function(){this.id=pe++,this.subs=[]};ve.prototype.addSub=function(e){this.subs.push(e)},ve.prototype.removeSub=function(e){b(this.subs,e)},ve.prototype.depend=function(){ve.target&&ve.target.addDep(this)},ve.prototype.notify=function(){var e=this.subs.slice();for(var t=0,n=e.length;t-1)if(o&&!_(r,"default"))a=!1;else if(""===a||a===O(e)){var c=et(String,r.type);(c<0||s0&&(a=Mt(a,(t||"")+"_"+n),Ot(a[0])&&Ot(l)&&(u[c]=we(l.text+a[0].text),a.shift()),u.push.apply(u,a)):s(a)?Ot(l)?u[c]=we(l.text+a):""!==a&&u.push(we(a)):Ot(a)&&Ot(l)?u[c]=we(l.text+a.text):(o(e._isVList)&&r(a.tag)&&i(a.key)&&r(t)&&(a.key="__vlist"+t+"_"+n+"__"),u.push(a)));return u}function zt(e){var t=e.$options.provide;t&&(e._provided="function"===typeof t?t.call(e):t)}function kt(e){var t=Tt(e.$options.inject,e);t&&(ke(!1),Object.keys(t).forEach(function(n){Ve(e,n,t[n])}),ke(!0))}function Tt(e,t){if(e){for(var n=Object.create(null),i=de?Reflect.ownKeys(e):Object.keys(e),r=0;r0,a=e?!!e.$stable:!o,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&i&&i!==n&&s===i.$key&&!o&&!i.$hasNormal)return i;for(var c in r={},e)e[c]&&"$"!==c[0]&&(r[c]=Vt(t,c,e[c]))}else r={};for(var l in t)l in r||(r[l]=Nt(t,l));return e&&Object.isExtensible(e)&&(e._normalized=r),U(r,"$stable",a),U(r,"$key",s),U(r,"$hasNormal",o),r}function Vt(e,t,n){var i=function(){var e=arguments.length?n.apply(null,arguments):n({});return e=e&&"object"===typeof e&&!Array.isArray(e)?[e]:Et(e),e&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:i,enumerable:!0,configurable:!0}),i}function Nt(e,t){return function(){return e[t]}}function It(e,t){var n,i,o,a,s;if(Array.isArray(e)||"string"===typeof e)for(n=new Array(e.length),i=0,o=e.length;i1?T(n):n;for(var i=T(arguments,1),r='event handler for "'+e+'"',o=0,a=n.length;odocument.createEvent("Event").timeStamp&&(Gn=function(){return Yn.now()})}function Xn(){var e,t;for(qn=Gn(),Wn=!0,Rn.sort(function(e,t){return e.id-t.id}),Un=0;UnUn&&Rn[n].id>e.id)n--;Rn.splice(n+1,0,e)}else Rn.push(e);Bn||(Bn=!0,pt(Xn))}}var ti=0,ni=function(e,t,n,i,r){this.vm=e,r&&(e._watcher=this),e._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync,this.before=i.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++ti,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new he,this.newDepIds=new he,this.expression="","function"===typeof t?this.getter=t:(this.getter=q(t),this.getter||(this.getter=H)),this.value=this.lazy?void 0:this.get()};ni.prototype.get=function(){var e;ge(this);var t=this.vm;try{e=this.getter.call(t,t)}catch(xa){if(!this.user)throw xa;tt(xa,t,'getter for watcher "'+this.expression+'"')}finally{this.deep&&mt(e),be(),this.cleanupDeps()}return e},ni.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},ni.prototype.cleanupDeps=function(){var e=this.deps.length;while(e--){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},ni.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():ei(this)},ni.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||c(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(xa){tt(xa,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},ni.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},ni.prototype.depend=function(){var e=this.deps.length;while(e--)this.deps[e].depend()},ni.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);var e=this.deps.length;while(e--)this.deps[e].removeSub(this);this.active=!1}};var ii={enumerable:!0,configurable:!0,get:H,set:H};function ri(e,t,n){ii.get=function(){return this[t][n]},ii.set=function(e){this[t][n]=e},Object.defineProperty(e,n,ii)}function oi(e){e._watchers=[];var t=e.$options;t.props&&ai(e,t.props),t.methods&&pi(e,t.methods),t.data?si(e):He(e._data={},!0),t.computed&&ui(e,t.computed),t.watch&&t.watch!==oe&&vi(e,t.watch)}function ai(e,t){var n=e.$options.propsData||{},i=e._props={},r=e.$options._propKeys=[],o=!e.$parent;o||ke(!1);var a=function(o){r.push(o);var a=Xe(o,t,n,e);Ve(i,o,a),o in e||ri(e,"_props",o)};for(var s in t)a(s);ke(!0)}function si(e){var t=e.$options.data;t=e._data="function"===typeof t?ci(t,e):t||{},u(t)||(t={});var n=Object.keys(t),i=e.$options.props,r=(e.$options.methods,n.length);while(r--){var o=n[r];0,i&&_(i,o)||W(o)||ri(e,"_data",o)}He(t,!0)}function ci(e,t){ge();try{return e.call(t,t)}catch(xa){return tt(xa,t,"data()"),{}}finally{be()}}var li={lazy:!0};function ui(e,t){var n=e._computedWatchers=Object.create(null),i=ce();for(var r in t){var o=t[r],a="function"===typeof o?o:o.get;0,i||(n[r]=new ni(e,a||H,H,li)),r in e||hi(e,r,o)}}function hi(e,t,n){var i=!ce();"function"===typeof n?(ii.get=i?di(t):fi(n),ii.set=H):(ii.get=n.get?i&&!1!==n.cache?di(t):fi(n.get):H,ii.set=n.set||H),Object.defineProperty(e,t,ii)}function di(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),ve.target&&t.depend(),t.value}}function fi(e){return function(){return e.call(this,this)}}function pi(e,t){e.$options.props;for(var n in t)e[n]="function"!==typeof t[n]?H:k(t[n],e)}function vi(e,t){for(var n in t){var i=t[n];if(Array.isArray(i))for(var r=0;r-1)return this;var n=T(arguments,1);return n.unshift(this),"function"===typeof e.install?e.install.apply(e,n):"function"===typeof e&&e.apply(null,n),t.push(e),this}}function Ei(e){e.mixin=function(e){return this.options=Ge(this.options,e),this}}function Oi(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,i=n.cid,r=e._Ctor||(e._Ctor={});if(r[i])return r[i];var o=e.name||n.options.name;var a=function(e){this._init(e)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=t++,a.options=Ge(n.options,e),a["super"]=n,a.options.props&&Mi(a),a.options.computed&&zi(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,R.forEach(function(e){a[e]=n[e]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=L({},a.options),r[i]=a,a}}function Mi(e){var t=e.options.props;for(var n in t)ri(e.prototype,"_props",n)}function zi(e){var t=e.options.computed;for(var n in t)hi(e.prototype,n,t[n])}function ki(e){R.forEach(function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"===typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}})}function Ti(e){return e&&(e.Ctor.options.name||e.tag)}function Li(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"===typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Ai(e,t){var n=e.cache,i=e.keys,r=e._vnode;for(var o in n){var a=n[o];if(a){var s=Ti(a.componentOptions);s&&!t(s)&&Hi(n,o,i,r)}}}function Hi(e,t,n,i){var r=e[t];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),e[t]=null,b(n,t)}yi(xi),gi(xi),kn(xi),Hn(xi),bn(xi);var Vi=[String,RegExp,Array],Ni={name:"keep-alive",abstract:!0,props:{include:Vi,exclude:Vi,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Hi(this.cache,e,this.keys)},mounted:function(){var e=this;this.$watch("include",function(t){Ai(e,function(e){return Li(t,e)})}),this.$watch("exclude",function(t){Ai(e,function(e){return!Li(t,e)})})},render:function(){var e=this.$slots.default,t=xn(e),n=t&&t.componentOptions;if(n){var i=Ti(n),r=this,o=r.include,a=r.exclude;if(o&&(!i||!Li(o,i))||a&&i&&Li(a,i))return t;var s=this,c=s.cache,l=s.keys,u=null==t.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):t.key;c[u]?(t.componentInstance=c[u].componentInstance,b(l,u),l.push(u)):(c[u]=t,l.push(u),this.max&&l.length>parseInt(this.max)&&Hi(c,l[0],l,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}},Ii={KeepAlive:Ni};function Di(e){var t={get:function(){return F}};Object.defineProperty(e,"config",t),e.util={warn:fe,extend:L,mergeOptions:Ge,defineReactive:Ve},e.set=Ne,e.delete=Ie,e.nextTick=pt,e.observable=function(e){return He(e),e},e.options=Object.create(null),R.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,L(e.options.components,Ii),Si(e),Ei(e),Oi(e),ki(e)}Di(xi),Object.defineProperty(xi.prototype,"$isServer",{get:ce}),Object.defineProperty(xi.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(xi,"FunctionalRenderContext",{value:Qt}),xi.version="2.6.10";var Pi=m("style,class"),$i=m("input,textarea,option,select,progress"),Ri=function(e,t,n){return"value"===n&&$i(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},ji=m("contenteditable,draggable,spellcheck"),Fi=m("events,caret,typing,plaintext-only"),Bi=function(e,t){return Gi(t)||"false"===t?"false":"contenteditable"===e&&Fi(t)?t:"true"},Wi=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Ui="http://www.w3.org/1999/xlink",Ki=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},qi=function(e){return Ki(e)?e.slice(6,e.length):""},Gi=function(e){return null==e||!1===e};function Yi(e){var t=e.data,n=e,i=e;while(r(i.componentInstance))i=i.componentInstance._vnode,i&&i.data&&(t=Xi(i.data,t));while(r(n=n.parent))n&&n.data&&(t=Xi(t,n.data));return Qi(t.staticClass,t.class)}function Xi(e,t){return{staticClass:Ji(e.staticClass,t.staticClass),class:r(e.class)?[e.class,t.class]:t.class}}function Qi(e,t){return r(e)||r(t)?Ji(e,Zi(t)):""}function Ji(e,t){return e?t?e+" "+t:e:t||""}function Zi(e){return Array.isArray(e)?er(e):c(e)?tr(e):"string"===typeof e?e:""}function er(e){for(var t,n="",i=0,o=e.length;i-1?sr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:sr[e]=/HTMLUnknownElement/.test(t.toString())}var lr=m("text,number,password,search,email,tel,url");function ur(e){if("string"===typeof e){var t=document.querySelector(e);return t||document.createElement("div")}return e}function hr(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&void 0!==t.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function dr(e,t){return document.createElementNS(nr[e],t)}function fr(e){return document.createTextNode(e)}function pr(e){return document.createComment(e)}function vr(e,t,n){e.insertBefore(t,n)}function mr(e,t){e.removeChild(t)}function gr(e,t){e.appendChild(t)}function br(e){return e.parentNode}function yr(e){return e.nextSibling}function _r(e){return e.tagName}function Cr(e,t){e.textContent=t}function wr(e,t){e.setAttribute(t,"")}var xr=Object.freeze({createElement:hr,createElementNS:dr,createTextNode:fr,createComment:pr,insertBefore:vr,removeChild:mr,appendChild:gr,parentNode:br,nextSibling:yr,tagName:_r,setTextContent:Cr,setStyleScope:wr}),Sr={create:function(e,t){Er(t)},update:function(e,t){e.data.ref!==t.data.ref&&(Er(e,!0),Er(t))},destroy:function(e){Er(e,!0)}};function Er(e,t){var n=e.data.ref;if(r(n)){var i=e.context,o=e.componentInstance||e.elm,a=i.$refs;t?Array.isArray(a[n])?b(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])?a[n].indexOf(o)<0&&a[n].push(o):a[n]=[o]:a[n]=o}}var Or=new ye("",{},[]),Mr=["create","activate","update","remove","destroy"];function zr(e,t){return e.key===t.key&&(e.tag===t.tag&&e.isComment===t.isComment&&r(e.data)===r(t.data)&&kr(e,t)||o(e.isAsyncPlaceholder)&&e.asyncFactory===t.asyncFactory&&i(t.asyncFactory.error))}function kr(e,t){if("input"!==e.tag)return!0;var n,i=r(n=e.data)&&r(n=n.attrs)&&n.type,o=r(n=t.data)&&r(n=n.attrs)&&n.type;return i===o||lr(i)&&lr(o)}function Tr(e,t,n){var i,o,a={};for(i=t;i<=n;++i)o=e[i].key,r(o)&&(a[o]=i);return a}function Lr(e){var t,n,a={},c=e.modules,l=e.nodeOps;for(t=0;tv?(h=i(n[b+1])?null:n[b+1].elm,x(e,h,n,p,b,o)):p>b&&E(e,t,d,v)}function z(e,t,n,i){for(var o=n;o-1?Fr(e,t,n):Wi(t)?Gi(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):ji(t)?e.setAttribute(t,Bi(t,n)):Ki(t)?Gi(n)?e.removeAttributeNS(Ui,qi(t)):e.setAttributeNS(Ui,t,n):Fr(e,t,n)}function Fr(e,t,n){if(Gi(n))e.removeAttribute(t);else{if(ee&&!te&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var i=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",i)};e.addEventListener("input",i),e.__ieph=!0}e.setAttribute(t,n)}}var Br={create:Rr,update:Rr};function Wr(e,t){var n=t.elm,o=t.data,a=e.data;if(!(i(o.staticClass)&&i(o.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=Yi(t),c=n._transitionClasses;r(c)&&(s=Ji(s,Zi(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Ur,Kr={create:Wr,update:Wr},qr="__r",Gr="__c";function Yr(e){if(r(e[qr])){var t=ee?"change":"input";e[t]=[].concat(e[qr],e[t]||[]),delete e[qr]}r(e[Gr])&&(e.change=[].concat(e[Gr],e.change||[]),delete e[Gr])}function Xr(e,t,n){var i=Ur;return function r(){var o=t.apply(null,arguments);null!==o&&Zr(e,r,n,i)}}var Qr=at&&!(re&&Number(re[1])<=53);function Jr(e,t,n,i){if(Qr){var r=qn,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=r||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Ur.addEventListener(e,t,ae?{capture:n,passive:i}:n)}function Zr(e,t,n,i){(i||Ur).removeEventListener(e,t._wrapper||t,n)}function eo(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Ur=t.elm,Yr(n),_t(n,r,Jr,Zr,Xr,t.context),Ur=void 0}}var to,no={create:eo,update:eo};function io(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,o,a=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in r(c.__ob__)&&(c=t.data.domProps=L({},c)),s)n in c||(a[n]="");for(n in c){if(o=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=o;var l=i(o)?"":String(o);ro(a,l)&&(a.value=l)}else if("innerHTML"===n&&rr(a.tagName)&&i(a.innerHTML)){to=to||document.createElement("div"),to.innerHTML=""+o+"";var u=to.firstChild;while(a.firstChild)a.removeChild(a.firstChild);while(u.firstChild)a.appendChild(u.firstChild)}else if(o!==s[n])try{a[n]=o}catch(xa){}}}}function ro(e,t){return!e.composing&&("OPTION"===e.tagName||oo(e,t)||ao(e,t))}function oo(e,t){var n=!0;try{n=document.activeElement!==e}catch(xa){}return n&&e.value!==t}function ao(e,t){var n=e.value,i=e._vModifiers;if(r(i)){if(i.number)return v(n)!==v(t);if(i.trim)return n.trim()!==t.trim()}return n!==t}var so={create:io,update:io},co=C(function(e){var t={},n=/;(?![^(]*\))/g,i=/:(.+)/;return e.split(n).forEach(function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t});function lo(e){var t=uo(e.style);return e.staticStyle?L(e.staticStyle,t):t}function uo(e){return Array.isArray(e)?A(e):"string"===typeof e?co(e):e}function ho(e,t){var n,i={};if(t){var r=e;while(r.componentInstance)r=r.componentInstance._vnode,r&&r.data&&(n=lo(r.data))&&L(i,n)}(n=lo(e.data))&&L(i,n);var o=e;while(o=o.parent)o.data&&(n=lo(o.data))&&L(i,n);return i}var fo,po=/^--/,vo=/\s*!important$/,mo=function(e,t,n){if(po.test(t))e.style.setProperty(t,n);else if(vo.test(n))e.style.setProperty(O(t),n.replace(vo,""),"important");else{var i=bo(t);if(Array.isArray(n))for(var r=0,o=n.length;r-1?t.split(Co).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function xo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(Co).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{var n=" "+(e.getAttribute("class")||"")+" ",i=" "+t+" ";while(n.indexOf(i)>=0)n=n.replace(i," ");n=n.trim(),n?e.setAttribute("class",n):e.removeAttribute("class")}}function So(e){if(e){if("object"===typeof e){var t={};return!1!==e.css&&L(t,Eo(e.name||"v")),L(t,e),t}return"string"===typeof e?Eo(e):void 0}}var Eo=C(function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}}),Oo=X&&!te,Mo="transition",zo="animation",ko="transition",To="transitionend",Lo="animation",Ao="animationend";Oo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ko="WebkitTransition",To="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Lo="WebkitAnimation",Ao="webkitAnimationEnd"));var Ho=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Vo(e){Ho(function(){Ho(e)})}function No(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),wo(e,t))}function Io(e,t){e._transitionClasses&&b(e._transitionClasses,t),xo(e,t)}function Do(e,t,n){var i=$o(e,t),r=i.type,o=i.timeout,a=i.propCount;if(!r)return n();var s=r===Mo?To:Ao,c=0,l=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++c>=a&&l()};setTimeout(function(){c0&&(n=Mo,u=a,h=o.length):t===zo?l>0&&(n=zo,u=l,h=c.length):(u=Math.max(a,l),n=u>0?a>l?Mo:zo:null,h=n?n===Mo?o.length:c.length:0);var d=n===Mo&&Po.test(i[ko+"Property"]);return{type:n,timeout:u,propCount:h,hasTransform:d}}function Ro(e,t){while(e.length1}function Ko(e,t){!0!==t.data.show&&Fo(t)}var qo=X?{create:Ko,activate:Ko,remove:function(e,t){!0!==e.data.show?Bo(e,t):t()}}:{},Go=[Br,Kr,no,so,_o,qo],Yo=Go.concat($r),Xo=Lr({nodeOps:xr,modules:Yo});te&&document.addEventListener("selectionchange",function(){var e=document.activeElement;e&&e.vmodel&&ra(e,"input")});var Qo={inserted:function(e,t,n,i){"select"===n.tag?(i.elm&&!i.elm._vOptions?Ct(n,"postpatch",function(){Qo.componentUpdated(e,t,n)}):Jo(e,t,n.context),e._vOptions=[].map.call(e.options,ta)):("textarea"===n.tag||lr(e.type))&&(e._vModifiers=t.modifiers,t.modifiers.lazy||(e.addEventListener("compositionstart",na),e.addEventListener("compositionend",ia),e.addEventListener("change",ia),te&&(e.vmodel=!0)))},componentUpdated:function(e,t,n){if("select"===n.tag){Jo(e,t,n.context);var i=e._vOptions,r=e._vOptions=[].map.call(e.options,ta);if(r.some(function(e,t){return!I(e,i[t])})){var o=e.multiple?t.value.some(function(e){return ea(e,r)}):t.value!==t.oldValue&&ea(t.value,r);o&&ra(e,"change")}}}};function Jo(e,t,n){Zo(e,t,n),(ee||ne)&&setTimeout(function(){Zo(e,t,n)},0)}function Zo(e,t,n){var i=t.value,r=e.multiple;if(!r||Array.isArray(i)){for(var o,a,s=0,c=e.options.length;s-1,a.selected!==o&&(a.selected=o);else if(I(ta(a),i))return void(e.selectedIndex!==s&&(e.selectedIndex=s));r||(e.selectedIndex=-1)}}function ea(e,t){return t.every(function(t){return!I(t,e)})}function ta(e){return"_value"in e?e._value:e.value}function na(e){e.target.composing=!0}function ia(e){e.target.composing&&(e.target.composing=!1,ra(e.target,"input"))}function ra(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function oa(e){return!e.componentInstance||e.data&&e.data.transition?e:oa(e.componentInstance._vnode)}var aa={bind:function(e,t,n){var i=t.value;n=oa(n);var r=n.data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;i&&r?(n.data.show=!0,Fo(n,function(){e.style.display=o})):e.style.display=i?o:"none"},update:function(e,t,n){var i=t.value,r=t.oldValue;if(!i!==!r){n=oa(n);var o=n.data&&n.data.transition;o?(n.data.show=!0,i?Fo(n,function(){e.style.display=e.__vOriginalDisplay}):Bo(n,function(){e.style.display="none"})):e.style.display=i?e.__vOriginalDisplay:"none"}},unbind:function(e,t,n,i,r){r||(e.style.display=e.__vOriginalDisplay)}},sa={model:Qo,show:aa},ca={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function la(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?la(xn(t.children)):e}function ua(e){var t={},n=e.$options;for(var i in n.propsData)t[i]=e[i];var r=n._parentListeners;for(var o in r)t[x(o)]=r[o];return t}function ha(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}function da(e){while(e=e.parent)if(e.data.transition)return!0}function fa(e,t){return t.key===e.key&&t.tag===e.tag}var pa=function(e){return e.tag||wn(e)},va=function(e){return"show"===e.name},ma={name:"transition",props:ca,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(pa),n.length)){0;var i=this.mode;0;var r=n[0];if(da(this.$vnode))return r;var o=la(r);if(!o)return r;if(this._leaving)return ha(e,r);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=ua(this),l=this._vnode,u=la(l);if(o.data.directives&&o.data.directives.some(va)&&(o.data.show=!0),u&&u.data&&!fa(o,u)&&!wn(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var h=u.data.transition=L({},c);if("out-in"===i)return this._leaving=!0,Ct(h,"afterLeave",function(){t._leaving=!1,t.$forceUpdate()}),ha(e,r);if("in-out"===i){if(wn(o))return l;var d,f=function(){d()};Ct(c,"afterEnter",f),Ct(c,"enterCancelled",f),Ct(h,"delayLeave",function(e){d=e})}}return r}}},ga=L({tag:String,moveClass:String},ca);delete ga.mode;var ba={props:ga,beforeMount:function(){var e=this,t=this._update;this._update=function(n,i){var r=Ln(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,r(),t.call(e,n,i)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],a=ua(this),s=0;s22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:n},"2d7c":function(e,t){function n(e,t){var n=-1,i=null==e?0:e.length,r=0,o=[];while(++nh&&(d=d.slice(0,h)),a?d+s:s+d}},"2e37":function(e,t,n){var i=n("5ca1");i(i.S,"Number",{EPSILON:Math.pow(2,-52)})},"2e67":function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},"2e6f":function(e,t,n){"use strict";t.__esModule=!0;var i=n("a48e"),r=s(i),o=n("c606"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],u=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","INTERSECT ALL","INTERSECT","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],h=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"],d=void 0,f=function(){function e(t){c(this,e),this.cfg=t}return e.prototype.format=function(e){return d||(d=new a["default"]({reservedWords:l,reservedToplevelWords:u,reservedNewlineWords:h,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"]})),new r["default"](this.cfg,d).format(e)},e}();t["default"]=f,e.exports=t["default"]},"2e8e":function(e,t,n){var i,r,o=function(){var e=function(e,t,n,i){for(n=n||{},i=e.length;i--;n[e[i]]=t);return n},t=[1,8],n=[1,4],i=[2,4],r=[1,11],o=[1,10],a=[2,16],s=[1,14],c=[1,15],l=[1,16],u=[6,8],h=[2,146],d=[1,19],f=[1,20],p=[16,33,35,36,37,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],v=[16,18,32,33,35,36,37,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],m=[2,160],g=[1,29],b=[6,8,14,17,146,150,152,154],y=[1,42],_=[1,60],C=[1,51],w=[1,58],x=[1,59],S=[1,61],E=[1,62],O=[1,63],M=[1,64],z=[1,65],k=[1,57],T=[1,52],L=[1,53],A=[1,54],H=[1,55],V=[1,56],N=[1,43],I=[1,44],D=[1,45],P=[1,34],$=[16,35,36,37,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],R=[6,8,14,17,150,152,154],j=[2,143],F=[1,74],B=[1,75],W=[6,8,14,17,43,133,138,144,146,150,152,154],U=[1,80],K=[1,77],q=[1,78],G=[1,79],Y=[1,81],X=[6,8,14,17,36,43,49,50,51,71,72,74,77,89,107,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],Q=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,107,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],J=[1,102],Z=[1,100],ee=[1,101],te=[1,96],ne=[1,97],ie=[1,98],re=[1,99],oe=[1,103],ae=[1,104],se=[1,105],ce=[1,106],le=[1,107],ue=[1,108],he=[2,103],de=[6,8,14,17,34,36,43,45,49,50,51,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],fe=[6,8,14,17,34,36,43,45,49,50,51,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,101,103,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],pe=[1,109],ve=[1,116],me=[2,64],ge=[1,117],be=[16,35,37,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],ye=[16,29,35,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,119],_e=[1,163],Ce=[17,43],we=[2,59],xe=[1,172],Se=[1,170],Ee=[1,171],Oe=[6,8,138,146],Me=[16,35,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],ze=[6,8,14,17,138,144,146,150,152,154],ke=[6,8,14,17,36,43,49,50,51,71,72,74,77,89,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],Te=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,93,94,99,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],Le=[6,8,14,17,34,36,43,49,50,51,71,72,74,77,79,81,89,91,92,93,94,99,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],Ae=[16,35,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],He=[16,35,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],Ve=[16,35,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],Ne=[71,74,77],Ie=[16,35,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],De=[1,232],Pe=[1,233],$e=[6,8,14,17],Re=[6,8,14,17,43,157],je=[1,250],Fe=[1,246],Be=[2,197],We=[1,254],Ue=[1,255],Ke=[6,8,14,17,43,129,135,138,144,146,150,152,154,182],qe=[1,257],Ge=[1,260],Ye=[1,261],Xe=[1,262],Qe=[1,263],Je=[2,174],Ze=[1,259],et=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182],tt=[6,8,14,17,135,138,144,146,150,152,154],nt=[1,275],it=[2,179],rt=[170,173],ot=[6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],at=[2,199],st=[1,280],ct=[1,292],lt=[1,300],ut=[1,301],ht=[1,302],dt=[6,8,14,17,138,146,150,152,154],ft=[1,312],pt=[1,318],vt=[1,319],mt=[2,204],gt=[1,330],bt=[16,152],yt=[6,8,14,17,152,154],_t=[1,346],Ct={trace:function(){},yy:{},symbols_:{error:2,main:3,selectClause:4,semicolonOpt:5,EOF:6,unionClause:7,";":8,unionClauseNotParenthesized:9,unionClauseParenthesized:10,order_by_opt:11,limit_opt:12,selectClauseParenthesized:13,UNION:14,distinctOpt:15,"(":16,")":17,SELECT:18,highPriorityOpt:19,maxStateMentTimeOpt:20,straightJoinOpt:21,sqlSmallResultOpt:22,sqlBigResultOpt:23,sqlBufferResultOpt:24,sqlCacheOpt:25,sqlCalcFoundRowsOpt:26,selectExprList:27,selectDataSetOpt:28,ALL:29,DISTINCT:30,DISTINCTROW:31,HIGH_PRIORITY:32,MAX_STATEMENT_TIME:33,"=":34,NUMERIC:35,STRAIGHT_JOIN:36,SQL_SMALL_RESULT:37,SQL_BIG_RESULT:38,SQL_BUFFER_RESULT:39,SQL_CACHE:40,SQL_NO_CACHE:41,SQL_CALC_FOUND_ROWS:42,",":43,selectExpr:44,"*":45,SELECT_EXPR_STAR:46,expr:47,selectExprAliasOpt:48,AS:49,IDENTIFIER:50,QUOTED_IDENTIFIER:51,string:52,STRING:53,number:54,EXPONENT_NUMERIC:55,HEX_NUMERIC:56,boolean:57,TRUE:58,FALSE:59,null:60,NULL:61,literal:62,function_call:63,function_call_param_list:64,function_call_param:65,identifier:66,DOT:67,identifier_list:68,case_expr_opt:69,when_then_list:70,WHEN:71,THEN:72,case_when_else:73,ELSE:74,case_when:75,CASE:76,END:77,simple_expr_prefix:78,"+":79,simple_expr:80,"-":81,"~":82,"!":83,BINARY:84,expr_list:85,ROW:86,EXISTS:87,"{":88,"}":89,bit_expr:90,"|":91,"&":92,"<<":93,">>":94,"/":95,DIV:96,MOD:97,"%":98,"^":99,not_opt:100,NOT:101,escape_opt:102,ESCAPE:103,predicate:104,IN:105,BETWEEN:106,AND:107,SOUNDS:108,LIKE:109,REGEXP:110,comparison_operator:111,">=":112,">":113,"<=":114,"<":115,"<>":116,"!=":117,sub_query_data_set_opt:118,ANY:119,boolean_primary:120,IS:121,boolean_extra:122,UNKNOWN:123,"&&":124,"||":125,OR:126,XOR:127,where_opt:128,WHERE:129,group_by_opt:130,group_by:131,roll_up_opt:132,WITH:133,ROLLUP:134,GROUP_BY:135,group_by_order_by_item_list:136,order_by:137,ORDER_BY:138,group_by_order_by_item:139,sort_opt:140,ASC:141,DESC:142,having_opt:143,HAVING:144,limit:145,LIMIT:146,OFFSET:147,procedure_opt:148,procedure:149,PROCEDURE:150,for_update_lock_in_share_mode_opt:151,FOR:152,UPDATE:153,LOCK:154,SHARE:155,MODE:156,FROM:157,table_references:158,partitionOpt:159,escaped_table_reference:160,table_reference:161,OJ:162,join_inner_cross:163,INNER:164,CROSS:165,left_right:166,LEFT:167,RIGHT:168,out_opt:169,OUTER:170,left_right_out_opt:171,join_table:172,JOIN:173,table_factor:174,join_condition:175,on_join_condition:176,NATURAL:177,join_condition_opt:178,ON:179,USING:180,partition_names:181,PARTITION:182,aliasOpt:183,index_or_key:184,INDEX:185,KEY:186,for_opt:187,identifier_list_opt:188,index_hint_list_opt:189,index_hint_list:190,index_hint:191,USE:192,IGNORE:193,FORCE:194,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",8:";",14:"UNION",16:"(",17:")",18:"SELECT",29:"ALL",30:"DISTINCT",31:"DISTINCTROW",32:"HIGH_PRIORITY",33:"MAX_STATEMENT_TIME",34:"=",35:"NUMERIC",36:"STRAIGHT_JOIN",37:"SQL_SMALL_RESULT",38:"SQL_BIG_RESULT",39:"SQL_BUFFER_RESULT",40:"SQL_CACHE",41:"SQL_NO_CACHE",42:"SQL_CALC_FOUND_ROWS",43:",",45:"*",46:"SELECT_EXPR_STAR",49:"AS",50:"IDENTIFIER",51:"QUOTED_IDENTIFIER",53:"STRING",55:"EXPONENT_NUMERIC",56:"HEX_NUMERIC",58:"TRUE",59:"FALSE",61:"NULL",67:"DOT",71:"WHEN",72:"THEN",74:"ELSE",76:"CASE",77:"END",79:"+",81:"-",82:"~",83:"!",84:"BINARY",86:"ROW",87:"EXISTS",88:"{",89:"}",91:"|",92:"&",93:"<<",94:">>",95:"/",96:"DIV",97:"MOD",98:"%",99:"^",101:"NOT",103:"ESCAPE",105:"IN",106:"BETWEEN",107:"AND",108:"SOUNDS",109:"LIKE",110:"REGEXP",112:">=",113:">",114:"<=",115:"<",116:"<>",117:"!=",119:"ANY",121:"IS",123:"UNKNOWN",124:"&&",125:"||",126:"OR",127:"XOR",129:"WHERE",133:"WITH",134:"ROLLUP",135:"GROUP_BY",138:"ORDER_BY",141:"ASC",142:"DESC",144:"HAVING",146:"LIMIT",147:"OFFSET",150:"PROCEDURE",152:"FOR",153:"UPDATE",154:"LOCK",155:"SHARE",156:"MODE",157:"FROM",162:"OJ",164:"INNER",165:"CROSS",167:"LEFT",168:"RIGHT",170:"OUTER",173:"JOIN",177:"NATURAL",179:"ON",180:"USING",182:"PARTITION",185:"INDEX",186:"KEY",192:"USE",193:"IGNORE",194:"FORCE"},productions_:[0,[3,3],[3,3],[5,1],[5,0],[7,1],[7,3],[10,4],[10,4],[13,3],[9,4],[9,4],[4,12],[15,1],[15,1],[15,1],[15,0],[19,1],[19,0],[20,3],[20,0],[21,1],[21,0],[22,1],[22,0],[23,1],[23,0],[24,1],[24,0],[25,0],[25,1],[25,1],[26,1],[26,0],[27,3],[27,1],[44,1],[44,1],[44,2],[48,0],[48,2],[48,1],[48,2],[48,1],[52,1],[52,1],[54,1],[54,1],[54,1],[57,1],[57,1],[60,1],[62,1],[62,1],[62,1],[62,1],[63,4],[64,3],[64,1],[65,0],[65,1],[65,1],[65,2],[65,1],[66,1],[66,3],[68,1],[68,3],[69,0],[69,1],[70,4],[70,5],[73,0],[73,2],[75,5],[78,2],[78,2],[78,2],[78,2],[78,2],[80,1],[80,1],[80,1],[80,1],[80,3],[80,4],[80,3],[80,4],[80,4],[80,1],[90,1],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[90,3],[100,0],[100,1],[102,0],[102,2],[104,1],[104,6],[104,6],[104,6],[104,4],[104,5],[104,4],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[111,1],[118,1],[118,1],[120,1],[120,4],[120,3],[120,6],[122,1],[122,1],[47,1],[47,4],[47,2],[47,3],[47,3],[47,3],[47,3],[47,3],[85,1],[85,3],[128,0],[128,2],[130,0],[130,1],[132,0],[132,2],[131,3],[11,0],[11,1],[137,3],[136,1],[136,3],[139,2],[140,0],[140,1],[140,1],[143,0],[143,2],[145,2],[145,4],[145,4],[12,0],[12,1],[148,0],[148,1],[149,2],[151,0],[151,2],[151,4],[28,0],[28,10],[158,1],[158,3],[160,1],[160,4],[163,0],[163,1],[163,1],[166,1],[166,1],[169,0],[169,1],[171,0],[171,2],[172,4],[172,5],[172,4],[172,6],[172,5],[178,0],[178,1],[176,2],[175,1],[175,4],[161,1],[161,1],[181,1],[181,3],[159,0],[159,4],[183,0],[183,2],[183,1],[184,1],[184,1],[187,0],[187,2],[187,2],[187,2],[188,0],[188,1],[189,0],[189,1],[190,1],[190,3],[191,6],[191,6],[191,6],[174,4],[174,4],[174,3]],performAction:function(e,t,n,i,r,o,a){var s=o.length-1;switch(r){case 1:case 2:return{nodeType:"Main",value:o[s-2],hasSemicolon:o[s-1]};case 3:case 144:this.$=!0;break;case 4:this.$=!1;break;case 5:case 13:case 14:case 15:case 17:case 19:case 21:case 23:case 25:case 27:case 30:case 31:case 32:case 52:case 53:case 54:case 55:case 60:case 61:case 63:case 69:case 73:case 80:case 81:case 82:case 83:case 89:case 90:case 104:case 106:case 107:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 127:case 129:case 140:case 142:case 147:case 153:case 154:case 156:case 161:case 163:case 164:case 175:case 176:case 177:case 178:case 180:case 189:case 191:case 193:case 194:case 202:case 203:case 209:case 211:this.$=o[s];break;case 6:this.$=o[s-2],this.$.orderBy=o[s-1],this.$.limit=o[s];break;case 7:case 8:this.$={type:"Union",left:o[s-3],distinctOpt:o[s-1],right:o[s]};break;case 9:this.$={type:"SelectParenthesized",value:o[s-1]};break;case 10:case 11:this.$={type:"Union",left:o[s-3],distinctOpt:o[s-1],right:o[s]};break;case 12:this.$={type:"Select",distinctOpt:o[s-10],highPriorityOpt:o[s-9],maxStateMentTimeOpt:o[s-8],straightJoinOpt:o[s-7],sqlSmallResultOpt:o[s-6],sqlBigResultOpt:o[s-5],sqlBufferResultOpt:o[s-4],sqlCacheOpt:o[s-3],sqlCalcFoundRowsOpt:o[s-2],selectItems:o[s-1],from:o[s].from,partition:o[s].partition,where:o[s].where,groupBy:o[s].groupBy,having:o[s].having,orderBy:o[s].orderBy,limit:o[s].limit,procedure:o[s].procedure,updateLockMode:o[s].updateLockMode};break;case 16:case 18:case 20:case 22:case 24:case 26:case 28:case 29:case 33:case 59:case 68:case 72:case 103:case 105:case 139:case 141:case 143:case 146:case 152:case 155:case 160:case 162:case 165:case 174:case 179:case 188:case 197:case 204:case 208:case 210:this.$=null;break;case 34:o[s-2].value.push(o[s]);break;case 35:this.$={type:"SelectExpr",value:[o[s]]};break;case 36:case 37:case 64:this.$={type:"Identifier",value:o[s]};break;case 38:this.$=o[s-1],this.$.alias=o[s].alias,this.$.hasAs=o[s].hasAs;break;case 39:case 199:this.$={alias:null,hasAs:null};break;case 40:case 42:this.$={alias:o[s],hasAs:!0};break;case 41:case 43:this.$={alias:o[s],hasAs:!1};break;case 44:case 45:this.$={type:"String",value:o[s]};break;case 46:case 47:case 48:this.$={type:"Number",value:o[s]};break;case 49:this.$={type:"Boolean",value:"TRUE"};break;case 50:this.$={type:"Boolean",value:"FALSE"};break;case 51:this.$={type:"Null",value:"null"};break;case 56:this.$={type:"FunctionCall",name:o[s-3],params:o[s-1]};break;case 57:o[s-2].push(o[s]),this.$=o[s-2];break;case 58:this.$=[o[s]];break;case 62:this.$={type:"FunctionCallParam",distinctOpt:o[s-1],value:o[s]};break;case 65:this.$=o[s-2],o[s-2].value+="."+o[s];break;case 66:this.$={type:"IdentifierList",value:[o[s]]};break;case 67:case 171:this.$=o[s-2],o[s-2].value.push(o[s]);break;case 70:this.$={type:"WhenThenList",value:[{when:o[s-2],then:o[s]}]};break;case 71:this.$=o[s-4],this.$.value.push({when:o[s-2],then:o[s]});break;case 74:this.$={type:"CaseWhen",caseExprOpt:o[s-3],whenThenList:o[s-2],else:o[s-1]};break;case 75:case 76:case 77:case 78:case 79:this.$={type:"Prefix",prefix:o[s-1],value:o[s]};break;case 84:this.$={type:"SimpleExprParentheses",value:o[s-1]};break;case 85:this.$={type:"SimpleExprParentheses",value:o[s-2],hasRow:!0};break;case 86:this.$={type:"SubQuery",value:o[s-1]};break;case 87:this.$={type:"SubQuery",value:o[s-1],hasExists:!0};break;case 88:this.$={type:"IdentifierExpr",identifier:o[s-2],value:o[s-1]};break;case 91:this.$={type:"BitExpression",operator:"|",left:o[s-2],right:o[s]};break;case 92:this.$={type:"BitExpression",operator:"&",left:o[s-2],right:o[s]};break;case 93:this.$={type:"BitExpression",operator:"<<",left:o[s-2],right:o[s]};break;case 94:this.$={type:"BitExpression",operator:">>",left:o[s-2],right:o[s]};break;case 95:this.$={type:"BitExpression",operator:"+",left:o[s-2],right:o[s]};break;case 96:this.$={type:"BitExpression",operator:"-",left:o[s-2],right:o[s]};break;case 97:this.$={type:"BitExpression",operator:"*",left:o[s-2],right:o[s]};break;case 98:this.$={type:"BitExpression",operator:"/",left:o[s-2],right:o[s]};break;case 99:this.$={type:"BitExpression",operator:"DIV",left:o[s-2],right:o[s]};break;case 100:this.$={type:"BitExpression",operator:"MOD",left:o[s-2],right:o[s]};break;case 101:this.$={type:"BitExpression",operator:"%",left:o[s-2],right:o[s]};break;case 102:this.$={type:"BitExpression",operator:"^",left:o[s-2],right:o[s]};break;case 108:this.$={type:"InSubQueryPredicate",hasNot:o[s-4],left:o[s-5],right:o[s-1]};break;case 109:this.$={type:"InExpressionListPredicate",hasNot:o[s-4],left:o[s-5],right:o[s-1]};break;case 110:this.$={type:"BetweenPredicate",hasNot:o[s-4],left:o[s-5],right:{left:o[s-2],right:o[s]}};break;case 111:this.$={type:"SoundsLikePredicate",hasNot:!1,left:o[s-3],right:o[s]};break;case 112:this.$={type:"LikePredicate",hasNot:o[s-3],left:o[s-4],right:o[s-1],escape:o[s]};break;case 113:this.$={type:"RegexpPredicate",hasNot:o[s-2],left:o[s-3],right:o[s]};break;case 124:this.$={type:"IsNullBooleanPrimary",hasNot:o[s-1],value:o[s-3]};break;case 125:this.$={type:"ComparisonBooleanPrimary",left:o[s-2],operator:o[s-1],right:o[s]};break;case 126:this.$={type:"ComparisonSubQueryBooleanPrimary",operator:o[s-4],subQueryOpt:o[s-3],left:o[s-5],right:o[s-1]};break;case 128:this.$={type:"BooleanExtra",value:o[s]};break;case 130:this.$={type:"IsExpression",hasNot:o[s-1],left:o[s-3],right:o[s]};break;case 131:this.$={type:"NotExpression",value:o[s]};break;case 132:case 135:this.$={type:"AndExpression",operator:o[s-1],left:o[s-2],right:o[s]};break;case 133:case 134:this.$={type:"OrExpression",operator:o[s-1],left:o[s-2],right:o[s]};break;case 136:this.$={type:"XORExpression",left:o[s-2],right:o[s]};break;case 137:this.$={type:"ExpressionList",value:[o[s]]};break;case 138:case 213:this.$=o[s-2],this.$.value.push(o[s]);break;case 145:this.$={type:"GroupBy",value:o[s-1],rollUp:o[s]};break;case 148:this.$={type:"OrderBy",value:o[s-1],rollUp:o[s]};break;case 149:case 195:this.$=[o[s]];break;case 150:this.$=o[s-2],o[s-2].push(o[s]);break;case 151:this.$={type:"GroupByOrderByItem",value:o[s-1],sortOpt:o[s]};break;case 157:this.$={type:"Limit",value:[o[s]]};break;case 158:this.$={type:"Limit",value:[o[s-2],o[s]]};break;case 159:this.$={type:"Limit",value:[o[s],o[s-2]],offsetMode:!0};break;case 166:this.$=o[s-1]+" "+o[s];break;case 167:this.$=o[s-3]+" "+o[s-2]+" "+o[s-1]+" "+o[s];break;case 168:this.$={};break;case 169:this.$={from:o[s-8],partition:o[s-7],where:o[s-6],groupBy:o[s-5],having:o[s-4],orderBy:o[s-3],limit:o[s-2],procedure:o[s-1],updateLockMode:o[s]};break;case 170:this.$={type:"TableReferences",value:[o[s]]};break;case 172:this.$={type:"TableReference",value:o[s]};break;case 173:this.$={type:"TableReference",hasOj:!0,value:o[s-1]};break;case 181:this.$={leftRight:null,outOpt:null};break;case 182:this.$={leftRight:o[s-1],outOpt:o[s]};break;case 183:this.$={type:"InnerCrossJoinTable",innerCrossOpt:o[s-2],left:o[s-3],right:o[s],condition:null};break;case 184:this.$={type:"InnerCrossJoinTable",innerCrossOpt:o[s-3],left:o[s-4],right:o[s-1],condition:o[s]};break;case 185:this.$={type:"StraightJoinTable",left:o[s-3],right:o[s-1],condition:o[s]};break;case 186:this.$={type:"LeftRightJoinTable",leftRight:o[s-4],outOpt:o[s-3],left:o[s-5],right:o[s-1],condition:o[s]};break;case 187:this.$={type:"NaturalJoinTable",leftRight:o[s-2].leftRight,outOpt:o[s-2].outOpt,left:o[s-4],right:o[s]};break;case 190:this.$={type:"OnJoinCondition",value:o[s]};break;case 192:this.$={type:"UsingJoinCondition",value:o[s-1]};break;case 196:this.$=o[s-2],o[s-2].push(o[s]);break;case 198:this.$={type:"Partitions",value:o[s-1]};break;case 200:this.$={hasAs:!0,alias:o[s]};break;case 201:this.$={hasAs:!1,alias:o[s]};break;case 205:case 206:case 207:this.$={type:"ForOptIndexHint",value:o[s]};break;case 212:this.$={type:"IndexHintList",value:[o[s]]};break;case 214:this.$={type:"UseIndexHint",value:o[s-1],forOpt:o[s-3],indexOrKey:o[s-4]};break;case 215:this.$={type:"IgnoreIndexHint",value:o[s-1],forOpt:o[s-3],indexOrKey:o[s-4]};break;case 216:this.$={type:"ForceIndexHint",value:o[s-1],forOpt:o[s-3],indexOrKey:o[s-4]};break;case 217:this.$={type:"TableFactor",value:o[s-3],partition:o[s-2],alias:o[s-1].alias,hasAs:o[s-1].hasAs,indexHintOpt:o[s]};break;case 218:this.$={type:"TableFactor",value:{type:"SubQuery",value:o[s-2]},alias:o[s].alias,hasAs:o[s].hasAs};break;case 219:this.$=o[s-1],this.$.hasParentheses=!0;break}},table:[{3:1,4:2,7:3,9:5,10:6,13:7,16:t,18:n},{1:[3]},{5:9,6:i,8:r,14:o},{5:12,6:i,8:r},e([16,32,33,35,36,37,38,39,40,41,42,45,46,50,51,53,55,56,58,59,61,76,79,81,82,83,84,86,87,88,101],a,{15:13,29:s,30:c,31:l}),e(u,[2,5]),e([6,8,146],h,{11:17,137:18,138:d}),{14:f},{4:21,18:n},{6:[1,22]},{15:23,18:a,29:s,30:c,31:l},{6:[2,3]},{6:[1,24]},e(p,[2,18],{19:25,32:[1,26]}),e(v,[2,13]),e(v,[2,14]),e(v,[2,15]),e(u,m,{12:27,145:28,146:g}),e(b,[2,147]),{16:y,35:_,47:32,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33,136:30,139:31},{15:66,16:a,29:s,30:c,31:l},{17:[1,67]},{1:[2,1]},{4:68,9:69,18:n},{1:[2,2]},e($,[2,20],{20:70,33:[1,71]}),e(p,[2,17]),e(u,[2,6]),e(R,[2,161]),{35:[1,72]},e(b,j,{132:73,43:F,133:B}),e(W,[2,149]),e(W,[2,152],{140:76,107:U,124:K,125:q,126:G,127:Y,141:[1,82],142:[1,83]}),e(X,[2,129],{111:85,34:[1,86],112:[1,87],113:[1,88],114:[1,89],115:[1,90],116:[1,91],117:[1,92],121:[1,84]}),{16:y,35:_,47:93,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Q,[2,123]),e(Q,[2,107],{100:94,45:J,79:Z,81:ee,91:te,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce,99:le,101:ue,105:he,106:he,109:he,110:he,108:[1,95]}),e(de,[2,90]),e(fe,[2,80]),e(fe,[2,81],{67:pe}),e(fe,[2,82]),e(fe,[2,83]),{4:111,16:y,18:n,35:_,47:112,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,85:110,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:[1,113]},{16:[1,114]},{50:ve,66:115},e(fe,[2,89]),e(fe,[2,52]),e(fe,[2,53]),e(fe,[2,54]),e(fe,[2,55]),e([6,8,14,17,34,36,43,45,49,50,51,67,71,72,74,77,79,81,89,91,92,93,94,95,96,97,98,99,101,103,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],me,{16:ge}),{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:118,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:119,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:120,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:121,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:122,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,47:124,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,69:123,71:[2,68],75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(fe,[2,44]),e(fe,[2,45]),e(fe,[2,46]),e(fe,[2,47]),e(fe,[2,48]),e(fe,[2,49]),e(fe,[2,50]),e(fe,[2,51]),{10:126,13:125,16:t},e([6,8,14,138,146],[2,9]),e(u,[2,10],{14:o}),e(u,[2,11]),e(be,[2,22],{21:127,36:[1,128]}),{34:[1,129]},e(R,[2,157],{43:[1,130],147:[1,131]}),e(b,[2,148]),{16:y,35:_,47:32,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33,139:132},{134:[1,133]},e(W,[2,151]),{16:y,35:_,47:134,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:y,35:_,47:135,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:y,35:_,47:136,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:y,35:_,47:137,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:y,35:_,47:138,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(W,[2,153]),e(W,[2,154]),e([58,59,61,123],he,{100:139,101:ue}),{16:y,29:[1,142],35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,104:140,118:141,119:[1,143]},e(ye,[2,114]),e(ye,[2,115]),e(ye,[2,116]),e(ye,[2,117]),e(ye,[2,118]),e(ye,[2,119]),e(ye,[2,120]),e(X,[2,131]),{105:[1,144],106:[1,145],109:[1,146],110:[1,147]},{109:[1,148]},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:149},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:150},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:151},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:152},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:153},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:154},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:155},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:156},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:157},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:158},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:159},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:160},e([58,59,61,105,106,109,110,123],[2,104]),{50:[1,161]},{17:[1,162],43:_e},{17:[1,164]},e(Ce,[2,137],{107:U,124:K,125:q,126:G,127:Y}),{16:y,35:_,47:112,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,85:165,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{4:166,18:n},{16:y,35:_,47:167,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,67:pe,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e([6,8,14,16,17,35,36,43,49,50,51,53,55,56,58,59,61,67,76,79,81,82,83,84,86,87,88,89,101,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],me),e(Ce,we,{120:33,104:35,90:36,80:37,62:38,66:39,63:40,78:41,75:46,52:47,54:48,57:49,60:50,64:168,65:169,47:173,16:y,30:xe,35:_,45:Se,46:Ee,50:C,51:w,53:x,55:S,56:E,58:O,59:M,61:z,76:k,79:T,81:L,82:A,83:H,84:V,86:N,87:I,88:D,101:P}),e(fe,[2,75]),e(fe,[2,76]),e(fe,[2,77]),e(fe,[2,78]),e(fe,[2,79]),{70:174,71:[1,175]},{71:[2,69],107:U,124:K,125:q,126:G,127:Y},e(Oe,[2,7],{14:f}),e(Oe,[2,8]),e(Me,[2,24],{22:176,37:[1,177]}),e(be,[2,21]),{35:[1,178]},{35:[1,179]},{35:[1,180]},e(W,[2,150]),e(ze,[2,144]),e(X,[2,132]),e(ke,[2,133],{107:U,124:K}),e(ke,[2,134],{107:U,124:K}),e(X,[2,135]),e(ke,[2,136],{107:U,124:K}),{57:183,58:O,59:M,61:[1,182],122:181,123:[1,184]},e(Q,[2,125]),{16:[1,185]},{16:[2,121]},{16:[2,122]},{16:[1,186]},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:187},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:188,81:L,82:A,83:H,84:V,86:N,87:I,88:D},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:189},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:190},e([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,91],{45:J,79:Z,81:ee,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce,99:le}),e([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,92,99,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,92],{45:J,79:Z,81:ee,93:ie,94:re,95:oe,96:ae,97:se,98:ce}),e(Te,[2,93],{45:J,79:Z,81:ee,95:oe,96:ae,97:se,98:ce}),e(Te,[2,94],{45:J,79:Z,81:ee,95:oe,96:ae,97:se,98:ce}),e(Le,[2,95],{45:J,95:oe,96:ae,97:se,98:ce}),e(Le,[2,96],{45:J,95:oe,96:ae,97:se,98:ce}),e(de,[2,97]),e(de,[2,98]),e(de,[2,99]),e(de,[2,100]),e(de,[2,101]),e([6,8,14,17,34,36,43,49,50,51,71,72,74,77,89,91,99,101,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182],[2,102],{45:J,79:Z,81:ee,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce}),e([6,8,14,16,17,34,35,36,43,45,49,50,51,53,55,56,58,59,61,67,71,72,74,76,77,79,81,82,83,84,86,87,88,89,91,92,93,94,95,96,97,98,99,101,103,105,106,107,108,109,110,112,113,114,115,116,117,121,124,125,126,127,129,133,135,138,141,142,144,146,150,152,154,157,164,165,167,168,173,177,179,180,182,192,193,194],[2,65]),e(fe,[2,84]),{16:y,35:_,47:191,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(fe,[2,86]),{17:[1,192],43:_e},{17:[1,193]},{89:[1,194],107:U,124:K,125:q,126:G,127:Y},{17:[1,195],43:[1,196]},e(Ce,[2,58]),e(Ce,[2,60]),e(Ce,[2,61]),{16:y,35:_,47:197,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ce,[2,63],{107:U,124:K,125:q,126:G,127:Y}),{71:[1,199],73:198,74:[1,200],77:[2,72]},{16:y,35:_,47:201,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ae,[2,26],{23:202,38:[1,203]}),e(Me,[2,23]),e($,[2,19]),e(R,[2,158]),e(R,[2,159]),e(X,[2,130]),e(Q,[2,124]),e(X,[2,127]),e(X,[2,128]),{4:204,18:n},{4:205,16:y,18:n,35:_,47:112,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,85:206,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{45:J,79:Z,81:ee,91:te,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce,99:le,107:[1,207]},e(Q,[2,105],{102:208,103:[1,209]}),e(Q,[2,113],{45:J,79:Z,81:ee,91:te,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce,99:le}),e(Q,[2,111],{45:J,79:Z,81:ee,91:te,92:ne,93:ie,94:re,95:oe,96:ae,97:se,98:ce,99:le}),e(Ce,[2,138],{107:U,124:K,125:q,126:G,127:Y}),e(fe,[2,85]),e(fe,[2,87]),e(fe,[2,88]),e(fe,[2,56]),e(Ce,we,{120:33,104:35,90:36,80:37,62:38,66:39,63:40,78:41,75:46,52:47,54:48,57:49,60:50,47:173,65:210,16:y,30:xe,35:_,45:Se,46:Ee,50:C,51:w,53:x,55:S,56:E,58:O,59:M,61:z,76:k,79:T,81:L,82:A,83:H,84:V,86:N,87:I,88:D,101:P}),e(Ce,[2,62],{107:U,124:K,125:q,126:G,127:Y}),{77:[1,211]},{16:y,35:_,47:212,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:y,35:_,47:213,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{72:[1,214],107:U,124:K,125:q,126:G,127:Y},e(He,[2,28],{24:215,39:[1,216]}),e(Ae,[2,25]),{17:[1,217]},{17:[1,218]},{17:[1,219],43:_e},{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,104:220},e(Q,[2,112]),{16:y,35:_,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:221,81:L,82:A,83:H,84:V,86:N,87:I,88:D},e(Ce,[2,57]),e(fe,[2,74]),{72:[1,222],107:U,124:K,125:q,126:G,127:Y},{77:[2,73],107:U,124:K,125:q,126:G,127:Y},{16:y,35:_,47:223,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ve,[2,29],{25:224,40:[1,225],41:[1,226]}),e(He,[2,27]),e(Q,[2,126]),e(Q,[2,108]),e(Q,[2,109]),e(Q,[2,110]),e(Q,[2,106]),{16:y,35:_,47:227,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ne,[2,70],{107:U,124:K,125:q,126:G,127:Y}),e(Ie,[2,33],{26:228,42:[1,229]}),e(Ve,[2,30]),e(Ve,[2,31]),e(Ne,[2,71],{107:U,124:K,125:q,126:G,127:Y}),{16:y,27:230,35:_,44:231,45:De,46:Pe,47:234,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ie,[2,32]),e($e,[2,168],{28:235,43:[1,236],157:[1,237]}),e(Re,[2,35]),e(Re,[2,36]),e(Re,[2,37]),e(Re,[2,39],{48:238,49:[1,239],50:[1,240],51:[1,241],107:U,124:K,125:q,126:G,127:Y}),e($e,[2,12]),{16:y,35:_,44:242,45:De,46:Pe,47:234,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:je,50:ve,66:249,88:Fe,158:243,160:244,161:245,172:248,174:247},e(Re,[2,38]),{50:[1,251],51:[1,252]},e(Re,[2,41]),e(Re,[2,43]),e(Re,[2,34]),e([6,8,14,17,129,135,138,144,146,150,152,154],Be,{159:253,43:We,182:Ue}),e(Ke,[2,170]),e(Ke,[2,172],{163:256,166:258,36:qe,164:Ge,165:Ye,167:Xe,168:Qe,173:Je,177:Ze}),{162:[1,264]},e(et,[2,193]),e(et,[2,194]),e([6,8,14,17,36,43,49,50,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,192,193,194],Be,{159:265,67:pe,182:Ue}),{4:266,16:je,18:n,50:ve,66:249,88:Fe,158:267,160:244,161:245,172:248,174:247},e(Re,[2,40]),e(Re,[2,42]),e(tt,[2,139],{128:268,129:[1,269]}),{16:je,50:ve,66:249,88:Fe,160:270,161:245,172:248,174:247},{16:[1,271]},{173:[1,272]},{16:je,50:ve,66:249,174:273},{169:274,170:nt,173:it},{166:277,167:Xe,168:Qe,171:276,173:[2,181]},{173:[2,175]},{173:[2,176]},e(rt,[2,177]),e(rt,[2,178]),{16:je,50:ve,66:249,161:278,172:248,174:247},e(ot,at,{183:279,66:281,49:st,50:ve}),{17:[1,282]},{17:[1,283],43:We},e(ze,[2,141],{130:284,131:285,135:[1,286]}),{16:y,35:_,47:287,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(Ke,[2,171]),{50:ve,66:289,181:288},{16:je,50:ve,66:249,174:290},{176:291,179:ct},{173:[1,293]},{173:[2,180]},{173:[1,294]},{169:295,170:nt,173:it},{36:qe,89:[1,296],163:256,164:Ge,165:Ye,166:258,167:Xe,168:Qe,173:Je,177:Ze},e(et,[2,210],{189:297,190:298,191:299,192:lt,193:ut,194:ht}),{50:ve,66:303},e(ot,[2,201],{67:pe}),e(et,at,{66:281,183:304,49:st,50:ve}),e(et,[2,219]),e(dt,[2,155],{143:305,144:[1,306]}),e(ze,[2,142]),{16:y,35:_,47:32,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33,136:307,139:31},e(tt,[2,140],{107:U,124:K,125:q,126:G,127:Y}),{17:[1,308],43:[1,309]},e(Ce,[2,195],{67:pe}),e([6,8,14,17,36,43,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,182],[2,183],{175:310,176:311,179:ct,180:ft}),e(et,[2,185]),{16:y,35:_,47:313,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},{16:je,50:ve,66:249,161:314,172:248,174:247},{16:je,50:ve,66:249,174:315},{173:[2,182]},e(Ke,[2,173]),e(et,[2,217]),e(et,[2,211]),e(et,[2,212]),{184:317,185:pt,186:vt},{184:320,185:pt,186:vt},{184:321,185:pt,186:vt},e(ot,[2,200],{67:pe}),e(et,[2,218]),e(b,h,{137:18,11:322,138:d}),{16:y,35:_,47:323,50:C,51:w,52:47,53:x,54:48,55:S,56:E,57:49,58:O,59:M,60:50,61:z,62:38,63:40,66:39,75:46,76:k,78:41,79:T,80:37,81:L,82:A,83:H,84:V,86:N,87:I,88:D,90:36,101:P,104:35,120:33},e(ze,j,{132:324,43:F,133:B}),e([6,8,14,17,36,43,49,50,89,129,135,138,144,146,150,152,154,164,165,167,168,173,177,179,180,182,192,193,194],[2,198]),{50:ve,66:325},e(et,[2,184]),e(et,[2,191]),{16:[1,326]},e(et,[2,190],{107:U,124:K,125:q,126:G,127:Y}),{36:qe,163:256,164:Ge,165:Ye,166:258,167:Xe,168:Qe,173:Je,175:327,176:311,177:Ze,179:ct,180:ft},e(et,[2,187]),{191:328,192:lt,193:ut,194:ht},{16:mt,152:gt,187:329},e(bt,[2,202]),e(bt,[2,203]),{16:mt,152:gt,187:331},{16:mt,152:gt,187:332},e(R,m,{145:28,12:333,146:g}),e(dt,[2,156],{107:U,124:K,125:q,126:G,127:Y}),e(ze,[2,145]),e(Ce,[2,196],{67:pe}),{50:ve,66:335,68:334},e(et,[2,186]),e(et,[2,213]),{16:[1,336]},{135:[1,339],138:[1,338],173:[1,337]},{16:[1,340]},{16:[1,341]},e(yt,[2,162],{148:342,149:343,150:[1,344]}),{17:[1,345],43:_t},e(Ce,[2,66],{67:pe}),{17:[2,208],50:ve,66:335,68:348,188:347},{16:[2,205]},{16:[2,206]},{16:[2,207]},{50:ve,66:335,68:349},{50:ve,66:335,68:350},e($e,[2,165],{151:351,152:[1,352],154:[1,353]}),e(yt,[2,163]),{50:[1,355],63:354},e(et,[2,192]),{50:ve,66:356},{17:[1,357]},{17:[2,209],43:_t},{17:[1,358],43:_t},{17:[1,359],43:_t},e($e,[2,169]),{153:[1,360]},{105:[1,361]},e(yt,[2,164]),{16:ge},e(Ce,[2,67],{67:pe}),e(et,[2,214]),e(et,[2,215]),e(et,[2,216]),e($e,[2,166]),{155:[1,362]},{156:[1,363]},e($e,[2,167])],defaultActions:{11:[2,3],22:[2,1],24:[2,2],142:[2,121],143:[2,122],260:[2,175],261:[2,176],275:[2,180],295:[2,182],337:[2,205],338:[2,206],339:[2,207]},parseError:function(e,t){if(!t.recoverable){var n=new Error(e);throw n.hash=t,n}this.trace(e)},parse:function(e){var t=this,n=[0],i=[null],r=[],o=this.table,a="",s=0,c=0,l=0,u=2,h=1,d=r.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(p.yy[v]=this.yy[v]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,"undefined"==typeof f.yylloc&&(f.yylloc={});var m=f.yylloc;r.push(m);var g=f.options&&f.options.ranges;"function"===typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;var b,y,_,C,w,x,S,E,O,M=function(){var e;return e=f.lex()||h,"number"!==typeof e&&(e=t.symbols_[e]||e),e},z={};while(1){if(_=n[n.length-1],this.defaultActions[_]?C=this.defaultActions[_]:(null!==b&&"undefined"!=typeof b||(b=M()),C=o[_]&&o[_][b]),"undefined"===typeof C||!C.length||!C[0]){var k="";for(x in O=[],o[_])this.terminals_[x]&&x>u&&O.push("'"+this.terminals_[x]+"'");k=f.showPosition?"Parse error on line "+(s+1)+":\n"+f.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(s+1)+": Unexpected "+(b==h?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(k,{text:f.match,token:this.terminals_[b]||b,line:f.yylineno,loc:m,expected:O})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(C[0]){case 1:n.push(b),i.push(f.yytext),r.push(f.yylloc),n.push(C[1]),b=null,y?(b=y,y=null):(c=f.yyleng,a=f.yytext,s=f.yylineno,m=f.yylloc,l>0&&l--);break;case 2:if(S=this.productions_[C[1]][1],z.$=i[i.length-S],z._$={first_line:r[r.length-(S||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(S||1)].first_column,last_column:r[r.length-1].last_column},g&&(z._$.range=[r[r.length-(S||1)].range[0],r[r.length-1].range[1]]),w=this.performAction.apply(z,[a,c,s,p.yy,C[1],i,r].concat(d)),"undefined"!==typeof w)return w;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),r=r.slice(0,-1*S)),n.push(this.productions_[C[1]][0]),i.push(z.$),r.push(z._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},wt=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,i,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),i=e[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in r)this[o]=r[o];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),o=0;ot[0].length)){if(t=n,i=o,this.options.backtrack_lexer){if(e=this.test_match(n,r[o]),!1!==e)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,r[i]),!1!==e&&e):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions["INITIAL"].rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,n,i){switch(n){case 0:break;case 1:break;case 2:break;case 3:break;case 4:return 50;case 5:return 50;case 6:return 50;case 7:return 18;case 8:return 29;case 9:return 119;case 10:return 30;case 11:return 31;case 12:return 32;case 13:return 33;case 14:return 36;case 15:return 37;case 16:return 38;case 17:return 39;case 18:return 40;case 19:return 41;case 20:return 42;case 21:return 46;case 22:return 49;case 23:return 58;case 24:return 59;case 25:return 61;case 26:return"COLLATE";case 27:return 84;case 28:return 86;case 29:return 87;case 30:return 76;case 31:return 71;case 32:return 72;case 33:return 74;case 34:return 77;case 35:return 96;case 36:return 97;case 37:return 101;case 38:return 106;case 39:return 105;case 40:return 108;case 41:return 109;case 42:return 103;case 43:return 110;case 44:return 121;case 45:return 123;case 46:return 107;case 47:return 126;case 48:return 127;case 49:return 157;case 50:return 182;case 51:return 192;case 52:return 185;case 53:return 186;case 54:return 152;case 55:return 173;case 56:return 138;case 57:return 135;case 58:return 193;case 59:return 194;case 60:return 164;case 61:return 165;case 62:return 179;case 63:return 180;case 64:return 167;case 65:return 168;case 66:return 170;case 67:return 177;case 68:return 129;case 69:return 141;case 70:return 142;case 71:return 133;case 72:return 134;case 73:return 144;case 74:return 147;case 75:return 150;case 76:return 153;case 77:return 154;case 78:return 155;case 79:return 156;case 80:return 162;case 81:return 146;case 82:return 14;case 83:return 43;case 84:return 34;case 85:return 16;case 86:return 17;case 87:return 82;case 88:return 117;case 89:return 83;case 90:return 91;case 91:return 92;case 92:return 79;case 93:return 81;case 94:return 45;case 95:return 95;case 96:return 98;case 97:return 99;case 98:return 94;case 99:return 112;case 100:return 113;case 101:return 93;case 102:return"<=>";case 103:return 114;case 104:return 116;case 105:return 115;case 106:return 88;case 107:return 89;case 108:return 8;case 109:return 53;case 110:return 53;case 111:return 56;case 112:return 35;case 113:return 55;case 114:return 50;case 115:return 67;case 116:return 51;case 117:return 51;case 118:return 6;case 119:return"INVALID"}},rules:[/^(?:[\/][*](.|\n)*?[*][\/])/i,/^(?:[-][-]\s.*\n)/i,/^(?:[#]\s.*\n)/i,/^(?:\s+)/i,/^(?:[`][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*[`])/i,/^(?:[\w]+[\u4e00-\u9fa5]+[0-9a-zA-Z_\u4e00-\u9fa5]*)/i,/^(?:[\u4e00-\u9fa5][0-9a-zA-Z_\u4e00-\u9fa5]*)/i,/^(?:SELECT\b)/i,/^(?:ALL\b)/i,/^(?:ANY\b)/i,/^(?:DISTINCT\b)/i,/^(?:DISTINCTROW\b)/i,/^(?:HIGH_PRIORITY\b)/i,/^(?:MAX_STATEMENT_TIME\b)/i,/^(?:STRAIGHT_JOIN\b)/i,/^(?:SQL_SMALL_RESULT\b)/i,/^(?:SQL_BIG_RESULT\b)/i,/^(?:SQL_BUFFER_RESULT\b)/i,/^(?:SQL_CACHE\b)/i,/^(?:SQL_NO_CACHE\b)/i,/^(?:SQL_CALC_FOUND_ROWS\b)/i,/^(?:([a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*\.){1,2}\*)/i,/^(?:AS\b)/i,/^(?:TRUE\b)/i,/^(?:FALSE\b)/i,/^(?:NULL\b)/i,/^(?:COLLATE\b)/i,/^(?:BINARY\b)/i,/^(?:ROW\b)/i,/^(?:EXISTS\b)/i,/^(?:CASE\b)/i,/^(?:WHEN\b)/i,/^(?:THEN\b)/i,/^(?:ELSE\b)/i,/^(?:END\b)/i,/^(?:DIV\b)/i,/^(?:MOD\b)/i,/^(?:NOT\b)/i,/^(?:BETWEEN\b)/i,/^(?:IN\b)/i,/^(?:SOUNDS\b)/i,/^(?:LIKE\b)/i,/^(?:ESCAPE\b)/i,/^(?:REGEXP\b)/i,/^(?:IS\b)/i,/^(?:UNKNOWN\b)/i,/^(?:AND\b)/i,/^(?:OR\b)/i,/^(?:XOR\b)/i,/^(?:FROM\b)/i,/^(?:PARTITION\b)/i,/^(?:USE\b)/i,/^(?:INDEX\b)/i,/^(?:KEY\b)/i,/^(?:FOR\b)/i,/^(?:JOIN\b)/i,/^(?:ORDER\s+BY\b)/i,/^(?:GROUP\s+BY\b)/i,/^(?:IGNORE\b)/i,/^(?:FORCE\b)/i,/^(?:INNER\b)/i,/^(?:CROSS\b)/i,/^(?:ON\b)/i,/^(?:USING\b)/i,/^(?:LEFT\b)/i,/^(?:RIGHT\b)/i,/^(?:OUTER\b)/i,/^(?:NATURAL\b)/i,/^(?:WHERE\b)/i,/^(?:ASC\b)/i,/^(?:DESC\b)/i,/^(?:WITH\b)/i,/^(?:ROLLUP\b)/i,/^(?:HAVING\b)/i,/^(?:OFFSET\b)/i,/^(?:PROCEDURE\b)/i,/^(?:UPDATE\b)/i,/^(?:LOCK\b)/i,/^(?:SHARE\b)/i,/^(?:MODE\b)/i,/^(?:OJ\b)/i,/^(?:LIMIT\b)/i,/^(?:UNION\b)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\()/i,/^(?:\))/i,/^(?:~)/i,/^(?:!=)/i,/^(?:!)/i,/^(?:\|)/i,/^(?:&)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\*)/i,/^(?:\/)/i,/^(?:%)/i,/^(?:\^)/i,/^(?:>>)/i,/^(?:>=)/i,/^(?:>)/i,/^(?:<<)/i,/^(?:<=>)/i,/^(?:<=)/i,/^(?:<>)/i,/^(?:<)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:;)/i,/^(?:['](\\.|[^'])*['])/i,/^(?:["](\\.|[^"])*["])/i,/^(?:[0][x][0-9a-fA-F]+)/i,/^(?:[-]?[0-9]+(\.[0-9]+)?)/i,/^(?:[-]?[0-9]+(\.[0-9]+)?[eE][-][0-9]+(\.[0-9]+)?)/i,/^(?:[a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*)/i,/^(?:\.)/i,/^(?:['"][a-zA-Z_\u4e00-\u9fa5][a-zA-Z0-9_\u4e00-\u9fa5]*["'])/i,/^(?:[`].+[`])/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,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,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],inclusive:!0}}};return e}();function xt(){this.yy={}}return Ct.lexer=wt,xt.prototype=Ct,Ct.Parser=xt,new xt}();function a(){this.buffer=""}o||(o={}),o.stringify=function(e){var t=new a;return t.travelMain(e),t.buffer},a.prototype.travel=function(e){if(e){if("string"===typeof e)return this.append(e);var t=this["travel"+e.type];t.call(this,e)}};var s=!1;a.prototype.appendKeyword=function(e,t,n){s&&(t=!0,s=!1),this.buffer+=t?e.toUpperCase():" "+e.toUpperCase(),n&&(s=!0)},a.prototype.append=function(e,t,n){s&&(t=!0,s=!1),this.buffer+=t?e:" "+e,n&&(s=!0)},a.prototype.travelMain=function(e){this.travel(e.value),e.hasSemicolon&&this.append(";",!0)},a.prototype.travelSelect=function(e){this.appendKeyword("select"),e.distinctOpt&&this.appendKeyword(e.distinctOpt),e.highPriorityOpt&&this.appendKeyword(e.highPriorityOpt),e.maxStateMentTimeOpt&&this.append("MAX_STATEMENT_TIME = "+e.maxStateMentTimeOpt),e.straightJoinOpt&&this.appendKeyword(e.straightJoinOpt),e.sqlSmallResultOpt&&this.appendKeyword(e.sqlSmallResultOpt),e.sqlBigResultOpt&&this.appendKeyword(e.sqlBigResultOpt),e.sqlBufferResultOpt&&this.appendKeyword(e.sqlBufferResultOpt),e.sqlCacheOpt&&this.appendKeyword(e.sqlCacheOpt),e.sqlCalcFoundRowsOpt&&this.appendKeyword(e.sqlCalcFoundRowsOpt),e.selectItems&&this.travelSelectExpr(e.selectItems),e.from&&(this.appendKeyword("from"),this.travel(e.from)),e.partition&&this.travel(e.partition),e.where&&(this.appendKeyword("where"),this.travel(e.where)),e.groupBy&&this.travel(e.groupBy),e.having&&(this.appendKeyword("having"),this.travel(e.having)),e.orderBy&&this.travel(e.orderBy),e.limit&&this.travel(e.limit),e.procedure&&(this.appendKeyword("procedure"),this.travel(e.procedure)),e.updateLockMode&&this.appendKeyword(e.updateLockMode)},a.prototype.travelSelectExpr=function(e){for(var t=e.value,n=0;n=2)e.mixin({beforeCreate:i});else{var n=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[i].concat(e.init):i,n.call(this,e)}}function i(){var e=this.$options;e.store?this.$store="function"===typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}var i="undefined"!==typeof window?window:"undefined"!==typeof e?e:{},r=i.__VUE_DEVTOOLS_GLOBAL_HOOK__;function o(e){r&&(e._devtoolHook=r,r.emit("vuex:init",e),r.on("vuex:travel-to-state",function(t){e.replaceState(t)}),e.subscribe(function(e,t){r.emit("vuex:mutation",e,t)}))}function a(e,t){Object.keys(e).forEach(function(n){return t(e[n],n)})}function s(e){return null!==e&&"object"===typeof e}function c(e){return e&&"function"===typeof e.then}function l(e,t){return function(){return e(t)}}var u=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"===typeof n?n():n)||{}},h={namespaced:{configurable:!0}};h.namespaced.get=function(){return!!this._rawModule.namespaced},u.prototype.addChild=function(e,t){this._children[e]=t},u.prototype.removeChild=function(e){delete this._children[e]},u.prototype.getChild=function(e){return this._children[e]},u.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},u.prototype.forEachChild=function(e){a(this._children,e)},u.prototype.forEachGetter=function(e){this._rawModule.getters&&a(this._rawModule.getters,e)},u.prototype.forEachAction=function(e){this._rawModule.actions&&a(this._rawModule.actions,e)},u.prototype.forEachMutation=function(e){this._rawModule.mutations&&a(this._rawModule.mutations,e)},Object.defineProperties(u.prototype,h);var d=function(e){this.register([],e,!1)};function f(e,t,n){if(t.update(n),n.modules)for(var i in n.modules){if(!t.getChild(i))return void 0;f(e.concat(i),t.getChild(i),n.modules[i])}}d.prototype.get=function(e){return e.reduce(function(e,t){return e.getChild(t)},this.root)},d.prototype.getNamespace=function(e){var t=this.root;return e.reduce(function(e,n){return t=t.getChild(n),e+(t.namespaced?n+"/":"")},"")},d.prototype.update=function(e){f([],this.root,e)},d.prototype.register=function(e,t,n){var i=this;void 0===n&&(n=!0);var r=new u(t,n);if(0===e.length)this.root=r;else{var o=this.get(e.slice(0,-1));o.addChild(e[e.length-1],r)}t.modules&&a(t.modules,function(t,r){i.register(e.concat(r),t,n)})},d.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];t.getChild(n).runtime&&t.removeChild(n)};var p;var v=function(e){var t=this;void 0===e&&(e={}),!p&&"undefined"!==typeof window&&window.Vue&&k(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var i=e.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new d(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new p;var r=this,a=this,s=a.dispatch,c=a.commit;this.dispatch=function(e,t){return s.call(r,e,t)},this.commit=function(e,t,n){return c.call(r,e,t,n)},this.strict=i;var l=this._modules.root.state;_(this,l,[],this._modules.root),y(this,l),n.forEach(function(e){return e(t)});var u=void 0!==e.devtools?e.devtools:p.config.devtools;u&&o(this)},m={state:{configurable:!0}};function g(e,t){return t.indexOf(e)<0&&t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function b(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;_(e,n,[],e._modules.root,!0),y(e,n,t)}function y(e,t,n){var i=e._vm;e.getters={};var r=e._wrappedGetters,o={};a(r,function(t,n){o[n]=l(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})});var s=p.config.silent;p.config.silent=!0,e._vm=new p({data:{$$state:t},computed:o}),p.config.silent=s,e.strict&&O(e),i&&(n&&e._withCommit(function(){i._data.$$state=null}),p.nextTick(function(){return i.$destroy()}))}function _(e,t,n,i,r){var o=!n.length,a=e._modules.getNamespace(n);if(i.namespaced&&(e._modulesNamespaceMap[a]=i),!o&&!r){var s=M(t,n.slice(0,-1)),c=n[n.length-1];e._withCommit(function(){p.set(s,c,i.state)})}var l=i.context=C(e,a,n);i.forEachMutation(function(t,n){var i=a+n;x(e,i,t,l)}),i.forEachAction(function(t,n){var i=t.root?n:a+n,r=t.handler||t;S(e,i,r,l)}),i.forEachGetter(function(t,n){var i=a+n;E(e,i,t,l)}),i.forEachChild(function(i,o){_(e,t,n.concat(o),i,r)})}function C(e,t,n){var i=""===t,r={dispatch:i?e.dispatch:function(n,i,r){var o=z(n,i,r),a=o.payload,s=o.options,c=o.type;return s&&s.root||(c=t+c),e.dispatch(c,a)},commit:i?e.commit:function(n,i,r){var o=z(n,i,r),a=o.payload,s=o.options,c=o.type;s&&s.root||(c=t+c),e.commit(c,a,s)}};return Object.defineProperties(r,{getters:{get:i?function(){return e.getters}:function(){return w(e,t)}},state:{get:function(){return M(e.state,n)}}}),r}function w(e,t){var n={},i=t.length;return Object.keys(e.getters).forEach(function(r){if(r.slice(0,i)===t){var o=r.slice(i);Object.defineProperty(n,o,{get:function(){return e.getters[r]},enumerable:!0})}}),n}function x(e,t,n,i){var r=e._mutations[t]||(e._mutations[t]=[]);r.push(function(t){n.call(e,i.state,t)})}function S(e,t,n,i){var r=e._actions[t]||(e._actions[t]=[]);r.push(function(t,r){var o=n.call(e,{dispatch:i.dispatch,commit:i.commit,getters:i.getters,state:i.state,rootGetters:e.getters,rootState:e.state},t,r);return c(o)||(o=Promise.resolve(o)),e._devtoolHook?o.catch(function(t){throw e._devtoolHook.emit("vuex:error",t),t}):o})}function E(e,t,n,i){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(e){return n(i.state,i.getters,e.state,e.getters)})}function O(e){e._vm.$watch(function(){return this._data.$$state},function(){0},{deep:!0,sync:!0})}function M(e,t){return t.length?t.reduce(function(e,t){return e[t]},e):e}function z(e,t,n){return s(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function k(e){p&&e===p||(p=e,n(p))}m.state.get=function(){return this._vm._data.$$state},m.state.set=function(e){0},v.prototype.commit=function(e,t,n){var i=this,r=z(e,t,n),o=r.type,a=r.payload,s=(r.options,{type:o,payload:a}),c=this._mutations[o];c&&(this._withCommit(function(){c.forEach(function(e){e(a)})}),this._subscribers.forEach(function(e){return e(s,i.state)}))},v.prototype.dispatch=function(e,t){var n=this,i=z(e,t),r=i.type,o=i.payload,a={type:r,payload:o},s=this._actions[r];if(s){try{this._actionSubscribers.filter(function(e){return e.before}).forEach(function(e){return e.before(a,n.state)})}catch(l){0}var c=s.length>1?Promise.all(s.map(function(e){return e(o)})):s[0](o);return c.then(function(e){try{n._actionSubscribers.filter(function(e){return e.after}).forEach(function(e){return e.after(a,n.state)})}catch(l){0}return e})}},v.prototype.subscribe=function(e){return g(e,this._subscribers)},v.prototype.subscribeAction=function(e){var t="function"===typeof e?{before:e}:e;return g(t,this._actionSubscribers)},v.prototype.watch=function(e,t,n){var i=this;return this._watcherVM.$watch(function(){return e(i.state,i.getters)},t,n)},v.prototype.replaceState=function(e){var t=this;this._withCommit(function(){t._vm._data.$$state=e})},v.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"===typeof e&&(e=[e]),this._modules.register(e,t),_(this,this.state,e,this._modules.get(e),n.preserveState),y(this,this.state)},v.prototype.unregisterModule=function(e){var t=this;"string"===typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit(function(){var n=M(t.state,e.slice(0,-1));p.delete(n,e[e.length-1])}),b(this)},v.prototype.hotUpdate=function(e){this._modules.update(e),b(this,!0)},v.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(v.prototype,m);var T=I(function(e,t){var n={};return N(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var i=D(this.$store,"mapState",e);if(!i)return;t=i.context.state,n=i.context.getters}return"function"===typeof r?r.call(this,t,n):t[r]},n[i].vuex=!0}),n}),L=I(function(e,t){var n={};return N(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var i=this.$store.commit;if(e){var o=D(this.$store,"mapMutations",e);if(!o)return;i=o.context.commit}return"function"===typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}}),n}),A=I(function(e,t){var n={};return N(t).forEach(function(t){var i=t.key,r=t.val;r=e+r,n[i]=function(){if(!e||D(this.$store,"mapGetters",e))return this.$store.getters[r]},n[i].vuex=!0}),n}),H=I(function(e,t){var n={};return N(t).forEach(function(t){var i=t.key,r=t.val;n[i]=function(){var t=[],n=arguments.length;while(n--)t[n]=arguments[n];var i=this.$store.dispatch;if(e){var o=D(this.$store,"mapActions",e);if(!o)return;i=o.context.dispatch}return"function"===typeof r?r.apply(this,[i].concat(t)):i.apply(this.$store,[r].concat(t))}}),n}),V=function(e){return{mapState:T.bind(null,e),mapGetters:A.bind(null,e),mapMutations:L.bind(null,e),mapActions:H.bind(null,e)}};function N(e){return Array.isArray(e)?e.map(function(e){return{key:e,val:e}}):Object.keys(e).map(function(t){return{key:t,val:e[t]}})}function I(e){return function(t,n){return"string"!==typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function D(e,t,n){var i=e._modulesNamespaceMap[n];return i}var P={Store:v,install:k,version:"3.1.1",mapState:T,mapMutations:L,mapGetters:A,mapActions:H,createNamespacedHelpers:V};t["a"]=P}).call(this,n("c8ba"))},"2f78":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{isubh:function(e,t,n,i){var r=e>>>0,o=t>>>0,a=n>>>0;return o-(i>>>0)-((~r&a|~(r^a)&r-a>>>0)>>>31)|0}})},"2fc4":function(e,t,n){"use strict";var i=n("4d91"),r=n("7b05"),o=n("daa3"),a=n("6a21"),s={name:"ABreadcrumbItem",__ANT_BREADCRUMB_ITEM:!0,props:{prefixCls:i["a"].string.def("ant-breadcrumb"),href:i["a"].string,separator:i["a"].any},render:function(){var e=arguments[0],t=this.prefixCls,n=this.$slots,i=n["default"],r=void 0;return r=Object(o["j"])(this,"href")?e("a",{class:t+"-link"},[i]):e("span",{class:t+"-link"},[i]),i?e("span",[r,e("span",{class:t+"-separator"},[Object(o["d"])(this,"separator")||"/"])]):null}},c=i["a"].shape({path:i["a"].string,breadcrumbName:i["a"].string}).loose,l={prefixCls:i["a"].string.def("ant-breadcrumb"),routes:i["a"].arrayOf(c),params:i["a"].any,separator:i["a"].any,itemRender:i["a"].func};function u(e,t){if(!e.breadcrumbName)return null;var n=Object.keys(t).join("|"),i=e.breadcrumbName.replace(new RegExp(":("+n+")","g"),function(e,n){return t[n]||e});return i}var h={name:"ABreadcrumb",props:l,methods:{defaultItemRender:function(e){var t=e.route,n=e.params,i=e.routes,r=e.paths,o=this.$createElement,a=i.indexOf(t)===i.length-1,s=u(t,n);return a?o("span",[s]):o("a",{attrs:{href:"#/"+r.join("/")}},[s])}},render:function(){var e=arguments[0],t=void 0,n=this.prefixCls,i=this.routes,c=this.params,l=void 0===c?{}:c,u=this.$slots,h=this.$scopedSlots,d=Object(o["b"])(u["default"]),f=Object(o["d"])(this,"separator");if(i&&i.length>0){var p=[],v=this.itemRender||h.itemRender||this.defaultItemRender;t=i.map(function(t){t.path=t.path||"";var n=t.path.replace(/^\//,"");return Object.keys(l).forEach(function(e){n=n.replace(":"+e,l[e])}),n&&p.push(n),e(s,{attrs:{separator:f},key:t.breadcrumbName||n},[v({route:t,params:l,routes:i,paths:p})])})}else d.length&&(t=d.map(function(e,t){return Object(a["a"])(Object(o["h"])(e).__ANT_BREADCRUMB_ITEM,"Breadcrumb only accepts Breadcrumb.Item as it's children"),Object(r["a"])(e,{props:{separator:f},key:t})}));return e("div",{class:n},[t])}};h.Item=s,h.install=function(e){e.component(h.name,h),e.component(s.name,s)};t["a"]=h},"2fcc":function(e,t){function n(e){var t=this.__data__,n=t["delete"](e);return this.size=t.size,n}e.exports=n},"2fdb":function(e,t,n){"use strict";var i=n("5ca1"),r=n("d2c8"),o="includes";i(i.P+i.F*n("5147")(o),"String",{includes:function(e){return!!~r(this,e,o).indexOf(e,arguments.length>1?arguments[1]:void 0)}})},3024:function(e,t){e.exports=function(e,t,n){var i=void 0===n;switch(t.length){case 0:return i?e():e.call(n);case 1:return i?e(t[0]):e.call(n,t[0]);case 2:return i?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},"30b5":function(e,t,n){"use strict";var i=n("c532");function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var o;if(n)o=n(t);else if(i.isURLSearchParams(t))o=t.toString();else{var a=[];i.forEach(t,function(e,t){null!==e&&"undefined"!==typeof e&&(i.isArray(e)?t+="[]":e=[e],i.forEach(e,function(e){i.isDate(e)?e=e.toISOString():i.isObject(e)&&(e=JSON.stringify(e)),a.push(r(t)+"="+r(e))}))}),o=a.join("&")}if(o){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}},"30c9":function(e,t,n){var i=n("9520"),r=n("b218");function o(e){return null!=e&&r(e.length)&&!i(e)}e.exports=o},"30f1":function(e,t,n){"use strict";var i=n("b8e3"),r=n("63b6"),o=n("9138"),a=n("35e8"),s=n("481b"),c=n("8f60"),l=n("45f2"),u=n("53e2"),h=n("5168")("iterator"),d=!([].keys&&"next"in[].keys()),f="@@iterator",p="keys",v="values",m=function(){return this};e.exports=function(e,t,n,g,b,y,_){c(n,t,g);var C,w,x,S=function(e){if(!d&&e in z)return z[e];switch(e){case p:return function(){return new n(this,e)};case v:return function(){return new n(this,e)}}return function(){return new n(this,e)}},E=t+" Iterator",O=b==v,M=!1,z=e.prototype,k=z[h]||z[f]||b&&z[b],T=k||S(b),L=b?O?S("entries"):T:void 0,A="Array"==t&&z.entries||k;if(A&&(x=u(A.call(new e)),x!==Object.prototype&&x.next&&(l(x,E,!0),i||"function"==typeof x[h]||a(x,h,m))),O&&k&&k.name!==v&&(M=!0,T=function(){return k.call(this)}),i&&!_||!d&&!M&&z[h]||a(z,h,T),s[t]=T,s[E]=m,b)if(C={values:O?T:S(v),keys:y?T:S(p),entries:L},_)for(w in C)w in z||o(z,w,C[w]);else r(r.P+r.F*(d||M),t,C);return C}},"30f5":function(e,t,n){},"31f4":function(e,t){e.exports=function(e,t,n){var i=void 0===n;switch(t.length){case 0:return i?e():e.call(n);case 1:return i?e(t[0]):e.call(n,t[0]);case 2:return i?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return i?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return i?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},"320c":function(e,t,n){"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function s(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var i=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==i.join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}e.exports=s()?Object.assign:function(e,t){for(var n,s,c=a(e),l=1;l
    '};function n(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}function r(e,n,r){var o;return o="translate3d"===t.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===t.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"},o.transition="all "+n+"ms "+r,o}e.configure=function(e){var n,i;for(n in e)i=e[n],void 0!==i&&e.hasOwnProperty(n)&&(t[n]=i);return this},e.status=null,e.set=function(i){var s=e.isStarted();i=n(i,t.minimum,1),e.status=1===i?null:i;var c=e.render(!s),l=c.querySelector(t.barSelector),u=t.speed,h=t.easing;return c.offsetWidth,o(function(n){""===t.positionUsing&&(t.positionUsing=e.getPositioningCSS()),a(l,r(i,u,h)),1===i?(a(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout(function(){a(c,{transition:"all "+u+"ms linear",opacity:0}),setTimeout(function(){e.remove(),n()},u)},u)):setTimeout(n,u)}),this},e.isStarted=function(){return"number"===typeof e.status},e.start=function(){e.status||e.set(0);var n=function(){setTimeout(function(){e.status&&(e.trickle(),n())},t.trickleSpeed)};return t.trickle&&n(),this},e.done=function(t){return t||e.status?e.inc(.3+.5*Math.random()).set(1):this},e.inc=function(t){var i=e.status;return i?("number"!==typeof t&&(t=(1-i)*n(Math.random()*i,.1,.95)),i=n(i+t,0,.994),e.set(i)):e.start()},e.trickle=function(){return e.inc(Math.random()*t.trickleRate)},function(){var t=0,n=0;e.promise=function(i){return i&&"resolved"!==i.state()?(0===n&&e.start(),t++,n++,i.always(function(){n--,0===n?(t=0,e.done()):e.set((t-n)/t)}),this):this}}(),e.render=function(n){if(e.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var r=document.createElement("div");r.id="nprogress",r.innerHTML=t.template;var o,s=r.querySelector(t.barSelector),l=n?"-100":i(e.status||0),u=document.querySelector(t.parent);return a(s,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),t.showSpinner||(o=r.querySelector(t.spinnerSelector),o&&h(o)),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(r),r},e.remove=function(){l(document.documentElement,"nprogress-busy"),l(document.querySelector(t.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&h(e)},e.isRendered=function(){return!!document.getElementById("nprogress")},e.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var o=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),a=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})}function i(t){var n=document.body.style;if(t in n)return t;var i,r=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);while(r--)if(i=e[r]+o,i in n)return i;return t}function r(e){return e=n(e),t[e]||(t[e]=i(e))}function o(e,t,n){t=r(t),e.style[t]=n}return function(e,t){var n,i,r=arguments;if(2==r.length)for(n in t)i=t[n],void 0!==i&&t.hasOwnProperty(n)&&o(e,n,i);else o(e,r[1],r[2])}}();function s(e,t){var n="string"==typeof e?e:u(e);return n.indexOf(" "+t+" ")>=0}function c(e,t){var n=u(e),i=n+t;s(n,t)||(e.className=i.substring(1))}function l(e,t){var n,i=u(e);s(e,t)&&(n=i.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function u(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function h(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return e})},"32a6":function(e,t,n){var i=n("241e"),r=n("c3a1");n("ce7e")("keys",function(){return function(e){return r(i(e))}})},"32b3":function(e,t,n){var i=n("872a"),r=n("9638"),o=Object.prototype,a=o.hasOwnProperty;function s(e,t,n){var o=e[t];a.call(e,t)&&r(o,n)&&(void 0!==n||t in e)||i(e,t,n)}e.exports=s},"32d7":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},"32e9":function(e,t,n){var i=n("86cc"),r=n("4630");e.exports=n("9e1e")?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},"32f4":function(e,t,n){var i=n("2d7c"),r=n("d327"),o=Object.prototype,a=o.propertyIsEnumerable,s=Object.getOwnPropertySymbols,c=s?function(e){return null==e?[]:(e=Object(e),i(s(e),function(t){return a.call(e,t)}))}:r;e.exports=c},"32fc":function(e,t,n){var i=n("e53d").document;e.exports=i&&i.documentElement},"335c":function(e,t,n){var i=n("6b4c");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},"33a4":function(e,t,n){var i=n("84f2"),r=n("2b4c")("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||o[r]===e)}},"34ac":function(e,t,n){var i=n("9520"),r=n("1368"),o=n("1a8c"),a=n("dc57"),s=/[\\^$.*+?()[\]{}|]/g,c=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,h=l.toString,d=u.hasOwnProperty,f=RegExp("^"+h.call(d).replace(s,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function p(e){if(!o(e)||r(e))return!1;var t=i(e)?f:c;return t.test(a(e))}e.exports=p},"34ef":function(e,t,n){n("ec30")("Uint8",1,function(e){return function(t,n,i){return e(this,t,n,i)}})},3535:function(e,t,n){"use strict";var i=n("5ca1"),r=n("02f4")(!0);i(i.P,"String",{at:function(e){return r(this,e)}})},"355d":function(e,t){t.f={}.propertyIsEnumerable},"35e8":function(e,t,n){var i=n("d9f6"),r=n("aebd");e.exports=n("8e60")?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},"35fe":function(e,t,n){var i=n("658c"),r=n("6eea"),o="[object Arguments]";function a(e){return r(e)&&i(e)==o}e.exports=a},3698:function(e,t){function n(e,t){return null==e?void 0:e[t]}e.exports=n},"36bd":function(e,t,n){"use strict";var i=n("4bf8"),r=n("77f1"),o=n("9def");e.exports=function(e){var t=i(this),n=o(t.length),a=arguments.length,s=r(a>1?arguments[1]:void 0,n),c=a>2?arguments[2]:void 0,l=void 0===c?n:r(c,n);while(l>s)t[s++]=e;return t}},"36c3":function(e,t,n){var i=n("335c"),r=n("25eb");e.exports=function(e){return i(r(e))}},3702:function(e,t,n){var i=n("481b"),r=n("5168")("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(i.Array===e||o[r]===e)}},3729:function(e,t,n){var i=n("9e69"),r=n("00fd"),o=n("29f3"),a="[object Null]",s="[object Undefined]",c=i?i.toStringTag:void 0;function l(e){return null==e?void 0===e?s:a:c&&c in Object(e)?r(e):o(e)}e.exports=l},"373f":function(e,t,n){"use strict";var i=n("5ca1"),r=n("6821"),o=[].join;i(i.P+i.F*(n("626a")!=Object||!n("2f21")(o)),"Array",{join:function(e){return o.call(r(this),void 0===e?",":e)}})},"37a7":function(e,t,n){var i=n("f400"),r=n("5ca1"),o=n("5537")("metadata"),a=o.store||(o.store=new(n("10ad"))),s=function(e,t,n){var r=a.get(e);if(!r){if(!n)return;a.set(e,r=new i)}var o=r.get(t);if(!o){if(!n)return;r.set(t,o=new i)}return o},c=function(e,t,n){var i=s(t,n,!1);return void 0!==i&&i.has(e)},l=function(e,t,n){var i=s(t,n,!1);return void 0===i?void 0:i.get(e)},u=function(e,t,n,i){s(n,i,!0).set(e,t)},h=function(e,t){var n=s(e,t,!1),i=[];return n&&n.forEach(function(e,t){i.push(t)}),i},d=function(e){return void 0===e||"symbol"==typeof e?e:String(e)},f=function(e){r(r.S,"Reflect",e)};e.exports={store:a,map:s,has:c,get:l,set:u,keys:h,key:d,exp:f}},"37b5":function(e,t,n){"use strict";var i=n("5ca1"),r=n("7726"),o=n("8378"),a=n("8079")(),s=n("2b4c")("observable"),c=n("d8e8"),l=n("cb7c"),u=n("f605"),h=n("dcbc"),d=n("32e9"),f=n("4a59"),p=f.RETURN,v=function(e){return null==e?void 0:c(e)},m=function(e){var t=e._c;t&&(e._c=void 0,t())},g=function(e){return void 0===e._o},b=function(e){g(e)||(e._o=void 0,m(e))},y=function(e,t){l(e),this._c=void 0,this._o=e,e=new _(this);try{var n=t(e),i=n;null!=n&&("function"===typeof n.unsubscribe?n=function(){i.unsubscribe()}:c(n),this._c=n)}catch(r){return void e.error(r)}g(this)&&m(this)};y.prototype=h({},{unsubscribe:function(){b(this)}});var _=function(e){this._s=e};_.prototype=h({},{next:function(e){var t=this._s;if(!g(t)){var n=t._o;try{var i=v(n.next);if(i)return i.call(n,e)}catch(r){try{b(t)}finally{throw r}}}},error:function(e){var t=this._s;if(g(t))throw e;var n=t._o;t._o=void 0;try{var i=v(n.error);if(!i)throw e;e=i.call(n,e)}catch(r){try{m(t)}finally{throw r}}return m(t),e},complete:function(e){var t=this._s;if(!g(t)){var n=t._o;t._o=void 0;try{var i=v(n.complete);e=i?i.call(n,e):void 0}catch(r){try{m(t)}finally{throw r}}return m(t),e}}});var C=function(e){u(this,C,"Observable","_f")._f=c(e)};h(C.prototype,{subscribe:function(e){return new y(e,this._f)},forEach:function(e){var t=this;return new(o.Promise||r.Promise)(function(n,i){c(e);var r=t.subscribe({next:function(t){try{return e(t)}catch(n){i(n),r.unsubscribe()}},error:i,complete:n})})}}),h(C,{from:function(e){var t="function"===typeof this?this:C,n=v(l(e)[s]);if(n){var i=l(n.call(e));return i.constructor===t?i:new t(function(e){return i.subscribe(e)})}return new t(function(t){var n=!1;return a(function(){if(!n){try{if(f(e,!1,function(e){if(t.next(e),n)return p})===p)return}catch(i){if(n)throw i;return void t.error(i)}t.complete()}}),function(){n=!0}})},of:function(){for(var e=0,t=arguments.length,n=new Array(t);e"+r+""};e.exports=function(e,t){var n={};n[e]=t(s),i(i.P+i.F*r(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},"386d":function(e,t,n){"use strict";var i=n("cb7c"),r=n("83a1"),o=n("5f1b");n("214f")("search",1,function(e,t,n,a){return[function(n){var i=e(this),r=void 0==n?void 0:n[t];return void 0!==r?r.call(n,i):new RegExp(n)[t](String(i))},function(e){var t=a(n,e,this);if(t.done)return t.value;var s=i(e),c=String(this),l=s.lastIndex;r(l,0)||(s.lastIndex=0);var u=o(s,c);return r(s.lastIndex,l)||(s.lastIndex=l),null===u?-1:u.index}]})},"387f":function(e,t,n){"use strict";e.exports=function(e,t,n,i,r){return e.config=t,n&&(e.code=n),e.request=i,e.response=r,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},"389a":function(e,t,n){},"38fd":function(e,t,n){var i=n("69a8"),r=n("4bf8"),o=n("613b")("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),i(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},3934:function(e,t,n){"use strict";var i=n("c532");e.exports=i.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=i.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return function(){return!0}}()},3953:function(e,t,n){"use strict";n.d(t,"a",function(){return s});var i=n("774e"),r=n.n(i),o=n("c8bb"),a=n.n(o);function s(e){if(a()(Object(e))||"[object Arguments]"===Object.prototype.toString.call(e))return r()(e)}},"39ff":function(e,t,n){var i=n("0b07"),r=n("2b3e"),o=i(r,"WeakMap");e.exports=o},"3a13":function(e,t,n){"use strict";n("1b4c"),n("f4e4")},"3a38":function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},"3a72":function(e,t,n){var i=n("7726"),r=n("8378"),o=n("2d00"),a=n("37c8"),s=n("86cc").f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},"3a99":function(e,t,n){var i=n("35fe"),r=n("6eea"),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,c=i(function(){return arguments}())?i:function(e){return r(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},"3a9b":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i="0 0 1024 1024",r="64 64 896 896",o="fill",a="outline",s="twotone";function c(e){for(var t=[],n=1;ng;)v(m[g++]);h.constructor=l,l.prototype=h,n("2aba")(i,"RegExp",l)}n("7a56")("RegExp")},"3b3f":function(e,t,n){var i=n("83fa"),r=n("bfcf");function o(e){return null!=e&&r(e.length)&&!i(e)}e.exports=o},"3b4a":function(e,t,n){var i=n("0b07"),r=function(){try{var e=i(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=r},"3b8d":function(e,t,n){"use strict";n.d(t,"a",function(){return a});var i=n("795b"),r=n.n(i);function o(e,t,n,i,o,a,s){try{var c=e[a](s),l=c.value}catch(u){return void n(u)}c.done?t(l):r.a.resolve(l).then(i,o)}function a(e){return function(){var t=this,n=arguments;return new r.a(function(i,r){var a=e.apply(t,n);function s(e){o(a,i,r,s,c,"next",e)}function c(e){o(a,i,r,s,c,"throw",e)}s(void 0)})}}},"3c11":function(e,t,n){"use strict";var i=n("63b6"),r=n("584a"),o=n("e53d"),a=n("f201"),s=n("cd78");i(i.P+i.R,"Promise",{finally:function(e){var t=a(this,r.Promise||o.Promise),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then(function(){return n})}:e,n?function(n){return s(t,e()).then(function(){throw n})}:e)}})},"3c4e":function(e,t,n){"use strict";var i=function(e){return r(e)&&!o(e)};function r(e){return!!e&&"object"===typeof e}function o(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||c(e)}var a="function"===typeof Symbol&&Symbol.for,s=a?Symbol.for("react.element"):60103;function c(e){return e.$$typeof===s}function l(e){return Array.isArray(e)?[]:{}}function u(e,t){var n=t&&!0===t.clone;return n&&i(e)?f(l(e),e,t):e}function h(e,t,n){var r=e.slice();return t.forEach(function(t,o){"undefined"===typeof r[o]?r[o]=u(t,n):i(t)?r[o]=f(e[o],t,n):-1===e.indexOf(t)&&r.push(u(t,n))}),r}function d(e,t,n){var r={};return i(e)&&Object.keys(e).forEach(function(t){r[t]=u(e[t],n)}),Object.keys(t).forEach(function(o){i(t[o])&&e[o]?r[o]=f(e[o],t[o],n):r[o]=u(t[o],n)}),r}function f(e,t,n){var i=Array.isArray(t),r=Array.isArray(e),o=n||{arrayMerge:h},a=i===r;if(a){if(i){var s=o.arrayMerge||h;return s(e,t,n)}return d(e,t,n)}return u(t,n)}f.all=function(e,t){if(!Array.isArray(e)||e.length<2)throw new Error("first argument should be an array with at least two elements");return e.reduce(function(e,n){return f(e,n,t)})};var p=f;e.exports=p},"3c55":function(e,t,n){try{var i=n("cecd")}catch(s){i=n("cecd")}var r=/\s+/,o=Object.prototype.toString;function a(e){if(!e||!e.nodeType)throw new Error("A DOM element reference is required");this.el=e,this.list=e.classList}e.exports=function(e){return new a(e)},a.prototype.add=function(e){if(this.list)return this.list.add(e),this;var t=this.array(),n=i(t,e);return~n||t.push(e),this.el.className=t.join(" "),this},a.prototype.remove=function(e){if("[object RegExp]"==o.call(e))return this.removeMatching(e);if(this.list)return this.list.remove(e),this;var t=this.array(),n=i(t,e);return~n&&t.splice(n,1),this.el.className=t.join(" "),this},a.prototype.removeMatching=function(e){for(var t=this.array(),n=0;n>>0||(a.test(n)?16:10))}:i},"3f54":function(e,t,n){var i=n("c254"),r="object"==typeof self&&self&&self.Object===Object&&self,o=i||r||Function("return this")();e.exports=o},"3f6b":function(e,t,n){e.exports={default:n("51b6"),__esModule:!0}},"3fc5":function(e,t,n){var i=n("11e6"),r=/[\\^$.*+?()[\]{}|]/g,o=RegExp(r.source);function a(e){return e=i(e),e&&o.test(e)?e.replace(r,"\\$&"):e}e.exports=a},4010:function(e,t,n){"use strict";t.__esModule=!0,t.removeResizeListener=t.addResizeListener=void 0;var i=n("6dd8"),r=o(i);function o(e){return e&&e.__esModule?e:{default:e}}var a="undefined"===typeof window,s=function(e){var t=e,n=Array.isArray(t),i=0;for(t=n?t:t[Symbol.iterator]();;){var r;if(n){if(i>=t.length)break;r=t[i++]}else{if(i=t.next(),i.done)break;r=i.value}var o=r,a=o.target.__resizeListeners__||[];a.length&&a.forEach(function(e){e()})}};t.addResizeListener=function(e,t){a||(e.__resizeListeners__||(e.__resizeListeners__=[],e.__ro__=new r.default(s),e.__ro__.observe(e)),e.__resizeListeners__.push(t))},t.removeResizeListener=function(e,t){e&&e.__resizeListeners__&&(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),e.__resizeListeners__.length||e.__ro__.disconnect())}},4039:function(e,t,n){"use strict";function i(){return!1}function r(){return!0}function o(){this.timeStamp=Date.now(),this.target=void 0,this.currentTarget=void 0}Object.defineProperty(t,"__esModule",{value:!0}),o.prototype={isEventObject:1,constructor:o,isDefaultPrevented:i,isPropagationStopped:i,isImmediatePropagationStopped:i,preventDefault:function(){this.isDefaultPrevented=r},stopPropagation:function(){this.isPropagationStopped=r},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=r,this.stopPropagation()},halt:function(e){e?this.stopImmediatePropagation():this.stopPropagation(),this.preventDefault()}},t["default"]=o,e.exports=t["default"]},"408c":function(e,t,n){var i=n("2b3e"),r=function(){return i.Date.now()};e.exports=r},"40c3":function(e,t,n){var i=n("6b4c"),r=n("5168")("toStringTag"),o="Arguments"==i(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(n){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=a(t=Object(e),r))?n:o?i(t):"Object"==(s=i(t))&&"function"==typeof t.callee?"Arguments":s}},"416c":function(e,t,n){n("28e4")("Map")},4178:function(e,t,n){var i,r,o,a=n("d864"),s=n("3024"),c=n("32fc"),l=n("1ec9"),u=n("e53d"),h=u.process,d=u.setImmediate,f=u.clearImmediate,p=u.MessageChannel,v=u.Dispatch,m=0,g={},b="onreadystatechange",y=function(){var e=+this;if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},_=function(e){y.call(e.data)};d&&f||(d=function(e){var t=[],n=1;while(arguments.length>n)t.push(arguments[n++]);return g[++m]=function(){s("function"==typeof e?e:Function(e),t)},i(m),m},f=function(e){delete g[e]},"process"==n("6b4c")(h)?i=function(e){h.nextTick(a(y,e,1))}:v&&v.now?i=function(e){v.now(a(y,e,1))}:p?(r=new p,o=r.port2,r.port1.onmessage=_,i=a(o.postMessage,o,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(i=function(e){u.postMessage(e+"","*")},u.addEventListener("message",_,!1)):i=b in l("script")?function(e){c.appendChild(l("script"))[b]=function(){c.removeChild(this),y.call(e)}}:function(e){setTimeout(a(y,e,1),0)}),e.exports={set:d,clear:f}},"417f":function(e,t,n){"use strict";t.__esModule=!0;var i=n("2b0e"),r=a(i),o=n("5924");function a(e){return e&&e.__esModule?e:{default:e}}var s=[],c="@@clickoutsideContext",l=void 0,u=0;function h(e,t,n){return function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!(n&&n.context&&i.target&&r.target)||e.contains(i.target)||e.contains(r.target)||e===i.target||n.context.popperElm&&(n.context.popperElm.contains(i.target)||n.context.popperElm.contains(r.target))||(t.expression&&e[c].methodName&&n.context[e[c].methodName]?n.context[e[c].methodName]():e[c].bindingFn&&e[c].bindingFn())}}!r.default.prototype.$isServer&&(0,o.on)(document,"mousedown",function(e){return l=e}),!r.default.prototype.$isServer&&(0,o.on)(document,"mouseup",function(e){s.forEach(function(t){return t[c].documentHandler(e,l)})}),t.default={bind:function(e,t,n){s.push(e);var i=u++;e[c]={id:i,documentHandler:h(e,t,n),methodName:t.expression,bindingFn:t.value}},update:function(e,t,n){e[c].documentHandler=h(e,t,n),e[c].methodName=t.expression,e[c].bindingFn=t.value},unbind:function(e){for(var t=s.length,n=0;n0?i:n)(e)}},"45f2":function(e,t,n){var i=n("d9f6").f,r=n("07e3"),o=n("5168")("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},4630:function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},4650:function(e,t,n){"use strict";n("1b4c"),n("f3fb"),n("e70f")},"467f":function(e,t,n){"use strict";var i=n("2d83");e.exports=function(e,t,n){var r=n.config.validateStatus;!r||r(n.status)?e(n):t(i("Request failed with status code "+n.status,n.config,null,n.request,n))}},"469f":function(e,t,n){n("6c1c"),n("1654"),e.exports=n("7d7b")},"46a7":function(e,t,n){var i=n("63b6");i(i.S+i.F*!n("8e60"),"Object",{defineProperty:n("d9f6").f})},"46cf":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={install:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.name||"ref";e.directive(n,{bind:function(e,t,n){t.value(n.componentInstance||e,n.key)},update:function(e,t,i,r){if(r.data&&r.data.directives){var o=r.data.directives.find(function(e){var t=e.name;return t===n});if(o&&o.value!==t.value)return o&&o.value(null,r.key),void t.value(i.componentInstance||e,i.key)}i.componentInstance===r.componentInstance&&i.elm===r.elm||t.value(i.componentInstance||e,i.key)},unbind:function(e,t,n){t.value(null,n.key)}})}}},4704:function(e,t,n){var i=n("5ca1");i(i.P+i.R,"Map",{toJSON:n("44b8")("Map")})},4726:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=58)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},15:function(e,t){e.exports=n("14e9")},17:function(e,t){e.exports=n("dcdc")},22:function(e,t){e.exports=n("d397")},26:function(e,t){e.exports=n("92fa")},3:function(e,t){e.exports=n("8122")},31:function(e,t){e.exports=n("2a5e")},39:function(e,t){e.exports=n("e452")},51:function(e,t){e.exports=n("f494")},58:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["el-cascader-panel",e.border&&"is-bordered"],on:{keydown:e.handleKeyDown}},e._l(e.menus,function(e,t){return n("cascader-menu",{key:t,ref:"menu",refInFor:!0,attrs:{index:t,nodes:e}})}),1)},r=[];i._withStripped=!0;var o,a,s=n(26),c=n.n(s),l=n(15),u=n.n(l),h=n(17),d=n.n(h),f=n(51),p=n.n(f),v=n(3),m=function(e){return e.stopPropagation()},g={inject:["panel"],components:{ElCheckbox:d.a,ElRadio:p.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,n=this.node,i=this.isDisabled,r=this.config,o=r.multiple,a=r.checkStrictly;!a&&i||n.loading||(r.lazy&&!n.loaded?t.lazyLoad(n,function(){var t=e.isLeaf;if(t||e.handleExpand(),o){var i=!!t&&n.checked;e.handleMultiCheckChange(i)}}):t.handleExpand(n))},handleCheckChange:function(){var e=this.panel,t=this.value;e.handleCheckChange(t)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node,n=e[t.level-1]||{};return n.uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,n=this.isChecked,i=this.config,r=i.checkStrictly,o=i.multiple;return o?this.renderCheckbox(e):r?this.renderRadio(e):t&&n?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,n=this.isLeaf;return t.loading?this.renderLoadingIcon(e):n?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,n=this.config,i=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return n.checkStrictly&&(r.nativeOn.click=m),e("el-checkbox",c()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:i}},r]))},renderRadio:function(e){var t=this.checkedValue,n=this.value,i=this.isDisabled;return Object(v["isEqual"])(n,t)&&(n=t),e("el-radio",{attrs:{value:t,label:n,disabled:i},on:{change:this.handleCheckChange},nativeOn:{click:m}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,n=this.node,i=t.renderLabelFn,r=i?i({node:n,data:n.data}):null;return e("span",{class:"el-cascader-node__label"},[r||n.label])}},render:function(e){var t=this,n=this.inActivePath,i=this.inCheckedPath,r=this.isChecked,o=this.isLeaf,a=this.isDisabled,s=this.config,l=this.nodeId,u=s.expandTrigger,h=s.checkStrictly,d=s.multiple,f=!h&&a,p={on:{}};return o?a||h||d||(p.on.click=this.handleCheckChange):"click"===u?p.on.click=this.handleExpand:(p.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},p.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),e("li",c()([{attrs:{role:"menuitem",id:l,"aria-expanded":n,tabindex:f?null:-1},class:{"el-cascader-node":!0,"is-selectable":h,"in-active-path":n,"in-checked-path":i,"is-active":r,"is-disabled":f}},p]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},b=g,y=n(0),_=Object(y["a"])(b,o,a,!1,null,null,null);_.options.__file="packages/cascader-panel/src/cascader-node.vue";var C,w,x=_.exports,S=n(6),E=n.n(S),O={name:"ElCascaderMenu",mixins:[E.a],inject:["panel"],components:{ElScrollbar:u.a,CascaderNode:x},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(v["generateId"])()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,n=this.hoverTimer,i=this.$refs.hoverZone;if(t&&i)if(t.contains(e.target)){clearTimeout(n);var r=this.$el.getBoundingClientRect(),o=r.left,a=e.clientX-o,s=this.$el,c=s.offsetWidth,l=s.offsetHeight,u=t.offsetTop,h=u+t.offsetHeight;i.innerHTML='\n \n \n '}else n||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,n=this.panel.isHoverMenu,i={on:{}};n&&(i.on.expand=this.handleExpand);var r=this.nodes.map(function(n,r){var o=n.hasChildren;return e("cascader-node",c()([{key:n.uid,attrs:{node:n,"node-id":t+"-"+r,"aria-haspopup":o,"aria-owns":o?t:null}},i]))});return[].concat(r,[n?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,n=this.menuId,i={nativeOn:{}};return this.panel.isHoverMenu&&(i.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",c()([{attrs:{tag:"ul",role:"menu",id:n,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},i]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},M=O,z=Object(y["a"])(M,C,w,!1,null,null,null);z.options.__file="packages/cascader-panel/src/cascader-menu.vue";var k=z.exports,T=n(22),L=function(){function e(e,t){for(var n=0;n1?t-1:0),i=1;i1?i-1:0),o=1;o0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),n=this.isSameNode(e,t);this.doCheck(n)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},L(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,n=this.config,i=n.disabled,r=n.checkStrictly;return e[i]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,n=this.hasChildren,i=this.children,r=this.config,o=r.lazy,a=r.leaf;if(o){var s=Object(T["isDef"])(e[a])?e[a]:!!t&&!i.length;return this.hasChildren=!s,s}return!n}}]),e}(),N=V;function I(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var D=function e(t,n){return t.reduce(function(t,i){return i.isLeaf?t.push(i):(!n&&t.push(i),t=t.concat(e(i.children,n))),t},[])},P=function(){function e(t,n){I(this,e),this.config=n,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(v["coerceTruthyValueToArray"])(e),this.nodes=e.map(function(e){return new N(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var n=new N(e,this.config,t),i=t?t.children:this.nodes;i.push(n)},e.prototype.appendNodes=function(e,t){var n=this;e=Object(v["coerceTruthyValueToArray"])(e),e.forEach(function(e){return n.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e?this.leafNodes:this.flattedNodes;return t?n:D(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),$=P,R=n(9),j=n.n(R),F=n(39),B=n.n(F),W=n(31),U=n.n(W),K=Object.assign||function(e){for(var t=1;t2,r=!!i&&a.call(arguments,2);return e(i?function(){("function"==typeof t?t:Function(t)).apply(this,r)}:t,n)}};r(r.G+r.B+r.F*s,{setTimeout:c(i.setTimeout),setInterval:c(i.setInterval)})},"47ee":function(e,t,n){var i=n("c3a1"),r=n("9aa9"),o=n("355d");e.exports=function(e){var t=i(e),n=r.f;if(n){var a,s=n(e),c=o.f,l=0;while(s.length>l)c.call(e,a=s[l++])&&t.push(a)}return t}},"481b":function(e,t){e.exports={}},4849:function(e,t,n){e.exports={default:n("454f"),__esModule:!0}},"4849a":function(e,t,n){var i=n("658c"),r=n("bfcf"),o=n("6eea"),a="[object Arguments]",s="[object Array]",c="[object Boolean]",l="[object Date]",u="[object Error]",h="[object Function]",d="[object Map]",f="[object Number]",p="[object Object]",v="[object RegExp]",m="[object Set]",g="[object String]",b="[object WeakMap]",y="[object ArrayBuffer]",_="[object DataView]",C="[object Float32Array]",w="[object Float64Array]",x="[object Int8Array]",S="[object Int16Array]",E="[object Int32Array]",O="[object Uint8Array]",M="[object Uint8ClampedArray]",z="[object Uint16Array]",k="[object Uint32Array]",T={};function L(e){return o(e)&&r(e.length)&&!!T[i(e)]}T[C]=T[w]=T[x]=T[S]=T[E]=T[O]=T[M]=T[z]=T[k]=!0,T[a]=T[s]=T[y]=T[c]=T[_]=T[l]=T[u]=T[h]=T[d]=T[f]=T[p]=T[v]=T[m]=T[g]=T[b]=!1,e.exports=L},4897:function(e,t,n){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var i=n("f0d9"),r=h(i),o=n("2b0e"),a=h(o),s=n("3c4e"),c=h(s),l=n("9d7e"),u=h(l);function h(e){return e&&e.__esModule?e:{default:e}}var d=(0,u.default)(a.default),f=r.default,p=!1,v=function(){var e=Object.getPrototypeOf(this||a.default).$t;if("function"===typeof e&&a.default.locale)return p||(p=!0,a.default.locale(a.default.config.lang,(0,c.default)(f,a.default.locale(a.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},m=t.t=function(e,t){var n=v.apply(this,arguments);if(null!==n&&void 0!==n)return n;for(var i=e.split("."),r=f,o=0,a=i.length;oy;y++)if(m=t?b(a(p=e[y])[0],p[1]):b(e[y]),m===l||m===u)return m}else for(v=g.call(e);!(p=v.next()).done;)if(m=r(v,b,p.value,t),m===l||m===u)return m};t.BREAK=l,t.RETURN=u},"4a7b":function(e,t,n){"use strict";var i=n("c532");e.exports=function(e,t){t=t||{};var n={};return i.forEach(["url","method","params","data"],function(e){"undefined"!==typeof t[e]&&(n[e]=t[e])}),i.forEach(["headers","auth","proxy"],function(r){i.isObject(t[r])?n[r]=i.deepMerge(e[r],t[r]):"undefined"!==typeof t[r]?n[r]=t[r]:i.isObject(e[r])?n[r]=i.deepMerge(e[r]):"undefined"!==typeof e[r]&&(n[r]=e[r])}),i.forEach(["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"],function(i){"undefined"!==typeof t[i]?n[i]=t[i]:"undefined"!==typeof e[i]&&(n[i]=e[i])}),n}},"4a7f":function(e,t,n){var i=n("d10f"),r=n("3b3f"),o=n("ecf5"),a=n("4200");function s(e,t,n){if(!a(n))return!1;var s=typeof t;return!!("number"==s?r(n)&&o(t,n.length):"string"==s&&t in n)&&i(n[t],e)}e.exports=s},"4b26":function(e,t,n){"use strict";t.__esModule=!0;var i=n("2b0e"),r=a(i),o=n("5924");function a(e){return e&&e.__esModule?e:{default:e}}var s=!1,c=!1,l=2e3,u=function(){if(!r.default.prototype.$isServer){var e=d.modalDom;return e?s=!0:(s=!1,e=document.createElement("div"),d.modalDom=e,e.addEventListener("touchmove",function(e){e.preventDefault(),e.stopPropagation()}),e.addEventListener("click",function(){d.doOnModalClick&&d.doOnModalClick()})),e}},h={},d={modalFade:!0,getInstance:function(e){return h[e]},register:function(e,t){e&&t&&(h[e]=t)},deregister:function(e){e&&(h[e]=null,delete h[e])},nextZIndex:function(){return d.zIndex++},modalStack:[],doOnModalClick:function(){var e=d.modalStack[d.modalStack.length-1];if(e){var t=d.getInstance(e.id);t&&t.closeOnClickModal&&t.close()}},openModal:function(e,t,n,i,a){if(!r.default.prototype.$isServer&&e&&void 0!==t){this.modalFade=a;for(var c=this.modalStack,l=0,h=c.length;l0){var i=t[t.length-1];if(i.id===e){if(i.modalClass){var r=i.modalClass.trim().split(/\s+/);r.forEach(function(e){return(0,o.removeClass)(n,e)})}t.pop(),t.length>0&&(n.style.zIndex=t[t.length-1].zIndex)}else for(var a=t.length-1;a>=0;a--)if(t[a].id===e){t.splice(a,1);break}}0===t.length&&(this.modalFade&&(0,o.addClass)(n,"v-modal-leave"),setTimeout(function(){0===t.length&&(n.parentNode&&n.parentNode.removeChild(n),n.style.display="none",d.modalDom=void 0),(0,o.removeClass)(n,"v-modal-leave")},200))}};Object.defineProperty(d,"zIndex",{configurable:!0,get:function(){return c||(l=(r.default.prototype.$ELEMENT||{}).zIndex||l,c=!0),l},set:function(e){l=e}});var f=function(){if(!r.default.prototype.$isServer&&d.modalStack.length>0){var e=d.modalStack[d.modalStack.length-1];if(!e)return;var t=d.getInstance(e.id);return t}};r.default.prototype.$isServer||window.addEventListener("keydown",function(e){if(27===e.keyCode){var t=f();t&&t.closeOnPressEscape&&(t.handleClose?t.handleClose():t.handleAction?t.handleAction("cancel"):t.close())}}),t.default=d},"4b34":function(e,t){function n(e,t){return null==e?void 0:e[t]}e.exports=n},"4bf8":function(e,t,n){var i=n("be13");e.exports=function(e){return Object(i(e))}},"4c95":function(e,t,n){"use strict";var i=n("e53d"),r=n("584a"),o=n("d9f6"),a=n("8e60"),s=n("5168")("species");e.exports=function(e){var t="function"==typeof r[e]?r[e]:i[e];a&&t&&!t[s]&&o.f(t,s,{configurable:!0,get:function(){return this}})}},"4cb2":function(e,t,n){"use strict";n.r(t);var i=n("41b2"),r=n.n(i),o=n("1098"),a=n.n(o),s=/%[sdj%]/g,c=function(){};function l(){for(var e=arguments.length,t=Array(e),n=0;n=o)return e;switch(e){case"%s":return String(t[i++]);case"%d":return Number(t[i++]);case"%j":try{return JSON.stringify(t[i++])}catch(n){return"[Circular]"}break;default:return e}}),c=t[i];i()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},x={integer:function(e){return x.number(e)&&parseInt(e,10)===e},float:function(e){return x.number(e)&&!x.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(t){return!1}},date:function(e){return"function"===typeof e.getTime&&"function"===typeof e.getMonth&&"function"===typeof e.getYear},number:function(e){return!isNaN(e)&&"number"===typeof e},object:function(e){return"object"===("undefined"===typeof e?"undefined":a()(e))&&!x.array(e)},method:function(e){return"function"===typeof e},email:function(e){return"string"===typeof e&&!!e.match(w.email)&&e.length<255},url:function(e){return"string"===typeof e&&!!e.match(w.url)},hex:function(e){return"string"===typeof e&&!!e.match(w.hex)}};function S(e,t,n,i,r){if(e.required&&void 0===t)y(e,t,n,i,r);else{var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;o.indexOf(s)>-1?x[s](t)||i.push(l(r.messages.types[s],e.fullField,e.type)):s&&("undefined"===typeof t?"undefined":a()(t))!==e.type&&i.push(l(r.messages.types[s],e.fullField,e.type))}}var E=S;function O(e,t,n,i,r){var o="number"===typeof e.len,a="number"===typeof e.min,s="number"===typeof e.max,c=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=t,h=null,d="number"===typeof t,f="string"===typeof t,p=Array.isArray(t);if(d?h="number":f?h="string":p&&(h="array"),!h)return!1;p&&(u=t.length),f&&(u=t.replace(c,"_").length),o?u!==e.len&&i.push(l(r.messages[h].len,e.fullField,e.len)):a&&!s&&ue.max?i.push(l(r.messages[h].max,e.fullField,e.max)):a&&s&&(ue.max)&&i.push(l(r.messages[h].range,e.fullField,e.min,e.max))}var M=O,z="enum";function k(e,t,n,i,r){e[z]=Array.isArray(e[z])?e[z]:[],-1===e[z].indexOf(t)&&i.push(l(r.messages[z],e.fullField,e[z].join(", ")))}var T=k;function L(e,t,n,i,r){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||i.push(l(r.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"===typeof e.pattern){var o=new RegExp(e.pattern);o.test(t)||i.push(l(r.messages.pattern.mismatch,e.fullField,t,e.pattern))}}var A=L,H={required:y,whitespace:C,type:E,range:M,enum:T,pattern:A};function V(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t,"string")&&!e.required)return n();H.required(e,t,i,o,r,"string"),h(t,"string")||(H.type(e,t,i,o,r),H.range(e,t,i,o,r),H.pattern(e,t,i,o,r),!0===e.whitespace&&H.whitespace(e,t,i,o,r))}n(o)}var N=V;function I(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&H.type(e,t,i,o,r)}n(o)}var D=I;function P(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&(H.type(e,t,i,o,r),H.range(e,t,i,o,r))}n(o)}var $=P;function R(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&H.type(e,t,i,o,r)}n(o)}var j=R;function F(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),h(t)||H.type(e,t,i,o,r)}n(o)}var B=F;function W(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&(H.type(e,t,i,o,r),H.range(e,t,i,o,r))}n(o)}var U=W;function K(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&(H.type(e,t,i,o,r),H.range(e,t,i,o,r))}n(o)}var q=K;function G(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t,"array")&&!e.required)return n();H.required(e,t,i,o,r,"array"),h(t,"array")||(H.type(e,t,i,o,r),H.range(e,t,i,o,r))}n(o)}var Y=G;function X(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),void 0!==t&&H.type(e,t,i,o,r)}n(o)}var Q=X,J="enum";function Z(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();H.required(e,t,i,o,r),t&&H[J](e,t,i,o,r)}n(o)}var ee=Z;function te(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t,"string")&&!e.required)return n();H.required(e,t,i,o,r),h(t,"string")||H.pattern(e,t,i,o,r)}n(o)}var ne=te;function ie(e,t,n,i,r){var o=[],a=e.required||!e.required&&i.hasOwnProperty(e.field);if(a){if(h(t)&&!e.required)return n();if(H.required(e,t,i,o,r),!h(t)){var s=void 0;s="number"===typeof t?new Date(t):t,H.type(e,s,i,o,r),s&&H.range(e,s.getTime(),i,o,r)}}n(o)}var re=ie;function oe(e,t,n,i,r){var o=[],s=Array.isArray(t)?"array":"undefined"===typeof t?"undefined":a()(t);H.required(e,t,i,o,r,s),n(o)}var ae=oe;function se(e,t,n,i,r){var o=e.type,a=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(h(t,o)&&!e.required)return n();H.required(e,t,i,a,r,o),h(t,o)||H.type(e,t,i,a,r)}n(a)}var ce=se,le={string:N,method:D,number:$,boolean:j,regexp:B,integer:U,float:q,array:Y,object:Q,enum:ee,pattern:ne,date:re,url:ce,hex:ce,email:ce,required:ae};function ue(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var he=ue();function de(e){this.rules=null,this._messages=he,this.define(e)}de.prototype={messages:function(e){return e&&(this._messages=g(ue(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==("undefined"===typeof e?"undefined":a()(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments[2],o=e,s=n,u=i;if("function"===typeof s&&(u=s,s={}),this.rules&&0!==Object.keys(this.rules).length){if(s.messages){var h=this.messages();h===he&&(h=ue()),g(h,s.messages),s.messages=h}else s.messages=this.messages();var d=void 0,f=void 0,p={},b=s.keys||Object.keys(this.rules);b.forEach(function(n){d=t.rules[n],f=o[n],d.forEach(function(i){var a=i;"function"===typeof a.transform&&(o===e&&(o=r()({},o)),f=o[n]=a.transform(f)),a="function"===typeof a?{validator:a}:r()({},a),a.validator=t.getValidationMethod(a),a.field=n,a.fullField=a.fullField||n,a.type=t.getType(a),a.validator&&(p[n]=p[n]||[],p[n].push({rule:a,value:f,source:o,field:n}))})});var y={};v(p,s,function(e,t){var n=e.rule,i=("object"===n.type||"array"===n.type)&&("object"===a()(n.fields)||"object"===a()(n.defaultField));function o(e,t){return r()({},t,{fullField:n.fullField+"."+e})}function u(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],u=a;if(Array.isArray(u)||(u=[u]),u.length&&c("async-validator:",u),u.length&&n.message&&(u=[].concat(n.message)),u=u.map(m(n)),s.first&&u.length)return y[n.field]=1,t(u);if(i){if(n.required&&!e.value)return u=n.message?[].concat(n.message).map(m(n)):s.error?[s.error(n,l(s.messages.required,n.field))]:[],t(u);var h={};if(n.defaultField)for(var d in e.value)e.value.hasOwnProperty(d)&&(h[d]=n.defaultField);for(var f in h=r()({},h,e.rule.fields),h)if(h.hasOwnProperty(f)){var p=Array.isArray(h[f])?h[f]:[h[f]];h[f]=p.map(o.bind(null,f))}var v=new de(h);v.messages(s.messages),e.rule.options&&(e.rule.options.messages=s.messages,e.rule.options.error=s.error),v.validate(e.value,e.rule.options||s,function(e){t(e&&e.length?u.concat(e):e)})}else t(u)}i=i&&(n.required||!n.required&&e.value),n.field=e.field;var h=n.validator(n,e.value,u,e.source,s);h&&h.then&&h.then(function(){return u()},function(e){return u(e)})},function(e){_(e)})}else u&&u();function _(e){var t=void 0,n=void 0,i=[],r={};function o(e){Array.isArray(e)?i=i.concat.apply(i,e):i.push(e)}for(t=0;t2&&void 0!==arguments[2]&&arguments[2],r=t,o=!0,s=void 0;a()(t)||(r={type:t});var c=r._vueTypes_name?r._vueTypes_name+" - ":"";return l.call(r,"type")&&null!==r.type&&(v(r.type)?(o=r.type.some(function(t){return e(t,n,!0)}),s=r.type.map(function(e){return h(e)}).join(" or ")):(s=h(r),o="Array"===s?v(n):"Object"===s?a()(n):"String"===s||"Number"===s||"Boolean"===s||"Function"===s?d(n)===s:n instanceof r.type)),o?l.call(r,"validator")&&m(r.validator)?(o=r.validator(n),o||!1!==i||C(c+"custom validation failed"),o):o:(!1===i&&C(c+'value "'+n+'" should be of type "'+s+'"'),!1)},C=f,w={get any(){return y("any",{type:null})},get func(){return y("function",{type:Function}).def(S.func)},get bool(){return y("boolean",{type:Boolean}).def(S.bool)},get string(){return y("string",{type:String}).def(S.string)},get number(){return y("number",{type:Number}).def(S.number)},get array(){return y("array",{type:Array}).def(S.array)},get object(){return y("object",{type:Object}).def(S.object)},get integer(){return y("integer",{type:Number,validator:function(e){return p(e)}}).def(S.integer)},get symbol(){return y("symbol",{type:null,validator:function(e){return"symbol"===("undefined"===typeof e?"undefined":r()(e))}})},custom:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"custom validation failed";if("function"!==typeof e)throw new TypeError("[VueTypes error]: You must provide a function as argument");return y(e.name||"<>",{validator:function(){var n=e.apply(void 0,arguments);return n||C(this._vueTypes_name+" - "+t),n}})},oneOf:function(e){if(!v(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");var t='oneOf - value should be one of "'+e.join('", "')+'"',n=e.reduce(function(e,t){return null!==t&&void 0!==t&&-1===e.indexOf(t.constructor)&&e.push(t.constructor),e},[]);return y("oneOf",{type:n.length>0?n:null,validator:function(n){var i=-1!==e.indexOf(n);return i||C(t),i}})},instanceOf:function(e){return y("instanceOf",{type:e})},oneOfType:function(e){if(!v(e))throw new TypeError("[VueTypes error]: You must provide an array as argument");var t=!1,n=e.reduce(function(e,n){if(a()(n)){if("oneOf"===n._vueTypes_name)return e.concat(n.type||[]);if(n.type&&!m(n.validator)){if(v(n.type))return e.concat(n.type);e.push(n.type)}else m(n.validator)&&(t=!0);return e}return e.push(n),e},[]);if(!t)return y("oneOfType",{type:n}).def(void 0);var i=e.map(function(e){return e&&v(e.type)?e.type.map(h):h(e)}).reduce(function(e,t){return e.concat(v(t)?t:[t])},[]).join('", "');return this.custom(function(t){var n=e.some(function(e){return"oneOf"===e._vueTypes_name?!e.type||_(e.type,t,!0):_(e,t,!0)});return n||C('oneOfType - value type should be one of "'+i+'"'),n}).def(void 0)},arrayOf:function(e){return y("arrayOf",{type:Array,validator:function(t){var n=t.every(function(t){return _(e,t)});return n||C('arrayOf - value must be an array of "'+h(e)+'"'),n}})},objectOf:function(e){return y("objectOf",{type:Object,validator:function(t){var n=Object.keys(t).every(function(n){return _(e,t[n])});return n||C('objectOf - value must be an object of "'+h(e)+'"'),n}})},shape:function(e){var t=Object.keys(e),n=t.filter(function(t){return e[t]&&!0===e[t].required}),i=y("shape",{type:Object,validator:function(i){var r=this;if(!a()(i))return!1;var o=Object.keys(i);return n.length>0&&n.some(function(e){return-1===o.indexOf(e)})?(C('shape - at least one of required properties "'+n.join('", "')+'" is not present'),!1):o.every(function(n){if(-1===t.indexOf(n))return!0===r._vueTypes_isLoose||(C('shape - object is missing "'+n+'" property'),!1);var o=e[n];return _(o,i[n])})}});return Object.defineProperty(i,"_vueTypes_isLoose",{enumerable:!1,writable:!0,value:!1}),Object.defineProperty(i,"loose",{get:function(){return this._vueTypes_isLoose=!0,this},enumerable:!1}),i}},x=function(){return{func:void 0,bool:void 0,string:void 0,number:void 0,array:void 0,object:void 0,integer:void 0}},S=x();Object.defineProperty(w,"sensibleDefaults",{enumerable:!1,set:function(e){!1===e?S={}:!0===e?S=x():a()(e)&&(S=e)},get:function(){return S}});t["a"]=w},"4dda":function(e,t,n){n("ec30")("Float64",8,function(e){return function(t,n,i){return e(this,t,n,i)}})},"4e4b":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=60)}([function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},,,function(e,t){e.exports=n("8122")},function(e,t){e.exports=n("d010")},function(e,t){e.exports=n("e974")},function(e,t){e.exports=n("6b7c")},,,,function(e,t){e.exports=n("f3ad")},,function(e,t){e.exports=n("417f")},function(e,t){e.exports=n("4010")},function(e,t){e.exports=n("0e15")},function(e,t){e.exports=n("14e9")},,,,,function(e,t){e.exports=n("4897")},function(e,t){e.exports=n("12f2")},function(e,t){e.exports=n("d397")},,,,,,,,,function(e,t){e.exports=n("2a5e")},,function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[n("span",[e._v(e._s(e.currentLabel))])])],2)},r=[];i._withStripped=!0;var o=n(4),a=n.n(o),s=n(3),c="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},l={mixins:[a.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&"object"===("undefined"===typeof e?"undefined":c(e))&&"object"===("undefined"===typeof t?"undefined":c(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(s["getValueByPath"])(e,n)===Object(s["getValueByPath"])(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(s["getValueByPath"])(e,n)===Object(s["getValueByPath"])(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(s["escapeRegexpString"])(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=l,h=n(0),d=Object(h["a"])(u,i,r,!1,null,null,null);d.options.__file="packages/select/src/option.vue";t["a"]=d.exports},,,function(e,t){e.exports=n("8bbc")},,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?n("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?n("span",[n("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[n("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?n("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[n("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():n("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return n("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(n){e.deleteTag(n,t)}}},[n("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?n("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),n("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?n("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),n("template",{slot:"suffix"},[n("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?n("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),n("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[n("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[n("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?n("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):n("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)},r=[];i._withStripped=!0;var o=n(4),a=n.n(o),s=n(21),c=n.n(s),l=n(6),u=n.n(l),h=n(10),d=n.n(h),f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":e.$parent.multiple},e.popperClass],style:{minWidth:e.minWidth}},[e._t("default")],2)},p=[];f._withStripped=!0;var v=n(5),m=n.n(v),g={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[m.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},b=g,y=n(0),_=Object(y["a"])(b,f,p,!1,null,null,null);_.options.__file="packages/select/src/select-dropdown.vue";var C=_.exports,w=n(33),x=n(36),S=n.n(x),E=n(15),O=n.n(E),M=n(14),z=n.n(M),k=n(12),T=n.n(k),L=n(13),A=n(20),H=n(31),V=n.n(H),N=n(3),I={data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"===typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var n=this.options[this.hoverIndex];!0!==n.disabled&&!0!==n.groupDisabled&&n.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}},D=n(22),P={mixins:[a.a,u.a,c()("reference"),I],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(N["isIE"])()&&!Object(N["isEdge"])()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value,t=this.clearable&&!this.selectDisabled&&this.inputHovering&&e;return t},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:d.a,ElSelectMenu:C,ElOption:w["a"],ElTag:S.a,ElScrollbar:O.a},directives:{Clickoutside:T.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(A["t"])("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(N["valueEquals"])(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.handleQueryChange(t);else{var n=t[t.length-1]||"";this.isOnComposition=!Object(D["isKorean"])(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!==typeof this.filterMethod&&"function"!==typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"===typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"===typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var n=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");V()(n,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(N["valueEquals"])(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,n="[object object]"===Object.prototype.toString.call(e).toLowerCase(),i="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),o=this.cachedOptions.length-1;o>=0;o--){var a=this.cachedOptions[o],s=n?Object(N["getValueByPath"])(a.value,this.valueKey)===Object(N["getValueByPath"])(e,this.valueKey):a.value===e;if(s){t=a;break}}if(t)return t;var c=n||i||r?"":e,l={value:e,currentLabel:c};return this.multiple&&(l.hitState=!1),l},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var n=[];Array.isArray(this.value)&&this.value.forEach(function(t){n.push(e.getOption(t))}),this.selected=n,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,n=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],i=e.$refs.tags,r=e.initialInputHeight||40;n.style.height=0===e.selected.length?r+"px":Math.max(i?i.clientHeight+(i.clientHeight>r?6:0):0,r)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var n=this;if(this.multiple){var i=(this.value||[]).slice(),r=this.getValueIndex(i,e.value);r>-1?i.splice(r,1):(this.multipleLimit<=0||i.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(n){var i=this.valueKey,r=-1;return e.some(function(e,n){return Object(N["getValueByPath"])(e,i)===Object(N["getValueByPath"])(t,i)&&(r=n,!0)}),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var n=this.selected.indexOf(t);if(n>-1&&!this.selectDisabled){var i=this.value.slice();i.splice(n,1),this.$emit("input",i),this.emitChange(i),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var n=0;n!==this.options.length;++n){var i=this.options[n];if(this.query){if(!i.disabled&&!i.groupDisabled&&i.visible){this.hoverIndex=n;break}}else if(i.itemSelected){this.hoverIndex=n;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(N["getValueByPath"])(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=z()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=z()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(L["addResizeListener"])(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var n={medium:36,small:32,mini:28};this.initialInputHeight=t.$el.getBoundingClientRect().height||n[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(L["removeResizeListener"])(this.$el,this.handleResize)}},$=P,R=Object(y["a"])($,i,r,!1,null,null,null);R.options.__file="packages/select/src/select.vue";var j=R.exports;j.install=function(e){e.component(j.name,j)};t["default"]=j}])},"4ee1":function(e,t,n){var i=n("5168")("iterator"),r=!1;try{var o=[7][i]();o["return"]=function(){r=!0},Array.from(o,function(){throw 2})}catch(a){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var o=[7],s=o[i]();s.next=function(){return{done:n=!0}},o[i]=function(){return s},e(o)}catch(a){}return n}},"4f37":function(e,t,n){"use strict";n("aa77")("trim",function(e){return function(){return e(this,3)}})},"4f7f":function(e,t,n){"use strict";var i=n("c26b"),r=n("b39a"),o="Set";e.exports=n("e0b8")(o,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return i.def(r(this,o),e=0===e?0:e,e)}},i)},"504c":function(e,t,n){var i=n("9e1e"),r=n("0d58"),o=n("6821"),a=n("52a7").f;e.exports=function(e){return function(t){var n,s=o(t),c=r(s),l=c.length,u=0,h=[];while(l>u)n=c[u++],i&&!a.call(s,n)||h.push(e?[n,s[n]]:s[n]);return h}}},"50d8":function(e,t){function n(e,t){var n=-1,i=Array(e);while(++n0?this._openTimer=setTimeout(function(){t._openTimer=null,t.doOpen(n)},i):this.doOpen(n)},doOpen:function(e){if(!this.$isServer&&(!this.willOpen||this.willOpen())&&!this.opened){this._opening=!0;var t=this.$el,n=e.modal,i=e.zIndex;if(i&&(c.default.zIndex=i),n&&(this._closing&&(c.default.closeModal(this._popupId),this._closing=!1),c.default.openModal(this._popupId,c.default.nextZIndex(),this.modalAppendToBody?void 0:t,e.modalClass,e.modalFade),e.lockScroll)){this.withoutHiddenClass=!(0,h.hasClass)(document.body,"el-popup-parent--hidden"),this.withoutHiddenClass&&(this.bodyPaddingRight=document.body.style.paddingRight,this.computedBodyPaddingRight=parseInt((0,h.getStyle)(document.body,"paddingRight"),10)),p=(0,u.default)();var r=document.documentElement.clientHeight0&&(r||"scroll"===o)&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.computedBodyPaddingRight+p+"px"),(0,h.addClass)(document.body,"el-popup-parent--hidden")}"static"===getComputedStyle(t).position&&(t.style.position="absolute"),t.style.zIndex=c.default.nextZIndex(),this.opened=!0,this.onOpen&&this.onOpen(),this.doAfterOpen()}},doAfterOpen:function(){this._opening=!1},close:function(){var e=this;if(!this.willClose||this.willClose()){null!==this._openTimer&&(clearTimeout(this._openTimer),this._openTimer=null),clearTimeout(this._closeTimer);var t=Number(this.closeDelay);t>0?this._closeTimer=setTimeout(function(){e._closeTimer=null,e.doClose()},t):this.doClose()}},doClose:function(){this._closing=!0,this.onClose&&this.onClose(),this.lockScroll&&setTimeout(this.restoreBodyStyle,200),this.opened=!1,this.doAfterClose()},doAfterClose:function(){c.default.closeModal(this._popupId),this._closing=!1},restoreBodyStyle:function(){this.modal&&this.withoutHiddenClass&&(document.body.style.paddingRight=this.bodyPaddingRight,(0,h.removeClass)(document.body,"el-popup-parent--hidden")),this.withoutHiddenClass=!0}}},t.PopupManager=c.default},5147:function(e,t,n){var i=n("2b4c")("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[i]=!1,!"/./"[e](t)}catch(r){}}return!0}},5168:function(e,t,n){var i=n("dbdb")("wks"),r=n("62a0"),o=n("e53d").Symbol,a="function"==typeof o,s=e.exports=function(e){return i[e]||(i[e]=a&&o[e]||(a?o:r)("Symbol."+e))};s.store=i},"51b6":function(e,t,n){n("a3c3"),e.exports=n("584a").Object.assign},"520a":function(e,t,n){"use strict";var i=n("0bfb"),r=RegExp.prototype.exec,o=String.prototype.replace,a=r,s="lastIndex",c=function(){var e=/a/,t=/b*/g;return r.call(e,"a"),r.call(t,"a"),0!==e[s]||0!==t[s]}(),l=void 0!==/()??/.exec("")[1],u=c||l;u&&(a=function(e){var t,n,a,u,h=this;return l&&(n=new RegExp("^"+h.source+"$(?!\\s)",i.call(h))),c&&(t=h[s]),a=r.call(h,e),c&&a&&(h[s]=h.global?a.index+a[0].length:t),l&&a&&a.length>1&&o.call(a[0],n,function(){for(u=1;u0),"Math",{asinh:o})},"53e2":function(e,t,n){var i=n("07e3"),r=n("241e"),o=n("5559")("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),i(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},5488:function(e,t,n){"use strict";t.__esModule=!0;var i=n("5924");function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(){r(this,e)}return e.prototype.beforeEnter=function(e){(0,i.addClass)(e,"collapse-transition"),e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.style.height="0",e.style.paddingTop=0,e.style.paddingBottom=0},e.prototype.enter=function(e){e.dataset.oldOverflow=e.style.overflow,0!==e.scrollHeight?(e.style.height=e.scrollHeight+"px",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom):(e.style.height="",e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom),e.style.overflow="hidden"},e.prototype.afterEnter=function(e){(0,i.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow},e.prototype.beforeLeave=function(e){e.dataset||(e.dataset={}),e.dataset.oldPaddingTop=e.style.paddingTop,e.dataset.oldPaddingBottom=e.style.paddingBottom,e.dataset.oldOverflow=e.style.overflow,e.style.height=e.scrollHeight+"px",e.style.overflow="hidden"},e.prototype.leave=function(e){0!==e.scrollHeight&&((0,i.addClass)(e,"collapse-transition"),e.style.height=0,e.style.paddingTop=0,e.style.paddingBottom=0)},e.prototype.afterLeave=function(e){(0,i.removeClass)(e,"collapse-transition"),e.style.height="",e.style.overflow=e.dataset.oldOverflow,e.style.paddingTop=e.dataset.oldPaddingTop,e.style.paddingBottom=e.dataset.oldPaddingBottom},e}();t.default={name:"ElCollapseTransition",functional:!0,render:function(e,t){var n=t.children,i={on:new o};return e("transition",i,n)}}},"549b":function(e,t,n){"use strict";var i=n("d864"),r=n("63b6"),o=n("241e"),a=n("b0dc"),s=n("3702"),c=n("b447"),l=n("20fd"),u=n("7cd6");r(r.S+r.F*!n("4ee1")(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,r,h,d=o(e),f="function"==typeof this?this:Array,p=arguments.length,v=p>1?arguments[1]:void 0,m=void 0!==v,g=0,b=u(d);if(m&&(v=i(v,p>2?arguments[2]:void 0,2)),void 0==b||f==Array&&s(b))for(t=c(d.length),n=new f(t);t>g;g++)l(n,g,m?v(d[g],g):d[g]);else for(h=b.call(d),n=new f;!(r=h.next()).done;g++)l(n,g,m?a(h,v,[r.value,g],!0):r.value);return n.length=g,n}})},"54a1":function(e,t,n){n("6c1c"),n("1654"),e.exports=n("95d5")},"54a8":function(e,t,n){"use strict";var i=n("5ca1"),r=n("79e5"),o=n("bef9"),a=1..toPrecision;i(i.P+i.F*(r(function(){return"1"!==a.call(1,void 0)})||!r(function(){a.call({})})),"Number",{toPrecision:function(e){var t=o(this,"Number#toPrecision: incorrect invocation!");return void 0===e?a.call(t):a.call(t,e)}})},"54eb":function(e,t,n){var i=n("8eeb"),r=n("32f4");function o(e,t){return i(e,r(e),t)}e.exports=o},"551c":function(e,t,n){"use strict";var i,r,o,a,s=n("2d00"),c=n("7726"),l=n("9b43"),u=n("23c6"),h=n("5ca1"),d=n("d3f4"),f=n("d8e8"),p=n("f605"),v=n("4a59"),m=n("ebd6"),g=n("1991").set,b=n("8079")(),y=n("a5b8"),_=n("9c80"),C=n("a25f"),w=n("bcaa"),x="Promise",S=c.TypeError,E=c.process,O=E&&E.versions,M=O&&O.v8||"",z=c[x],k="process"==u(E),T=function(){},L=r=y.f,A=!!function(){try{var e=z.resolve(1),t=(e.constructor={})[n("2b4c")("species")]=function(e){e(T,T)};return(k||"function"==typeof PromiseRejectionEvent)&&e.then(T)instanceof t&&0!==M.indexOf("6.6")&&-1===C.indexOf("Chrome/66")}catch(i){}}(),H=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},V=function(e,t){if(!e._n){e._n=!0;var n=e._c;b(function(){var i=e._v,r=1==e._s,o=0,a=function(t){var n,o,a,s=r?t.ok:t.fail,c=t.resolve,l=t.reject,u=t.domain;try{s?(r||(2==e._h&&D(e),e._h=1),!0===s?n=i:(u&&u.enter(),n=s(i),u&&(u.exit(),a=!0)),n===t.promise?l(S("Promise-chain cycle")):(o=H(n))?o.call(n,c,l):c(n)):l(i)}catch(h){u&&!a&&u.exit(),l(h)}};while(n.length>o)a(n[o++]);e._c=[],e._n=!1,t&&!e._h&&N(e)})}},N=function(e){g.call(c,function(){var t,n,i,r=e._v,o=I(e);if(o&&(t=_(function(){k?E.emit("unhandledRejection",r,e):(n=c.onunhandledrejection)?n({promise:e,reason:r}):(i=c.console)&&i.error&&i.error("Unhandled promise rejection",r)}),e._h=k||I(e)?2:1),e._a=void 0,o&&t.e)throw t.v})},I=function(e){return 1!==e._h&&0===(e._a||e._c).length},D=function(e){g.call(c,function(){var t;k?E.emit("rejectionHandled",e):(t=c.onrejectionhandled)&&t({promise:e,reason:e._v})})},P=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),V(t,!0))},$=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw S("Promise can't be resolved itself");(t=H(e))?b(function(){var i={_w:n,_d:!1};try{t.call(e,l($,i,1),l(P,i,1))}catch(r){P.call(i,r)}}):(n._v=e,n._s=1,V(n,!1))}catch(i){P.call({_w:n,_d:!1},i)}}};A||(z=function(e){p(this,z,x,"_h"),f(e),i.call(this);try{e(l($,this,1),l(P,this,1))}catch(t){P.call(this,t)}},i=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n("dcbc")(z.prototype,{then:function(e,t){var n=L(m(this,z));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=k?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&V(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new i;this.promise=e,this.resolve=l($,e,1),this.reject=l(P,e,1)},y.f=L=function(e){return e===z||e===a?new o(e):r(e)}),h(h.G+h.W+h.F*!A,{Promise:z}),n("7f20")(z,x),n("7a56")(x),a=n("8378")[x],h(h.S+h.F*!A,x,{reject:function(e){var t=L(this),n=t.reject;return n(e),t.promise}}),h(h.S+h.F*(s||!A),x,{resolve:function(e){return w(s&&this===a?z:this,e)}}),h(h.S+h.F*!(A&&n("5cc5")(function(e){z.all(e)["catch"](T)})),x,{all:function(e){var t=this,n=L(t),i=n.resolve,r=n.reject,o=_(function(){var n=[],o=0,a=1;v(e,!1,function(e){var s=o++,c=!1;n.push(void 0),a++,t.resolve(e).then(function(e){c||(c=!0,n[s]=e,--a||i(n))},r)}),--a||i(n)});return o.e&&r(o.v),n.promise},race:function(e){var t=this,n=L(t),i=n.reject,r=_(function(){v(e,!1,function(e){t.resolve(e).then(n.resolve,i)})});return r.e&&i(r.v),n.promise}})},5537:function(e,t,n){var i=n("8378"),r=n("7726"),o="__core-js_shared__",a=r[o]||(r[o]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n("2d00")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},5559:function(e,t,n){var i=n("dbdb")("keys"),r=n("62a0");e.exports=function(e){return i[e]||(i[e]=r(e))}},"55a3":function(e,t){function n(e){return this.__data__.has(e)}e.exports=n},"55af":function(e,t,n){},"55dd":function(e,t,n){"use strict";var i=n("5ca1"),r=n("d8e8"),o=n("4bf8"),a=n("79e5"),s=[].sort,c=[1,2,3];i(i.P+i.F*(a(function(){c.sort(void 0)})||!a(function(){c.sort(null)})||!n("2f21")(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),r(e))}})},"55f1":function(e,t,n){"use strict";var i=n("92fa"),r=n.n(i),o=n("6042"),a=n.n(o),s=n("41b2"),c=n.n(s),l=n("0464"),u={name:"MenuDivider",props:{disabled:{type:Boolean,default:!0},rootPrefixCls:String},render:function(){var e=arguments[0],t=this.$props.rootPrefixCls;return e("li",{class:t+"-item-divider"})}},h=n("1098"),d=n.n(h),f=n("4d91"),p=n("2b0e"),v=n("46cf"),m=n.n(v);function g(e,t){var n=t;while(n){if(n===e)return!0;n=n.parentNode}return!1}var b=n("daa3"),y=n("d41d"),_=n("f194"),C=n("6a21"),w=void 0,x={Webkit:"-webkit-",Moz:"-moz-",ms:"-ms-",O:"-o-"};function S(){if(void 0!==w)return w;w="";var e=document.createElement("p").style,t="Transform";for(var n in x)n+t in e&&(w=n);return w}function E(){return S()?S()+"TransitionProperty":"transitionProperty"}function O(){return S()?S()+"Transform":"transform"}function M(e,t){var n=E();n&&(e.style[n]=t,"transitionProperty"!==n&&(e.style.transitionProperty=t))}function z(e,t){var n=O();n&&(e.style[n]=t,"transform"!==n&&(e.style.transform=t))}function k(e){return e.style.transitionProperty||e.style[E()]}function T(e){var t=window.getComputedStyle(e,null),n=t.getPropertyValue("transform")||t.getPropertyValue(O());if(n&&"none"!==n){var i=n.replace(/[^0-9\-.,]/g,"").split(",");return{x:parseFloat(i[12]||i[4],0),y:parseFloat(i[13]||i[5],0)}}return{x:0,y:0}}var L=/matrix\((.*)\)/,A=/matrix3d\((.*)\)/;function H(e,t){var n=window.getComputedStyle(e,null),i=n.getPropertyValue("transform")||n.getPropertyValue(O());if(i&&"none"!==i){var r=void 0,o=i.match(L);if(o)o=o[1],r=o.split(",").map(function(e){return parseFloat(e,10)}),r[4]=t.x,r[5]=t.y,z(e,"matrix("+r.join(",")+")");else{var a=i.match(A)[1];r=a.split(",").map(function(e){return parseFloat(e,10)}),r[12]=t.x,r[13]=t.y,z(e,"matrix3d("+r.join(",")+")")}}else z(e,"translateX("+t.x+"px) translateY("+t.y+"px) translateZ(0)")}var V="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},N=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,I=void 0;function D(e){var t=e.style.display;e.style.display="none",e.offsetHeight,e.style.display=t}function P(e,t,n){var i=n;if("object"!==("undefined"===typeof t?"undefined":V(t)))return"undefined"!==typeof i?("number"===typeof i&&(i+="px"),void(e.style[t]=i)):I(e,t);for(var r in t)t.hasOwnProperty(r)&&P(e,r,t[r])}function $(e){var t=void 0,n=void 0,i=void 0,r=e.ownerDocument,o=r.body,a=r&&r.documentElement;return t=e.getBoundingClientRect(),n=t.left,i=t.top,n-=a.clientLeft||o.clientLeft||0,i-=a.clientTop||o.clientTop||0,{left:n,top:i}}function R(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],i="scroll"+(t?"Top":"Left");if("number"!==typeof n){var r=e.document;n=r.documentElement[i],"number"!==typeof n&&(n=r.body[i])}return n}function j(e){return R(e)}function F(e){return R(e,!0)}function B(e){var t=$(e),n=e.ownerDocument,i=n.defaultView||n.parentWindow;return t.left+=j(i),t.top+=F(i),t}function W(e){return null!==e&&void 0!==e&&e==e.window}function U(e){return W(e)?e.document:9===e.nodeType?e:e.ownerDocument}function K(e,t,n){var i=n,r="",o=U(e);return i=i||o.defaultView.getComputedStyle(e,null),i&&(r=i.getPropertyValue(t)||i[t]),r}var q=new RegExp("^("+N+")(?!px)[a-z%]+$","i"),G=/^(top|right|bottom|left)$/,Y="currentStyle",X="runtimeStyle",Q="left",J="px";function Z(e,t){var n=e[Y]&&e[Y][t];if(q.test(n)&&!G.test(t)){var i=e.style,r=i[Q],o=e[X][Q];e[X][Q]=e[Y][Q],i[Q]="fontSize"===t?"1em":n||0,n=i.pixelLeft+J,i[Q]=r,e[X][Q]=o}return""===n?"auto":n}function ee(e,t){return"left"===e?t.useCssRight?"right":e:t.useCssBottom?"bottom":e}function te(e){return"left"===e?"right":"right"===e?"left":"top"===e?"bottom":"bottom"===e?"top":void 0}function ne(e,t,n){"static"===P(e,"position")&&(e.style.position="relative");var i=-999,r=-999,o=ee("left",n),a=ee("top",n),s=te(o),c=te(a);"left"!==o&&(i=999),"top"!==a&&(r=999);var l="",u=B(e);("left"in t||"top"in t)&&(l=k(e)||"",M(e,"none")),"left"in t&&(e.style[s]="",e.style[o]=i+"px"),"top"in t&&(e.style[c]="",e.style[a]=r+"px"),D(e);var h=B(e),d={};for(var f in t)if(t.hasOwnProperty(f)){var p=ee(f,n),v="left"===f?i:r,m=u[f]-h[f];d[p]=p===f?v+m:v-m}P(e,d),D(e),("left"in t||"top"in t)&&M(e,l);var g={};for(var b in t)if(t.hasOwnProperty(b)){var y=ee(b,n),_=t[b]-u[b];g[y]=b===y?d[y]+_:d[y]-_}P(e,g)}function ie(e,t){var n=B(e),i=T(e),r={x:i.x,y:i.y};"left"in t&&(r.x=i.x+t.left-n.left),"top"in t&&(r.y=i.y+t.top-n.top),H(e,r)}function re(e,t,n){if(n.ignoreShake){var i=B(e),r=i.left.toFixed(0),o=i.top.toFixed(0),a=t.left.toFixed(0),s=t.top.toFixed(0);if(r===a&&o===s)return}n.useCssRight||n.useCssBottom?ne(e,t,n):n.useCssTransform&&O()in document.body.style?ie(e,t,n):ne(e,t,n)}function oe(e,t){for(var n=0;n=0&&t.left>=0&&t.bottom>t.top&&t.right>t.left?t:null}var Ee=Se;function Oe(e,t,n,i){var r=_e.clone(e),o={width:t.width,height:t.height};return i.adjustX&&r.left=n.left&&r.left+o.width>n.right&&(o.width-=r.left+o.width-n.right),i.adjustX&&r.left+o.width>n.right&&(r.left=Math.max(n.right-o.width,n.left)),i.adjustY&&r.top=n.top&&r.top+o.height>n.bottom&&(o.height-=r.top+o.height-n.bottom),i.adjustY&&r.top+o.height>n.bottom&&(r.top=Math.max(n.bottom-o.height,n.top)),_e.mix(r,o)}var Me=Oe;function ze(e){var t=void 0,n=void 0,i=void 0;if(_e.isWindow(e)||9===e.nodeType){var r=_e.getWindow(e);t={left:_e.getWindowScrollLeft(r),top:_e.getWindowScrollTop(r)},n=_e.viewportWidth(r),i=_e.viewportHeight(r)}else t=_e.offset(e),n=_e.outerWidth(e),i=_e.outerHeight(e);return t.width=n,t.height=i,t}var ke=ze;function Te(e,t){var n=t.charAt(0),i=t.charAt(1),r=e.width,o=e.height,a=e.left,s=e.top;return"c"===n?s+=o/2:"b"===n&&(s+=o),"c"===i?a+=r/2:"r"===i&&(a+=r),{left:a,top:s}}var Le=Te;function Ae(e,t,n,i,r){var o=Le(t,n[1]),a=Le(e,n[0]),s=[a.left-o.left,a.top-o.top];return{left:Math.round(e.left-s[0]+i[0]-r[0]),top:Math.round(e.top-s[1]+i[1]-r[1])}}var He=Ae;function Ve(e,t,n){return e.leftn.right}function Ne(e,t,n){return e.topn.bottom}function Ie(e,t,n){return e.left>n.right||e.left+t.widthn.bottom||e.top+t.height=t.right||n.top>=t.bottom}function Ue(e,t,n){var i=n.target||t,r=ke(i),o=!We(i);return Be(e,r,n,o)}Ue.__getOffsetParent=we,Ue.__getVisibleRectForElement=Ee;var Ke=Ue,qe=Object.assign||function(e){for(var t=1;t=0&&i<=s+l&&r>=0&&r<=c+u,f=[n.points[0],"cc"];return Be(e,h,qe({},n,{points:f}),d)}var Ye=Ge;function Xe(e,t){var n=void 0;function i(){n&&(clearTimeout(n),n=null)}function r(){i(),n=setTimeout(e,t)}return r.clear=i,r}function Qe(e,t){return e===t||!(!e||!t)&&("pageX"in t&&"pageY"in t?e.pageX===t.pageX&&e.pageY===t.pageY:"clientX"in t&&"clientY"in t&&(e.clientX===t.clientX&&e.clientY===t.clientY))}function Je(e){return e&&"object"===("undefined"===typeof e?"undefined":d()(e))&&e.window===e}var Ze=n("7b05"),et=n("0644"),tt=n.n(et);function nt(e){return"function"===typeof e&&e?e():null}function it(e){return"object"===("undefined"===typeof e?"undefined":d()(e))&&e?e:null}var rt={props:{childrenProps:f["a"].object,align:f["a"].object.isRequired,target:f["a"].oneOfType([f["a"].func,f["a"].object]).def(function(){return window}),monitorBufferTime:f["a"].number.def(50),monitorWindowResize:f["a"].bool.def(!1),disabled:f["a"].bool.def(!1)},data:function(){return this.aligned=!1,{}},mounted:function(){var e=this;this.$nextTick(function(){e.prevProps=c()({},e.$props);var t=e.$props;!e.aligned&&e.forceAlign(),!t.disabled&&t.monitorWindowResize&&e.startMonitorWindowResize()})},updated:function(){var e=this;this.$nextTick(function(){var t=e.prevProps,n=e.$props,i=!1;if(!n.disabled){var r=e.$el,o=r?r.getBoundingClientRect():null;if(t.disabled)i=!0;else{var a=nt(t.target),s=nt(n.target),l=it(t.target),u=it(n.target);Je(a)&&Je(s)?i=!1:(a!==s||a&&!s&&u||l&&u&&s||u&&!Qe(l,u))&&(i=!0);var h=e.sourceRect||{};i||!r||h.width===o.width&&h.height===o.height||(i=!0)}e.sourceRect=o}i&&e.forceAlign(),n.monitorWindowResize&&!n.disabled?e.startMonitorWindowResize():e.stopMonitorWindowResize(),e.prevProps=c()({},e.$props,{align:tt()(e.$props.align)})})},beforeDestroy:function(){this.stopMonitorWindowResize()},methods:{startMonitorWindowResize:function(){this.resizeHandler||(this.bufferMonitor=Xe(this.forceAlign,this.$props.monitorBufferTime),this.resizeHandler=Object(_["a"])(window,"resize",this.bufferMonitor))},stopMonitorWindowResize:function(){this.resizeHandler&&(this.bufferMonitor.clear(),this.resizeHandler.remove(),this.resizeHandler=null)},forceAlign:function(){var e=this.$props,t=e.disabled,n=e.target,i=e.align;if(!t&&n){var r=this.$el,o=void 0,a=nt(n),s=it(n);a?o=Ke(r,a,i):s&&(o=Ye(r,s,i)),this.aligned=!0,this.$listeners.align&&this.$listeners.align(r,o)}}},render:function(){var e=this.$props.childrenProps,t=this.$slots["default"][0];return e?Object(Ze["a"])(t,{props:e}):t}},ot=rt,at={props:{visible:f["a"].bool,hiddenClassName:f["a"].string},render:function(){var e=arguments[0],t=this.$props,n=t.hiddenClassName,i=(t.visible,null);if(n||!this.$slots["default"]||this.$slots["default"].length>1){var r="";i=e("div",{class:r},[this.$slots["default"]])}else i=this.$slots["default"][0];return i}},st={props:{hiddenClassName:f["a"].string.def(""),prefixCls:f["a"].string,visible:f["a"].bool},render:function(){var e=arguments[0],t=this.$props,n=t.prefixCls,i=t.visible,o=t.hiddenClassName,a=this.$listeners,s={on:a};return e("div",r()([s,{class:i?"":o}]),[e(at,{class:n+"-content",attrs:{visible:i}},[this.$slots["default"]])])}},ct=n("18ce"),lt=n("b488"),ut={mixins:[lt["a"]],props:{visible:f["a"].bool,getClassNameFromAlign:f["a"].func,getRootDomNode:f["a"].func,align:f["a"].any,destroyPopupOnHide:f["a"].bool,prefixCls:f["a"].string,getContainer:f["a"].func,transitionName:f["a"].string,animation:f["a"].any,maskAnimation:f["a"].string,maskTransitionName:f["a"].string,mask:f["a"].bool,zIndex:f["a"].number,popupClassName:f["a"].any,popupStyle:f["a"].object.def({}),stretch:f["a"].string,point:f["a"].shape({pageX:f["a"].number,pageY:f["a"].number})},data:function(){return{stretchChecked:!1,targetWidth:void 0,targetHeight:void 0}},mounted:function(){var e=this;this.$nextTick(function(){e.rootNode=e.getPopupDomNode(),e.setStretchSize()})},updated:function(){var e=this;this.$nextTick(function(){e.setStretchSize()})},beforeDestroy:function(){this.$el.parentNode?this.$el.parentNode.removeChild(this.$el):this.$el.remove&&this.$el.remove()},methods:{onAlign:function(e,t){var n=this.$props,i=n.getClassNameFromAlign(t);this.currentAlignClassName!==i&&(this.currentAlignClassName=i,e.className=this.getClassName(i)),this.$listeners.align&&this.$listeners.align(e,t)},setStretchSize:function(){var e=this.$props,t=e.stretch,n=e.getRootDomNode,i=e.visible,r=this.$data,o=r.stretchChecked,a=r.targetHeight,s=r.targetWidth;if(t&&i){var c=n();if(c){var l=c.offsetHeight,u=c.offsetWidth;a===l&&s===u&&o||this.setState({stretchChecked:!0,targetHeight:l,targetWidth:u})}}else o&&this.setState({stretchChecked:!1})},getPopupDomNode:function(){return this.$refs.popupInstance?this.$refs.popupInstance.$el:null},getTargetElement:function(){return this.$props.getRootDomNode()},getAlignTarget:function(){var e=this.$props.point;return e||this.getTargetElement},getMaskTransitionName:function(){var e=this.$props,t=e.maskTransitionName,n=e.maskAnimation;return!t&&n&&(t=e.prefixCls+"-"+n),t},getTransitionName:function(){var e=this.$props,t=e.transitionName,n=e.animation;return t||("string"===typeof n?t=""+n:n&&n.props&&n.props.name&&(t=n.props.name)),t},getClassName:function(e){return this.$props.prefixCls+" "+this.$props.popupClassName+" "+e},getPopupElement:function(){var e=this,t=this.$createElement,n=this.$props,i=this.$slots,r=this.$listeners,o=this.getTransitionName,a=this.$data,s=a.stretchChecked,l=a.targetHeight,u=a.targetWidth,h=n.align,f=n.visible,p=n.prefixCls,v=n.animation,m=n.popupStyle,g=n.getClassNameFromAlign,b=n.destroyPopupOnHide,y=n.stretch,_=this.getClassName(this.currentAlignClassName||g(h));f||(this.currentAlignClassName=null);var C={};y&&(-1!==y.indexOf("height")?C.height="number"===typeof l?l+"px":l:-1!==y.indexOf("minHeight")&&(C.minHeight="number"===typeof l?l+"px":l),-1!==y.indexOf("width")?C.width="number"===typeof u?u+"px":u:-1!==y.indexOf("minWidth")&&(C.minWidth="number"===typeof u?u+"px":u),s||setTimeout(function(){e.$refs.alignInstance&&e.$refs.alignInstance.forceAlign()},0));var w={props:{prefixCls:p,visible:f},class:_,on:r,ref:"popupInstance",style:c()({},C,m,this.getZIndexStyle())},x={props:c()({appear:!0,css:!1})},S=o(),E=!!S,O={beforeEnter:function(){},enter:function(t,n){e.$nextTick(function(){e.$refs.alignInstance&&e.$refs.alignInstance.$nextTick(function(){Object(ct["a"])(t,S+"-enter",n)})})},leave:function(e,t){Object(ct["a"])(e,S+"-leave",t)}};if("object"===("undefined"===typeof v?"undefined":d()(v))){E=!0;var M=v.on,z=void 0===M?{}:M,k=v.props,T=void 0===k?{}:k;x.props=c()({},x.props,T),x.on=c()({},O,z)}else x.on=O;return E||(x={}),t("transition",x,b?[f?t(ot,{attrs:{target:this.getAlignTarget(),monitorWindowResize:!0,align:h},key:"popup",ref:"alignInstance",on:{align:this.onAlign}},[t(st,w,[i["default"]])]):null]:[t(ot,{directives:[{name:"show",value:f}],attrs:{target:this.getAlignTarget(),monitorWindowResize:!0,disabled:!f,align:h},key:"popup",ref:"alignInstance",on:{align:this.onAlign}},[t(st,w,[i["default"]])])])},getZIndexStyle:function(){var e={},t=this.$props;return void 0!==t.zIndex&&(e.zIndex=t.zIndex),e},getMaskElement:function(){var e=this.$createElement,t=this.$props,n=null;if(t.mask){var i=this.getMaskTransitionName();n=e(at,{directives:[{name:"show",value:t.visible}],style:this.getZIndexStyle(),key:"mask",class:t.prefixCls+"-mask",attrs:{visible:t.visible}}),i&&(n=e("transition",{attrs:{appear:!0,name:i}},[n]))}return n}},render:function(){var e=arguments[0],t=this.getMaskElement,n=this.getPopupElement;return e("div",[t(),n()])}};function ht(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}function dt(e,t,n){var i=e[t]||{};return c()({},i,n)}function ft(e,t,n,i){var r=n.points;for(var o in e)if(e.hasOwnProperty(o)&&ht(e[o].points,r,i))return t+"-placement-"+o;return""}function pt(){}var vt=n("98d3");function mt(){return""}function gt(){return window.document}p["default"].use(m.a,{name:"ant-ref"});var bt=["click","mousedown","touchstart","mouseenter","mouseleave","focus","blur","contextmenu"],yt={name:"Trigger",mixins:[lt["a"]],props:{action:f["a"].oneOfType([f["a"].string,f["a"].arrayOf(f["a"].string)]).def([]),showAction:f["a"].any.def([]),hideAction:f["a"].any.def([]),getPopupClassNameFromAlign:f["a"].any.def(mt),afterPopupVisibleChange:f["a"].func.def(pt),popup:f["a"].any,popupStyle:f["a"].object.def({}),prefixCls:f["a"].string.def("rc-trigger-popup"),popupClassName:f["a"].string.def(""),popupPlacement:f["a"].string,builtinPlacements:f["a"].object,popupTransitionName:f["a"].oneOfType([f["a"].string,f["a"].object]),popupAnimation:f["a"].any,mouseEnterDelay:f["a"].number.def(0),mouseLeaveDelay:f["a"].number.def(.1),zIndex:f["a"].number,focusDelay:f["a"].number.def(0),blurDelay:f["a"].number.def(.15),getPopupContainer:f["a"].func,getDocument:f["a"].func.def(gt),forceRender:f["a"].bool,destroyPopupOnHide:f["a"].bool.def(!1),mask:f["a"].bool.def(!1),maskClosable:f["a"].bool.def(!0),popupAlign:f["a"].object.def({}),popupVisible:f["a"].bool,defaultPopupVisible:f["a"].bool.def(!1),maskTransitionName:f["a"].oneOfType([f["a"].string,f["a"].object]),maskAnimation:f["a"].string,stretch:f["a"].string,alignPoint:f["a"].bool},provide:function(){return{vcTriggerContext:this}},inject:{vcTriggerContext:{default:function(){return{}}}},data:function(){var e=this.$props,t=void 0;return t=Object(b["j"])(this,"popupVisible")?!!e.popupVisible:!!e.defaultPopupVisible,{sPopupVisible:t,point:null}},watch:{popupVisible:function(e){void 0!==e&&(this.sPopupVisible=e)},sPopupVisible:function(e){var t=this;this.$nextTick(function(){t.renderComponent(null,function(){t.afterPopupVisibleChange(e)})})}},beforeCreate:function(){var e=this;bt.forEach(function(t){e["fire"+t]=function(n){e.fireEvents(t,n)}})},mounted:function(){var e=this;this.$nextTick(function(){e.renderComponent(null),e.updatedCal()})},updated:function(){var e=this;this.$nextTick(function(){e.updatedCal()})},beforeDestroy:function(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout)},methods:{updatedCal:function(){var e=this.$props,t=this.$data;if(t.sPopupVisible){var n=void 0;this.clickOutsideHandler||!this.isClickToHide()&&!this.isContextmenuToShow()||(n=e.getDocument(),this.clickOutsideHandler=Object(_["a"])(n,"mousedown",this.onDocumentClick)),this.touchOutsideHandler||(n=n||e.getDocument(),this.touchOutsideHandler=Object(_["a"])(n,"touchstart",this.onDocumentClick)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(n=n||e.getDocument(),this.contextmenuOutsideHandler1=Object(_["a"])(n,"scroll",this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Object(_["a"])(window,"blur",this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter:function(e){var t=this.$props.mouseEnterDelay;this.fireEvents("mouseenter",e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove:function(e){this.fireEvents("mousemove",e),this.setPoint(e)},onMouseleave:function(e){this.fireEvents("mouseleave",e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter:function(){this.clearDelayTimer()},onPopupMouseleave:function(e){e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&this._component&&this._component.getPopupDomNode&&g(this._component.getPopupDomNode(),e.relatedTarget)||this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onFocus:function(e){this.fireEvents("focus",e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown:function(e){this.fireEvents("mousedown",e),this.preClickTime=Date.now()},onTouchstart:function(e){this.fireEvents("touchstart",e),this.preTouchTime=Date.now()},onBlur:function(e){this.fireEvents("blur",e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay)},onContextmenu:function(e){e.preventDefault(),this.fireEvents("contextmenu",e),this.setPopupVisible(!0,e)},onContextmenuClose:function(){this.isContextmenuToShow()&&this.close()},onClick:function(e){if(this.fireEvents("click",e),this.focusTime){var t=void 0;if(this.preClickTime&&this.preTouchTime?t=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?t=this.preClickTime:this.preTouchTime&&(t=this.preTouchTime),Math.abs(t-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();var n=!this.$data.sPopupVisible;(this.isClickToHide()&&!n||n&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown:function(){var e=this,t=this.vcTriggerContext,n=void 0===t?{}:t;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(function(){e.hasPopupMouseDown=!1},0),n.onPopupMouseDown&&n.onPopupMouseDown.apply(n,arguments)},onDocumentClick:function(e){if(!this.$props.mask||this.$props.maskClosable){var t=e.target,n=this.$el;g(n,t)||this.hasPopupMouseDown||this.close()}},getPopupDomNode:function(){return this._component&&this._component.getPopupDomNode?this._component.getPopupDomNode():null},getRootDomNode:function(){return this.$el},handleGetPopupClassFromAlign:function(e){var t=[],n=this.$props,i=n.popupPlacement,r=n.builtinPlacements,o=n.prefixCls,a=n.alignPoint,s=n.getPopupClassNameFromAlign;return i&&r&&t.push(ft(r,o,e,a)),s&&t.push(s(e)),t.join(" ")},getPopupAlign:function(){var e=this.$props,t=e.popupPlacement,n=e.popupAlign,i=e.builtinPlacements;return t&&i?dt(i,t,n):n},savePopup:function(e){this._component=e},getComponent:function(){var e=this.$createElement,t=this,n={};this.isMouseEnterToShow()&&(n.mouseenter=t.onPopupMouseenter),this.isMouseLeaveToHide()&&(n.mouseleave=t.onPopupMouseleave),n.mousedown=this.onPopupMouseDown,n.touchstart=this.onPopupMouseDown;var i=t.handleGetPopupClassFromAlign,r=t.getRootDomNode,o=t.getContainer,a=t.$listeners,s=t.$props,l=s.prefixCls,u=s.destroyPopupOnHide,h=s.popupClassName,d=s.action,f=s.popupAnimation,p=s.popupTransitionName,v=s.popupStyle,m=s.mask,g=s.maskAnimation,y=s.maskTransitionName,_=s.zIndex,C=s.stretch,w=s.alignPoint,x=this.$data,S=x.sPopupVisible,E=x.point,O=this.getPopupAlign(),M={props:{prefixCls:l,destroyPopupOnHide:u,visible:S,point:w&&E,action:d,align:O,animation:f,getClassNameFromAlign:i,stretch:C,getRootDomNode:r,mask:m,zIndex:_,transitionName:p,maskAnimation:g,maskTransitionName:y,getContainer:o,popupClassName:h,popupStyle:v},on:c()({align:a.popupAlign||pt},n),directives:[{name:"ant-ref",value:this.savePopup}]};return e(ut,M,[Object(b["d"])(t,"popup")])},getContainer:function(){var e=this.$props,t=document.createElement("div");t.style.position="absolute",t.style.top="0",t.style.left="0",t.style.width="100%";var n=e.getPopupContainer?e.getPopupContainer(this.$el):e.getDocument().body;return n.appendChild(t),this.popupContainer=t,t},setPopupVisible:function(e,t){var n=this.$props.alignPoint;this.clearDelayTimer(),this.$data.sPopupVisible!==e&&(Object(b["j"])(this,"popupVisible")||this.setState({sPopupVisible:e}),this.$listeners.popupVisibleChange&&this.$listeners.popupVisibleChange(e)),e&&n&&t&&this.setPoint(t)},setPoint:function(e){var t=this.$props.alignPoint;t&&e&&this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},delaySetPopupVisible:function(e,t,n){var i=this,r=1e3*t;if(this.clearDelayTimer(),r){var o=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=Object(y["b"])(function(){i.setPopupVisible(e,o),i.clearDelayTimer()},r)}else this.setPopupVisible(e,n)},clearDelayTimer:function(){this.delayTimer&&(Object(y["a"])(this.delayTimer),this.delayTimer=null)},clearOutsideHandler:function(){this.clickOutsideHandler&&(this.clickOutsideHandler.remove(),this.clickOutsideHandler=null),this.contextmenuOutsideHandler1&&(this.contextmenuOutsideHandler1.remove(),this.contextmenuOutsideHandler1=null),this.contextmenuOutsideHandler2&&(this.contextmenuOutsideHandler2.remove(),this.contextmenuOutsideHandler2=null),this.touchOutsideHandler&&(this.touchOutsideHandler.remove(),this.touchOutsideHandler=null)},createTwoChains:function(e){var t=function(){},n=this.$listeners;return this.childOriginEvents[e]&&n[e]?this["fire"+e]:(t=this.childOriginEvents[e]||n[e]||t,t)},isClickToShow:function(){var e=this.$props,t=e.action,n=e.showAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")},isContextmenuToShow:function(){var e=this.$props,t=e.action,n=e.showAction;return-1!==t.indexOf("contextmenu")||-1!==n.indexOf("contextmenu")},isClickToHide:function(){var e=this.$props,t=e.action,n=e.hideAction;return-1!==t.indexOf("click")||-1!==n.indexOf("click")},isMouseEnterToShow:function(){var e=this.$props,t=e.action,n=e.showAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseenter")},isMouseLeaveToHide:function(){var e=this.$props,t=e.action,n=e.hideAction;return-1!==t.indexOf("hover")||-1!==n.indexOf("mouseleave")},isFocusToShow:function(){var e=this.$props,t=e.action,n=e.showAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("focus")},isBlurToHide:function(){var e=this.$props,t=e.action,n=e.hideAction;return-1!==t.indexOf("focus")||-1!==n.indexOf("blur")},forcePopupAlign:function(){this.$data.sPopupVisible&&this._component&&this._component.$refs.alignInstance&&this._component.$refs.alignInstance.forceAlign()},fireEvents:function(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t),this.__emit(e,t)},close:function(){this.setPopupVisible(!1)}},render:function(){var e=this,t=arguments[0],n=this.sPopupVisible,i=Object(b["b"])(this.$slots["default"]),r=this.$props,o=r.forceRender,a=r.alignPoint;i.length>1&&Object(C["a"])(!1,"Trigger $slots.default.length > 1, just support only one default",!0);var s=i[0];this.childOriginEvents=Object(b["e"])(s);var c={props:{},on:{},key:"trigger"};this.isContextmenuToShow()?c.on.contextmenu=this.onContextmenu:c.on.contextmenu=this.createTwoChains("contextmenu"),this.isClickToHide()||this.isClickToShow()?(c.on.click=this.onClick,c.on.mousedown=this.onMousedown,c.on.touchstart=this.onTouchstart):(c.on.click=this.createTwoChains("click"),c.on.mousedown=this.createTwoChains("mousedown"),c.on.touchstart=this.createTwoChains("onTouchstart")),this.isMouseEnterToShow()?(c.on.mouseenter=this.onMouseenter,a&&(c.on.mousemove=this.onMouseMove)):c.on.mouseenter=this.createTwoChains("mouseenter"),this.isMouseLeaveToHide()?c.on.mouseleave=this.onMouseleave:c.on.mouseleave=this.createTwoChains("mouseleave"),this.isFocusToShow()||this.isBlurToHide()?(c.on.focus=this.onFocus,c.on.blur=this.onBlur):(c.on.focus=this.createTwoChains("focus"),c.on.blur=function(t){!t||t.relatedTarget&&g(t.target,t.relatedTarget)||e.createTwoChains("blur")(t)});var l=Object(Ze["a"])(s,c);return t(vt["a"],{attrs:{parent:this,visible:n,autoMount:!1,forceRender:o,getComponent:this.getComponent,getContainer:this.getContainer,children:function(t){var n=t.renderComponent;return e.renderComponent=n,l}}})}},_t=yt,Ct=n("18a7"),wt=n("1b2b"),xt=n.n(wt);function St(e){return e.name||"Component"}function Et(e){var t=e.props||{},n=e.methods||{},i={};Object.keys(t).forEach(function(e){i[e]=c()({},e,{required:!1})}),e.props.__propsSymbol__=f["a"].any,e.props.children=f["a"].array.def([]);var o={props:i,model:e.model,name:"Proxy_"+St(e),methods:{getProxyWrappedInstance:function(){return this.$refs.wrappedInstance}},render:function(){var t=arguments[0],n=this.$listeners,i=this.$slots,o=void 0===i?{}:i,a=this.$attrs,s=this.$scopedSlots,l=Object(b["f"])(this),u={props:c()({},l,{__propsSymbol__:Symbol(),componentWillReceiveProps:c()({},l),children:o["default"]||l.children||[]}),on:n,attrs:a};Object.keys(s).length&&(u.scopedSlots=s);var h=Object.keys(o);return t(e,r()([u,{ref:"wrappedInstance"}]),[h.length?h.map(function(e){return t("template",{slot:e},[o[e]])}):null])}};return Object.keys(n).map(function(e){o.methods[e]=function(){var t;return(t=this.getProxyWrappedInstance())[e].apply(t,arguments)}}),o}function Ot(e){return e.name||"Component"}var Mt=function(){return{}};function zt(e){var t=!!e,n=e||Mt;return function(i){var o=Object(l["a"])(i.props||{},["store"]),a={__propsSymbol__:f["a"].any};Object.keys(o).forEach(function(e){a[e]=c()({},e,{required:!1})});var s={name:"Connect_"+Ot(i),props:a,inject:{storeContext:{default:function(){return{}}}},data:function(){return this.store=this.storeContext.store,this.preProps=Object(l["a"])(Object(b["f"])(this),["__propsSymbol__"]),{subscribed:n(this.store.getState(),this.$props)}},watch:{__propsSymbol__:function(){e&&2===e.length&&(this.subscribed=n(this.store.getState(),this.$props))}},mounted:function(){this.trySubscribe()},beforeDestroy:function(){this.tryUnsubscribe()},methods:{handleChange:function(){if(this.unsubscribe){var e=Object(l["a"])(Object(b["f"])(this),["__propsSymbol__"]),t=n(this.store.getState(),e);xt()(this.preProps,e)&&xt()(this.subscribed,t)||(this.subscribed=t)}},trySubscribe:function(){t&&(this.unsubscribe=this.store.subscribe(this.handleChange),this.handleChange())},tryUnsubscribe:function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)},getWrappedInstance:function(){return this.$refs.wrappedInstance}},render:function(){var e=arguments[0];this.preProps=c()({},this.$props);var t=this.$listeners,n=this.$slots,o=void 0===n?{}:n,a=this.$attrs,s=this.$scopedSlots,u=this.subscribed,h=this.store,d=Object(b["f"])(this);this.preProps=c()({},Object(l["a"])(d,["__propsSymbol__"]));var f={props:c()({},d,u,{store:h}),on:t,attrs:a,scopedSlots:s};return e(i,r()([f,{ref:"wrappedInstance"}]),[Object.keys(o).map(function(t){return e("template",{slot:t},[o[t]])})])}};return Et(s)}}var kt=n("8e8e"),Tt=n.n(kt),Lt=n("4d26"),At=n.n(Lt),Ht=n("8114");function Vt(){}function Nt(e,t,n){var i=t||"";return void 0===e.key?i+"item_"+n:e.key}function It(e){return e+"-menu-"}function Dt(e,t){var n=-1;e.forEach(function(e){n++,e&&e.type&&e.type.isMenuItemGroup?e.$slots["default"].forEach(function(i){n++,e.componentOptions&&t(i,n)}):e.componentOptions&&t(e,n)})}function Pt(e,t,n){e&&!n.find&&e.forEach(function(e){if(!n.find&&(!e.data||!e.data.slot||"default"===e.data.slot)&&e&&e.componentOptions){var i=e.componentOptions.Ctor.options;if(!i||!(i.isSubMenu||i.isMenuItem||i.isMenuItemGroup))return;-1!==t.indexOf(e.key)?n.find=!0:e.componentOptions.children&&Pt(e.componentOptions.children,t,n)}})}var $t={props:["defaultSelectedKeys","selectedKeys","defaultOpenKeys","openKeys","mode","getPopupContainer","openTransitionName","openAnimation","subMenuOpenDelay","subMenuCloseDelay","forceSubMenuRender","triggerSubMenuAction","level","selectable","multiple","visible","focusable","defaultActiveFirst","prefixCls","inlineIndent","parentMenu","title","rootPrefixCls","eventKey","active","popupAlign","popupOffset","isOpen","renderMenuItem","manualRef","subMenuKey","disabled","index","isSelected","store","activeKey","builtinPlacements","overflowedIndicator","attribute","value","popupClassName","inlineCollapsed","menu","theme","itemIcon","expandIcon"],on:["select","deselect","destroy","openChange","itemHover","titleMouseenter","titleMouseleave","titleClick"]},Rt=function(e){var t=e&&"function"===typeof e.getBoundingClientRect&&e.getBoundingClientRect().width;return t&&(t=+t.toFixed(6)),t||0},jt=function(e,t,n){e&&"object"===d()(e.style)&&(e.style[t]=n)},Ft=function(){return Ht.any},Bt=n("9b57"),Wt=n.n(Bt),Ut=n("6dd8"),Kt=!("undefined"===typeof window||!window.document||!window.document.createElement),qt="menuitem-overflowed",Gt=.5;Kt&&n("0cdd");var Yt={name:"DOMWrap",mixins:[lt["a"]],data:function(){return this.resizeObserver=null,this.mutationObserver=null,this.originalTotalWidth=0,this.overflowedItems=[],this.menuItemSizes=[],{lastVisibleIndex:void 0}},mounted:function(){var e=this;this.$nextTick(function(){if(e.setChildrenWidthAndResize(),1===e.level&&"horizontal"===e.mode){var t=e.$el;if(!t)return;e.resizeObserver=new Ut["default"](function(t){t.forEach(e.setChildrenWidthAndResize)}),[].slice.call(t.children).concat(t).forEach(function(t){e.resizeObserver.observe(t)}),"undefined"!==typeof MutationObserver&&(e.mutationObserver=new MutationObserver(function(){e.resizeObserver.disconnect(),[].slice.call(t.children).concat(t).forEach(function(t){e.resizeObserver.observe(t)}),e.setChildrenWidthAndResize()}),e.mutationObserver.observe(t,{attributes:!1,childList:!0,subTree:!1}))}})},beforeDestroy:function(){this.resizeObserver&&this.resizeObserver.disconnect(),this.mutationObserver&&this.resizeObserver.disconnect()},methods:{getMenuItemNodes:function(){var e=this.$props.prefixCls,t=this.$el;return t?[].slice.call(t.children).filter(function(t){return t.className.split(" ").indexOf(e+"-overflowed-submenu")<0}):[]},getOverflowedSubMenuItem:function(e,t,n){var i=this.$createElement,r=this.$props,o=r.overflowedIndicator,a=r.level,s=r.mode,l=r.prefixCls,u=r.theme;if(1!==a||"horizontal"!==s)return null;var h=this.$slots["default"][0],d=Object(b["g"])(h),f=(d.title,d.eventKey,Tt()(d,["title","eventKey"])),p={},v=e+"-overflowed-indicator";0===t.length&&!0!==n?p={display:"none"}:n&&(p={visibility:"hidden",position:"absolute"},v+="-placeholder");var m=u?l+"-"+u:"",g={};$t.props.forEach(function(e){void 0!==f[e]&&(g[e]=f[e])});var y={props:c()({title:o,popupClassName:m},g,{eventKey:e+"-overflowed-indicator",disabled:!1}),class:l+"-overflowed-submenu",key:v,style:p,on:Object(b["e"])(h)};return i(pn,y,[t])},setChildrenWidthAndResize:function(){if("horizontal"===this.mode){var e=this.$el;if(e){var t=e.children;if(t&&0!==t.length){var n=e.children[t.length-1];jt(n,"display","inline-block");var i=this.getMenuItemNodes(),r=i.filter(function(e){return e.className.split(" ").indexOf(qt)>=0});r.forEach(function(e){jt(e,"display","inline-block")}),this.menuItemSizes=i.map(function(e){return Rt(e)}),r.forEach(function(e){jt(e,"display","none")}),this.overflowedIndicatorWidth=Rt(e.children[e.children.length-1]),this.originalTotalWidth=this.menuItemSizes.reduce(function(e,t){return e+t},0),this.handleResize(),jt(n,"display","none")}}}},handleResize:function(){var e=this;if("horizontal"===this.mode){var t=this.$el;if(t){var n=Rt(t);this.overflowedItems=[];var i=0,r=void 0;this.originalTotalWidth>n+Gt&&(r=-1,this.menuItemSizes.forEach(function(t){i+=t,i+e.overflowedIndicatorWidth<=n&&r++})),this.setState({lastVisibleIndex:r})}}},renderChildren:function(e){var t=this,n=this.$data.lastVisibleIndex,i=Object(b["c"])(this);return(e||[]).reduce(function(r,o,s){var l=o,u=Object(b["g"])(o).eventKey;if("horizontal"===t.mode){var h=t.getOverflowedSubMenuItem(u,[]);void 0!==n&&-1!==i[t.prefixCls+"-root"]&&(s>n&&(l=Object(Ze["a"])(o,{style:{display:"none"},props:{eventKey:u+"-hidden"},class:c()({},Object(b["c"])(o),a()({},qt,!0))})),s===n+1&&(t.overflowedItems=e.slice(n+1).map(function(e){return Object(Ze["a"])(e,{key:Object(b["g"])(e).eventKey,props:{mode:"vertical-left"}})}),h=t.getOverflowedSubMenuItem(u,t.overflowedItems)));var d=[].concat(Wt()(r),[h,l]);return s===e.length-1&&d.push(t.getOverflowedSubMenuItem(u,[],!0)),d}return[].concat(Wt()(r),[l])},[])}},render:function(){var e=arguments[0],t=this.$props.tag,n={on:this.$listeners};return e(t,n,[this.renderChildren(this.$slots["default"])])}};Yt.props={mode:f["a"].oneOf(["horizontal","vertical","vertical-left","vertical-right","inline"]),prefixCls:f["a"].string,level:f["a"].number,theme:f["a"].string,overflowedIndicator:f["a"].node,visible:f["a"].bool,hiddenClassName:f["a"].string,tag:f["a"].string.def("div")};var Xt=Yt;function Qt(e){return!e.length||e.every(function(e){return!!e.disabled})}function Jt(e,t,n){var i=e.getState();e.setState({activeKey:c()({},i.activeKey,a()({},t,n))})}function Zt(e){return e.eventKey||"0-menu-"}function en(e,t){if(t){var n=this.instanceArrayKeyIndexMap[e];this.instanceArray[n]=t}}function tn(e,t){var n=t,i=e.eventKey,r=e.defaultActiveFirst,o=e.children;if(void 0!==n&&null!==n){var a=void 0;if(Dt(o,function(e,t){var r=e.componentOptions.propsData||{};e&&!r.disabled&&n===Nt(e,i,t)&&(a=!0)}),a)return n}return n=null,r?(Dt(o,function(e,t){var r=e.componentOptions.propsData||{};n||!e||r.disabled||(n=Nt(e,i,t))}),n):n}var nn={name:"SubPopupMenu",props:Object(b["k"])({prefixCls:f["a"].string,openTransitionName:f["a"].string,openAnimation:f["a"].oneOfType([f["a"].string,f["a"].object]),openKeys:f["a"].arrayOf(f["a"].oneOfType([f["a"].string,f["a"].number])),visible:f["a"].bool,parentMenu:f["a"].object,eventKey:f["a"].string,store:f["a"].object,focusable:f["a"].bool,multiple:f["a"].bool,defaultActiveFirst:f["a"].bool,activeKey:f["a"].oneOfType([f["a"].string,f["a"].number]),selectedKeys:f["a"].arrayOf(f["a"].oneOfType([f["a"].string,f["a"].number])),defaultSelectedKeys:f["a"].arrayOf(f["a"].oneOfType([f["a"].string,f["a"].number])),defaultOpenKeys:f["a"].arrayOf(f["a"].oneOfType([f["a"].string,f["a"].number])),level:f["a"].number,mode:f["a"].oneOf(["horizontal","vertical","vertical-left","vertical-right","inline"]),triggerSubMenuAction:f["a"].oneOf(["click","hover"]),inlineIndent:f["a"].oneOfType([f["a"].number,f["a"].string]),manualRef:f["a"].func,itemIcon:f["a"].any,expandIcon:f["a"].any,overflowedIndicator:f["a"].any,children:f["a"].any.def([]),__propsSymbol__:f["a"].any},{prefixCls:"rc-menu",mode:"vertical",level:1,inlineIndent:24,visible:!0,focusable:!0,manualRef:Vt}),mixins:[lt["a"]],created:function(){var e=Object(b["f"])(this);this.prevProps=c()({},e),e.store.setState({activeKey:c()({},e.store.getState().activeKey,a()({},e.eventKey,tn(e,e.activeKey)))}),this.instanceArray=[]},mounted:function(){this.manualRef&&this.manualRef(this)},updated:function(){var e=Object(b["f"])(this),t=this.prevProps,n="activeKey"in e?e.activeKey:e.store.getState().activeKey[Zt(e)],i=tn(e,n);if(i!==n)Jt(e.store,Zt(e),i);else if("activeKey"in t){var r=tn(t,t.activeKey);i!==r&&Jt(e.store,Zt(e),i)}this.prevProps=c()({},e)},methods:{onKeyDown:function(e,t){var n=e.keyCode,i=void 0;if(this.getFlatInstanceArray().forEach(function(t){t&&t.active&&t.onKeyDown&&(i=t.onKeyDown(e))}),i)return 1;var r=null;return n!==Ct["a"].UP&&n!==Ct["a"].DOWN||(r=this.step(n===Ct["a"].UP?-1:1)),r?(e.preventDefault(),Jt(this.$props.store,Zt(this.$props),r.eventKey),"function"===typeof t&&t(r),1):void 0},onItemHover:function(e){var t=e.key,n=e.hover;Jt(this.$props.store,Zt(this.$props),n?t:null)},onDeselect:function(e){this.__emit("deselect",e)},onSelect:function(e){this.__emit("select",e)},onClick:function(e){this.__emit("click",e)},onOpenChange:function(e){this.__emit("openChange",e)},onDestroy:function(e){this.__emit("destroy",e)},getFlatInstanceArray:function(){return this.instanceArray},getOpenTransitionName:function(){return this.$props.openTransitionName},step:function(e){var t=this.getFlatInstanceArray(),n=this.$props.store.getState().activeKey[Zt(this.$props)],i=t.length;if(!i)return null;e<0&&(t=t.concat().reverse());var r=-1;if(t.every(function(e,t){return!e||e.eventKey!==n||(r=t,!1)}),this.defaultActiveFirst||-1===r||!Qt(t.slice(r,i-1))){var o=(r+1)%i,a=o;do{var s=t[a];if(s&&!s.disabled)return s;a=(a+1)%i}while(a!==o);return null}},getIcon:function(e,t){if(e.$createElement){var n=e[t];return void 0!==n?n:e.$slots[t]||e.$scopedSlots[t]}var i=Object(b["g"])(e)[t];if(void 0!==i)return i;var r=[],o=e.componentOptions||{};return(o.children||[]).forEach(function(e){e.data&&e.data.slot===t&&("template"===e.tag?r.push(e.children):r.push(e))}),r.length?r:void 0},renderCommonMenuItem:function(e,t,n){var i=this;if(void 0===e.tag)return e;var r=this.$props.store.getState(),o=this.$props,a=Nt(e,o.eventKey,t),s=e.componentOptions.propsData||{},l=a===r.activeKey[Zt(this.$props)];s.disabled||(this.instanceArrayKeyIndexMap[a]=Object.keys(this.instanceArrayKeyIndexMap).length);var u=Object(b["e"])(e),h={props:c()({mode:s.mode||o.mode,level:o.level,inlineIndent:o.inlineIndent,renderMenuItem:this.renderMenuItem,rootPrefixCls:o.prefixCls,index:t,parentMenu:o.parentMenu,manualRef:s.disabled?Vt:en.bind(this,a),eventKey:a,active:!s.disabled&&l,multiple:o.multiple,openTransitionName:this.getOpenTransitionName(),openAnimation:o.openAnimation,subMenuOpenDelay:o.subMenuOpenDelay,subMenuCloseDelay:o.subMenuCloseDelay,forceSubMenuRender:o.forceSubMenuRender,builtinPlacements:o.builtinPlacements,itemIcon:this.getIcon(e,"itemIcon")||this.getIcon(this,"itemIcon"),expandIcon:this.getIcon(e,"expandIcon")||this.getIcon(this,"expandIcon")},n),on:{click:function(e){(u.click||Vt)(e),i.onClick(e)},itemHover:this.onItemHover,openChange:this.onOpenChange,deselect:this.onDeselect,select:this.onSelect}};return("inline"===o.mode||Ft())&&(h.props.triggerSubMenuAction="click"),Object(Ze["a"])(e,h)},renderMenuItem:function(e,t,n){if(!e)return null;var i=this.$props.store.getState(),r={openKeys:i.openKeys,selectedKeys:i.selectedKeys,triggerSubMenuAction:this.triggerSubMenuAction,isRootMenu:!1,subMenuKey:n};return this.renderCommonMenuItem(e,t,r)}},render:function(){var e=this,t=arguments[0],n=Tt()(this.$props,[]),i=n.eventKey,r=n.prefixCls,o=n.visible,a=n.level,s=n.mode,c=n.theme;this.instanceArray=[],this.instanceArrayKeyIndexMap={};var u=At()(n.prefixCls,n.prefixCls+"-"+n.mode),h={props:{tag:"ul",visible:o,prefixCls:r,level:a,mode:s,theme:c,overflowedIndicator:Object(b["d"])(this,"overflowedIndicator")},attrs:{role:n.role||"menu"},class:u,on:Object(l["a"])(this.$listeners||{},["click"])};return n.focusable&&(h.attrs.tabIndex="0",h.on.keydown=this.onKeyDown),t(Xt,h,[n.children.map(function(t,n){return e.renderMenuItem(t,n,i||"0-menu-")})])}},rn=zt()(nn),on={adjustX:1,adjustY:1},an={topLeft:{points:["bl","tl"],overflow:on,offset:[0,-7]},bottomLeft:{points:["tl","bl"],overflow:on,offset:[0,7]},leftTop:{points:["tr","tl"],overflow:on,offset:[-4,0]},rightTop:{points:["tl","tr"],overflow:on,offset:[4,0]}},sn=an,cn=n("94eb"),ln=0,un={horizontal:"bottomLeft",vertical:"rightTop","vertical-left":"rightTop","vertical-right":"leftTop"},hn=function(e,t,n){var i=It(t),r=e.getState();e.setState({defaultActiveFirst:c()({},r.defaultActiveFirst,a()({},i,n))})},dn={name:"SubMenu",props:{parentMenu:f["a"].object,title:f["a"].any,selectedKeys:f["a"].array.def([]),openKeys:f["a"].array.def([]),openChange:f["a"].func.def(Vt),rootPrefixCls:f["a"].string,eventKey:f["a"].oneOfType([f["a"].string,f["a"].number]),multiple:f["a"].bool,active:f["a"].bool,isRootMenu:f["a"].bool.def(!1),index:f["a"].number,triggerSubMenuAction:f["a"].string,popupClassName:f["a"].string,getPopupContainer:f["a"].func,forceSubMenuRender:f["a"].bool,openAnimation:f["a"].oneOfType([f["a"].string,f["a"].object]),disabled:f["a"].bool,subMenuOpenDelay:f["a"].number.def(.1),subMenuCloseDelay:f["a"].number.def(.1),level:f["a"].number.def(1),inlineIndent:f["a"].number.def(24),openTransitionName:f["a"].string,popupOffset:f["a"].array,isOpen:f["a"].bool,store:f["a"].object,mode:f["a"].oneOf(["horizontal","vertical","vertical-left","vertical-right","inline"]).def("vertical"),manualRef:f["a"].func.def(Vt),builtinPlacements:f["a"].object.def({}),itemIcon:f["a"].any,expandIcon:f["a"].any},mixins:[lt["a"]],isSubMenu:!0,data:function(){var e=this.$props,t=e.store,n=e.eventKey,i=t.getState().defaultActiveFirst,r=!1;return i&&(r=i[n]),hn(t,n,r),{}},mounted:function(){var e=this;this.$nextTick(function(){e.handleUpdated()})},updated:function(){var e=this;this.$nextTick(function(){e.handleUpdated()})},beforeDestroy:function(){var e=this.eventKey;this.__emit("destroy",e),this.minWidthTimeout&&(Object(y["a"])(this.minWidthTimeout),this.minWidthTimeout=null),this.mouseenterTimeout&&(Object(y["a"])(this.mouseenterTimeout),this.mouseenterTimeout=null)},methods:{handleUpdated:function(){var e=this,t=this.$props,n=t.mode,i=t.parentMenu,r=t.manualRef;r&&r(this),"horizontal"===n&&i.isRootMenu&&this.isOpen&&(this.minWidthTimeout=Object(y["b"])(function(){return e.adjustWidth()},0))},onKeyDown:function(e){var t=e.keyCode,n=this.menuInstance,i=this.$props,r=i.store,o=i.isOpen;if(t===Ct["a"].ENTER)return this.onTitleClick(e),hn(r,this.eventKey,!0),!0;if(t===Ct["a"].RIGHT)return o?n.onKeyDown(e):(this.triggerOpenChange(!0),hn(r,this.eventKey,!0)),!0;if(t===Ct["a"].LEFT){var a=void 0;if(!o)return;return a=n.onKeyDown(e),a||(this.triggerOpenChange(!1),a=!0),a}return!o||t!==Ct["a"].UP&&t!==Ct["a"].DOWN?void 0:n.onKeyDown(e)},onPopupVisibleChange:function(e){this.triggerOpenChange(e,e?"mouseenter":"mouseleave")},onMouseEnter:function(e){var t=this.$props,n=t.eventKey,i=t.store;hn(i,n,!1),this.__emit("mouseenter",{key:n,domEvent:e})},onMouseLeave:function(e){var t=this.eventKey,n=this.parentMenu;n.subMenuInstance=this,this.__emit("mouseleave",{key:t,domEvent:e})},onTitleMouseEnter:function(e){var t=this.$props.eventKey;this.__emit("itemHover",{key:t,hover:!0}),this.__emit("titleMouseenter",{key:t,domEvent:e})},onTitleMouseLeave:function(e){var t=this.eventKey,n=this.parentMenu;n.subMenuInstance=this,this.__emit("itemHover",{key:t,hover:!1}),this.__emit("titleMouseleave",{key:t,domEvent:e})},onTitleClick:function(e){var t=this.$props,n=t.triggerSubMenuAction,i=t.eventKey,r=t.isOpen,o=t.store;this.__emit("titleClick",{key:i,domEvent:e}),"hover"!==n&&(this.triggerOpenChange(!r,"click"),hn(o,i,!1))},onSubMenuClick:function(e){this.__emit("click",this.addKeyPath(e))},getPrefixCls:function(){return this.$props.rootPrefixCls+"-submenu"},getActiveClassName:function(){return this.getPrefixCls()+"-active"},getDisabledClassName:function(){return this.getPrefixCls()+"-disabled"},getSelectedClassName:function(){return this.getPrefixCls()+"-selected"},getOpenClassName:function(){return this.$props.rootPrefixCls+"-submenu-open"},saveMenuInstance:function(e){this.menuInstance=e},addKeyPath:function(e){return c()({},e,{keyPath:(e.keyPath||[]).concat(this.$props.eventKey)})},triggerOpenChange:function(e,t){var n=this,i=this.$props.eventKey,r=function(){n.__emit("openChange",{key:i,item:n,trigger:t,open:e})};"mouseenter"===t?this.mouseenterTimeout=Object(y["b"])(function(){r()},0):r()},isChildrenSelected:function(){var e={find:!1};return Pt(this.$slots["default"],this.$props.selectedKeys,e),e.find},adjustWidth:function(){if(this.$refs.subMenuTitle&&this.menuInstance){var e=this.menuInstance.$el;e.offsetWidth>=this.$refs.subMenuTitle.offsetWidth||(e.style.minWidth=this.$refs.subMenuTitle.offsetWidth+"px")}},renderChildren:function(e){var t=this.$createElement,n=this.$props,i=this.$listeners,o=i.select,a=i.deselect,s=i.openChange,l={props:{mode:"horizontal"===n.mode?"vertical":n.mode,visible:n.isOpen,level:n.level+1,inlineIndent:n.inlineIndent,focusable:!1,selectedKeys:n.selectedKeys,eventKey:n.eventKey+"-menu-",openKeys:n.openKeys,openTransitionName:n.openTransitionName,openAnimation:n.openAnimation,subMenuOpenDelay:n.subMenuOpenDelay,parentMenu:this,subMenuCloseDelay:n.subMenuCloseDelay,forceSubMenuRender:n.forceSubMenuRender,triggerSubMenuAction:n.triggerSubMenuAction,builtinPlacements:n.builtinPlacements,defaultActiveFirst:n.store.getState().defaultActiveFirst[It(n.eventKey)],multiple:n.multiple,prefixCls:n.rootPrefixCls,manualRef:this.saveMenuInstance,itemIcon:Object(b["d"])(this,"itemIcon"),expandIcon:Object(b["d"])(this,"expandIcon"),children:e},on:{click:this.onSubMenuClick,select:o,deselect:a,openChange:s},id:this._menuId},u=l.props,h=this.haveRendered;if(this.haveRendered=!0,this.haveOpened=this.haveOpened||u.visible||u.forceSubMenuRender,!this.haveOpened)return t("div");var f=h||!u.visible||"inline"===!u.mode;l["class"]=" "+u.prefixCls+"-sub";var p={appear:f,css:!1},v={props:p,on:{}};return u.openTransitionName?v=Object(cn["a"])(u.openTransitionName,{appear:f}):"object"===d()(u.openAnimation)?(p=c()({},p,u.openAnimation.props||{}),f||(p.appear=!1)):"string"===typeof u.openAnimation&&(v=Object(cn["a"])(u.openAnimation,{appear:f})),"object"===d()(u.openAnimation)&&u.openAnimation.on&&(v.on=u.openAnimation.on),t("transition",v,[t(rn,r()([{directives:[{name:"show",value:n.isOpen}]},l]))])}},render:function(){var e,t,n=arguments[0],i=this.$props,o=this.rootPrefixCls,s=this.parentMenu,u=this.$listeners,h=void 0===u?{}:u,d=i.isOpen,f=this.getPrefixCls(),p="inline"===i.mode,v=(e={},a()(e,f,!0),a()(e,f+"-"+i.mode,!0),a()(e,this.getOpenClassName(),d),a()(e,this.getActiveClassName(),i.active||d&&!p),a()(e,this.getDisabledClassName(),i.disabled),a()(e,this.getSelectedClassName(),this.isChildrenSelected()),e);this._menuId||(i.eventKey?this._menuId=i.eventKey+"$Menu":this._menuId="$__$"+ ++ln+"$Menu");var m={},g={},y={};i.disabled||(m={mouseleave:this.onMouseLeave,mouseenter:this.onMouseEnter},g={click:this.onTitleClick},y={mouseenter:this.onTitleMouseEnter,mouseleave:this.onTitleMouseLeave});var _={};p&&(_.paddingLeft=i.inlineIndent*i.level+"px");var C={};d&&(C={"aria-owns":this._menuId});var w={attrs:c()({"aria-expanded":d},C,{"aria-haspopup":"true",title:"string"===typeof i.title?i.title:void 0}),on:c()({},y,g),style:_,class:f+"-title",ref:"subMenuTitle"},x=null;"horizontal"!==i.mode&&(x=Object(b["d"])(this,"expandIcon",i));var S=n("div",w,[Object(b["d"])(this,"title"),x||n("i",{class:f+"-arrow"})]),E=this.renderChildren(Object(b["b"])(this.$slots["default"])),O=this.parentMenu.isRootMenu?this.parentMenu.getPopupContainer:function(e){return e.parentNode},M=un[i.mode],z=i.popupOffset?{offset:i.popupOffset}:{},k="inline"===i.mode?"":i.popupClassName,T={on:c()({},Object(l["a"])(h,["click"]),m),class:v};return n("li",r()([T,{attrs:{role:"menuitem"}}]),[p&&S,p&&E,!p&&n(_t,{attrs:(t={prefixCls:f,popupClassName:f+"-popup "+o+"-"+s.theme+" "+(k||""),getPopupContainer:O,builtinPlacements:sn},a()(t,"builtinPlacements",c()({},sn,i.builtinPlacements)),a()(t,"popupPlacement",M),a()(t,"popupVisible",d),a()(t,"popupAlign",z),a()(t,"action",i.disabled?[]:[i.triggerSubMenuAction]),a()(t,"mouseEnterDelay",i.subMenuOpenDelay),a()(t,"mouseLeaveDelay",i.subMenuCloseDelay),a()(t,"forceRender",i.forceSubMenuRender),t),on:{popupVisibleChange:this.onPopupVisibleChange}},[n("template",{slot:"popup"},[E]),S])])}},fn=zt(function(e,t){var n=e.openKeys,i=e.activeKey,r=e.selectedKeys,o=t.eventKey,a=t.subMenuKey;return{isOpen:n.indexOf(o)>-1,active:i[a]===o,selectedKeys:r}})(dn);fn.isSubMenu=!0;var pn=fn,vn={name:"MenuItemGroup",props:{renderMenuItem:f["a"].func,index:f["a"].number,className:f["a"].string,subMenuKey:f["a"].string,rootPrefixCls:f["a"].string,disabled:f["a"].bool.def(!0),title:f["a"].any},isMenuItemGroup:!0,methods:{renderInnerMenuItem:function(e){var t=this.$props,n=t.renderMenuItem,i=t.index,r=t.subMenuKey;return n(e,i,r)}},render:function(){var e=arguments[0],t=c()({},this.$props),n=t.rootPrefixCls,i=t.title,r=n+"-item-group-title",o=n+"-item-group-list",a=c()({},this.$listeners);return delete a.click,e("li",{on:a,class:n+"-item-group"},[e("div",{class:r,attrs:{title:"string"===typeof i?i:void 0}},[Object(b["d"])(this,"title")]),e("ul",{class:o},[this.$slots["default"]&&this.$slots["default"].map(this.renderInnerMenuItem)])])}},mn=vn;function gn(e){var t=e,n=[];function i(e){t=c()({},t,e);for(var i=0;i=0||i.indexOf("Bottom")>=0?o.top=r.height-t.offset[1]+"px":(i.indexOf("Top")>=0||i.indexOf("bottom")>=0)&&(o.top=-t.offset[1]+"px"),i.indexOf("left")>=0||i.indexOf("Right")>=0?o.left=r.width-t.offset[0]+"px":(i.indexOf("right")>=0||i.indexOf("Left")>=0)&&(o.left=-t.offset[0]+"px"),e.style.transformOrigin=o.left+" "+o.top}}},render:function(){var e=arguments[0],t=this.$props,n=this.$data,i=this.$slots,r=this.$listeners,o=t.prefixCls,s=t.openClassName,l=t.getPopupContainer,u=this.configProvider.getPopupContainer,h=(i["default"]||[]).filter(function(e){return e.tag||""!==e.text.trim()});h=1===h.length?h[0]:h;var d=n.sVisible;if(!Object(b["j"])(this,"visible")&&this.isNoTitle()&&(d=!1),!h)return null;var f=this.getDisabledCompatibleChildren(Object(b["l"])(h)?h:e("span",[h])),p=a()({},s||o+"-open",!0),v={props:c()({},t,{getTooltipContainer:l||u,builtinPlacements:this.getPlacements(),visible:d}),ref:"tooltip",on:c()({},r,{visibleChange:this.onVisibleChange,popupAlign:this.onPopupAlign})};return e(jn,v,[e("template",{slot:"overlay"},[Object(b["d"])(this,"title")]),d?Object(Ze["a"])(f,{class:p}):f])},install:function(e){e.component(Qn.name,Qn)}},Jn=Qn;function Zn(){}var ei={name:"MenuItem",inheritAttrs:!1,props:Ln,inject:{getInlineCollapsed:{default:function(){return Zn}}},isMenuItem:1,methods:{onKeyDown:function(e){this.$refs.menuItem.onKeyDown(e)}},render:function(){var e=arguments[0],t=Object(b["f"])(this),n=t.level,i=t.title,o=t.rootPrefixCls,a=this.getInlineCollapsed,s=this.$slots,l=this.$attrs,u=this.$listeners,h=a(),d=void 0;h&&(d=i||(1===n?s["default"]:""));var f={props:c()({},t,{title:h?null:i}),attrs:l,on:u},p={props:{title:d,placement:"right",overlayClassName:o+"-inline-collapsed-tooltip"}};return e(Jn,p,[e(Vn,r()([f,{ref:"menuItem"}]),[s["default"]])])}},ti=f["a"].oneOf(["vertical","vertical-left","vertical-right","horizontal","inline"]),ni=c()({},_n,{theme:f["a"].oneOf(["light","dark"]).def("light"),mode:ti.def("vertical"),selectable:f["a"].bool,selectedKeys:f["a"].arrayOf(f["a"].oneOfType([f["a"].string,f["a"].number])),defaultSelectedKeys:f["a"].array,openKeys:f["a"].array,defaultOpenKeys:f["a"].array,openAnimation:f["a"].oneOfType([f["a"].string,f["a"].object]),openTransitionName:f["a"].string,prefixCls:f["a"].string.def("ant-menu"),multiple:f["a"].bool,inlineIndent:f["a"].number.def(24),inlineCollapsed:f["a"].bool,isRootMenu:f["a"].bool.def(!0),focusable:f["a"].bool.def(!1)}),ii={name:"AMenu",props:ni,Divider:c()({},u,{name:"AMenuDivider"}),Item:c()({},ei,{name:"AMenuItem"}),SubMenu:c()({},pn,{name:"ASubMenu"}),ItemGroup:c()({},mn,{name:"AMenuItemGroup"}),provide:function(){return{getInlineCollapsed:this.getInlineCollapsed}},mixins:[lt["a"]],inject:{layoutSiderContext:{default:function(){return{}}},configProvider:{default:function(){return{}}}},model:{prop:"selectedKeys",event:"selectChange"},created:function(){this.preProps=c()({},this.$props)},updated:function(){this.propsUpdating=!1},watch:{mode:function(e,t){"inline"===t&&"inline"!==e&&(this.switchingModeFromInline=!0)},openKeys:function(e){this.setState({sOpenKeys:e})},inlineCollapsed:function(e){this.collapsedChange(e)},"layoutSiderContext.sCollapsed":function(e){this.collapsedChange(e)}},data:function(){var e=this.$props;Object(C["a"])(!(Object(b["j"])(this,"inlineCollapsed")&&"inline"!==e.mode),"`inlineCollapsed` should only be used when Menu's `mode` is inline."),this.switchingModeFromInline=!1,this.leaveAnimationExecutedWhenInlineCollapsed=!1,this.inlineOpenKeys=[];var t=void 0;return Object(b["j"])(this,"openKeys")?t=e.openKeys:Object(b["j"])(this,"defaultOpenKeys")&&(t=e.defaultOpenKeys),{sOpenKeys:t}},methods:{collapsedChange:function(e){this.propsUpdating||(this.propsUpdating=!0,Object(b["j"])(this,"openKeys")?e&&(this.switchingModeFromInline=!0):e?(this.switchingModeFromInline=!0,this.inlineOpenKeys=this.sOpenKeys,this.setState({sOpenKeys:[]})):(this.setState({sOpenKeys:this.inlineOpenKeys}),this.inlineOpenKeys=[]))},restoreModeVerticalFromInline:function(){this.switchingModeFromInline&&(this.switchingModeFromInline=!1,this.$forceUpdate())},handleMouseEnter:function(e){this.restoreModeVerticalFromInline(),this.$emit("mouseenter",e)},handleTransitionEnd:function(e){var t="width"===e.propertyName&&e.target===e.currentTarget,n="font-size"===e.propertyName&&e.target.className.indexOf("anticon")>=0;(t||n)&&this.restoreModeVerticalFromInline()},handleClick:function(e){this.handleOpenChange([]),this.$emit("click",e)},handleSelect:function(e){this.$emit("select",e),this.$emit("selectChange",e.selectedKeys)},handleDeselect:function(e){this.$emit("deselect",e),this.$emit("selectChange",e.selectedKeys)},handleOpenChange:function(e){this.setOpenKeys(e),this.$emit("openChange",e),this.$emit("update:openKeys",e)},setOpenKeys:function(e){Object(b["j"])(this,"openKeys")||this.setState({sOpenKeys:e})},getRealMenuMode:function(){var e=this.getInlineCollapsed();if(this.switchingModeFromInline&&e)return"inline";var t=this.$props.mode;return e?"vertical":t},getInlineCollapsed:function(){var e=this.$props.inlineCollapsed;return void 0!==this.layoutSiderContext.sCollapsed?this.layoutSiderContext.sCollapsed:e},getMenuOpenAnimation:function(e){var t=this.$props,n=t.openAnimation,i=t.openTransitionName,r=n||i;return void 0===n&&void 0===i&&("horizontal"===e?r="slide-up":"inline"===e?r={on:zn}:this.switchingModeFromInline?(r="",this.switchingModeFromInline=!1):r="zoom-big"),r}},render:function(){var e,t=this,n=arguments[0],i=this.layoutSiderContext,o=this.$slots,s=this.$listeners,u=i.collapsedWidth,h=this.configProvider.getPopupContainer,d=this.$props,f=d.prefixCls,p=d.theme,v=d.getPopupContainer,m=this.getRealMenuMode(),g=this.getMenuOpenAnimation(m),y=(e={},a()(e,f+"-"+p,!0),a()(e,f+"-inline-collapsed",this.getInlineCollapsed()),e),_={props:c()({},Object(l["a"])(this.$props,["inlineCollapsed"]),{getPopupContainer:v||h,openKeys:this.sOpenKeys,mode:m}),on:c()({},s,{select:this.handleSelect,deselect:this.handleDeselect,openChange:this.handleOpenChange,onMouseenter:this.handleMouseEnter}),nativeOn:{transitionend:this.handleTransitionEnd}};return Object(b["j"])(this,"selectedKeys")||delete _.props.selectedKeys,"inline"!==m?(_.on.click=this.handleClick,_.props.openTransitionName=g):(_.on.click=function(e){t.$emit("click",e)},_.props.openAnimation=g),!this.getInlineCollapsed()||0!==u&&"0"!==u&&"0px"!==u?n(xn,r()([_,{class:y}]),[o["default"]]):null},install:function(e){e.component(ii.name,ii),e.component(ii.Item.name,ii.Item),e.component(ii.SubMenu.name,ii.SubMenu),e.component(ii.Divider.name,ii.Divider),e.component(ii.ItemGroup.name,ii.ItemGroup)}};t["a"]=ii},5695:function(e,t,n){var i=n("5ca1"),r=n("77f1"),o=String.fromCharCode,a=String.fromCodePoint;i(i.S+i.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(e){var t,n=[],i=arguments.length,a=0;while(i>a){if(t=+arguments[a++],r(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?o(t):o(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},"57a5":function(e,t,n){var i=n("91e9"),r=i(Object.keys,Object);e.exports=r},"57ba":function(e,t,n){"use strict";t.__esModule=!0;var i=n("4849"),r=o(i);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(){function e(e,t){for(var n=0;n-1}function m(e,t){if(e){for(var n=e.className,i=(t||"").split(" "),r=0,o=i.length;ri.top&&n.right>i.left&&n.lefte?l():!0!==t&&(r=setTimeout(i?u:l,void 0===i?e-s:e))}return"boolean"!==typeof t&&(i=n,n=t,t=void 0),a}},"5b01":function(e,t,n){var i=n("8eeb"),r=n("ec69");function o(e,t){return e&&i(t,r(t),e)}e.exports=o},"5b4e":function(e,t,n){var i=n("36c3"),r=n("b447"),o=n("0fc9");e.exports=function(e){return function(t,n,a){var s,c=i(t),l=r(c.length),u=o(a,l);if(e&&n!=n){while(l>u)if(s=c[u++],s!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},"5c95":function(e,t,n){var i=n("35e8");e.exports=function(e,t,n){for(var r in t)n&&e[r]?e[r]=t[r]:i(e,r,t[r]);return e}},"5c96":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=44)}([function(e,t){e.exports=n("d940")},function(e,t){e.exports=n("5924")},function(e,t){e.exports=n("8122")},function(e,t){e.exports=n("d010")},function(e,t){e.exports=n("6b7c")},function(e,t){e.exports=n("2b0e")},function(e,t){e.exports=n("e974")},function(e,t){e.exports=n("7f4d")},function(e,t){e.exports=n("f3ad")},function(e,t){e.exports=n("2bb5")},function(e,t){e.exports=n("417f")},function(e,t){e.exports=n("4010")},function(e,t){e.exports=n("0e15")},function(e,t){e.exports=n("dcdc")},function(e,t){e.exports=n("4897")},function(e,t){e.exports=n("5128")},function(e,t){e.exports=n("eedf")},function(e,t){e.exports=n("a742")},function(e,t){e.exports=n("14e9")},function(e,t){e.exports=n("d7d1")},function(e,t){e.exports=n("5488")},function(e,t){e.exports=n("12f2")},function(e,t){e.exports=n("d397")},function(e,t){e.exports=n("41f8")},function(e,t){e.exports=n("92fa")},function(e,t){e.exports=n("597f")},function(e,t){e.exports=n("299c")},function(e,t){e.exports=n("2a5e")},function(e,t){e.exports=n("8bbc")},function(e,t){e.exports=n("e62d")},function(e,t){e.exports=n("7fc1")},function(e,t){e.exports=n("c56a")},function(e,t){e.exports=n("c284")},function(e,t){e.exports=n("e452")},function(e,t){e.exports=n("9619")},function(e,t){e.exports=n("4e4b")},function(e,t){e.exports=n("e772")},function(e,t){e.exports=n("845f")},function(e,t){e.exports=n("c098")},function(e,t){e.exports=n("722f")},function(e,t){e.exports=n("4cb2")},function(e,t){e.exports=n("e450")},function(e,t){e.exports=n("4726")},function(e,t){e.exports=n("f494")},function(e,t,n){e.exports=n(45)},function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"el-pager",on:{click:e.onPagerClick}},[e.pageCount>0?n("li",{staticClass:"number",class:{active:1===e.currentPage,disabled:e.disabled}},[e._v("1")]):e._e(),e.showPrevMore?n("li",{staticClass:"el-icon more btn-quickprev",class:[e.quickprevIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("left")},mouseleave:function(t){e.quickprevIconClass="el-icon-more"}}}):e._e(),e._l(e.pagers,function(t){return n("li",{key:t,staticClass:"number",class:{active:e.currentPage===t,disabled:e.disabled}},[e._v(e._s(t))])}),e.showNextMore?n("li",{staticClass:"el-icon more btn-quicknext",class:[e.quicknextIconClass,{disabled:e.disabled}],on:{mouseenter:function(t){e.onMouseenter("right")},mouseleave:function(t){e.quicknextIconClass="el-icon-more"}}}):e._e(),e.pageCount>1?n("li",{staticClass:"number",class:{active:e.currentPage===e.pageCount,disabled:e.disabled}},[e._v(e._s(e.pageCount))]):e._e()],2)},r=[];i._withStripped=!0;var o={name:"ElPager",props:{currentPage:Number,pageCount:Number,pagerCount:Number,disabled:Boolean},watch:{showPrevMore:function(e){e||(this.quickprevIconClass="el-icon-more")},showNextMore:function(e){e||(this.quicknextIconClass="el-icon-more")}},methods:{onPagerClick:function(e){var t=e.target;if("UL"!==t.tagName&&!this.disabled){var n=Number(e.target.textContent),i=this.pageCount,r=this.currentPage,o=this.pagerCount-2;-1!==t.className.indexOf("more")&&(-1!==t.className.indexOf("quickprev")?n=r-o:-1!==t.className.indexOf("quicknext")&&(n=r+o)),isNaN(n)||(n<1&&(n=1),n>i&&(n=i)),n!==r&&this.$emit("change",n)}},onMouseenter:function(e){this.disabled||("left"===e?this.quickprevIconClass="el-icon-d-arrow-left":this.quicknextIconClass="el-icon-d-arrow-right")}},computed:{pagers:function(){var e=this.pagerCount,t=(e-1)/2,n=Number(this.currentPage),i=Number(this.pageCount),r=!1,o=!1;i>e&&(n>e-t&&(r=!0),n4&&e<22&&e%2===1},default:7},currentPage:{type:Number,default:1},layout:{default:"prev, pager, next, jumper, ->, total"},pageSizes:{type:Array,default:function(){return[10,20,30,40,50,100]}},popperClass:String,prevText:String,nextText:String,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean},data:function(){return{internalCurrentPage:1,internalPageSize:0,lastEmittedPage:-1,userChangePageSize:!1}},render:function(e){var t=this.layout;if(!t)return null;if(this.hideOnSinglePage&&(!this.internalPageCount||1===this.internalPageCount))return null;var n=e("div",{class:["el-pagination",{"is-background":this.background,"el-pagination--small":this.small}]}),i={prev:e("prev"),jumper:e("jumper"),pager:e("pager",{attrs:{currentPage:this.internalCurrentPage,pageCount:this.internalPageCount,pagerCount:this.pagerCount,disabled:this.disabled},on:{change:this.handleCurrentChange}}),next:e("next"),sizes:e("sizes",{attrs:{pageSizes:this.pageSizes}}),slot:e("slot",[this.$slots.default?this.$slots.default:""]),total:e("total")},r=t.split(",").map(function(e){return e.trim()}),o=e("div",{class:"el-pagination__rightwrapper"}),a=!1;return n.children=n.children||[],o.children=o.children||[],r.forEach(function(e){"->"!==e?a?o.children.push(i[e]):n.children.push(i[e]):a=!0}),a&&n.children.unshift(o),n},components:{Prev:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage<=1},class:"btn-prev",on:{click:this.$parent.prev}},[this.$parent.prevText?e("span",[this.$parent.prevText]):e("i",{class:"el-icon el-icon-arrow-left"})])}},Next:{render:function(e){return e("button",{attrs:{type:"button",disabled:this.$parent.disabled||this.$parent.internalCurrentPage===this.$parent.internalPageCount||0===this.$parent.internalPageCount},class:"btn-next",on:{click:this.$parent.next}},[this.$parent.nextText?e("span",[this.$parent.nextText]):e("i",{class:"el-icon el-icon-arrow-right"})])}},Sizes:{mixins:[g.a],props:{pageSizes:Array},watch:{pageSizes:{immediate:!0,handler:function(e,t){Object(b["valueEquals"])(e,t)||Array.isArray(e)&&(this.$parent.internalPageSize=e.indexOf(this.$parent.pageSize)>-1?this.$parent.pageSize:this.pageSizes[0])}}},render:function(e){var t=this;return e("span",{class:"el-pagination__sizes"},[e("el-select",{attrs:{value:this.$parent.internalPageSize,popperClass:this.$parent.popperClass||"",size:"mini",disabled:this.$parent.disabled},on:{input:this.handleChange}},[this.pageSizes.map(function(n){return e("el-option",{attrs:{value:n,label:n+t.t("el.pagination.pagesize")}})})])])},components:{ElSelect:h.a,ElOption:f.a},methods:{handleChange:function(e){e!==this.$parent.internalPageSize&&(this.$parent.internalPageSize=e=parseInt(e,10),this.$parent.userChangePageSize=!0,this.$parent.$emit("update:pageSize",e),this.$parent.$emit("size-change",e))}}},Jumper:{mixins:[g.a],components:{ElInput:v.a},data:function(){return{userInput:null}},watch:{"$parent.internalCurrentPage":function(){this.userInput=null}},methods:{handleKeyup:function(e){var t=e.keyCode,n=e.target;13===t&&this.handleChange(n.value)},handleInput:function(e){this.userInput=e},handleChange:function(e){this.$parent.internalCurrentPage=this.$parent.getValidCurrentPage(e),this.$parent.emitChange(),this.userInput=null}},render:function(e){return e("span",{class:"el-pagination__jump"},[this.t("el.pagination.goto"),e("el-input",{class:"el-pagination__editor is-in-pagination",attrs:{min:1,max:this.$parent.internalPageCount,value:null!==this.userInput?this.userInput:this.$parent.internalCurrentPage,type:"number",disabled:this.$parent.disabled},nativeOn:{keyup:this.handleKeyup},on:{input:this.handleInput,change:this.handleChange}}),this.t("el.pagination.pageClassifier")])}},Total:{mixins:[g.a],render:function(e){return"number"===typeof this.$parent.total?e("span",{class:"el-pagination__total"},[this.t("el.pagination.total",{total:this.$parent.total})]):""}},Pager:l},methods:{handleCurrentChange:function(e){this.internalCurrentPage=this.getValidCurrentPage(e),this.userChangePageSize=!0,this.emitChange()},prev:function(){if(!this.disabled){var e=this.internalCurrentPage-1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("prev-click",this.internalCurrentPage),this.emitChange()}},next:function(){if(!this.disabled){var e=this.internalCurrentPage+1;this.internalCurrentPage=this.getValidCurrentPage(e),this.$emit("next-click",this.internalCurrentPage),this.emitChange()}},getValidCurrentPage:function(e){e=parseInt(e,10);var t="number"===typeof this.internalPageCount,n=void 0;return t?e<1?n=1:e>this.internalPageCount&&(n=this.internalPageCount):(isNaN(e)||e<1)&&(n=1),void 0===n&&isNaN(e)?n=1:0===n&&(n=1),void 0===n?e:n},emitChange:function(){var e=this;this.$nextTick(function(){(e.internalCurrentPage!==e.lastEmittedPage||e.userChangePageSize)&&(e.$emit("current-change",e.internalCurrentPage),e.lastEmittedPage=e.internalCurrentPage,e.userChangePageSize=!1)})}},computed:{internalPageCount:function(){return"number"===typeof this.total?Math.max(1,Math.ceil(this.total/this.internalPageSize)):"number"===typeof this.pageCount?Math.max(1,this.pageCount):null}},watch:{currentPage:{immediate:!0,handler:function(e){this.internalCurrentPage=this.getValidCurrentPage(e)}},pageSize:{immediate:!0,handler:function(e){this.internalPageSize=isNaN(e)?10:e}},internalCurrentPage:{immediate:!0,handler:function(e){this.$emit("update:currentPage",e),this.lastEmittedPage=-1}},internalPageCount:function(e){var t=this.internalCurrentPage;e>0&&0===t?this.internalCurrentPage=1:t>e&&(this.internalCurrentPage=0===e?1:e,this.userChangePageSize&&this.emitChange()),this.userChangePageSize=!1}},install:function(e){e.component(y.name,y)}},_=y,C=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"dialog-fade"},on:{"after-enter":e.afterEnter,"after-leave":e.afterLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-dialog__wrapper",on:{click:function(t){return t.target!==t.currentTarget?null:e.handleWrapperClick(t)}}},[n("div",{ref:"dialog",staticClass:"el-dialog",class:[{"is-fullscreen":e.fullscreen,"el-dialog--center":e.center},e.customClass],style:e.style,attrs:{role:"dialog","aria-modal":"true","aria-label":e.title||"dialog"}},[n("div",{staticClass:"el-dialog__header"},[e._t("title",[n("span",{staticClass:"el-dialog__title"},[e._v(e._s(e.title))])]),e.showClose?n("button",{staticClass:"el-dialog__headerbtn",attrs:{type:"button","aria-label":"Close"},on:{click:e.handleClose}},[n("i",{staticClass:"el-dialog__close el-icon el-icon-close"})]):e._e()],2),e.rendered?n("div",{staticClass:"el-dialog__body"},[e._t("default")],2):e._e(),e.$slots.footer?n("div",{staticClass:"el-dialog__footer"},[e._t("footer")],2):e._e()])])])},w=[];C._withStripped=!0;var x=n(15),S=n.n(x),E=n(9),O=n.n(E),M=n(3),z=n.n(M),k={name:"ElDialog",mixins:[S.a,z.a,O.a],props:{title:{type:String,default:""},modal:{type:Boolean,default:!0},modalAppendToBody:{type:Boolean,default:!0},appendToBody:{type:Boolean,default:!1},lockScroll:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},width:String,fullscreen:Boolean,customClass:{type:String,default:""},top:{type:String,default:"15vh"},beforeClose:Function,center:{type:Boolean,default:!1}},data:function(){return{closed:!1}},watch:{visible:function(e){var t=this;e?(this.closed=!1,this.$emit("open"),this.$el.addEventListener("scroll",this.updatePopper),this.$nextTick(function(){t.$refs.dialog.scrollTop=0}),this.appendToBody&&document.body.appendChild(this.$el)):(this.$el.removeEventListener("scroll",this.updatePopper),this.closed||this.$emit("close"))}},computed:{style:function(){var e={};return this.fullscreen||(e.marginTop=this.top,this.width&&(e.width=this.width)),e}},methods:{getMigratingConfig:function(){return{props:{size:"size is removed."}}},handleWrapperClick:function(){this.closeOnClickModal&&this.handleClose()},handleClose:function(){"function"===typeof this.beforeClose?this.beforeClose(this.hide):this.hide()},hide:function(e){!1!==e&&(this.$emit("update:visible",!1),this.$emit("close"),this.closed=!0)},updatePopper:function(){this.broadcast("ElSelectDropdown","updatePopper"),this.broadcast("ElDropdownMenu","updatePopper")},afterEnter:function(){this.$emit("opened")},afterLeave:function(){this.$emit("closed")}},mounted:function(){this.visible&&(this.rendered=!0,this.open(),this.appendToBody&&document.body.appendChild(this.$el))},destroyed:function(){this.appendToBody&&this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)}},T=k,L=s(T,C,w,!1,null,null,null);L.options.__file="packages/dialog/src/component.vue";var A=L.exports;A.install=function(e){e.component(A.name,A)};var H=A,V=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.close,expression:"close"}],staticClass:"el-autocomplete",attrs:{"aria-haspopup":"listbox",role:"combobox","aria-expanded":e.suggestionVisible,"aria-owns":e.id}},[n("el-input",e._b({ref:"input",on:{input:e.handleChange,focus:e.handleFocus,blur:e.handleBlur,clear:e.handleClear},nativeOn:{keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex-1)},function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.highlight(e.highlightedIndex+1)},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleKeyEnter(t):null},function(t){return"button"in t||!e._k(t.keyCode,"tab",9,t.key,"Tab")?e.close(t):null}]}},"el-input",[e.$props,e.$attrs],!1),[e.$slots.prepend?n("template",{slot:"prepend"},[e._t("prepend")],2):e._e(),e.$slots.append?n("template",{slot:"append"},[e._t("append")],2):e._e(),e.$slots.prefix?n("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),e.$slots.suffix?n("template",{slot:"suffix"},[e._t("suffix")],2):e._e()],2),n("el-autocomplete-suggestions",{ref:"suggestions",class:[e.popperClass?e.popperClass:""],attrs:{"visible-arrow":"","popper-options":e.popperOptions,"append-to-body":e.popperAppendToBody,placement:e.placement,id:e.id}},e._l(e.suggestions,function(t,i){return n("li",{key:i,class:{highlighted:e.highlightedIndex===i},attrs:{id:e.id+"-item-"+i,role:"option","aria-selected":e.highlightedIndex===i},on:{click:function(n){e.select(t)}}},[e._t("default",[e._v("\n "+e._s(t[e.valueKey])+"\n ")],{item:t})],2)}),0)],1)},N=[];V._withStripped=!0;var I=n(12),D=n.n(I),P=n(10),$=n.n(P),R=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-autocomplete-suggestion el-popper",class:{"is-loading":!e.parent.hideLoading&&e.parent.loading},style:{width:e.dropdownWidth},attrs:{role:"region"}},[n("el-scrollbar",{attrs:{tag:"ul","wrap-class":"el-autocomplete-suggestion__wrap","view-class":"el-autocomplete-suggestion__list"}},[!e.parent.hideLoading&&e.parent.loading?n("li",[n("i",{staticClass:"el-icon-loading"})]):e._t("default")],2)],1)])},j=[];R._withStripped=!0;var F=n(6),B=n.n(F),W=n(18),U=n.n(W),K={components:{ElScrollbar:U.a},mixins:[B.a,z.a],componentName:"ElAutocompleteSuggestions",data:function(){return{parent:this.$parent,dropdownWidth:""}},props:{options:{default:function(){return{gpuAcceleration:!1}}},id:String},methods:{select:function(e){this.dispatch("ElAutocomplete","item-click",e)}},updated:function(){var e=this;this.$nextTick(function(t){e.popperJS&&e.updatePopper()})},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$refs.input.$refs.input,this.referenceList=this.$el.querySelector(".el-autocomplete-suggestion__list"),this.referenceList.setAttribute("role","listbox"),this.referenceList.setAttribute("id",this.id)},created:function(){var e=this;this.$on("visible",function(t,n){e.dropdownWidth=n+"px",e.showPopper=t})}},q=K,G=s(q,R,j,!1,null,null,null);G.options.__file="packages/autocomplete/src/autocomplete-suggestions.vue";var Y=G.exports,X=n(21),Q=n.n(X),J={name:"ElAutocomplete",mixins:[z.a,Q()("input"),O.a],inheritAttrs:!1,componentName:"ElAutocomplete",components:{ElInput:v.a,ElAutocompleteSuggestions:Y},directives:{Clickoutside:$.a},props:{valueKey:{type:String,default:"value"},popperClass:String,popperOptions:Object,placeholder:String,clearable:{type:Boolean,default:!1},disabled:Boolean,name:String,size:String,value:String,maxlength:Number,minlength:Number,autofocus:Boolean,fetchSuggestions:Function,triggerOnFocus:{type:Boolean,default:!0},customItem:String,selectWhenUnmatched:{type:Boolean,default:!1},prefixIcon:String,suffixIcon:String,label:String,debounce:{type:Number,default:300},placement:{type:String,default:"bottom-start"},hideLoading:Boolean,popperAppendToBody:{type:Boolean,default:!0},highlightFirstItem:{type:Boolean,default:!1}},data:function(){return{activated:!1,suggestions:[],loading:!1,highlightedIndex:-1,suggestionDisabled:!1}},computed:{suggestionVisible:function(){var e=this.suggestions,t=Array.isArray(e)&&e.length>0;return(t||this.loading)&&this.activated},id:function(){return"el-autocomplete-"+Object(b["generateId"])()}},watch:{suggestionVisible:function(e){var t=this.getInput();t&&this.broadcast("ElAutocompleteSuggestions","visible",[e,t.offsetWidth])}},methods:{getMigratingConfig:function(){return{props:{"custom-item":"custom-item is removed, use scoped slot instead.",props:"props is removed, use value-key instead."}}},getData:function(e){var t=this;this.suggestionDisabled||(this.loading=!0,this.fetchSuggestions(e,function(e){t.loading=!1,t.suggestionDisabled||(Array.isArray(e)?(t.suggestions=e,t.highlightedIndex=t.highlightFirstItem?0:-1):console.error("[Element Error][Autocomplete]autocomplete suggestions must be an array"))}))},handleChange:function(e){if(this.$emit("input",e),this.suggestionDisabled=!1,!this.triggerOnFocus&&!e)return this.suggestionDisabled=!0,void(this.suggestions=[]);this.debouncedGetData(e)},handleFocus:function(e){this.activated=!0,this.$emit("focus",e),this.triggerOnFocus&&this.debouncedGetData(this.value)},handleBlur:function(e){this.$emit("blur",e)},handleClear:function(){this.activated=!1,this.$emit("clear")},close:function(e){this.activated=!1},handleKeyEnter:function(e){var t=this;this.suggestionVisible&&this.highlightedIndex>=0&&this.highlightedIndex=this.suggestions.length&&(e=this.suggestions.length-1);var t=this.$refs.suggestions.$el.querySelector(".el-autocomplete-suggestion__wrap"),n=t.querySelectorAll(".el-autocomplete-suggestion__list li"),i=n[e],r=t.scrollTop,o=i.offsetTop;o+i.scrollHeight>r+t.clientHeight&&(t.scrollTop+=i.scrollHeight),o=0&&this.resetTabindex(this.triggerElm),clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.visible=!1},"click"===this.trigger?0:this.hideTimeout))},handleClick:function(){this.triggerElm.disabled||(this.visible?this.hide():this.show())},handleTriggerKeyDown:function(e){var t=e.keyCode;[38,40].indexOf(t)>-1?(this.removeTabindex(),this.resetTabindex(this.menuItems[0]),this.menuItems[0].focus(),e.preventDefault(),e.stopPropagation()):13===t?this.handleClick():[9,27].indexOf(t)>-1&&this.hide()},handleItemKeyDown:function(e){var t=e.keyCode,n=e.target,i=this.menuItemsArray.indexOf(n),r=this.menuItemsArray.length-1,o=void 0;[38,40].indexOf(t)>-1?(o=38===t?0!==i?i-1:0:i-1&&(this.hide(),this.triggerElmFocus())},resetTabindex:function(e){this.removeTabindex(),e.setAttribute("tabindex","0")},removeTabindex:function(){this.triggerElm.setAttribute("tabindex","-1"),this.menuItemsArray.forEach(function(e){e.setAttribute("tabindex","-1")})},initAria:function(){this.dropdownElm.setAttribute("id",this.listId),this.triggerElm.setAttribute("aria-haspopup","list"),this.triggerElm.setAttribute("aria-controls",this.listId),this.splitButton||(this.triggerElm.setAttribute("role","button"),this.triggerElm.setAttribute("tabindex",this.tabindex),this.triggerElm.setAttribute("class",(this.triggerElm.getAttribute("class")||"")+" el-dropdown-selfdefine"))},initEvent:function(){var e=this,t=this.trigger,n=this.show,i=this.hide,r=this.handleClick,o=this.splitButton,a=this.handleTriggerKeyDown,s=this.handleItemKeyDown;this.triggerElm=o?this.$refs.trigger.$el:this.$slots.default[0].elm;var c=this.dropdownElm;this.triggerElm.addEventListener("keydown",a),c.addEventListener("keydown",s,!0),o||(this.triggerElm.addEventListener("focus",function(){e.focusing=!0}),this.triggerElm.addEventListener("blur",function(){e.focusing=!1}),this.triggerElm.addEventListener("click",function(){e.focusing=!1})),"hover"===t?(this.triggerElm.addEventListener("mouseenter",n),this.triggerElm.addEventListener("mouseleave",i),c.addEventListener("mouseenter",n),c.addEventListener("mouseleave",i)):"click"===t&&this.triggerElm.addEventListener("click",r)},handleMenuItemClick:function(e,t){this.hideOnClick&&(this.visible=!1),this.$emit("command",e,t)},triggerElmFocus:function(){this.triggerElm.focus&&this.triggerElm.focus()},initDomOperation:function(){this.dropdownElm=this.popperElm,this.menuItems=this.dropdownElm.querySelectorAll("[tabindex='-1']"),this.menuItemsArray=[].slice.call(this.menuItems),this.initEvent(),this.initAria()}},render:function(e){var t=this,n=this.hide,i=this.splitButton,r=this.type,o=this.dropdownSize,a=function(e){t.$emit("click",e),n()},s=i?e("el-button-group",[e("el-button",{attrs:{type:r,size:o},nativeOn:{click:a}},[this.$slots.default]),e("el-button",{ref:"trigger",attrs:{type:r,size:o},class:"el-dropdown__caret-button"},[e("i",{class:"el-dropdown__icon el-icon-arrow-down"})])]):this.$slots.default;return e("div",{class:"el-dropdown",directives:[{name:"clickoutside",value:n}]},[s,this.$slots.dropdown])}},ue=le,he=s(ue,ne,ie,!1,null,null,null);he.options.__file="packages/dropdown/src/dropdown.vue";var de=he.exports;de.install=function(e){e.component(de.name,de)};var fe=de,pe=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[n("ul",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-dropdown-menu el-popper",class:[e.size&&"el-dropdown-menu--"+e.size]},[e._t("default")],2)])},ve=[];pe._withStripped=!0;var me={name:"ElDropdownMenu",componentName:"ElDropdownMenu",mixins:[B.a],props:{visibleArrow:{type:Boolean,default:!0},arrowOffset:{type:Number,default:0}},data:function(){return{size:this.dropdown.dropdownSize}},inject:["dropdown"],created:function(){var e=this;this.$on("updatePopper",function(){e.showPopper&&e.updatePopper()}),this.$on("visible",function(t){e.showPopper=t})},mounted:function(){this.dropdown.popperElm=this.popperElm=this.$el,this.referenceElm=this.dropdown.$el,this.dropdown.initDomOperation()},watch:{"dropdown.placement":{immediate:!0,handler:function(e){this.currentPlacement=e}}}},ge=me,be=s(ge,pe,ve,!1,null,null,null);be.options.__file="packages/dropdown/src/dropdown-menu.vue";var ye=be.exports;ye.install=function(e){e.component(ye.name,ye)};var _e=ye,Ce=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"el-dropdown-menu__item",class:{"is-disabled":e.disabled,"el-dropdown-menu__item--divided":e.divided},attrs:{"aria-disabled":e.disabled,tabindex:e.disabled?null:-1},on:{click:e.handleClick}},[e.icon?n("i",{class:e.icon}):e._e(),e._t("default")],2)},we=[];Ce._withStripped=!0;var xe={name:"ElDropdownItem",mixins:[z.a],props:{command:{},disabled:Boolean,divided:Boolean,icon:String},methods:{handleClick:function(e){this.dispatch("ElDropdown","menu-item-click",[this.command,this])}}},Se=xe,Ee=s(Se,Ce,we,!1,null,null,null);Ee.options.__file="packages/dropdown/src/dropdown-item.vue";var Oe=Ee.exports;Oe.install=function(e){e.component(Oe.name,Oe)};var Me=Oe,ze=ze||{};ze.Utils=ze.Utils||{},ze.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var n=e.childNodes[t];if(ze.Utils.attemptFocus(n)||ze.Utils.focusLastDescendant(n))return!0}return!1},ze.Utils.attemptFocus=function(e){if(!ze.Utils.isFocusable(e))return!1;ze.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(t){}return ze.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},ze.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},ze.Utils.triggerEvent=function(e,t){var n=void 0;n=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var i=document.createEvent(n),r=arguments.length,o=Array(r>2?r-2:0),a=2;a=0;t--)e.splice(t,0,e[t]);e=e.join("")}return/^[0-9a-fA-F]{6}$/.test(e)?{red:parseInt(e.slice(0,2),16),green:parseInt(e.slice(2,4),16),blue:parseInt(e.slice(4,6),16)}:{red:255,green:255,blue:255}},mixColor:function(e,t){var n=this.getColorChannels(e),i=n.red,r=n.green,o=n.blue;return t>0?(i*=1-t,r*=1-t,o*=1-t):(i+=(255-i)*t,r+=(255-r)*t,o+=(255-o)*t),"rgb("+Math.round(i)+", "+Math.round(r)+", "+Math.round(o)+")"},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},openMenu:function(e,t){var n=this.openedMenus;-1===n.indexOf(e)&&(this.uniqueOpened&&(this.openedMenus=n.filter(function(e){return-1!==t.indexOf(e)})),this.openedMenus.push(e))},closeMenu:function(e){var t=this.openedMenus.indexOf(e);-1!==t&&this.openedMenus.splice(t,1)},handleSubmenuClick:function(e){var t=e.index,n=e.indexPath,i=-1!==this.openedMenus.indexOf(t);i?(this.closeMenu(t),this.$emit("close",t,n)):(this.openMenu(t,n),this.$emit("open",t,n))},handleItemClick:function(e){var t=this,n=e.index,i=e.indexPath,r=this.activeIndex,o=null!==e.index;o&&(this.activeIndex=e.index),this.$emit("select",n,i,e),("horizontal"===this.mode||this.collapse)&&(this.openedMenus=[]),this.router&&o&&this.routeToItem(e,function(e){t.activeIndex=r,e&&console.error(e)})},initOpenedMenu:function(){var e=this,t=this.activeIndex,n=this.items[t];if(n&&"horizontal"!==this.mode&&!this.collapse){var i=n.indexPath;i.forEach(function(t){var n=e.submenus[t];n&&e.openMenu(t,n.indexPath)})}},routeToItem:function(e,t){var n=e.route||e.index;try{this.$router.push(n,function(){},t)}catch(i){console.error(i)}},open:function(e){var t=this,n=this.submenus[e.toString()].indexPath;n.forEach(function(e){return t.openMenu(e,n)})},close:function(e){this.closeMenu(e)}},mounted:function(){this.initOpenedMenu(),this.$on("item-click",this.handleItemClick),this.$on("submenu-click",this.handleSubmenuClick),"horizontal"===this.mode&&new De(this.$el),this.$watch("items",this.updateActiveIndex)}},Re=$e,je=s(Re,Ne,Ie,!1,null,null,null);je.options.__file="packages/menu/src/menu.vue";var Fe=je.exports;Fe.install=function(e){e.component(Fe.name,Fe)};var Be,We,Ue=Fe,Ke=n(20),qe=n.n(Ke),Ge={inject:["rootMenu"],computed:{indexPath:function(){var e=[this.index],t=this.$parent;while("ElMenu"!==t.$options.componentName)t.index&&e.unshift(t.index),t=t.$parent;return e},parentMenu:function(){var e=this.$parent;while(e&&-1===["ElMenu","ElSubmenu"].indexOf(e.$options.componentName))e=e.$parent;return e},paddingStyle:function(){if("vertical"!==this.rootMenu.mode)return{};var e=20,t=this.$parent;if(this.rootMenu.collapse)e=20;else while(t&&"ElMenu"!==t.$options.componentName)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return{paddingLeft:e+"px"}}}},Ye={props:{transformOrigin:{type:[Boolean,String],default:!1},offset:B.a.props.offset,boundariesPadding:B.a.props.boundariesPadding,popperOptions:B.a.props.popperOptions},data:B.a.data,methods:B.a.methods,beforeDestroy:B.a.beforeDestroy,deactivated:B.a.deactivated},Xe={name:"ElSubmenu",componentName:"ElSubmenu",mixins:[Ge,z.a,Ye],components:{ElCollapseTransition:qe.a},props:{index:{type:String,required:!0},showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300},popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0}},data:function(){return{popperJS:null,timeout:null,items:{},submenus:{},mouseInChild:!1}},watch:{opened:function(e){var t=this;this.isMenuPopup&&this.$nextTick(function(e){t.updatePopper()})}},computed:{appendToBody:function(){return void 0===this.popperAppendToBody?this.isFirstLevel:this.popperAppendToBody},menuTransitionName:function(){return this.rootMenu.collapse?"el-zoom-in-left":"el-zoom-in-top"},opened:function(){return this.rootMenu.openedMenus.indexOf(this.index)>-1},active:function(){var e=!1,t=this.submenus,n=this.items;return Object.keys(n).forEach(function(t){n[t].active&&(e=!0)}),Object.keys(t).forEach(function(n){t[n].active&&(e=!0)}),e},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},isMenuPopup:function(){return this.rootMenu.isMenuPopup},titleStyle:function(){return"horizontal"!==this.mode?{color:this.textColor}:{borderBottomColor:this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent",color:this.active?this.activeTextColor:this.textColor}},isFirstLevel:function(){var e=!0,t=this.$parent;while(t&&t!==this.rootMenu){if(["ElSubmenu","ElMenuItemGroup"].indexOf(t.$options.componentName)>-1){e=!1;break}t=t.$parent}return e}},methods:{handleCollapseToggle:function(e){e?this.initPopper():this.doDestroy()},addItem:function(e){this.$set(this.items,e.index,e)},removeItem:function(e){delete this.items[e.index]},addSubmenu:function(e){this.$set(this.submenus,e.index,e)},removeSubmenu:function(e){delete this.submenus[e.index]},handleClick:function(){var e=this.rootMenu,t=this.disabled;"hover"===e.menuTrigger&&"horizontal"===e.mode||e.collapse&&"vertical"===e.mode||t||this.dispatch("ElMenu","submenu-click",this)},handleMouseenter:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.showTimeout;if("ActiveXObject"in window||"focus"!==e.type||e.relatedTarget){var i=this.rootMenu,r=this.disabled;"click"===i.menuTrigger&&"horizontal"===i.mode||!i.collapse&&"vertical"===i.mode||r||(this.dispatch("ElSubmenu","mouse-enter-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){t.rootMenu.openMenu(t.index,t.indexPath)},n))}},handleMouseleave:function(){var e=this,t=this.rootMenu;"click"===t.menuTrigger&&"horizontal"===t.mode||!t.collapse&&"vertical"===t.mode||(this.dispatch("ElSubmenu","mouse-leave-child"),clearTimeout(this.timeout),this.timeout=setTimeout(function(){!e.mouseInChild&&e.rootMenu.closeMenu(e.index)},this.hideTimeout))},handleTitleMouseenter:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.hoverBackground)}},handleTitleMouseleave:function(){if("horizontal"!==this.mode||this.rootMenu.backgroundColor){var e=this.$refs["submenu-title"];e&&(e.style.backgroundColor=this.rootMenu.backgroundColor||"")}},updatePlacement:function(){this.currentPlacement="horizontal"===this.mode&&this.isFirstLevel?"bottom-start":"right-start"},initPopper:function(){this.referenceElm=this.$el,this.popperElm=this.$refs.menu,this.updatePlacement()}},created:function(){var e=this;this.$on("toggle-collapse",this.handleCollapseToggle),this.$on("mouse-enter-child",function(){e.mouseInChild=!0,clearTimeout(e.timeout)}),this.$on("mouse-leave-child",function(){e.mouseInChild=!1,clearTimeout(e.timeout)})},mounted:function(){this.parentMenu.addSubmenu(this),this.rootMenu.addSubmenu(this),this.initPopper()},beforeDestroy:function(){this.parentMenu.removeSubmenu(this),this.rootMenu.removeSubmenu(this)},render:function(e){var t=this,n=this.active,i=this.opened,r=this.paddingStyle,o=this.titleStyle,a=this.backgroundColor,s=this.rootMenu,c=this.currentPlacement,l=this.menuTransitionName,u=this.mode,h=this.disabled,d=this.popperClass,f=this.$slots,p=this.isFirstLevel,v=e("transition",{attrs:{name:l}},[e("div",{ref:"menu",directives:[{name:"show",value:i}],class:["el-menu--"+u,d],on:{mouseenter:function(e){return t.handleMouseenter(e,100)},mouseleave:this.handleMouseleave,focus:function(e){return t.handleMouseenter(e,100)}}},[e("ul",{attrs:{role:"menu"},class:["el-menu el-menu--popup","el-menu--popup-"+c],style:{backgroundColor:s.backgroundColor||""}},[f.default])])]),m=e("el-collapse-transition",[e("ul",{attrs:{role:"menu"},class:"el-menu el-menu--inline",directives:[{name:"show",value:i}],style:{backgroundColor:s.backgroundColor||""}},[f.default])]),g="horizontal"===s.mode&&p||"vertical"===s.mode&&!s.collapse?"el-icon-arrow-down":"el-icon-arrow-right";return e("li",{class:{"el-submenu":!0,"is-active":n,"is-opened":i,"is-disabled":h},attrs:{role:"menuitem","aria-haspopup":"true","aria-expanded":i},on:{mouseenter:this.handleMouseenter,mouseleave:this.handleMouseleave,focus:this.handleMouseenter}},[e("div",{class:"el-submenu__title",ref:"submenu-title",on:{click:this.handleClick,mouseenter:this.handleTitleMouseenter,mouseleave:this.handleTitleMouseleave},style:[r,o,{backgroundColor:a}]},[f.title,e("i",{class:["el-submenu__icon-arrow",g]})]),this.isMenuPopup?v:m])}},Qe=Xe,Je=s(Qe,Be,We,!1,null,null,null);Je.options.__file="packages/menu/src/submenu.vue";var Ze=Je.exports;Ze.install=function(e){e.component(Ze.name,Ze)};var et=Ze,tt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"el-menu-item",class:{"is-active":e.active,"is-disabled":e.disabled},style:[e.paddingStyle,e.itemStyle,{backgroundColor:e.backgroundColor}],attrs:{role:"menuitem",tabindex:"-1"},on:{click:e.handleClick,mouseenter:e.onMouseEnter,focus:e.onMouseEnter,blur:e.onMouseLeave,mouseleave:e.onMouseLeave}},["ElMenu"===e.parentMenu.$options.componentName&&e.rootMenu.collapse&&e.$slots.title?n("el-tooltip",{attrs:{effect:"dark",placement:"right"}},[n("div",{attrs:{slot:"content"},slot:"content"},[e._t("title")],2),n("div",{staticStyle:{position:"absolute",left:"0",top:"0",height:"100%",width:"100%",display:"inline-block","box-sizing":"border-box",padding:"0 20px"}},[e._t("default")],2)]):[e._t("default"),e._t("title")]],2)},nt=[];tt._withStripped=!0;var it=n(26),rt=n.n(it),ot={name:"ElMenuItem",componentName:"ElMenuItem",mixins:[Ge,z.a],components:{ElTooltip:rt.a},props:{index:{default:null,validator:function(e){return"string"===typeof e||null===e}},route:[String,Object],disabled:Boolean},computed:{active:function(){return this.index===this.rootMenu.activeIndex},hoverBackground:function(){return this.rootMenu.hoverBackground},backgroundColor:function(){return this.rootMenu.backgroundColor||""},activeTextColor:function(){return this.rootMenu.activeTextColor||""},textColor:function(){return this.rootMenu.textColor||""},mode:function(){return this.rootMenu.mode},itemStyle:function(){var e={color:this.active?this.activeTextColor:this.textColor};return"horizontal"!==this.mode||this.isNested||(e.borderBottomColor=this.active?this.rootMenu.activeTextColor?this.activeTextColor:"":"transparent"),e},isNested:function(){return this.parentMenu!==this.rootMenu}},methods:{onMouseEnter:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.hoverBackground)},onMouseLeave:function(){("horizontal"!==this.mode||this.rootMenu.backgroundColor)&&(this.$el.style.backgroundColor=this.backgroundColor)},handleClick:function(){this.disabled||(this.dispatch("ElMenu","item-click",this),this.$emit("click",this))}},mounted:function(){this.parentMenu.addItem(this),this.rootMenu.addItem(this)},beforeDestroy:function(){this.parentMenu.removeItem(this),this.rootMenu.removeItem(this)}},at=ot,st=s(at,tt,nt,!1,null,null,null);st.options.__file="packages/menu/src/menu-item.vue";var ct=st.exports;ct.install=function(e){e.component(ct.name,ct)};var lt=ct,ut=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"el-menu-item-group"},[n("div",{staticClass:"el-menu-item-group__title",style:{paddingLeft:e.levelPadding+"px"}},[e.$slots.title?e._t("title"):[e._v(e._s(e.title))]],2),n("ul",[e._t("default")],2)])},ht=[];ut._withStripped=!0;var dt={name:"ElMenuItemGroup",componentName:"ElMenuItemGroup",inject:["rootMenu"],props:{title:{type:String}},data:function(){return{paddingLeft:20}},computed:{levelPadding:function(){var e=20,t=this.$parent;if(this.rootMenu.collapse)return 20;while(t&&"ElMenu"!==t.$options.componentName)"ElSubmenu"===t.$options.componentName&&(e+=20),t=t.$parent;return e}}},ft=dt,pt=s(ft,ut,ht,!1,null,null,null);pt.options.__file="packages/menu/src/menu-item-group.vue";var vt=pt.exports;vt.install=function(e){e.component(vt.name,vt)};var mt=vt,gt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["textarea"===e.type?"el-textarea":"el-input",e.inputSize?"el-input--"+e.inputSize:"",{"is-disabled":e.inputDisabled,"is-exceed":e.inputExceed,"el-input-group":e.$slots.prepend||e.$slots.append,"el-input-group--append":e.$slots.append,"el-input-group--prepend":e.$slots.prepend,"el-input--prefix":e.$slots.prefix||e.prefixIcon,"el-input--suffix":e.$slots.suffix||e.suffixIcon||e.clearable||e.showPassword}],on:{mouseenter:function(t){e.hovering=!0},mouseleave:function(t){e.hovering=!1}}},["textarea"!==e.type?[e.$slots.prepend?n("div",{staticClass:"el-input-group__prepend"},[e._t("prepend")],2):e._e(),"textarea"!==e.type?n("input",e._b({ref:"input",staticClass:"el-input__inner",attrs:{tabindex:e.tabindex,type:e.showPassword?e.passwordVisible?"text":"password":e.type,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"input",e.$attrs,!1)):e._e(),e.$slots.prefix||e.prefixIcon?n("span",{staticClass:"el-input__prefix"},[e._t("prefix"),e.prefixIcon?n("i",{staticClass:"el-input__icon",class:e.prefixIcon}):e._e()],2):e._e(),e.getSuffixVisible()?n("span",{staticClass:"el-input__suffix"},[n("span",{staticClass:"el-input__suffix-inner"},[e.showClear&&e.showPwdVisible&&e.isWordLimitVisible?e._e():[e._t("suffix"),e.suffixIcon?n("i",{staticClass:"el-input__icon",class:e.suffixIcon}):e._e()],e.showClear?n("i",{staticClass:"el-input__icon el-icon-circle-close el-input__clear",on:{click:e.clear}}):e._e(),e.showPwdVisible?n("i",{staticClass:"el-input__icon el-icon-view el-input__clear",on:{click:e.handlePasswordVisible}}):e._e(),e.isWordLimitVisible?n("span",{staticClass:"el-input__count"},[n("span",{staticClass:"el-input__count-inner"},[e._v("\n "+e._s(e.textLength)+"/"+e._s(e.upperLimit)+"\n ")])]):e._e()],2),e.validateState?n("i",{staticClass:"el-input__icon",class:["el-input__validateIcon",e.validateIcon]}):e._e()]):e._e(),e.$slots.append?n("div",{staticClass:"el-input-group__append"},[e._t("append")],2):e._e()]:n("textarea",e._b({ref:"textarea",staticClass:"el-textarea__inner",style:e.textareaStyle,attrs:{tabindex:e.tabindex,disabled:e.inputDisabled,readonly:e.readonly,autocomplete:e.autoComplete||e.autocomplete,"aria-label":e.label},on:{compositionstart:e.handleCompositionStart,compositionend:e.handleCompositionEnd,input:e.handleInput,focus:e.handleFocus,blur:e.handleBlur,change:e.handleChange}},"textarea",e.$attrs,!1)),e.isWordLimitVisible&&"textarea"===e.type?n("span",{staticClass:"el-input__count"},[e._v(e._s(e.textLength)+"/"+e._s(e.upperLimit))]):e._e()],2)},bt=[];gt._withStripped=!0;var yt=void 0,_t="\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",Ct=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function wt(e){var t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),i=parseFloat(t.getPropertyValue("padding-bottom"))+parseFloat(t.getPropertyValue("padding-top")),r=parseFloat(t.getPropertyValue("border-bottom-width"))+parseFloat(t.getPropertyValue("border-top-width")),o=Ct.map(function(e){return e+":"+t.getPropertyValue(e)}).join(";");return{contextStyle:o,paddingSize:i,borderSize:r,boxSizing:n}}function xt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;yt||(yt=document.createElement("textarea"),document.body.appendChild(yt));var i=wt(e),r=i.paddingSize,o=i.borderSize,a=i.boxSizing,s=i.contextStyle;yt.setAttribute("style",s+";"+_t),yt.value=e.value||e.placeholder||"";var c=yt.scrollHeight,l={};"border-box"===a?c+=o:"content-box"===a&&(c-=r),yt.value="";var u=yt.scrollHeight-r;if(null!==t){var h=u*t;"border-box"===a&&(h=h+r+o),c=Math.max(h,c),l.minHeight=h+"px"}if(null!==n){var d=u*n;"border-box"===a&&(d=d+r+o),c=Math.min(d,c)}return l.height=c+"px",yt.parentNode&&yt.parentNode.removeChild(yt),yt=null,l}var St=n(7),Et=n.n(St),Ot={name:"ElInput",componentName:"ElInput",mixins:[z.a,O.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return Et()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"===typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize,t=this.type;if("textarea"===t)if(e){var n=e.minRows,i=e.maxRows;this.textareaCalcStyle=xt(this.$refs.textarea,n,i)}else this.textareaCalcStyle={minHeight:xt(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var n=null,i=0;i=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var n=this.getPrecision(this.step),i=Math.pow(10,n);t=Math.round(t/this.step)*i*this.step/i}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,n=this.getPrecision,i=this.precision,r=n(t);return void 0!==i?(r>i&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),i):Math.max(n(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"===typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),n=Math.pow(10,t);e=Math.round(e/this.step)*n*this.step/n}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),n=t.indexOf("."),i=0;return-1!==n&&(i=t.length-n-1),i},_increase:function(e,t){if("number"!==typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e+n*t)/n)},_decrease:function(e,t){if("number"!==typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e-n*t)/n)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"===typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){if(this.$refs&&this.$refs.input){var e=this.$refs.input.$refs.input;e.setAttribute("aria-valuenow",this.currentValue)}}},Nt=Vt,It=s(Nt,Lt,At,!1,null,null,null);It.options.__file="packages/input-number/src/input-number.vue";var Dt=It.exports;Dt.install=function(e){e.component(Dt.name,Dt)};var Pt=Dt,$t=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[n("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[n("span",{staticClass:"el-radio__inner"}),n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),n("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])},Rt=[];$t._withStripped=!0;var jt={name:"ElRadio",mixins:[z.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){var e=this.$parent;while(e){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},Ft=jt,Bt=s(Ft,$t,Rt,!1,null,null,null);Bt.options.__file="packages/radio/src/radio.vue";var Wt=Bt.exports;Wt.install=function(e){e.component(Wt.name,Wt)};var Ut=Wt,Kt=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-radio-group",attrs:{role:"radiogroup"},on:{keydown:e.handleKeydown}},[e._t("default")],2)},qt=[];Kt._withStripped=!0;var Gt=Object.freeze({LEFT:37,UP:38,RIGHT:39,DOWN:40}),Yt={name:"ElRadioGroup",componentName:"ElRadioGroup",inject:{elFormItem:{default:""}},mixins:[z.a],props:{value:{},size:String,fill:String,textColor:String,disabled:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},created:function(){var e=this;this.$on("handleChange",function(t){e.$emit("change",t)})},mounted:function(){var e=this.$el.querySelectorAll("[type=radio]"),t=this.$el.querySelectorAll("[role=radio]")[0];![].some.call(e,function(e){return e.checked})&&t&&(t.tabIndex=0)},methods:{handleKeydown:function(e){var t=e.target,n="INPUT"===t.nodeName?"[type=radio]":"[role=radio]",i=this.$el.querySelectorAll(n),r=i.length,o=[].indexOf.call(i,t),a=this.$el.querySelectorAll("[role=radio]");switch(e.keyCode){case Gt.LEFT:case Gt.UP:e.stopPropagation(),e.preventDefault(),0===o?(a[r-1].click(),a[r-1].focus()):(a[o-1].click(),a[o-1].focus());break;case Gt.RIGHT:case Gt.DOWN:o===r-1?(e.stopPropagation(),e.preventDefault(),a[0].click(),a[0].focus()):(a[o+1].click(),a[o+1].focus());break;default:break}}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[this.value])}}},Xt=Yt,Qt=s(Xt,Kt,qt,!1,null,null,null);Qt.options.__file="packages/radio/src/radio-group.vue";var Jt=Qt.exports;Jt.install=function(e){e.component(Jt.name,Jt)};var Zt=Jt,en=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-radio-button",class:[e.size?"el-radio-button--"+e.size:"",{"is-active":e.value===e.label},{"is-disabled":e.isDisabled},{"is-focus":e.focus}],attrs:{role:"radio","aria-checked":e.value===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.value=e.isDisabled?e.value:e.label}}},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.value,expression:"value"}],staticClass:"el-radio-button__orig-radio",attrs:{type:"radio",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.value,e.label)},on:{change:[function(t){e.value=e.label},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),n("span",{staticClass:"el-radio-button__inner",style:e.value===e.label?e.activeStyle:null,on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])},tn=[];en._withStripped=!0;var nn={name:"ElRadioButton",mixins:[z.a],inject:{elForm:{default:""},elFormItem:{default:""}},props:{label:{},disabled:Boolean,name:String},data:function(){return{focus:!1}},computed:{value:{get:function(){return this._radioGroup.value},set:function(e){this._radioGroup.$emit("input",e)}},_radioGroup:function(){var e=this.$parent;while(e){if("ElRadioGroup"===e.$options.componentName)return e;e=e.$parent}return!1},activeStyle:function(){return{backgroundColor:this._radioGroup.fill||"",borderColor:this._radioGroup.fill||"",boxShadow:this._radioGroup.fill?"-1px 0 0 0 "+this._radioGroup.fill:"",color:this._radioGroup.textColor||""}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._radioGroup.radioGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isDisabled:function(){return this.disabled||this._radioGroup.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this._radioGroup&&this.value!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.dispatch("ElRadioGroup","handleChange",e.value)})}}},rn=nn,on=s(rn,en,tn,!1,null,null,null);on.options.__file="packages/radio/src/radio-button.vue";var an=on.exports;an.install=function(e){e.component(an.name,an)};var sn=an,cn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[n("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[n("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=null,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?n("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])},ln=[];cn._withStripped=!0;var un={name:"ElCheckbox",mixins:[z.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){var e=this.$parent;while(e){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",n,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},hn=un,dn=s(hn,cn,ln,!1,null,null,null);dn.options.__file="packages/checkbox/src/checkbox.vue";var fn=dn.exports;fn.install=function(e){e.component(fn.name,fn)};var pn=fn,vn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-checkbox-button",class:[e.size?"el-checkbox-button--"+e.size:"",{"is-disabled":e.isDisabled},{"is-checked":e.isChecked},{"is-focus":e.focus}],attrs:{role:"checkbox","aria-checked":e.isChecked,"aria-disabled":e.isDisabled}},[e.trueLabel||e.falseLabel?n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=null,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox-button__original",attrs:{type:"checkbox",name:e.name,disabled:e.isDisabled},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}),e.$slots.default||e.label?n("span",{staticClass:"el-checkbox-button__inner",style:e.isChecked?e.activeStyle:null},[e._t("default",[e._v(e._s(e.label))])],2):e._e()])},mn=[];vn._withStripped=!0;var gn={name:"ElCheckboxButton",mixins:[z.a],inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},props:{value:{},label:{},disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number]},computed:{model:{get:function(){return this._checkboxGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this._checkboxGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):void 0!==this.value?this.$emit("input",e):this.selfModel=e}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},_checkboxGroup:function(){var e=this.$parent;while(e){if("ElCheckboxGroup"===e.$options.componentName)return e;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},activeStyle:function(){return{backgroundColor:this._checkboxGroup.fill||"",borderColor:this._checkboxGroup.fill||"",color:this._checkboxGroup.textColor||"","box-shadow":"-1px 0 0 0 "+this._checkboxGroup.fill}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},size:function(){return this._checkboxGroup.checkboxGroupSize||this._elFormItemSize||(this.$ELEMENT||{}).size},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this._checkboxGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled}},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",n,e),this.$nextTick(function(){t._checkboxGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()}},bn=gn,yn=s(bn,vn,mn,!1,null,null,null);yn.options.__file="packages/checkbox/src/checkbox-button.vue";var _n=yn.exports;_n.install=function(e){e.component(_n.name,_n)};var Cn=_n,wn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-checkbox-group",attrs:{role:"group","aria-label":"checkbox-group"}},[e._t("default")],2)},xn=[];wn._withStripped=!0;var Sn={name:"ElCheckboxGroup",componentName:"ElCheckboxGroup",mixins:[z.a],inject:{elFormItem:{default:""}},props:{value:{},disabled:Boolean,min:Number,max:Number,size:String,fill:String,textColor:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxGroupSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",[e])}}},En=Sn,On=s(En,wn,xn,!1,null,null,null);On.options.__file="packages/checkbox/src/checkbox-group.vue";var Mn=On.exports;Mn.install=function(e){e.component(Mn.name,Mn)};var zn=Mn,kn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-switch",class:{"is-disabled":e.switchDisabled,"is-checked":e.checked},attrs:{role:"switch","aria-checked":e.checked,"aria-disabled":e.switchDisabled},on:{click:function(t){return t.preventDefault(),e.switchValue(t)}}},[n("input",{ref:"input",staticClass:"el-switch__input",attrs:{type:"checkbox",id:e.id,name:e.name,"true-value":e.activeValue,"false-value":e.inactiveValue,disabled:e.switchDisabled},on:{change:e.handleChange,keydown:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.switchValue(t):null}}}),e.inactiveIconClass||e.inactiveText?n("span",{class:["el-switch__label","el-switch__label--left",e.checked?"":"is-active"]},[e.inactiveIconClass?n("i",{class:[e.inactiveIconClass]}):e._e(),!e.inactiveIconClass&&e.inactiveText?n("span",{attrs:{"aria-hidden":e.checked}},[e._v(e._s(e.inactiveText))]):e._e()]):e._e(),n("span",{ref:"core",staticClass:"el-switch__core",style:{width:e.coreWidth+"px"}}),e.activeIconClass||e.activeText?n("span",{class:["el-switch__label","el-switch__label--right",e.checked?"is-active":""]},[e.activeIconClass?n("i",{class:[e.activeIconClass]}):e._e(),!e.activeIconClass&&e.activeText?n("span",{attrs:{"aria-hidden":!e.checked}},[e._v(e._s(e.activeText))]):e._e()]):e._e()])},Tn=[];kn._withStripped=!0;var Ln={name:"ElSwitch",mixins:[Q()("input"),O.a,z.a],inject:{elForm:{default:""}},props:{value:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},width:{type:Number,default:40},activeIconClass:{type:String,default:""},inactiveIconClass:{type:String,default:""},activeText:String,inactiveText:String,activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},id:String},data:function(){return{coreWidth:this.width}},created:function(){~[this.activeValue,this.inactiveValue].indexOf(this.value)||this.$emit("input",this.inactiveValue)},computed:{checked:function(){return this.value===this.activeValue},switchDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{checked:function(){this.$refs.input.checked=this.checked,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[this.value])}},methods:{handleChange:function(e){var t=this,n=this.checked?this.inactiveValue:this.activeValue;this.$emit("input",n),this.$emit("change",n),this.$nextTick(function(){t.$refs.input.checked=t.checked})},setBackgroundColor:function(){var e=this.checked?this.activeColor:this.inactiveColor;this.$refs.core.style.borderColor=e,this.$refs.core.style.backgroundColor=e},switchValue:function(){!this.switchDisabled&&this.handleChange()},getMigratingConfig:function(){return{props:{"on-color":"on-color is renamed to active-color.","off-color":"off-color is renamed to inactive-color.","on-text":"on-text is renamed to active-text.","off-text":"off-text is renamed to inactive-text.","on-value":"on-value is renamed to active-value.","off-value":"off-value is renamed to inactive-value.","on-icon-class":"on-icon-class is renamed to active-icon-class.","off-icon-class":"off-icon-class is renamed to inactive-icon-class."}}}},mounted:function(){this.coreWidth=this.width||40,(this.activeColor||this.inactiveColor)&&this.setBackgroundColor(),this.$refs.input.checked=this.checked}},An=Ln,Hn=s(An,kn,Tn,!1,null,null,null);Hn.options.__file="packages/switch/src/component.vue";var Vn=Hn.exports;Vn.install=function(e){e.component(Vn.name,Vn)};var Nn=Vn,In=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleClose,expression:"handleClose"}],staticClass:"el-select",class:[e.selectSize?"el-select--"+e.selectSize:""],on:{click:function(t){return t.stopPropagation(),e.toggleMenu(t)}}},[e.multiple?n("div",{ref:"tags",staticClass:"el-select__tags",style:{"max-width":e.inputWidth-32+"px",width:"100%"}},[e.collapseTags&&e.selected.length?n("span",[n("el-tag",{attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:e.selected[0].hitState,type:"info","disable-transitions":""},on:{close:function(t){e.deleteTag(t,e.selected[0])}}},[n("span",{staticClass:"el-select__tags-text"},[e._v(e._s(e.selected[0].currentLabel))])]),e.selected.length>1?n("el-tag",{attrs:{closable:!1,size:e.collapseTagSize,type:"info","disable-transitions":""}},[n("span",{staticClass:"el-select__tags-text"},[e._v("+ "+e._s(e.selected.length-1))])]):e._e()],1):e._e(),e.collapseTags?e._e():n("transition-group",{on:{"after-leave":e.resetInputHeight}},e._l(e.selected,function(t){return n("el-tag",{key:e.getValueKey(t),attrs:{closable:!e.selectDisabled,size:e.collapseTagSize,hit:t.hitState,type:"info","disable-transitions":""},on:{close:function(n){e.deleteTag(n,t)}}},[n("span",{staticClass:"el-select__tags-text"},[e._v(e._s(t.currentLabel))])])}),1),e.filterable?n("input",{directives:[{name:"model",rawName:"v-model",value:e.query,expression:"query"}],ref:"input",staticClass:"el-select__input",class:[e.selectSize?"is-"+e.selectSize:""],style:{"flex-grow":"1",width:e.inputLength/(e.inputWidth-32)+"%","max-width":e.inputWidth-42+"px"},attrs:{type:"text",disabled:e.selectDisabled,autocomplete:e.autoComplete||e.autocomplete},domProps:{value:e.query},on:{focus:e.handleFocus,blur:function(t){e.softFocus=!1},click:function(e){e.stopPropagation()},keyup:e.managePlaceholder,keydown:[e.resetInputState,function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.deletePrevTag(t):null}],compositionstart:e.handleComposition,compositionupdate:e.handleComposition,compositionend:e.handleComposition,input:[function(t){t.target.composing||(e.query=t.target.value)},e.debouncedQueryChange]}}):e._e()],1):e._e(),n("el-input",{ref:"reference",class:{"is-focus":e.visible},attrs:{type:"text",placeholder:e.currentPlaceholder,name:e.name,id:e.id,autocomplete:e.autoComplete||e.autocomplete,size:e.selectSize,disabled:e.selectDisabled,readonly:e.readonly,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur},nativeOn:{keyup:function(t){return e.debouncedOnInputChange(t)},keydown:[function(t){if(!("button"in t)&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("next")},function(t){if(!("button"in t)&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"]))return null;t.stopPropagation(),t.preventDefault(),e.navigateOptions("prev")},function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.preventDefault(),e.selectOption(t)):null},function(t){if(!("button"in t)&&e._k(t.keyCode,"esc",27,t.key,["Esc","Escape"]))return null;t.stopPropagation(),t.preventDefault(),e.visible=!1},function(t){if(!("button"in t)&&e._k(t.keyCode,"tab",9,t.key,"Tab"))return null;e.visible=!1}],paste:function(t){return e.debouncedOnInputChange(t)},mouseenter:function(t){e.inputHovering=!0},mouseleave:function(t){e.inputHovering=!1}},model:{value:e.selectedLabel,callback:function(t){e.selectedLabel=t},expression:"selectedLabel"}},[e.$slots.prefix?n("template",{slot:"prefix"},[e._t("prefix")],2):e._e(),n("template",{slot:"suffix"},[n("i",{directives:[{name:"show",rawName:"v-show",value:!e.showClose,expression:"!showClose"}],class:["el-select__caret","el-input__icon","el-icon-"+e.iconClass]}),e.showClose?n("i",{staticClass:"el-select__caret el-input__icon el-icon-circle-close",on:{click:e.handleClearClick}}):e._e()])],2),n("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":e.doDestroy}},[n("el-select-menu",{directives:[{name:"show",rawName:"v-show",value:e.visible&&!1!==e.emptyText,expression:"visible && emptyText !== false"}],ref:"popper",attrs:{"append-to-body":e.popperAppendToBody}},[n("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.options.length>0&&!e.loading,expression:"options.length > 0 && !loading"}],ref:"scrollbar",class:{"is-empty":!e.allowCreate&&e.query&&0===e.filteredOptionsCount},attrs:{tag:"ul","wrap-class":"el-select-dropdown__wrap","view-class":"el-select-dropdown__list"}},[e.showNewOption?n("el-option",{attrs:{value:e.query,created:""}}):e._e(),e._t("default")],2),e.emptyText&&(!e.allowCreate||e.loading||e.allowCreate&&0===e.options.length)?[e.$slots.empty?e._t("empty"):n("p",{staticClass:"el-select-dropdown__empty"},[e._v("\n "+e._s(e.emptyText)+"\n ")])]:e._e()],2)],1)],1)},Dn=[];In._withStripped=!0;var Pn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-select-dropdown el-popper",class:[{"is-multiple":e.$parent.multiple},e.popperClass],style:{minWidth:e.minWidth}},[e._t("default")],2)},$n=[];Pn._withStripped=!0;var Rn={name:"ElSelectDropdown",componentName:"ElSelectDropdown",mixins:[B.a],props:{placement:{default:"bottom-start"},boundariesPadding:{default:0},popperOptions:{default:function(){return{gpuAcceleration:!1}}},visibleArrow:{default:!0},appendToBody:{type:Boolean,default:!0}},data:function(){return{minWidth:""}},computed:{popperClass:function(){return this.$parent.popperClass}},watch:{"$parent.inputWidth":function(){this.minWidth=this.$parent.$el.getBoundingClientRect().width+"px"}},mounted:function(){var e=this;this.referenceElm=this.$parent.$refs.reference.$el,this.$parent.popperElm=this.popperElm=this.$el,this.$on("updatePopper",function(){e.$parent.visible&&e.updatePopper()}),this.$on("destroyPopper",this.destroyPopper)}},jn=Rn,Fn=s(jn,Pn,$n,!1,null,null,null);Fn.options.__file="packages/select/src/select-dropdown.vue";var Bn=Fn.exports,Wn=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[n("span",[e._v(e._s(e.currentLabel))])])],2)},Un=[];Wn._withStripped=!0;var Kn="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},qn={mixins:[z.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&"object"===("undefined"===typeof e?"undefined":Kn(e))&&"object"===("undefined"===typeof t?"undefined":Kn(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(b["getValueByPath"])(e,n)===Object(b["getValueByPath"])(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(b["getValueByPath"])(e,n)===Object(b["getValueByPath"])(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(b["escapeRegexpString"])(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},Gn=qn,Yn=s(Gn,Wn,Un,!1,null,null,null);Yn.options.__file="packages/select/src/option.vue";var Xn=Yn.exports,Qn=n(28),Jn=n.n(Qn),Zn=n(11),ei=n(14),ti=n.n(ei),ni=n(27),ii=n.n(ni),ri={data:function(){return{hoverOption:-1}},computed:{optionsAllDisabled:function(){return this.options.filter(function(e){return e.visible}).every(function(e){return e.disabled})}},watch:{hoverIndex:function(e){var t=this;"number"===typeof e&&e>-1&&(this.hoverOption=this.options[e]||{}),this.options.forEach(function(e){e.hover=t.hoverOption===e})}},methods:{navigateOptions:function(e){var t=this;if(this.visible){if(0!==this.options.length&&0!==this.filteredOptionsCount&&!this.optionsAllDisabled){"next"===e?(this.hoverIndex++,this.hoverIndex===this.options.length&&(this.hoverIndex=0)):"prev"===e&&(this.hoverIndex--,this.hoverIndex<0&&(this.hoverIndex=this.options.length-1));var n=this.options[this.hoverIndex];!0!==n.disabled&&!0!==n.groupDisabled&&n.visible||this.navigateOptions(e),this.$nextTick(function(){return t.scrollToOption(t.hoverOption)})}}else this.visible=!0}}},oi=n(22),ai={mixins:[z.a,g.a,Q()("reference"),ri],name:"ElSelect",componentName:"ElSelect",inject:{elForm:{default:""},elFormItem:{default:""}},provide:function(){return{select:this}},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},readonly:function(){return!this.filterable||this.multiple||!Object(b["isIE"])()&&!Object(b["isEdge"])()&&!this.visible},showClose:function(){var e=this.multiple?Array.isArray(this.value)&&this.value.length>0:void 0!==this.value&&null!==this.value&&""!==this.value,t=this.clearable&&!this.selectDisabled&&this.inputHovering&&e;return t},iconClass:function(){return this.remote&&this.filterable?"":this.visible?"arrow-up is-reverse":"arrow-up"},debounce:function(){return this.remote?300:0},emptyText:function(){return this.loading?this.loadingText||this.t("el.select.loading"):(!this.remote||""!==this.query||0!==this.options.length)&&(this.filterable&&this.query&&this.options.length>0&&0===this.filteredOptionsCount?this.noMatchText||this.t("el.select.noMatch"):0===this.options.length?this.noDataText||this.t("el.select.noData"):null)},showNewOption:function(){var e=this,t=this.options.filter(function(e){return!e.created}).some(function(t){return t.currentLabel===e.query});return this.filterable&&this.allowCreate&&""!==this.query&&!t},selectSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},selectDisabled:function(){return this.disabled||(this.elForm||{}).disabled},collapseTagSize:function(){return["small","mini"].indexOf(this.selectSize)>-1?"mini":"small"}},components:{ElInput:v.a,ElSelectMenu:Bn,ElOption:Xn,ElTag:Jn.a,ElScrollbar:U.a},directives:{Clickoutside:$.a},props:{name:String,id:String,value:{required:!0},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},automaticDropdown:Boolean,size:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:String,remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String,default:function(){return Object(ei["t"])("el.select.placeholder")}},defaultFirstOption:Boolean,reserveKeyword:Boolean,valueKey:{type:String,default:"value"},collapseTags:Boolean,popperAppendToBody:{type:Boolean,default:!0}},data:function(){return{options:[],cachedOptions:[],createdLabel:null,createdSelected:!1,selected:this.multiple?[]:{},inputLength:20,inputWidth:0,initialInputHeight:0,cachedPlaceHolder:"",optionsCount:0,filteredOptionsCount:0,visible:!1,softFocus:!1,selectedLabel:"",hoverIndex:-1,query:"",previousQuery:null,inputHovering:!1,currentPlaceholder:"",menuVisibleOnFocus:!1,isOnComposition:!1,isSilentBlur:!1}},watch:{selectDisabled:function(){var e=this;this.$nextTick(function(){e.resetInputHeight()})},placeholder:function(e){this.cachedPlaceHolder=this.currentPlaceholder=e},value:function(e,t){this.multiple&&(this.resetInputHeight(),e&&e.length>0||this.$refs.input&&""!==this.query?this.currentPlaceholder="":this.currentPlaceholder=this.cachedPlaceHolder,this.filterable&&!this.reserveKeyword&&(this.query="",this.handleQueryChange(this.query))),this.setSelected(),this.filterable&&!this.multiple&&(this.inputLength=20),Object(b["valueEquals"])(e,t)||this.dispatch("ElFormItem","el.form.change",e)},visible:function(e){var t=this;e?(this.broadcast("ElSelectDropdown","updatePopper"),this.filterable&&(this.query=this.remote?"":this.selectedLabel,this.handleQueryChange(this.query),this.multiple?this.$refs.input.focus():(this.remote||(this.broadcast("ElOption","queryChange",""),this.broadcast("ElOptionGroup","queryChange")),this.selectedLabel&&(this.currentPlaceholder=this.selectedLabel,this.selectedLabel="")))):(this.broadcast("ElSelectDropdown","destroyPopper"),this.$refs.input&&this.$refs.input.blur(),this.query="",this.previousQuery=null,this.selectedLabel="",this.inputLength=20,this.menuVisibleOnFocus=!1,this.resetHoverIndex(),this.$nextTick(function(){t.$refs.input&&""===t.$refs.input.value&&0===t.selected.length&&(t.currentPlaceholder=t.cachedPlaceHolder)}),this.multiple||(this.selected&&(this.filterable&&this.allowCreate&&this.createdSelected&&this.createdLabel?this.selectedLabel=this.createdLabel:this.selectedLabel=this.selected.currentLabel,this.filterable&&(this.query=this.selectedLabel)),this.filterable&&(this.currentPlaceholder=this.cachedPlaceHolder))),this.$emit("visible-change",e)},options:function(){var e=this;if(!this.$isServer){this.$nextTick(function(){e.broadcast("ElSelectDropdown","updatePopper")}),this.multiple&&this.resetInputHeight();var t=this.$el.querySelectorAll("input");-1===[].indexOf.call(t,document.activeElement)&&this.setSelected(),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()}}},methods:{handleComposition:function(e){var t=e.target.value;if("compositionend"===e.type)this.isOnComposition=!1,this.handleQueryChange(t);else{var n=t[t.length-1]||"";this.isOnComposition=!Object(oi["isKorean"])(n)}},handleQueryChange:function(e){var t=this;this.previousQuery===e||this.isOnComposition||(null!==this.previousQuery||"function"!==typeof this.filterMethod&&"function"!==typeof this.remoteMethod?(this.previousQuery=e,this.$nextTick(function(){t.visible&&t.broadcast("ElSelectDropdown","updatePopper")}),this.hoverIndex=-1,this.multiple&&this.filterable&&this.$nextTick(function(){var e=15*t.$refs.input.value.length+20;t.inputLength=t.collapseTags?Math.min(50,e):e,t.managePlaceholder(),t.resetInputHeight()}),this.remote&&"function"===typeof this.remoteMethod?(this.hoverIndex=-1,this.remoteMethod(e)):"function"===typeof this.filterMethod?(this.filterMethod(e),this.broadcast("ElOptionGroup","queryChange")):(this.filteredOptionsCount=this.optionsCount,this.broadcast("ElOption","queryChange",e),this.broadcast("ElOptionGroup","queryChange")),this.defaultFirstOption&&(this.filterable||this.remote)&&this.filteredOptionsCount&&this.checkDefaultFirstOption()):this.previousQuery=e)},scrollToOption:function(e){var t=Array.isArray(e)&&e[0]?e[0].$el:e.$el;if(this.$refs.popper&&t){var n=this.$refs.popper.$el.querySelector(".el-select-dropdown__wrap");ii()(n,t)}this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll()},handleMenuEnter:function(){var e=this;this.$nextTick(function(){return e.scrollToOption(e.selected)})},emitChange:function(e){Object(b["valueEquals"])(this.value,e)||this.$emit("change",e)},getOption:function(e){for(var t=void 0,n="[object object]"===Object.prototype.toString.call(e).toLowerCase(),i="[object null]"===Object.prototype.toString.call(e).toLowerCase(),r="[object undefined]"===Object.prototype.toString.call(e).toLowerCase(),o=this.cachedOptions.length-1;o>=0;o--){var a=this.cachedOptions[o],s=n?Object(b["getValueByPath"])(a.value,this.valueKey)===Object(b["getValueByPath"])(e,this.valueKey):a.value===e;if(s){t=a;break}}if(t)return t;var c=n||i||r?"":e,l={value:e,currentLabel:c};return this.multiple&&(l.hitState=!1),l},setSelected:function(){var e=this;if(!this.multiple){var t=this.getOption(this.value);return t.created?(this.createdLabel=t.currentLabel,this.createdSelected=!0):this.createdSelected=!1,this.selectedLabel=t.currentLabel,this.selected=t,void(this.filterable&&(this.query=this.selectedLabel))}var n=[];Array.isArray(this.value)&&this.value.forEach(function(t){n.push(e.getOption(t))}),this.selected=n,this.$nextTick(function(){e.resetInputHeight()})},handleFocus:function(e){this.softFocus?this.softFocus=!1:((this.automaticDropdown||this.filterable)&&(this.visible=!0,this.menuVisibleOnFocus=!0),this.$emit("focus",e))},blur:function(){this.visible=!1,this.$refs.reference.blur()},handleBlur:function(e){var t=this;setTimeout(function(){t.isSilentBlur?t.isSilentBlur=!1:t.$emit("blur",e)},50),this.softFocus=!1},handleClearClick:function(e){this.deleteSelected(e)},doDestroy:function(){this.$refs.popper&&this.$refs.popper.doDestroy()},handleClose:function(){this.visible=!1},toggleLastOptionHitState:function(e){if(Array.isArray(this.selected)){var t=this.selected[this.selected.length-1];if(t)return!0===e||!1===e?(t.hitState=e,e):(t.hitState=!t.hitState,t.hitState)}},deletePrevTag:function(e){if(e.target.value.length<=0&&!this.toggleLastOptionHitState()){var t=this.value.slice();t.pop(),this.$emit("input",t),this.emitChange(t)}},managePlaceholder:function(){""!==this.currentPlaceholder&&(this.currentPlaceholder=this.$refs.input.value?"":this.cachedPlaceHolder)},resetInputState:function(e){8!==e.keyCode&&this.toggleLastOptionHitState(!1),this.inputLength=15*this.$refs.input.value.length+20,this.resetInputHeight()},resetInputHeight:function(){var e=this;this.collapseTags&&!this.filterable||this.$nextTick(function(){if(e.$refs.reference){var t=e.$refs.reference.$el.childNodes,n=[].filter.call(t,function(e){return"INPUT"===e.tagName})[0],i=e.$refs.tags,r=e.initialInputHeight||40;n.style.height=0===e.selected.length?r+"px":Math.max(i?i.clientHeight+(i.clientHeight>r?6:0):0,r)+"px",e.visible&&!1!==e.emptyText&&e.broadcast("ElSelectDropdown","updatePopper")}})},resetHoverIndex:function(){var e=this;setTimeout(function(){e.multiple?e.selected.length>0?e.hoverIndex=Math.min.apply(null,e.selected.map(function(t){return e.options.indexOf(t)})):e.hoverIndex=-1:e.hoverIndex=e.options.indexOf(e.selected)},300)},handleOptionSelect:function(e,t){var n=this;if(this.multiple){var i=(this.value||[]).slice(),r=this.getValueIndex(i,e.value);r>-1?i.splice(r,1):(this.multipleLimit<=0||i.length0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1],n="[object object]"===Object.prototype.toString.call(t).toLowerCase();if(n){var i=this.valueKey,r=-1;return e.some(function(e,n){return Object(b["getValueByPath"])(e,i)===Object(b["getValueByPath"])(t,i)&&(r=n,!0)}),r}return e.indexOf(t)},toggleMenu:function(){this.selectDisabled||(this.menuVisibleOnFocus?this.menuVisibleOnFocus=!1:this.visible=!this.visible,this.visible&&(this.$refs.input||this.$refs.reference).focus())},selectOption:function(){this.visible?this.options[this.hoverIndex]&&this.handleOptionSelect(this.options[this.hoverIndex]):this.toggleMenu()},deleteSelected:function(e){e.stopPropagation();var t=this.multiple?[]:"";this.$emit("input",t),this.emitChange(t),this.visible=!1,this.$emit("clear")},deleteTag:function(e,t){var n=this.selected.indexOf(t);if(n>-1&&!this.selectDisabled){var i=this.value.slice();i.splice(n,1),this.$emit("input",i),this.emitChange(i),this.$emit("remove-tag",t.value)}e.stopPropagation()},onInputChange:function(){this.filterable&&this.query!==this.selectedLabel&&(this.query=this.selectedLabel,this.handleQueryChange(this.query))},onOptionDestroy:function(e){e>-1&&(this.optionsCount--,this.filteredOptionsCount--,this.options.splice(e,1))},resetInputWidth:function(){this.inputWidth=this.$refs.reference.$el.getBoundingClientRect().width},handleResize:function(){this.resetInputWidth(),this.multiple&&this.resetInputHeight()},checkDefaultFirstOption:function(){this.hoverIndex=-1;for(var e=!1,t=this.options.length-1;t>=0;t--)if(this.options[t].created){e=!0,this.hoverIndex=t;break}if(!e)for(var n=0;n!==this.options.length;++n){var i=this.options[n];if(this.query){if(!i.disabled&&!i.groupDisabled&&i.visible){this.hoverIndex=n;break}}else if(i.itemSelected){this.hoverIndex=n;break}}},getValueKey:function(e){return"[object object]"!==Object.prototype.toString.call(e.value).toLowerCase()?e.value:Object(b["getValueByPath"])(e.value,this.valueKey)}},created:function(){var e=this;this.cachedPlaceHolder=this.currentPlaceholder=this.placeholder,this.multiple&&!Array.isArray(this.value)&&this.$emit("input",[]),!this.multiple&&Array.isArray(this.value)&&this.$emit("input",""),this.debouncedOnInputChange=D()(this.debounce,function(){e.onInputChange()}),this.debouncedQueryChange=D()(this.debounce,function(t){e.handleQueryChange(t.target.value)}),this.$on("handleOptionClick",this.handleOptionSelect),this.$on("setSelected",this.setSelected)},mounted:function(){var e=this;this.multiple&&Array.isArray(this.value)&&this.value.length>0&&(this.currentPlaceholder=""),Object(Zn["addResizeListener"])(this.$el,this.handleResize);var t=this.$refs.reference;if(t&&t.$el){var n={medium:36,small:32,mini:28};this.initialInputHeight=t.$el.getBoundingClientRect().height||n[this.selectSize]}this.remote&&this.multiple&&this.resetInputHeight(),this.$nextTick(function(){t&&t.$el&&(e.inputWidth=t.$el.getBoundingClientRect().width)}),this.setSelected()},beforeDestroy:function(){this.$el&&this.handleResize&&Object(Zn["removeResizeListener"])(this.$el,this.handleResize)}},si=ai,ci=s(si,In,Dn,!1,null,null,null);ci.options.__file="packages/select/src/select.vue";var li=ci.exports;li.install=function(e){e.component(li.name,li)};var ui=li;Xn.install=function(e){e.component(Xn.name,Xn)};var hi=Xn,di=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-group__wrap"},[n("li",{staticClass:"el-select-group__title"},[e._v(e._s(e.label))]),n("li",[n("ul",{staticClass:"el-select-group"},[e._t("default")],2)])])},fi=[];di._withStripped=!0;var pi={mixins:[z.a],name:"ElOptionGroup",componentName:"ElOptionGroup",props:{label:String,disabled:{type:Boolean,default:!1}},data:function(){return{visible:!0}},watch:{disabled:function(e){this.broadcast("ElOption","handleGroupDisabled",e)}},methods:{queryChange:function(){this.visible=this.$children&&Array.isArray(this.$children)&&this.$children.some(function(e){return!0===e.visible})}},created:function(){this.$on("queryChange",this.queryChange)},mounted:function(){this.disabled&&this.broadcast("ElOption","handleGroupDisabled",this.disabled)}},vi=pi,mi=s(vi,di,fi,!1,null,null,null);mi.options.__file="packages/select/src/option-group.vue";var gi=mi.exports;gi.install=function(e){e.component(gi.name,gi)};var bi=gi,yi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?n("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?n("i",{class:e.icon}):e._e(),e.$slots.default?n("span",[e._t("default")],2):e._e()])},_i=[];yi._withStripped=!0;var Ci={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},wi=Ci,xi=s(wi,yi,_i,!1,null,null,null);xi.options.__file="packages/button/src/button.vue";var Si=xi.exports;Si.install=function(e){e.component(Si.name,Si)};var Ei=Si,Oi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-button-group"},[e._t("default")],2)},Mi=[];Oi._withStripped=!0;var zi={name:"ElButtonGroup"},ki=zi,Ti=s(ki,Oi,Mi,!1,null,null,null);Ti.options.__file="packages/button/src/button-group.vue";var Li=Ti.exports;Li.install=function(e){e.component(Li.name,Li)};var Ai=Li,Hi=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-table",class:[{"el-table--fit":e.fit,"el-table--striped":e.stripe,"el-table--border":e.border||e.isGroup,"el-table--hidden":e.isHidden,"el-table--group":e.isGroup,"el-table--fluid-height":e.maxHeight,"el-table--scrollable-x":e.layout.scrollX,"el-table--scrollable-y":e.layout.scrollY,"el-table--enable-row-hover":!e.store.states.isComplex,"el-table--enable-row-transition":0!==(e.store.states.data||[]).length&&(e.store.states.data||[]).length<100},e.tableSize?"el-table--"+e.tableSize:""],on:{mouseleave:function(t){e.handleMouseLeave(t)}}},[n("div",{ref:"hiddenColumns",staticClass:"hidden-columns"},[e._t("default")],2),e.showHeader?n("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"headerWrapper",staticClass:"el-table__header-wrapper"},[n("table-header",{ref:"tableHeader",style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"default-sort":e.defaultSort}})],1):e._e(),n("div",{ref:"bodyWrapper",staticClass:"el-table__body-wrapper",class:[e.layout.scrollX?"is-scrolling-"+e.scrollPosition:"is-scrolling-none"],style:[e.bodyHeight]},[n("table-body",{style:{width:e.bodyWidth},attrs:{context:e.context,store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}}),e.data&&0!==e.data.length?e._e():n("div",{ref:"emptyBlock",staticClass:"el-table__empty-block",style:{width:e.bodyWidth}},[n("span",{staticClass:"el-table__empty-text"},[e._t("empty",[e._v(e._s(e.emptyText||e.t("el.table.emptyText")))])],2)]),e.$slots.append?n("div",{ref:"appendWrapper",staticClass:"el-table__append-wrapper"},[e._t("append")],2):e._e()],1),e.showSummary?n("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"},{name:"mousewheel",rawName:"v-mousewheel",value:e.handleHeaderFooterMousewheel,expression:"handleHeaderFooterMousewheel"}],ref:"footerWrapper",staticClass:"el-table__footer-wrapper"},[n("table-footer",{style:{width:e.layout.bodyWidth?e.layout.bodyWidth+"px":""},attrs:{store:e.store,border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,"default-sort":e.defaultSort}})],1):e._e(),e.fixedColumns.length>0?n("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"fixedWrapper",staticClass:"el-table__fixed",style:[{width:e.layout.fixedWidth?e.layout.fixedWidth+"px":""},e.fixedHeight]},[e.showHeader?n("div",{ref:"fixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[n("table-header",{ref:"fixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,store:e.store}})],1):e._e(),n("div",{ref:"fixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[n("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"left",store:e.store,stripe:e.stripe,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"row-style":e.rowStyle}}),e.$slots.append?n("div",{staticClass:"el-table__append-gutter",style:{height:e.layout.appendHeight+"px"}}):e._e()],1),e.showSummary?n("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"fixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[n("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"left",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?n("div",{directives:[{name:"mousewheel",rawName:"v-mousewheel",value:e.handleFixedMousewheel,expression:"handleFixedMousewheel"}],ref:"rightFixedWrapper",staticClass:"el-table__fixed-right",style:[{width:e.layout.rightFixedWidth?e.layout.rightFixedWidth+"px":"",right:e.layout.scrollY?(e.border?e.layout.gutterWidth:e.layout.gutterWidth||0)+"px":""},e.fixedHeight]},[e.showHeader?n("div",{ref:"rightFixedHeaderWrapper",staticClass:"el-table__fixed-header-wrapper"},[n("table-header",{ref:"rightFixedTableHeader",style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,store:e.store}})],1):e._e(),n("div",{ref:"rightFixedBodyWrapper",staticClass:"el-table__fixed-body-wrapper",style:[{top:e.layout.headerHeight+"px"},e.fixedBodyHeight]},[n("table-body",{style:{width:e.bodyWidth},attrs:{fixed:"right",store:e.store,stripe:e.stripe,"row-class-name":e.rowClassName,"row-style":e.rowStyle,highlight:e.highlightCurrentRow}})],1),e.showSummary?n("div",{directives:[{name:"show",rawName:"v-show",value:e.data&&e.data.length>0,expression:"data && data.length > 0"}],ref:"rightFixedFooterWrapper",staticClass:"el-table__fixed-footer-wrapper"},[n("table-footer",{style:{width:e.bodyWidth},attrs:{fixed:"right",border:e.border,"sum-text":e.sumText||e.t("el.table.sumText"),"summary-method":e.summaryMethod,store:e.store}})],1):e._e()]):e._e(),e.rightFixedColumns.length>0?n("div",{ref:"rightFixedPatch",staticClass:"el-table__fixed-right-patch",style:{width:e.layout.scrollY?e.layout.gutterWidth+"px":"0",height:e.layout.headerHeight+"px"}}):e._e(),n("div",{directives:[{name:"show",rawName:"v-show",value:e.resizeProxyVisible,expression:"resizeProxyVisible"}],ref:"resizeProxy",staticClass:"el-table__column-resize-proxy"})])},Vi=[];Hi._withStripped=!0;var Ni=n(13),Ii=n.n(Ni),Di=n(34),Pi=n(38),$i=n.n(Pi),Ri="undefined"!==typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ji=function(e,t){e&&e.addEventListener&&e.addEventListener(Ri?"DOMMouseScroll":"mousewheel",function(e){var n=$i()(e);t&&t.apply(this,[e,n])})},Fi={bind:function(e,t){ji(e,t.value)}},Bi=n(5),Wi=n.n(Bi),Ui="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},Ki=function(e){var t=e.target;while(t&&"HTML"!==t.tagName.toUpperCase()){if("TD"===t.tagName.toUpperCase())return t;t=t.parentNode}return null},qi=function(e){return null!==e&&"object"===("undefined"===typeof e?"undefined":Ui(e))},Gi=function(e,t,n,i,r){if(!t&&!i&&(!r||Array.isArray(r)&&!r.length))return e;n="string"===typeof n?"descending"===n?-1:1:n&&n<0?-1:1;var o=i?null:function(n,i){return r?(Array.isArray(r)||(r=[r]),r.map(function(t){return"string"===typeof t?Object(b["getValueByPath"])(n,t):t(n,i,e)})):("$key"!==t&&qi(n)&&"$value"in n&&(n=n.$value),[qi(n)?Object(b["getValueByPath"])(n,t):n])},a=function(e,t){if(i)return i(e.value,t.value);for(var n=0,r=e.key.length;nt.key[n])return 1}return 0};return e.map(function(e,t){return{value:e,index:t,key:o?o(e,t):null}}).sort(function(e,t){var i=a(e,t);return i||(i=e.index-t.index),i*n}).map(function(e){return e.value})},Yi=function(e,t){var n=null;return e.columns.forEach(function(e){e.id===t&&(n=e)}),n},Xi=function(e,t){for(var n=null,i=0;i2&&void 0!==arguments[2]?arguments[2]:"children",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"hasChildren",r=function(e){return!(Array.isArray(e)&&e.length)};function o(e,a,s){t(e,a,s),a.forEach(function(e){if(e[i])t(e,null,s+1);else{var a=e[n];r(a)||o(e,a,s+1)}})}e.forEach(function(e){if(e[i])t(e,null,0);else{var a=e[n];r(a)||o(e,a,0)}})}var cr={data:function(){return{states:{defaultExpandAll:!1,expandRows:[]}}},methods:{updateExpandRows:function(){var e=this.states,t=e.data,n=void 0===t?[]:t,i=e.rowKey,r=e.defaultExpandAll,o=e.expandRows;if(r)this.states.expandRows=n.slice();else if(i){var a=Zi(o,i);this.states.expandRows=n.reduce(function(e,t){var n=Ji(t,i),r=a[n];return r&&e.push(t),e},[])}else this.states.expandRows=[]},toggleRowExpansion:function(e,t){var n=ar(this.states.expandRows,e,t);n&&(this.table.$emit("expand-change",e,this.states.expandRows.slice()),this.scheduleLayout())},setExpandRowKeys:function(e){this.assertRowKey();var t=this.states,n=t.data,i=t.rowKey,r=Zi(n,i);this.states.expandRows=e.reduce(function(e,t){var n=r[t];return n&&e.push(n.row),e},[])},isRowExpanded:function(e){var t=this.states,n=t.expandRows,i=void 0===n?[]:n,r=t.rowKey;if(r){var o=Zi(i,r);return!!o[Ji(e,r)]}return-1!==i.indexOf(e)}}},lr={data:function(){return{states:{current:null}}},methods:{setCurrentRowKey:function(e){this.assertRowKey();var t=this.states,n=t.data,i=void 0===n?[]:n,r=t.rowKey,o=Object(b["arrayFind"])(i,function(t){return Ji(t,r)===e});t.currentRow=o||null},updateCurrentRow:function(){var e=this.states,t=this.table,n=e.rowKey,i=e.data||[],r=e.currentRow;if(-1===i.indexOf(r)&&r){var o=null;n&&(o=Object(b["arrayFind"])(i,function(e){return Ji(e,n)===Ji(r,n)})),e.currentRow=o,o!==r&&t.$emit("current-change",null,r)}}}},ur=Object.assign||function(e){for(var t=1;t0&&t[0]&&"selection"===t[0].type&&!t[0].fixed&&(t[0].fixed=!0,e.fixedColumns.unshift(t[0]));var n=t.filter(function(e){return!e.fixed});e.originColumns=[].concat(e.fixedColumns).concat(n).concat(e.rightFixedColumns);var i=fr(n),r=fr(e.fixedColumns),o=fr(e.rightFixedColumns);e.leafColumnsLength=i.length,e.fixedLeafColumnsLength=r.length,e.rightFixedLeafColumnsLength=o.length,e.columns=[].concat(r).concat(i).concat(o),e.isComplex=e.fixedColumns.length>0||e.rightFixedColumns.length>0},scheduleLayout:function(e){e&&this.updateColumns(),this.table.debouncedUpdateLayout()},isSelected:function(e){var t=this.states.selection,n=void 0===t?[]:t;return n.indexOf(e)>-1},clearSelection:function(){var e=this.states;e.isAllSelected=!1;var t=e.selection;e.selection.length&&(e.selection=[]),t.length>0&&this.table.$emit("selection-change",e.selection?e.selection.slice():[])},cleanSelection:function(){var e=this.states.selection||[],t=this.states.data,n=this.states.rowKey,i=void 0;if(n){i=[];var r=Zi(e,n),o=Zi(t,n);for(var a in r)r.hasOwnProperty(a)&&!o[a]&&i.push(r[a].row)}else i=e.filter(function(e){return-1===t.indexOf(e)});i.forEach(function(t){e.splice(e.indexOf(t),1)}),i.length&&this.table.$emit("selection-change",e?e.slice():[])},toggleRowSelection:function(e,t){var n=ar(this.states.selection,e,t);if(n){var i=this.states.selection?this.states.selection.slice():[];this.table.$emit("select",i,e),this.table.$emit("selection-change",i)}},toggleAllSelection:D()(10,function(){var e=this.states,t=e.data,n=void 0===t?[]:t,i=e.selection,r=e.selectOnIndeterminate?!e.isAllSelected:!(e.isAllSelected||i.length);e.isAllSelected=r;var o=!1;n.forEach(function(t,n){e.selectable?e.selectable.call(null,t,n)&&ar(i,t,r)&&(o=!0):ar(i,t,r)&&(o=!0)}),o&&this.table.$emit("selection-change",i?i.slice():[]),this.table.$emit("select-all",i)}),updateSelectionByRowKey:function(){var e=this.states,t=e.selection,n=e.rowKey,i=e.data,r=void 0===i?[]:i,o=Zi(t,n);e.selection=r.reduce(function(e,t){var i=Ji(t,n),r=o[i];return r&&e.push(t),e},[])},updateAllSelected:function(){var e=this.states,t=e.selection,n=e.rowKey,i=e.selectable,r=e.data||[];if(0!==r.length){var o=void 0;n&&(o=Zi(t,n));for(var a=function(e){return o?!!o[Ji(e,n)]:-1!==t.indexOf(e)},s=!0,c=0,l=0,u=r.length;l1?n-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};if(!e)throw new Error("Table is required.");var n=new vr;return n.table=e,Object.keys(t).forEach(function(e){n.states[e]=t[e]}),n}function gr(e){var t={};return Object.keys(e).forEach(function(n){var i=e[n],r=void 0;"string"===typeof i?r=function(){return this.store.states[i]}:"function"===typeof i?r=function(){return i.call(this,this.store.states)}:console.error("invalid value type"),r&&(t[n]=r)}),t}var br=n(29),yr=n.n(br);function _r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Cr=function(){function e(t){for(var n in _r(this,e),this.observers=[],this.table=null,this.store=null,this.columns=null,this.fit=!0,this.showHeader=!0,this.height=null,this.scrollX=!1,this.scrollY=!1,this.bodyWidth=null,this.fixedWidth=null,this.rightFixedWidth=null,this.tableHeight=null,this.headerHeight=44,this.appendHeight=0,this.footerHeight=44,this.viewportHeight=null,this.bodyHeight=null,this.fixedBodyHeight=null,this.gutterWidth=yr()(),t)t.hasOwnProperty(n)&&(this[n]=t[n]);if(!this.table)throw new Error("table is required for Table Layout");if(!this.store)throw new Error("store is required for Table Layout")}return e.prototype.updateScrollY=function(){var e=this.height;if(null!==e){var t=this.table.bodyWrapper;if(this.table.$el&&t){var n=t.querySelector(".el-table__body");this.scrollY=n.offsetHeight>this.bodyHeight}}},e.prototype.setHeight=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"height";if(!Wi.a.prototype.$isServer){var i=this.table.$el;if(e=rr(e),this.height=e,!i&&(e||0===e))return Wi.a.nextTick(function(){return t.setHeight(e,n)});e&&(i.style[n]=e+"px",this.updateElsHeight())}},e.prototype.setMaxHeight=function(e){this.setHeight(e,"max-height")},e.prototype.getFlattenColumns=function(){var e=[],t=this.table.columns;return t.forEach(function(t){t.isColumnGroup?e.push.apply(e,t.columns):e.push(t)}),e},e.prototype.updateElsHeight=function(){var e=this;if(!this.table.$ready)return Wi.a.nextTick(function(){return e.updateElsHeight()});var t=this.table.$refs,n=t.headerWrapper,i=t.appendWrapper,r=t.footerWrapper;if(this.appendHeight=i?i.offsetHeight:0,!this.showHeader||n){var o=this.headerHeight=this.showHeader?n.offsetHeight:0;if(this.showHeader&&n.offsetWidth>0&&(this.table.columns||[]).length>0&&o<2)return Wi.a.nextTick(function(){return e.updateElsHeight()});var a=this.tableHeight=this.table.$el.clientHeight,s=this.footerHeight=r?r.offsetHeight:0;null!==this.height&&(this.bodyHeight=a-o-s+(r?1:0)),this.fixedBodyHeight=this.scrollX?this.bodyHeight-this.gutterWidth:this.bodyHeight;var c=!this.table.data||0===this.table.data.length;this.viewportHeight=this.scrollX?a-(c?0:this.gutterWidth):a,this.updateScrollY(),this.notifyObservers("scrollable")}},e.prototype.updateColumnsWidth=function(){if(!Wi.a.prototype.$isServer){var e=this.fit,t=this.table.$el.clientWidth,n=0,i=this.getFlattenColumns(),r=i.filter(function(e){return"number"!==typeof e.width});if(i.forEach(function(e){"number"===typeof e.width&&e.realWidth&&(e.realWidth=null)}),r.length>0&&e){i.forEach(function(e){n+=e.width||e.minWidth||80});var o=this.scrollY?this.gutterWidth:0;if(n<=t-o){this.scrollX=!1;var a=t-o-n;if(1===r.length)r[0].realWidth=(r[0].minWidth||80)+a;else{var s=r.reduce(function(e,t){return e+(t.minWidth||80)},0),c=a/s,l=0;r.forEach(function(e,t){if(0!==t){var n=Math.floor((e.minWidth||80)*c);l+=n,e.realWidth=(e.minWidth||80)+n}}),r[0].realWidth=(r[0].minWidth||80)+a-l}}else this.scrollX=!0,r.forEach(function(e){e.realWidth=e.minWidth});this.bodyWidth=Math.max(n,t),this.table.resizeState.width=this.bodyWidth}else i.forEach(function(e){e.width||e.minWidth?e.realWidth=e.width||e.minWidth:e.realWidth=80,n+=e.realWidth}),this.scrollX=n>t,this.bodyWidth=n;var u=this.store.states.fixedColumns;if(u.length>0){var h=0;u.forEach(function(e){h+=e.realWidth||e.width}),this.fixedWidth=h}var d=this.store.states.rightFixedColumns;if(d.length>0){var f=0;d.forEach(function(e){f+=e.realWidth||e.width}),this.rightFixedWidth=f}this.notifyObservers("columns")}},e.prototype.addObserver=function(e){this.observers.push(e)},e.prototype.removeObserver=function(e){var t=this.observers.indexOf(e);-1!==t&&this.observers.splice(t,1)},e.prototype.notifyObservers=function(e){var t=this,n=this.observers;n.forEach(function(n){switch(e){case"columns":n.onColumnsChange(t);break;case"scrollable":n.onScrollableChange(t);break;default:throw new Error("Table Layout don't have event "+e+".")}})},e}(),wr=Cr,xr={created:function(){this.tableLayout.addObserver(this)},destroyed:function(){this.tableLayout.removeObserver(this)},computed:{tableLayout:function(){var e=this.layout;if(!e&&this.table&&(e=this.table.layout),!e)throw new Error("Can not find table layout.");return e}},mounted:function(){this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout)},updated:function(){this.__updated__||(this.onColumnsChange(this.tableLayout),this.onScrollableChange(this.tableLayout),this.__updated__=!0)},methods:{onColumnsChange:function(){var e=this.$el.querySelectorAll("colgroup > col");if(e.length){var t=this.tableLayout.getFlattenColumns(),n={};t.forEach(function(e){n[e.id]=e});for(var i=0,r=e.length;i col[name=gutter]"),n=0,i=t.length;n=this.leftFixedLeafCount:"right"===this.fixed?e=this.columnsCount-this.rightFixedLeafCount},getSpan:function(e,t,n,i){var r=1,o=1,a=this.table.spanMethod;if("function"===typeof a){var s=a({row:e,column:t,rowIndex:n,columnIndex:i});Array.isArray(s)?(r=s[0],o=s[1]):"object"===("undefined"===typeof s?"undefined":Sr(s))&&(r=s.rowspan,o=s.colspan)}return{rowspan:r,colspan:o}},getRowStyle:function(e,t){var n=this.table.rowStyle;return"function"===typeof n?n.call(null,{row:e,rowIndex:t}):n||null},getRowClass:function(e,t){var n=["el-table__row"];this.table.highlightCurrentRow&&e===this.store.states.currentRow&&n.push("current-row"),this.stripe&&t%2===1&&n.push("el-table__row--striped");var i=this.table.rowClassName;return"string"===typeof i?n.push(i):"function"===typeof i&&n.push(i.call(null,{row:e,rowIndex:t})),this.store.states.expandRows.indexOf(e)>-1&&n.push("expanded"),n},getCellStyle:function(e,t,n,i){var r=this.table.cellStyle;return"function"===typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:n,column:i}):r},getCellClass:function(e,t,n,i){var r=[i.id,i.align,i.className];this.isColumnHidden(t)&&r.push("is-hidden");var o=this.table.cellClassName;return"string"===typeof o?r.push(o):"function"===typeof o&&r.push(o.call(null,{rowIndex:e,columnIndex:t,row:n,column:i})),r.join(" ")},getColspanRealWidth:function(e,t,n){if(t<1)return e[n].realWidth;var i=e.map(function(e){var t=e.realWidth;return t}).slice(n,n+t);return i.reduce(function(e,t){return e+t},-1)},handleCellMouseEnter:function(e,t){var n=this.table,i=Ki(e);if(i){var r=Qi(n,i),o=n.hoverState={cell:i,column:r,row:t};n.$emit("cell-mouse-enter",o.row,o.column,o.cell,e)}var a=e.target.querySelector(".cell");if(Object(Pe["hasClass"])(a,"el-tooltip")&&a.childNodes.length){var s=document.createRange();s.setStart(a,0),s.setEnd(a,a.childNodes.length);var c=s.getBoundingClientRect().width,l=(parseInt(Object(Pe["getStyle"])(a,"paddingLeft"),10)||0)+(parseInt(Object(Pe["getStyle"])(a,"paddingRight"),10)||0);if((c+l>a.offsetWidth||a.scrollWidth>a.offsetWidth)&&this.$refs.tooltip){var u=this.$refs.tooltip;this.tooltipContent=i.innerText||i.textContent,u.referenceElm=i,u.$refs.popper&&(u.$refs.popper.style.display="none"),u.doDestroy(),u.setExpectedState(!0),this.activateTooltip(u)}}},handleCellMouseLeave:function(e){var t=this.$refs.tooltip;t&&(t.setExpectedState(!1),t.handleClosePopper());var n=Ki(e);if(n){var i=this.table.hoverState||{};this.table.$emit("cell-mouse-leave",i.row,i.column,i.cell,e)}},handleMouseEnter:D()(30,function(e){this.store.commit("setHoverRow",e)}),handleMouseLeave:D()(30,function(){this.store.commit("setHoverRow",null)}),handleContextMenu:function(e,t){this.handleEvent(e,t,"contextmenu")},handleDoubleClick:function(e,t){this.handleEvent(e,t,"dblclick")},handleClick:function(e,t){this.store.commit("setCurrentRow",t),this.handleEvent(e,t,"click")},handleEvent:function(e,t,n){var i=this.table,r=Ki(e),o=void 0;r&&(o=Qi(i,r),o&&i.$emit("cell-"+n,t,o,r,e)),i.$emit("row-"+n,t,o,e)},rowRender:function(e,t,n){var i=this,r=this.$createElement,o=this.treeIndent,a=this.columns,s=this.firstDefaultColumnIndex,c=a.map(function(e,t){return i.isColumnHidden(t)}),l=this.getRowClass(e,t),u=!0;return n&&(l.push("el-table__row--level-"+n.level),u=n.display),r("tr",{directives:[{name:"show",value:u}],style:this.getRowStyle(e,t),class:l,key:this.getKeyOfRow(e,t),on:{dblclick:function(t){return i.handleDoubleClick(t,e)},click:function(t){return i.handleClick(t,e)},contextmenu:function(t){return i.handleContextMenu(t,e)},mouseenter:function(e){return i.handleMouseEnter(t)},mouseleave:this.handleMouseLeave}},[a.map(function(l,u){var h=i.getSpan(e,l,t,u),d=h.rowspan,f=h.colspan;if(!d||!f)return null;var p=Er({},l);p.realWidth=i.getColspanRealWidth(a,f,u);var v={store:i.store,_self:i.context||i.table.$vnode.context,column:p,row:e,$index:t};return u===s&&n&&(v.treeNode={indent:n.level*o,level:n.level},"boolean"===typeof n.expanded&&(v.treeNode.expanded=n.expanded,"loading"in n&&(v.treeNode.loading=n.loading),"noLazyChildren"in n&&(v.treeNode.noLazyChildren=n.noLazyChildren))),r("td",{style:i.getCellStyle(t,u,e,l),class:i.getCellClass(t,u,e,l),attrs:{rowspan:d,colspan:f},on:{mouseenter:function(t){return i.handleCellMouseEnter(t,e)},mouseleave:i.handleCellMouseLeave}},[l.renderCell.call(i._renderProxy,i.$createElement,v,c[u])])})])},wrappedRowRender:function(e,t){var n=this,i=this.$createElement,r=this.store,o=r.isRowExpanded,a=r.assertRowKey,s=r.states,c=s.treeData,l=s.lazyTreeNodeMap,u=s.childrenColumnName,h=s.rowKey;if(this.hasExpandColumn&&o(e)){var d=this.table.renderExpanded,f=this.rowRender(e,t);return d?[[f,i("tr",{key:"expanded-row__"+f.key},[i("td",{attrs:{colspan:this.columnsCount},class:"el-table__expanded-cell"},[d(this.$createElement,{row:e,$index:t,store:this.store})])])]]:(console.error("[Element Error]renderExpanded is required."),f)}if(Object.keys(c).length){a();var p=Ji(e,h),v=c[p],m=null;v&&(m={expanded:v.expanded,level:v.level,display:!0},"boolean"===typeof v.loaded&&v.loaded&&(m.noLazyChildren=!(v.children&&v.children.length)),"boolean"===typeof v.loading&&(m.loading=v.loading));var g=[this.rowRender(e,t,m)];if(v){var b=0,y=function e(i,r){i&&i.length&&r&&i.forEach(function(i){var o={display:r.display&&r.expanded,level:r.level+1},a=Ji(i,h);if(void 0===a||null===a)throw new Error("for nested data item, row-key is required.");if(v=Er({},c[a]),v&&(o.expanded=v.expanded,v.level=v.level||o.level,v.display=!(!v.expanded||!o.display),"boolean"===typeof v.loaded&&v.loaded&&(o.noLazyChildren=!(v.children&&v.children.length)),"boolean"===typeof v.lazy&&(o.loading=v.loading)),b++,g.push(n.rowRender(i,t+b,o)),v){var s=l[a]||i[u];e(s,v)}})};v.display=!0;var _=l[p]||e[u];y(_,v)}return g}return this.rowRender(e,t)}}},Mr=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"}},[e.multiple?n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[n("div",{staticClass:"el-table-filter__content"},[n("el-scrollbar",{attrs:{"wrap-class":"el-table-filter__wrap"}},[n("el-checkbox-group",{staticClass:"el-table-filter__checkbox-group",model:{value:e.filteredValue,callback:function(t){e.filteredValue=t},expression:"filteredValue"}},e._l(e.filters,function(t){return n("el-checkbox",{key:t.value,attrs:{label:t.value}},[e._v(e._s(t.text))])}),1)],1)],1),n("div",{staticClass:"el-table-filter__bottom"},[n("button",{class:{"is-disabled":0===e.filteredValue.length},attrs:{disabled:0===e.filteredValue.length},on:{click:e.handleConfirm}},[e._v(e._s(e.t("el.table.confirmFilter")))]),n("button",{on:{click:e.handleReset}},[e._v(e._s(e.t("el.table.resetFilter")))])])]):n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleOutsideClick,expression:"handleOutsideClick"},{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-table-filter"},[n("ul",{staticClass:"el-table-filter__list"},[n("li",{staticClass:"el-table-filter__list-item",class:{"is-active":void 0===e.filterValue||null===e.filterValue},on:{click:function(t){e.handleSelect(null)}}},[e._v(e._s(e.t("el.table.clearFilter")))]),e._l(e.filters,function(t){return n("li",{key:t.value,staticClass:"el-table-filter__list-item",class:{"is-active":e.isActive(t)},attrs:{label:t.value},on:{click:function(n){e.handleSelect(t.value)}}},[e._v(e._s(t.text))])})],2)])])},zr=[];Mr._withStripped=!0;var kr=[];!Wi.a.prototype.$isServer&&document.addEventListener("click",function(e){kr.forEach(function(t){var n=e.target;t&&t.$el&&(n===t.$el||t.$el.contains(n)||t.handleOutsideClick&&t.handleOutsideClick(e))})});var Tr={open:function(e){e&&kr.push(e)},close:function(e){var t=kr.indexOf(e);-1!==t&&kr.splice(e,1)}},Lr=n(30),Ar=n.n(Lr),Hr={name:"ElTableFilterPanel",mixins:[B.a,g.a],directives:{Clickoutside:$.a},components:{ElCheckbox:Ii.a,ElCheckboxGroup:Ar.a},props:{placement:{type:String,default:"bottom-end"}},methods:{isActive:function(e){return e.value===this.filterValue},handleOutsideClick:function(){var e=this;setTimeout(function(){e.showPopper=!1},16)},handleConfirm:function(){this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleReset:function(){this.filteredValue=[],this.confirmFilter(this.filteredValue),this.handleOutsideClick()},handleSelect:function(e){this.filterValue=e,"undefined"!==typeof e&&null!==e?this.confirmFilter(this.filteredValue):this.confirmFilter([]),this.handleOutsideClick()},confirmFilter:function(e){this.table.store.commit("filterChange",{column:this.column,values:e}),this.table.store.updateAllSelected()}},data:function(){return{table:null,cell:null,column:null}},computed:{filters:function(){return this.column&&this.column.filters},filterValue:{get:function(){return(this.column.filteredValue||[])[0]},set:function(e){this.filteredValue&&("undefined"!==typeof e&&null!==e?this.filteredValue.splice(0,1,e):this.filteredValue.splice(0,1))}},filteredValue:{get:function(){return this.column&&this.column.filteredValue||[]},set:function(e){this.column&&(this.column.filteredValue=e)}},multiple:function(){return!this.column||this.column.filterMultiple}},mounted:function(){var e=this;this.popperElm=this.$el,this.referenceElm=this.cell,this.table.bodyWrapper.addEventListener("scroll",function(){e.updatePopper()}),this.$watch("showPopper",function(t){e.column&&(e.column.filterOpened=t),t?Tr.open(e):Tr.close(e)})},watch:{showPopper:function(e){!0===e&&parseInt(this.popperJS._popper.style.zIndex,10)1;return r&&(this.$parent.isGroup=!0),e("table",{class:"el-table__header",attrs:{cellspacing:"0",cellpadding:"0",border:"0"}},[e("colgroup",[this.columns.map(function(t){return e("col",{attrs:{name:t.id},key:t.id})}),this.hasGutter?e("col",{attrs:{name:"gutter"}}):""]),e("thead",{class:[{"is-group":r,"has-gutter":this.hasGutter}]},[this._l(i,function(n,i){return e("tr",{style:t.getHeaderRowStyle(i),class:t.getHeaderRowClass(i)},[n.map(function(r,o){return e("th",{attrs:{colspan:r.colSpan,rowspan:r.rowSpan},on:{mousemove:function(e){return t.handleMouseMove(e,r)},mouseout:t.handleMouseOut,mousedown:function(e){return t.handleMouseDown(e,r)},click:function(e){return t.handleHeaderClick(e,r)},contextmenu:function(e){return t.handleHeaderContextMenu(e,r)}},style:t.getHeaderCellStyle(i,o,n,r),class:t.getHeaderCellClass(i,o,n,r),key:r.id},[e("div",{class:["cell",r.filteredValue&&r.filteredValue.length>0?"highlight":"",r.labelClassName]},[r.renderHeader?r.renderHeader.call(t._renderProxy,e,{column:r,$index:o,store:t.store,_self:t.$parent.$vnode.context}):r.label,r.sortable?e("span",{class:"caret-wrapper",on:{click:function(e){return t.handleSortClick(e,r)}}},[e("i",{class:"sort-caret ascending",on:{click:function(e){return t.handleSortClick(e,r,"ascending")}}}),e("i",{class:"sort-caret descending",on:{click:function(e){return t.handleSortClick(e,r,"descending")}}})]):"",r.filterable?e("span",{class:"el-table__column-filter-trigger",on:{click:function(e){return t.handleFilterClick(e,r)}}},[e("i",{class:["el-icon-arrow-down",r.filterOpened?"el-icon-arrow-up":""]})]):""])])}),t.hasGutter?e("th",{class:"gutter"}):""])})])])},props:{fixed:String,store:{required:!0},border:Boolean,defaultSort:{type:Object,default:function(){return{prop:"",order:""}}}},components:{ElCheckbox:Ii.a},computed:Dr({table:function(){return this.$parent},hasGutter:function(){return!this.fixed&&this.tableLayout.gutterWidth}},gr({columns:"columns",isAllSelected:"isAllSelected",leftFixedLeafCount:"fixedLeafColumnsLength",rightFixedLeafCount:"rightFixedLeafColumnsLength",columnsCount:function(e){return e.columns.length},leftFixedCount:function(e){return e.fixedColumns.length},rightFixedCount:function(e){return e.rightFixedColumns.length}})),created:function(){this.filterPanels={}},mounted:function(){var e=this.defaultSort,t=e.prop,n=e.order,i=!0;this.store.commit("sort",{prop:t,order:n,init:i})},beforeDestroy:function(){var e=this.filterPanels;for(var t in e)e.hasOwnProperty(t)&&e[t]&&e[t].$destroy(!0)},methods:{isCellHidden:function(e,t){for(var n=0,i=0;i=this.leftFixedLeafCount:"right"===this.fixed?n=this.columnsCount-this.rightFixedLeafCount},getHeaderRowStyle:function(e){var t=this.table.headerRowStyle;return"function"===typeof t?t.call(null,{rowIndex:e}):t},getHeaderRowClass:function(e){var t=[],n=this.table.headerRowClassName;return"string"===typeof n?t.push(n):"function"===typeof n&&t.push(n.call(null,{rowIndex:e})),t.join(" ")},getHeaderCellStyle:function(e,t,n,i){var r=this.table.headerCellStyle;return"function"===typeof r?r.call(null,{rowIndex:e,columnIndex:t,row:n,column:i}):r},getHeaderCellClass:function(e,t,n,i){var r=[i.id,i.order,i.headerAlign,i.className,i.labelClassName];0===e&&this.isCellHidden(t,n)&&r.push("is-hidden"),i.children||r.push("is-leaf"),i.sortable&&r.push("is-sortable");var o=this.table.headerCellClassName;return"string"===typeof o?r.push(o):"function"===typeof o&&r.push(o.call(null,{rowIndex:e,columnIndex:t,row:n,column:i})),r.join(" ")},toggleAllSelection:function(e){e.stopPropagation(),this.store.commit("toggleAllSelection")},handleFilterClick:function(e,t){e.stopPropagation();var n=e.target,i="TH"===n.tagName?n:n.parentNode;i=i.querySelector(".el-table__column-filter-trigger")||i;var r=this.$parent,o=this.filterPanels[t.id];o&&t.filterOpened?o.showPopper=!1:(o||(o=new Wi.a(Ir),this.filterPanels[t.id]=o,t.filterPlacement&&(o.placement=t.filterPlacement),o.table=r,o.cell=i,o.column=t,!this.$isServer&&o.$mount(document.createElement("div"))),setTimeout(function(){o.showPopper=!0},16))},handleHeaderClick:function(e,t){!t.filters&&t.sortable?this.handleSortClick(e,t):t.filterable&&!t.sortable&&this.handleFilterClick(e,t),this.$parent.$emit("header-click",t,e)},handleHeaderContextMenu:function(e,t){this.$parent.$emit("header-contextmenu",t,e)},handleMouseDown:function(e,t){var n=this;if(!this.$isServer&&!(t.children&&t.children.length>0)&&this.draggingColumn&&this.border){this.dragging=!0,this.$parent.resizeProxyVisible=!0;var i=this.$parent,r=i.$el,o=r.getBoundingClientRect().left,a=this.$el.querySelector("th."+t.id),s=a.getBoundingClientRect(),c=s.left-o+30;Object(Pe["addClass"])(a,"noclick"),this.dragState={startMouseLeft:e.clientX,startLeft:s.right-o,startColumnLeft:s.left-o,tableLeft:o};var l=i.$refs.resizeProxy;l.style.left=this.dragState.startLeft+"px",document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};var u=function(e){var t=e.clientX-n.dragState.startMouseLeft,i=n.dragState.startLeft+t;l.style.left=Math.max(c,i)+"px"},h=function r(){if(n.dragging){var o=n.dragState,s=o.startColumnLeft,c=o.startLeft,h=parseInt(l.style.left,10),d=h-s;t.width=t.realWidth=d,i.$emit("header-dragend",t.width,c-s,t,e),n.store.scheduleLayout(),document.body.style.cursor="",n.dragging=!1,n.draggingColumn=null,n.dragState={},i.resizeProxyVisible=!1}document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",r),document.onselectstart=null,document.ondragstart=null,setTimeout(function(){Object(Pe["removeClass"])(a,"noclick")},0)};document.addEventListener("mousemove",u),document.addEventListener("mouseup",h)}},handleMouseMove:function(e,t){if(!(t.children&&t.children.length>0)){var n=e.target;while(n&&"TH"!==n.tagName)n=n.parentNode;if(t&&t.resizable&&!this.dragging&&this.border){var i=n.getBoundingClientRect(),r=document.body.style;i.width>12&&i.right-e.pageX<8?(r.cursor="col-resize",Object(Pe["hasClass"])(n,"is-sortable")&&(n.style.cursor="col-resize"),this.draggingColumn=t):this.dragging||(r.cursor="",Object(Pe["hasClass"])(n,"is-sortable")&&(n.style.cursor="pointer"),this.draggingColumn=null)}}},handleMouseOut:function(){this.$isServer||(document.body.style.cursor="")},toggleOrder:function(e){var t=e.order,n=e.sortOrders;if(""===t)return n[0];var i=n.indexOf(t||null);return n[i>n.length-2?0:i+1]},handleSortClick:function(e,t,n){e.stopPropagation();var i=t.order===n?null:n||this.toggleOrder(t),r=e.target;while(r&&"TH"!==r.tagName)r=r.parentNode;if(r&&"TH"===r.tagName&&Object(Pe["hasClass"])(r,"noclick"))Object(Pe["removeClass"])(r,"noclick");else if(t.sortable){var o=this.store.states,a=o.sortProp,s=void 0,c=o.sortingColumn;(c!==t||c===t&&null===c.order)&&(c&&(c.order=null),o.sortingColumn=t,a=t.property),s=t.order=i||null,o.sortProp=a,o.sortOrder=s,this.store.commit("changeSortCondition")}}},data:function(){return{draggingColumn:null,dragging:!1,dragState:{}}}},jr=Object.assign||function(e){for(var t=1;t=this.leftFixedLeafCount;if("right"===this.fixed){for(var i=0,r=0;r=this.columnsCount-this.rightFixedCount)},getRowClasses:function(e,t){var n=[e.id,e.align,e.labelClassName];return e.className&&n.push(e.className),this.isCellHidden(t,this.columns,e)&&n.push("is-hidden"),e.children||n.push("is-leaf"),n}}},Br=Object.assign||function(e){for(var t=1;t0){var i=n.scrollTop;t.pixelY<0&&0!==i&&e.preventDefault(),t.pixelY>0&&n.scrollHeight-n.clientHeight>i&&e.preventDefault(),n.scrollTop+=Math.ceil(t.pixelY/5)}else n.scrollLeft+=Math.ceil(t.pixelX/5)},handleHeaderFooterMousewheel:function(e,t){var n=t.pixelX,i=t.pixelY;Math.abs(n)>=Math.abs(i)&&(this.bodyWrapper.scrollLeft+=t.pixelX/5)},syncPostion:Object(Di["throttle"])(20,function(){var e=this.bodyWrapper,t=e.scrollLeft,n=e.scrollTop,i=e.offsetWidth,r=e.scrollWidth,o=this.$refs,a=o.headerWrapper,s=o.footerWrapper,c=o.fixedBodyWrapper,l=o.rightFixedBodyWrapper;a&&(a.scrollLeft=t),s&&(s.scrollLeft=t),c&&(c.scrollTop=n),l&&(l.scrollTop=n);var u=r-i-1;this.scrollPosition=t>=u?"right":0===t?"left":"middle"}),bindEvents:function(){this.bodyWrapper.addEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Zn["addResizeListener"])(this.$el,this.resizeListener)},unbindEvents:function(){this.bodyWrapper.removeEventListener("scroll",this.syncPostion,{passive:!0}),this.fit&&Object(Zn["removeResizeListener"])(this.$el,this.resizeListener)},resizeListener:function(){if(this.$ready){var e=!1,t=this.$el,n=this.resizeState,i=n.width,r=n.height,o=t.offsetWidth;i!==o&&(e=!0);var a=t.offsetHeight;(this.height||this.shouldUpdateHeight)&&r!==a&&(e=!0),e&&(this.resizeState.width=o,this.resizeState.height=a,this.doLayout())}},doLayout:function(){this.layout.updateColumnsWidth(),this.shouldUpdateHeight&&this.layout.updateElsHeight()},sort:function(e,t){this.store.commit("sort",{prop:e,order:t})},toggleAllSelection:function(){this.store.commit("toggleAllSelection")}},computed:Br({tableSize:function(){return this.size||(this.$ELEMENT||{}).size},bodyWrapper:function(){return this.$refs.bodyWrapper},shouldUpdateHeight:function(){return this.height||this.maxHeight||this.fixedColumns.length>0||this.rightFixedColumns.length>0},bodyWidth:function(){var e=this.layout,t=e.bodyWidth,n=e.scrollY,i=e.gutterWidth;return t?t-(n?i:0)+"px":""},bodyHeight:function(){var e=this.layout,t=e.headerHeight,n=void 0===t?0:t,i=e.bodyHeight,r=e.footerHeight,o=void 0===r?0:r;if(this.height)return{height:i?i+"px":""};if(this.maxHeight){var a=rr(this.maxHeight);if(a)return{"max-height":a-o-(this.showHeader?n:0)+"px"}}return{}},fixedBodyHeight:function(){if(this.height)return{height:this.layout.fixedBodyHeight?this.layout.fixedBodyHeight+"px":""};if(this.maxHeight){var e=rr(this.maxHeight);if(e)return e=this.layout.scrollX?e-this.layout.gutterWidth:e,this.showHeader&&(e-=this.layout.headerHeight),e-=this.layout.footerHeight,{"max-height":e+"px"}}return{}},fixedHeight:function(){return this.maxHeight?this.showSummary?{bottom:0}:{bottom:this.layout.scrollX&&this.data.length?this.layout.gutterWidth+"px":""}:this.showSummary?{height:this.layout.tableHeight?this.layout.tableHeight+"px":""}:{height:this.layout.viewportHeight?this.layout.viewportHeight+"px":""}}},gr({selection:"selection",columns:"columns",tableData:"data",fixedColumns:"fixedColumns",rightFixedColumns:"rightFixedColumns"})),watch:{height:{immediate:!0,handler:function(e){this.layout.setHeight(e)}},maxHeight:{immediate:!0,handler:function(e){this.layout.setMaxHeight(e)}},currentRowKey:function(e){this.store.setCurrentRowKey(e)},data:{immediate:!0,handler:function(e){var t=this;this.store.commit("setData",e),this.$ready&&this.$nextTick(function(){t.doLayout()})}},expandRowKeys:{immediate:!0,handler:function(e){e&&this.store.setExpandRowKeysAdapter(e)}}},created:function(){var e=this;this.tableId="el-table_"+Wr++,this.debouncedUpdateLayout=Object(Di["debounce"])(50,function(){return e.doLayout()})},mounted:function(){var e=this;this.bindEvents(),this.store.updateColumns(),this.doLayout(),this.resizeState={width:this.$el.offsetWidth,height:this.$el.offsetHeight},this.store.states.columns.forEach(function(t){t.filteredValue&&t.filteredValue.length&&e.store.commit("filterChange",{column:t,values:t.filteredValue,silent:!0})}),this.$ready=!0},destroyed:function(){this.unbindEvents()},data:function(){var e=this.treeProps,t=e.hasChildren,n=void 0===t?"hasChildren":t,i=e.children,r=void 0===i?"children":i;this.store=mr(this,{rowKey:this.rowKey,defaultExpandAll:this.defaultExpandAll,selectOnIndeterminate:this.selectOnIndeterminate,indent:this.indent,lazy:this.lazy,lazyColumnIdentifier:n,childrenColumnName:r});var o=new wr({store:this.store,table:this,fit:this.fit,showHeader:this.showHeader});return{layout:o,isHidden:!1,renderExpanded:null,resizeProxyVisible:!1,resizeState:{width:null,height:null},isGroup:!1,scrollPosition:"left"}}},Kr=Ur,qr=s(Kr,Hi,Vi,!1,null,null,null);qr.options.__file="packages/table/src/table.vue";var Gr=qr.exports;Gr.install=function(e){e.component(Gr.name,Gr)};var Yr=Gr,Xr={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:"",className:"el-table-column--selection"},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},Qr={selection:{renderHeader:function(e,t){var n=t.store;return e("el-checkbox",{attrs:{disabled:n.states.data&&0===n.states.data.length,indeterminate:n.states.selection.length>0&&!this.isAllSelected,value:this.isAllSelected},nativeOn:{click:this.toggleAllSelection}})},renderCell:function(e,t){var n=t.row,i=t.column,r=t.store,o=t.$index;return e("el-checkbox",{nativeOn:{click:function(e){return e.stopPropagation()}},attrs:{value:r.isSelected(n),disabled:!!i.selectable&&!i.selectable.call(null,n,o)},on:{input:function(){r.commit("rowSelectedChanged",n)}}})},sortable:!1,resizable:!1},index:{renderHeader:function(e,t){var n=t.column;return n.label||"#"},renderCell:function(e,t){var n=t.$index,i=t.column,r=n+1,o=i.index;return"number"===typeof o?r=n+o:"function"===typeof o&&(r=o(n)),e("div",[r])},sortable:!1},expand:{renderHeader:function(e,t){var n=t.column;return n.label||""},renderCell:function(e,t){var n=t.row,i=t.store,r=["el-table__expand-icon"];i.states.expandRows.indexOf(n)>-1&&r.push("el-table__expand-icon--expanded");var o=function(e){e.stopPropagation(),i.toggleRowExpansion(n)};return e("div",{class:r,on:{click:o}},[e("i",{class:"el-icon el-icon-arrow-right"})])},sortable:!1,resizable:!1,className:"el-table__expand-column"}};function Jr(e,t){var n=t.row,i=t.column,r=t.$index,o=i.property,a=o&&Object(b["getPropByPath"])(n,o).v;return i&&i.formatter?i.formatter(n,i,a,r):a}function Zr(e,t){var n=t.row,i=t.treeNode,r=t.store;if(!i)return null;var o=[],a=function(e){e.stopPropagation(),r.loadOrToggle(n)};if(i.indent&&o.push(e("span",{class:"el-table__indent",style:{"padding-left":i.indent+"px"}})),"boolean"!==typeof i.expanded||i.noLazyChildren)o.push(e("span",{class:"el-table__placeholder"}));else{var s=["el-table__expand-icon",i.expanded?"el-table__expand-icon--expanded":""],c=["el-icon-arrow-right"];i.loading&&(c=["el-icon-loading"]),o.push(e("div",{class:s,on:{click:a}},[e("i",{class:c})]))}return o}var eo=Object.assign||function(e){for(var t=1;t-1})}}},data:function(){return{isSubColumn:!1,columns:[]}},computed:{owner:function(){var e=this.$parent;while(e&&!e.tableId)e=e.$parent;return e},columnOrTableParent:function(){var e=this.$parent;while(e&&!e.tableId&&!e.columnId)e=e.$parent;return e},realWidth:function(){return nr(this.width)},realMinWidth:function(){return ir(this.minWidth)},realAlign:function(){return this.align?"is-"+this.align:null},realHeaderAlign:function(){return this.headerAlign?"is-"+this.headerAlign:this.realAlign}},methods:{getPropsData:function(){for(var e=this,t=arguments.length,n=Array(t),i=0;i3&&void 0!==arguments[3]?arguments[3]:"-";if(!e)return null;var r=(vo[n]||vo["default"]).parser,o=t||co[n];return r(e,o,i)},bo=function(e,t,n){if(!e)return null;var i=(vo[n]||vo["default"]).formatter,r=t||co[n];return i(e,r)},yo=function(e,t){var n=function(e,t){var n=e instanceof Date,i=t instanceof Date;return n&&i?e.getTime()===t.getTime():!n&&!i&&e===t},i=e instanceof Array,r=t instanceof Array;return i&&r?e.length===t.length&&e.every(function(e,i){return n(e,t[i])}):!i&&!r&&n(e,t)},_o=function(e){return"string"===typeof e||e instanceof String},Co=function(e){return null===e||void 0===e||_o(e)||Array.isArray(e)&&2===e.length&&e.every(_o)},wo={mixins:[z.a,so],inject:{elForm:{default:""},elFormItem:{default:""}},props:{size:String,format:String,valueFormat:String,readonly:Boolean,placeholder:String,startPlaceholder:String,endPlaceholder:String,prefixIcon:String,clearIcon:{type:String,default:"el-icon-circle-close"},name:{default:"",validator:Co},disabled:Boolean,clearable:{type:Boolean,default:!0},id:{default:"",validator:Co},popperClass:String,editable:{type:Boolean,default:!0},align:{type:String,default:"left"},value:{},defaultValue:{},defaultTime:{},rangeSeparator:{default:"-"},pickerOptions:{},unlinkPanels:Boolean,validateEvent:{type:Boolean,default:!0}},components:{ElInput:v.a},directives:{Clickoutside:$.a},data:function(){return{pickerVisible:!1,showClose:!1,userInput:null,valueOnOpen:null,unwatchPickerOptions:null}},watch:{pickerVisible:function(e){this.readonly||this.pickerDisabled||(e?(this.showPicker(),this.valueOnOpen=Array.isArray(this.value)?[].concat(this.value):this.value):(this.hidePicker(),this.emitChange(this.value),this.userInput=null,this.validateEvent&&this.dispatch("ElFormItem","el.form.blur"),this.$emit("blur",this),this.blur()))},parsedValue:{immediate:!0,handler:function(e){this.picker&&(this.picker.value=e)}},defaultValue:function(e){this.picker&&(this.picker.defaultValue=e)},value:function(e,t){yo(e,t)||this.pickerVisible||!this.validateEvent||this.dispatch("ElFormItem","el.form.change",e)}},computed:{ranged:function(){return this.type.indexOf("range")>-1},reference:function(){var e=this.$refs.reference;return e.$el||e},refInput:function(){return this.reference?[].slice.call(this.reference.querySelectorAll("input")):[]},valueIsEmpty:function(){var e=this.value;if(Array.isArray(e)){for(var t=0,n=e.length;t0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.userInput=null,e.pickerVisible=e.picker.visible=n,e.emitInput(t),e.picker.resetView&&e.picker.resetView()}),this.picker.$on("select-range",function(t,n,i){0!==e.refInput.length&&(i&&"min"!==i?"max"===i&&(e.refInput[1].setSelectionRange(t,n),e.refInput[1].focus()):(e.refInput[0].setSelectionRange(t,n),e.refInput[0].focus()))})},unmountPicker:function(){this.picker&&(this.picker.$destroy(),this.picker.$off(),"function"===typeof this.unwatchPickerOptions&&this.unwatchPickerOptions(),this.picker.$el.parentNode.removeChild(this.picker.$el))},emitChange:function(e){yo(e,this.valueOnOpen)||(this.$emit("change",e),this.valueOnOpen=e,this.validateEvent&&this.dispatch("ElFormItem","el.form.change",e))},emitInput:function(e){var t=this.formatToValue(e);yo(this.value,t)||this.$emit("input",t)},isValidValue:function(e){return this.picker||this.mountPicker(),!this.picker.isValidValue||e&&this.picker.isValidValue(e)}}},xo=wo,So=s(xo,ro,oo,!1,null,null,null);So.options.__file="packages/date-picker/src/picker.vue";var Eo=So.exports,Oo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-enter":e.handleEnter,"after-leave":e.handleLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[n("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?n("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,i){return n("button",{key:i,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n("div",{staticClass:"el-picker-panel__body"},[e.showTime?n("div",{staticClass:"el-date-picker__time-header"},[n("span",{staticClass:"el-date-picker__editor-wrap"},[n("el-input",{attrs:{placeholder:e.t("el.datepicker.selectDate"),value:e.visibleDate,size:"small"},on:{input:function(t){return e.userInputDate=t},change:e.handleVisibleDateChange}})],1),n("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleTimePickClose,expression:"handleTimePickClose"}],staticClass:"el-date-picker__editor-wrap"},[n("el-input",{ref:"input",attrs:{placeholder:e.t("el.datepicker.selectTime"),value:e.visibleTime,size:"small"},on:{focus:function(t){e.timePickerVisible=!0},input:function(t){return e.userInputTime=t},change:e.handleVisibleTimeChange}}),n("time-picker",{ref:"timepicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.timePickerVisible},on:{pick:e.handleTimePick,mounted:e.proxyTimePickerDataProperties}})],1)]):e._e(),n("div",{directives:[{name:"show",rawName:"v-show",value:"time"!==e.currentView,expression:"currentView !== 'time'"}],staticClass:"el-date-picker__header",class:{"el-date-picker__header--bordered":"year"===e.currentView||"month"===e.currentView}},[n("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevYear")},on:{click:e.prevYear}}),n("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left",attrs:{type:"button","aria-label":e.t("el.datepicker.prevMonth")},on:{click:e.prevMonth}}),n("span",{staticClass:"el-date-picker__header-label",attrs:{role:"button"},on:{click:e.showYearPicker}},[e._v(e._s(e.yearLabel))]),n("span",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-date-picker__header-label",class:{active:"month"===e.currentView},attrs:{role:"button"},on:{click:e.showMonthPicker}},[e._v(e._s(e.t("el.datepicker.month"+(e.month+1))))]),n("button",{staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextYear")},on:{click:e.nextYear}}),n("button",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],staticClass:"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right",attrs:{type:"button","aria-label":e.t("el.datepicker.nextMonth")},on:{click:e.nextMonth}})]),n("div",{staticClass:"el-picker-panel__content"},[n("date-table",{directives:[{name:"show",rawName:"v-show",value:"date"===e.currentView,expression:"currentView === 'date'"}],attrs:{"selection-mode":e.selectionMode,"first-day-of-week":e.firstDayOfWeek,value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleDatePick}}),n("year-table",{directives:[{name:"show",rawName:"v-show",value:"year"===e.currentView,expression:"currentView === 'year'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleYearPick}}),n("month-table",{directives:[{name:"show",rawName:"v-show",value:"month"===e.currentView,expression:"currentView === 'month'"}],attrs:{value:e.value,"default-value":e.defaultValue?new Date(e.defaultValue):null,date:e.date,"disabled-date":e.disabledDate},on:{pick:e.handleMonthPick}})],1)])],2),n("div",{directives:[{name:"show",rawName:"v-show",value:e.footerVisible&&"date"===e.currentView,expression:"footerVisible && currentView === 'date'"}],staticClass:"el-picker-panel__footer"},[n("el-button",{directives:[{name:"show",rawName:"v-show",value:"dates"!==e.selectionMode,expression:"selectionMode !== 'dates'"}],staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.changeToNow}},[e._v("\n "+e._s(e.t("el.datepicker.now"))+"\n ")]),n("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini"},on:{click:e.confirm}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1)])])},Mo=[];Oo._withStripped=!0;var zo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-panel el-popper",class:e.popperClass},[n("div",{staticClass:"el-time-panel__content",class:{"has-seconds":e.showSeconds}},[n("time-spinner",{ref:"spinner",attrs:{"arrow-control":e.useArrow,"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,date:e.date},on:{change:e.handleChange,"select-range":e.setSelectionRange}})],1),n("div",{staticClass:"el-time-panel__footer"},[n("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:e.handleCancel}},[e._v(e._s(e.t("el.datepicker.cancel")))]),n("button",{staticClass:"el-time-panel__btn",class:{confirm:!e.disabled},attrs:{type:"button"},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])},ko=[];zo._withStripped=!0;var To=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-time-spinner",class:{"has-seconds":e.showSeconds}},[e.arrowControl?e._e():[n("el-scrollbar",{ref:"hours",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("hours")},mousemove:function(t){e.adjustCurrentSpinner("hours")}}},e._l(e.hoursList,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:i===e.hours,disabled:t},on:{click:function(n){e.handleClick("hours",{value:i,disabled:t})}}},[e._v(e._s(("0"+(e.amPmMode?i%12||12:i)).slice(-2))+e._s(e.amPm(i)))])}),0),n("el-scrollbar",{ref:"minutes",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("minutes")},mousemove:function(t){e.adjustCurrentSpinner("minutes")}}},e._l(e.minutesList,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:i===e.minutes,disabled:!t},on:{click:function(t){e.handleClick("minutes",{value:i,disabled:!1})}}},[e._v(e._s(("0"+i).slice(-2)))])}),0),n("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.showSeconds,expression:"showSeconds"}],ref:"seconds",staticClass:"el-time-spinner__wrapper",attrs:{"wrap-style":"max-height: inherit;","view-class":"el-time-spinner__list",noresize:"",tag:"ul"},nativeOn:{mouseenter:function(t){e.emitSelectRange("seconds")},mousemove:function(t){e.adjustCurrentSpinner("seconds")}}},e._l(60,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:i===e.seconds},on:{click:function(t){e.handleClick("seconds",{value:i,disabled:!1})}}},[e._v(e._s(("0"+i).slice(-2)))])}),0)],e.arrowControl?[n("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("hours")}}},[n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),n("ul",{ref:"hours",staticClass:"el-time-spinner__list"},e._l(e.arrowHourList,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:t===e.hours,disabled:e.hoursList[t]}},[e._v(e._s(void 0===t?"":("0"+(e.amPmMode?t%12||12:t)).slice(-2)+e.amPm(t)))])}),0)]),n("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("minutes")}}},[n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),n("ul",{ref:"minutes",staticClass:"el-time-spinner__list"},e._l(e.arrowMinuteList,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:t===e.minutes}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]),e.showSeconds?n("div",{staticClass:"el-time-spinner__wrapper is-arrow",on:{mouseenter:function(t){e.emitSelectRange("seconds")}}},[n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.decrease,expression:"decrease"}],staticClass:"el-time-spinner__arrow el-icon-arrow-up"}),n("i",{directives:[{name:"repeat-click",rawName:"v-repeat-click",value:e.increase,expression:"increase"}],staticClass:"el-time-spinner__arrow el-icon-arrow-down"}),n("ul",{ref:"seconds",staticClass:"el-time-spinner__list"},e._l(e.arrowSecondList,function(t,i){return n("li",{key:i,staticClass:"el-time-spinner__item",class:{active:t===e.seconds}},[e._v("\n "+e._s(void 0===t?"":("0"+t).slice(-2))+"\n ")])}),0)]):e._e()]:e._e()],2)},Lo=[];To._withStripped=!0;var Ao={components:{ElScrollbar:U.a},directives:{repeatClick:Ht},props:{date:{},defaultValue:{},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:String,default:""}},computed:{hours:function(){return this.date.getHours()},minutes:function(){return this.date.getMinutes()},seconds:function(){return this.date.getSeconds()},hoursList:function(){return Object(ao["getRangeHours"])(this.selectableRange)},minutesList:function(){return Object(ao["getRangeMinutes"])(this.selectableRange,this.hours)},arrowHourList:function(){var e=this.hours;return[e>0?e-1:void 0,e,e<23?e+1:void 0]},arrowMinuteList:function(){var e=this.minutes;return[e>0?e-1:void 0,e,e<59?e+1:void 0]},arrowSecondList:function(){var e=this.seconds;return[e>0?e-1:void 0,e,e<59?e+1:void 0]}},data:function(){return{selectableRange:[],currentScrollbar:null}},mounted:function(){var e=this;this.$nextTick(function(){!e.arrowControl&&e.bindScrollEvent()})},methods:{increase:function(){this.scrollDown(1)},decrease:function(){this.scrollDown(-1)},modifyDateField:function(e,t){switch(e){case"hours":this.$emit("change",Object(ao["modifyTime"])(this.date,t,this.minutes,this.seconds));break;case"minutes":this.$emit("change",Object(ao["modifyTime"])(this.date,this.hours,t,this.seconds));break;case"seconds":this.$emit("change",Object(ao["modifyTime"])(this.date,this.hours,this.minutes,t));break}},handleClick:function(e,t){var n=t.value,i=t.disabled;i||(this.modifyDateField(e,n),this.emitSelectRange(e),this.adjustSpinner(e,n))},emitSelectRange:function(e){"hours"===e?this.$emit("select-range",0,2):"minutes"===e?this.$emit("select-range",3,5):"seconds"===e&&this.$emit("select-range",6,8),this.currentScrollbar=e},bindScrollEvent:function(){var e=this,t=function(t){e.$refs[t].wrap.onscroll=function(n){e.handleScroll(t,n)}};t("hours"),t("minutes"),t("seconds")},handleScroll:function(e){var t=Math.min(Math.floor((this.$refs[e].wrap.scrollTop-(.5*this.scrollBarHeight(e)-10)/this.typeItemHeight(e)+3)/this.typeItemHeight(e)),"hours"===e?23:59);this.modifyDateField(e,t)},adjustSpinners:function(){this.adjustSpinner("hours",this.hours),this.adjustSpinner("minutes",this.minutes),this.adjustSpinner("seconds",this.seconds)},adjustCurrentSpinner:function(e){this.adjustSpinner(e,this[e])},adjustSpinner:function(e,t){if(!this.arrowControl){var n=this.$refs[e].wrap;n&&(n.scrollTop=Math.max(0,t*this.typeItemHeight(e)))}},scrollDown:function(e){this.currentScrollbar||this.emitSelectRange("hours");var t=this.currentScrollbar,n=this.hoursList,i=this[t];if("hours"===this.currentScrollbar){var r=Math.abs(e);e=e>0?1:-1;var o=n.length;while(o--&&r)i=(i+e+n.length)%n.length,n[i]||r--;if(n[i])return}else i=(i+e+60)%60;this.modifyDateField(t,i),this.adjustSpinner(t,i)},amPm:function(e){var t="a"===this.amPmMode.toLowerCase();if(!t)return"";var n="A"===this.amPmMode,i=e<12?" am":" pm";return n&&(i=i.toUpperCase()),i},typeItemHeight:function(e){return this.$refs[e].$el.querySelector("li").offsetHeight},scrollBarHeight:function(e){return this.$refs[e].$el.offsetHeight}}},Ho=Ao,Vo=s(Ho,To,Lo,!1,null,null,null);Vo.options.__file="packages/date-picker/src/basic/time-spinner.vue";var No=Vo.exports,Io={mixins:[g.a],components:{TimeSpinner:No},props:{visible:Boolean,timeArrowControl:Boolean},watch:{visible:function(e){var t=this;e?(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.spinner.emitSelectRange("hours")})):this.needInitAdjust=!0},value:function(e){var t=this,n=void 0;e instanceof Date?n=Object(ao["limitTimeRange"])(e,this.selectableRange,this.format):e||(n=this.defaultValue?new Date(this.defaultValue):new Date),this.date=n,this.visible&&this.needInitAdjust&&(this.$nextTick(function(e){return t.adjustSpinners()}),this.needInitAdjust=!1)},selectableRange:function(e){this.$refs.spinner.selectableRange=e},defaultValue:function(e){Object(ao["isDate"])(this.value)||(this.date=e?new Date(e):new Date)}},data:function(){return{popperClass:"",format:"HH:mm:ss",value:"",defaultValue:null,date:new Date,oldValue:new Date,selectableRange:[],selectionRange:[0,2],disabled:!1,arrowControl:!1,needInitAdjust:!0}},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},useArrow:function(){return this.arrowControl||this.timeArrowControl||!1},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},methods:{handleCancel:function(){this.$emit("pick",this.oldValue,!1)},handleChange:function(e){this.visible&&(this.date=Object(ao["clearMilliseconds"])(e),this.isValidValue(this.date)&&this.$emit("pick",this.date,!0))},setSelectionRange:function(e,t){this.$emit("select-range",e,t),this.selectionRange=[e,t]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(!t){var n=Object(ao["clearMilliseconds"])(Object(ao["limitTimeRange"])(this.date,this.selectableRange,this.format));this.$emit("pick",n,e,t)}},handleKeydown:function(e){var t=e.keyCode,n={38:-1,40:1,37:-1,39:1};if(37===t||39===t){var i=n[t];return this.changeSelectionRange(i),void e.preventDefault()}if(38===t||40===t){var r=n[t];return this.$refs.spinner.scrollDown(r),void e.preventDefault()}},isValidValue:function(e){return Object(ao["timeWithinRange"])(e,this.selectableRange,this.format)},adjustSpinners:function(){return this.$refs.spinner.adjustSpinners()},changeSelectionRange:function(e){var t=[0,3].concat(this.showSeconds?[6]:[]),n=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),i=t.indexOf(this.selectionRange[0]),r=(i+e+t.length)%t.length;this.$refs.spinner.emitSelectRange(n[r])}},mounted:function(){var e=this;this.$nextTick(function(){return e.handleConfirm(!0,!0)}),this.$emit("mounted")}},Do=Io,Po=s(Do,zo,ko,!1,null,null,null);Po.options.__file="packages/date-picker/src/panel/time.vue";var $o=Po.exports,Ro=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("table",{staticClass:"el-year-table",on:{click:e.handleYearTableClick}},[n("tbody",[n("tr",[n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+0)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+1)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+1))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+2)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+2))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+3)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+3))])])]),n("tr",[n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+4)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+4))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+5)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+5))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+6)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+6))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+7)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+7))])])]),n("tr",[n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+8)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+8))])]),n("td",{staticClass:"available",class:e.getCellStyle(e.startYear+9)},[n("a",{staticClass:"cell"},[e._v(e._s(e.startYear+9))])]),n("td"),n("td")])])])},jo=[];Ro._withStripped=!0;var Fo=function(e){var t=Object(ao["getDayCountOfYear"])(e),n=new Date(e,0,1);return Object(ao["range"])(t).map(function(e){return Object(ao["nextDate"])(n,e)})},Bo={props:{disabledDate:{},value:{},defaultValue:{validator:function(e){return null===e||e instanceof Date&&Object(ao["isDate"])(e)}},date:{}},computed:{startYear:function(){return 10*Math.floor(this.date.getFullYear()/10)}},methods:{getCellStyle:function(e){var t={},n=new Date;return t.disabled="function"===typeof this.disabledDate&&Fo(e).every(this.disabledDate),t.current=Object(b["arrayFindIndex"])(Object(b["coerceTruthyValueToArray"])(this.value),function(t){return t.getFullYear()===e})>=0,t.today=n.getFullYear()===e,t.default=this.defaultValue&&this.defaultValue.getFullYear()===e,t},handleYearTableClick:function(e){var t=e.target;if("A"===t.tagName){if(Object(Pe["hasClass"])(t.parentNode,"disabled"))return;var n=t.textContent||t.innerText;this.$emit("pick",Number(n))}}}},Wo=Bo,Uo=s(Wo,Ro,jo,!1,null,null,null);Uo.options.__file="packages/date-picker/src/basic/year-table.vue";var Ko=Uo.exports,qo=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("table",{staticClass:"el-month-table",on:{click:e.handleMonthTableClick,mousemove:e.handleMouseMove}},[n("tbody",e._l(e.rows,function(t,i){return n("tr",{key:i},e._l(t,function(t,i){return n("td",{key:i,class:e.getCellStyle(t)},[n("div",[n("a",{staticClass:"cell"},[e._v(e._s(e.t("el.datepicker.months."+e.months[t.text])))])])])}),0)}),0)])},Go=[];qo._withStripped=!0;var Yo=function(e,t){var n=Object(ao["getDayCountOfMonth"])(e,t),i=new Date(e,t,1);return Object(ao["range"])(n).map(function(e){return Object(ao["nextDate"])(i,e)})},Xo=function(e){return new Date(e.getFullYear(),e.getMonth())},Qo=function(e){return"number"===typeof e||"string"===typeof e?Xo(new Date(e)).getTime():e instanceof Date?Xo(e).getTime():NaN},Jo={props:{disabledDate:{},value:{},selectionMode:{default:"month"},minDate:{},maxDate:{},defaultValue:{validator:function(e){return null===e||Object(ao["isDate"])(e)||Array.isArray(e)&&e.every(ao["isDate"])}},date:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},mixins:[g.a],watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){Qo(e)!==Qo(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){Qo(e)!==Qo(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{months:["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],tableRows:[[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var n=new Date(t);return this.date.getFullYear()===n.getFullYear()&&Number(e.text)===n.getMonth()},getCellStyle:function(e){var t=this,n={},i=this.date.getFullYear(),r=new Date,o=e.text,a=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[];return n.disabled="function"===typeof this.disabledDate&&Yo(i,o).every(this.disabledDate),n.current=Object(b["arrayFindIndex"])(Object(b["coerceTruthyValueToArray"])(this.value),function(e){return e.getFullYear()===i&&e.getMonth()===o})>=0,n.today=r.getFullYear()===i&&r.getMonth()===o,n.default=a.some(function(n){return t.cellMatchesDate(e,n)}),e.inRange&&(n["in-range"]=!0,e.start&&(n["start-date"]=!0),e.end&&(n["end-date"]=!0)),n},getMonthOfCell:function(e){var t=this.date.getFullYear();return new Date(t,e,1)},markRange:function(e,t){e=Qo(e),t=Qo(t)||e;var n=[Math.min(e,t),Math.max(e,t)];e=n[0],t=n[1];for(var i=this.rows,r=0,o=i.length;r=e&&h<=t,l.start=e&&h===e,l.end=t&&h===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var n=t.parentNode.rowIndex,i=t.cellIndex;this.rows[n][i].disabled||n===this.lastRow&&i===this.lastColumn||(this.lastRow=n,this.lastColumn=i,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getMonthOfCell(4*n+i)}}))}}},handleMonthTableClick:function(e){var t=e.target;if("A"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName&&!Object(Pe["hasClass"])(t,"disabled")){var n=t.cellIndex,i=t.parentNode.rowIndex,r=4*i+n,o=this.getMonthOfCell(r);"range"===this.selectionMode?this.rangeState.selecting?(o>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:o}):this.$emit("pick",{minDate:o,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:o,maxDate:null}),this.rangeState.selecting=!0):this.$emit("pick",r)}}},computed:{rows:function(){for(var e=this,t=this.tableRows,n=this.disabledDate,i=[],r=Qo(new Date),o=0;o<3;o++)for(var a=t[o],s=function(t){var s=a[t];s||(s={row:o,column:t,type:"normal",inRange:!1,start:!1,end:!1}),s.type="normal";var c=4*o+t,l=new Date(e.date.getFullYear(),c).getTime();s.inRange=l>=Qo(e.minDate)&&l<=Qo(e.maxDate),s.start=e.minDate&&l===Qo(e.minDate),s.end=e.maxDate&&l===Qo(e.maxDate);var u=l===r;u&&(s.type="today"),s.text=c;var h=new Date(l);s.disabled="function"===typeof n&&n(h),s.selected=Object(b["arrayFind"])(i,function(e){return e.getTime()===h.getTime()}),e.$set(a,t,s)},c=0;c<4;c++)s(c);return t}}},Zo=Jo,ea=s(Zo,qo,Go,!1,null,null,null);ea.options.__file="packages/date-picker/src/basic/month-table.vue";var ta=ea.exports,na=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("table",{staticClass:"el-date-table",class:{"is-week-mode":"week"===e.selectionMode},attrs:{cellspacing:"0",cellpadding:"0"},on:{click:e.handleClick,mousemove:e.handleMouseMove}},[n("tbody",[n("tr",[e.showWeekNumber?n("th",[e._v(e._s(e.t("el.datepicker.week")))]):e._e(),e._l(e.WEEKS,function(t,i){return n("th",{key:i},[e._v(e._s(e.t("el.datepicker.weeks."+t)))])})],2),e._l(e.rows,function(t,i){return n("tr",{key:i,staticClass:"el-date-table__row",class:{current:e.isWeekActive(t[1])}},e._l(t,function(t,i){return n("td",{key:i,class:e.getCellClasses(t)},[n("div",[n("span",[e._v("\n "+e._s(t.text)+"\n ")])])])}),0)})],2)])},ia=[];na._withStripped=!0;var ra=["sun","mon","tue","wed","thu","fri","sat"],oa=function(e){return"number"===typeof e||"string"===typeof e?Object(ao["clearTime"])(new Date(e)).getTime():e instanceof Date?Object(ao["clearTime"])(e).getTime():NaN},aa=function(e,t){var n="function"===typeof t?Object(b["arrayFindIndex"])(e,t):e.indexOf(t);return n>=0?[].concat(e.slice(0,n),e.slice(n+1)):e},sa={mixins:[g.a],props:{firstDayOfWeek:{default:7,type:Number,validator:function(e){return e>=1&&e<=7}},value:{},defaultValue:{validator:function(e){return null===e||Object(ao["isDate"])(e)||Array.isArray(e)&&e.every(ao["isDate"])}},date:{},selectionMode:{default:"day"},showWeekNumber:{type:Boolean,default:!1},disabledDate:{},minDate:{},maxDate:{},rangeState:{default:function(){return{endDate:null,selecting:!1}}}},computed:{offsetDay:function(){var e=this.firstDayOfWeek;return e>3?7-e:-e},WEEKS:function(){var e=this.firstDayOfWeek;return ra.concat(ra).slice(e,e+7)},year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},startDate:function(){return Object(ao["getStartDateOfMonth"])(this.year,this.month)},rows:function(){var e=this,t=new Date(this.year,this.month,1),n=Object(ao["getFirstDayOfMonth"])(t),i=Object(ao["getDayCountOfMonth"])(t.getFullYear(),t.getMonth()),r=Object(ao["getDayCountOfMonth"])(t.getFullYear(),0===t.getMonth()?11:t.getMonth()-1);n=0===n?7:n;for(var o=this.offsetDay,a=this.tableRows,s=1,c=this.startDate,l=this.disabledDate,u="dates"===this.selectionMode?Object(b["coerceTruthyValueToArray"])(this.value):[],h=oa(new Date),d=0;d<6;d++){var f=a[d];this.showWeekNumber&&(f[0]||(f[0]={type:"week",text:Object(ao["getWeekNumber"])(Object(ao["nextDate"])(c,7*d+1))}));for(var p=function(t){var a=f[e.showWeekNumber?t+1:t];a||(a={row:d,column:t,type:"normal",inRange:!1,start:!1,end:!1}),a.type="normal";var p=7*d+t,v=Object(ao["nextDate"])(c,p-o).getTime();a.inRange=v>=oa(e.minDate)&&v<=oa(e.maxDate),a.start=e.minDate&&v===oa(e.minDate),a.end=e.maxDate&&v===oa(e.maxDate);var m=v===h;if(m&&(a.type="today"),d>=0&&d<=1){var g=n+o<0?7+n+o:n+o;t+7*d>=g?a.text=s++:(a.text=r-(g-t%7)+1+7*d,a.type="prev-month")}else s<=i?a.text=s++:(a.text=s++-i,a.type="next-month");var y=new Date(v);a.disabled="function"===typeof l&&l(y),a.selected=Object(b["arrayFind"])(u,function(e){return e.getTime()===y.getTime()}),e.$set(f,e.showWeekNumber?t+1:t,a)},v=0;v<7;v++)p(v);if("week"===this.selectionMode){var m=this.showWeekNumber?1:0,g=this.showWeekNumber?7:6,y=this.isWeekActive(f[m+1]);f[m].inRange=y,f[m].start=y,f[g].inRange=y,f[g].end=y}}return a}},watch:{"rangeState.endDate":function(e){this.markRange(this.minDate,e)},minDate:function(e,t){oa(e)!==oa(t)&&this.markRange(this.minDate,this.maxDate)},maxDate:function(e,t){oa(e)!==oa(t)&&this.markRange(this.minDate,this.maxDate)}},data:function(){return{tableRows:[[],[],[],[],[],[]],lastRow:null,lastColumn:null}},methods:{cellMatchesDate:function(e,t){var n=new Date(t);return this.year===n.getFullYear()&&this.month===n.getMonth()&&Number(e.text)===n.getDate()},getCellClasses:function(e){var t=this,n=this.selectionMode,i=this.defaultValue?Array.isArray(this.defaultValue)?this.defaultValue:[this.defaultValue]:[],r=[];return"normal"!==e.type&&"today"!==e.type||e.disabled?r.push(e.type):(r.push("available"),"today"===e.type&&r.push("today")),"normal"===e.type&&i.some(function(n){return t.cellMatchesDate(e,n)})&&r.push("default"),"day"!==n||"normal"!==e.type&&"today"!==e.type||!this.cellMatchesDate(e,this.value)||r.push("current"),!e.inRange||"normal"!==e.type&&"today"!==e.type&&"week"!==this.selectionMode||(r.push("in-range"),e.start&&r.push("start-date"),e.end&&r.push("end-date")),e.disabled&&r.push("disabled"),e.selected&&r.push("selected"),r.join(" ")},getDateOfCell:function(e,t){var n=7*e+(t-(this.showWeekNumber?1:0))-this.offsetDay;return Object(ao["nextDate"])(this.startDate,n)},isWeekActive:function(e){if("week"!==this.selectionMode)return!1;var t=new Date(this.year,this.month,1),n=t.getFullYear(),i=t.getMonth();if("prev-month"===e.type&&(t.setMonth(0===i?11:i-1),t.setFullYear(0===i?n-1:n)),"next-month"===e.type&&(t.setMonth(11===i?0:i+1),t.setFullYear(11===i?n+1:n)),t.setDate(parseInt(e.text,10)),Object(ao["isDate"])(this.value)){var r=(this.value.getDay()-this.firstDayOfWeek+7)%7-1,o=Object(ao["prevDate"])(this.value,r);return o.getTime()===t.getTime()}return!1},markRange:function(e,t){e=oa(e),t=oa(t)||e;var n=[Math.min(e,t),Math.max(e,t)];e=n[0],t=n[1];for(var i=this.startDate,r=this.rows,o=0,a=r.length;o=e&&d<=t,u.start=e&&d===e,u.end=t&&d===t}},handleMouseMove:function(e){if(this.rangeState.selecting){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var n=t.parentNode.rowIndex-1,i=t.cellIndex;this.rows[n][i].disabled||n===this.lastRow&&i===this.lastColumn||(this.lastRow=n,this.lastColumn=i,this.$emit("changerange",{minDate:this.minDate,maxDate:this.maxDate,rangeState:{selecting:!0,endDate:this.getDateOfCell(n,i)}}))}}},handleClick:function(e){var t=e.target;if("SPAN"===t.tagName&&(t=t.parentNode.parentNode),"DIV"===t.tagName&&(t=t.parentNode),"TD"===t.tagName){var n=t.parentNode.rowIndex-1,i="week"===this.selectionMode?1:t.cellIndex,r=this.rows[n][i];if(!r.disabled&&"week"!==r.type){var o=this.getDateOfCell(n,i);if("range"===this.selectionMode)this.rangeState.selecting?(o>=this.minDate?this.$emit("pick",{minDate:this.minDate,maxDate:o}):this.$emit("pick",{minDate:o,maxDate:this.minDate}),this.rangeState.selecting=!1):(this.$emit("pick",{minDate:o,maxDate:null}),this.rangeState.selecting=!0);else if("day"===this.selectionMode)this.$emit("pick",o);else if("week"===this.selectionMode){var a=Object(ao["getWeekNumber"])(o),s=o.getFullYear()+"w"+a;this.$emit("pick",{year:o.getFullYear(),week:a,value:s,date:o})}else if("dates"===this.selectionMode){var c=this.value||[],l=r.selected?aa(c,function(e){return e.getTime()===o.getTime()}):[].concat(c,[o]);this.$emit("pick",l)}}}}}},ca=sa,la=s(ca,na,ia,!1,null,null,null);la.options.__file="packages/date-picker/src/basic/date-table.vue";var ua=la.exports,ha={mixins:[g.a],directives:{Clickoutside:$.a},watch:{showTime:function(e){var t=this;e&&this.$nextTick(function(e){var n=t.$refs.input.$el;n&&(t.pickerWidth=n.getBoundingClientRect().width+10)})},value:function(e){"dates"===this.selectionMode&&this.value||(Object(ao["isDate"])(e)?this.date=new Date(e):this.date=this.getDefaultValue())},defaultValue:function(e){Object(ao["isDate"])(this.value)||(this.date=e?new Date(e):new Date)},timePickerVisible:function(e){var t=this;e&&this.$nextTick(function(){return t.$refs.timepicker.adjustSpinners()})},selectionMode:function(e){"month"===e?"year"===this.currentView&&"month"===this.currentView||(this.currentView="month"):"dates"===e&&(this.currentView="date")}},methods:{proxyTimePickerDataProperties:function(){var e=this,t=function(t){e.$refs.timepicker.format=t},n=function(t){e.$refs.timepicker.value=t},i=function(t){e.$refs.timepicker.date=t},r=function(t){e.$refs.timepicker.selectableRange=t};this.$watch("value",n),this.$watch("date",i),this.$watch("selectableRange",r),t(this.timeFormat),n(this.value),i(this.date),r(this.selectableRange)},handleClear:function(){this.date=this.getDefaultValue(),this.$emit("pick",null)},emit:function(e){for(var t=this,n=arguments.length,i=Array(n>1?n-1:0),r=1;r0)||Object(ao["timeWithinRange"])(e,this.selectableRange,this.format||"HH:mm:ss")}},components:{TimePicker:$o,YearTable:Ko,MonthTable:ta,DateTable:ua,ElInput:v.a,ElButton:ae.a},data:function(){return{popperClass:"",date:new Date,value:"",defaultValue:null,defaultTime:null,showTime:!1,selectionMode:"day",shortcuts:"",visible:!1,currentView:"date",disabledDate:"",selectableRange:[],firstDayOfWeek:7,showWeekNumber:!1,timePickerVisible:!1,format:"",arrowControl:!1,userInputDate:null,userInputTime:null}},computed:{year:function(){return this.date.getFullYear()},month:function(){return this.date.getMonth()},week:function(){return Object(ao["getWeekNumber"])(this.date)},monthDate:function(){return this.date.getDate()},footerVisible:function(){return this.showTime||"dates"===this.selectionMode},visibleTime:function(){return null!==this.userInputTime?this.userInputTime:Object(ao["formatDate"])(this.value||this.defaultValue,this.timeFormat)},visibleDate:function(){return null!==this.userInputDate?this.userInputDate:Object(ao["formatDate"])(this.value||this.defaultValue,this.dateFormat)},yearLabel:function(){var e=this.t("el.datepicker.year");if("year"===this.currentView){var t=10*Math.floor(this.year/10);return e?t+" "+e+" - "+(t+9)+" "+e:t+" - "+(t+9)}return this.year+" "+e},timeFormat:function(){return this.format?Object(ao["extractTimeFormat"])(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(ao["extractDateFormat"])(this.format):"yyyy-MM-dd"}}},da=ha,fa=s(da,Oo,Mo,!1,null,null,null);fa.options.__file="packages/date-picker/src/panel/date.vue";var pa=fa.exports,va=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts,"has-time":e.showTime},e.popperClass]},[n("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?n("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,i){return n("button",{key:i,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n("div",{staticClass:"el-picker-panel__body"},[e.showTime?n("div",{staticClass:"el-date-range-picker__time-header"},[n("span",{staticClass:"el-date-range-picker__editors-wrap"},[n("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[n("el-input",{ref:"minInput",staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startDate"),value:e.minVisibleDate},on:{input:function(t){return e.handleDateInput(t,"min")},change:function(t){return e.handleDateChange(t,"min")}}})],1),n("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMinTimeClose,expression:"handleMinTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[n("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.startTime"),value:e.minVisibleTime},on:{focus:function(t){e.minTimePickerVisible=!0},input:function(t){return e.handleTimeInput(t,"min")},change:function(t){return e.handleTimeChange(t,"min")}}}),n("time-picker",{ref:"minTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.minTimePickerVisible},on:{pick:e.handleMinTimePick,mounted:function(t){e.$refs.minTimePicker.format=e.timeFormat}}})],1)]),n("span",{staticClass:"el-icon-arrow-right"}),n("span",{staticClass:"el-date-range-picker__editors-wrap is-right"},[n("span",{staticClass:"el-date-range-picker__time-picker-wrap"},[n("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endDate"),value:e.maxVisibleDate,readonly:!e.minDate},on:{input:function(t){return e.handleDateInput(t,"max")},change:function(t){return e.handleDateChange(t,"max")}}})],1),n("span",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.handleMaxTimeClose,expression:"handleMaxTimeClose"}],staticClass:"el-date-range-picker__time-picker-wrap"},[n("el-input",{staticClass:"el-date-range-picker__editor",attrs:{size:"small",disabled:e.rangeState.selecting,placeholder:e.t("el.datepicker.endTime"),value:e.maxVisibleTime,readonly:!e.minDate},on:{focus:function(t){e.minDate&&(e.maxTimePickerVisible=!0)},input:function(t){return e.handleTimeInput(t,"max")},change:function(t){return e.handleTimeChange(t,"max")}}}),n("time-picker",{ref:"maxTimePicker",attrs:{"time-arrow-control":e.arrowControl,visible:e.maxTimePickerVisible},on:{pick:e.handleMaxTimePick,mounted:function(t){e.$refs.maxTimePicker.format=e.timeFormat}}})],1)])]):e._e(),n("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[n("div",{staticClass:"el-date-range-picker__header"},[n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),n("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevMonth}}),e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.leftNextMonth}}):e._e(),n("div",[e._v(e._s(e.leftLabel))])]),n("date-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),n("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[n("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-left",class:{"is-disabled":!e.enableMonthArrow},attrs:{type:"button",disabled:!e.enableMonthArrow},on:{click:e.rightPrevMonth}}):e._e(),n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),n("button",{staticClass:"el-picker-panel__icon-btn el-icon-arrow-right",attrs:{type:"button"},on:{click:e.rightNextMonth}}),n("div",[e._v(e._s(e.rightLabel))])]),n("date-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate,"first-day-of-week":e.firstDayOfWeek},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2),e.showTime?n("div",{staticClass:"el-picker-panel__footer"},[n("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{size:"mini",type:"text"},on:{click:e.handleClear}},[e._v("\n "+e._s(e.t("el.datepicker.clear"))+"\n ")]),n("el-button",{staticClass:"el-picker-panel__link-btn",attrs:{plain:"",size:"mini",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm(!1)}}},[e._v("\n "+e._s(e.t("el.datepicker.confirm"))+"\n ")])],1):e._e()])])},ma=[];va._withStripped=!0;var ga=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(ao["nextDate"])(new Date(e),1)]:[new Date,Object(ao["nextDate"])(new Date,1)]},ba={mixins:[g.a],directives:{Clickoutside:$.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.leftDate.getMonth()+1))},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")+" "+this.t("el.datepicker.month"+(this.rightDate.getMonth()+1))},leftYear:function(){return this.leftDate.getFullYear()},leftMonth:function(){return this.leftDate.getMonth()},leftMonthDate:function(){return this.leftDate.getDate()},rightYear:function(){return this.rightDate.getFullYear()},rightMonth:function(){return this.rightDate.getMonth()},rightMonthDate:function(){return this.rightDate.getDate()},minVisibleDate:function(){return null!==this.dateUserInput.min?this.dateUserInput.min:this.minDate?Object(ao["formatDate"])(this.minDate,this.dateFormat):""},maxVisibleDate:function(){return null!==this.dateUserInput.max?this.dateUserInput.max:this.maxDate||this.minDate?Object(ao["formatDate"])(this.maxDate||this.minDate,this.dateFormat):""},minVisibleTime:function(){return null!==this.timeUserInput.min?this.timeUserInput.min:this.minDate?Object(ao["formatDate"])(this.minDate,this.timeFormat):""},maxVisibleTime:function(){return null!==this.timeUserInput.max?this.timeUserInput.max:this.maxDate||this.minDate?Object(ao["formatDate"])(this.maxDate||this.minDate,this.timeFormat):""},timeFormat:function(){return this.format?Object(ao["extractTimeFormat"])(this.format):"HH:mm:ss"},dateFormat:function(){return this.format?Object(ao["extractDateFormat"])(this.format):"yyyy-MM-dd"},enableMonthArrow:function(){var e=(this.leftMonth+1)%12,t=this.leftMonth+1>=12?1:0;return this.unlinkPanels&&new Date(this.leftYear+t,e)=12}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(ao["nextMonth"])(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},showTime:!1,shortcuts:"",visible:"",disabledDate:"",firstDayOfWeek:7,minTimePickerVisible:!1,maxTimePickerVisible:!1,format:"",arrowControl:!1,unlinkPanels:!1,dateUserInput:{min:null,max:null},timeUserInput:{min:null,max:null}}},watch:{minDate:function(e){var t=this;this.dateUserInput.min=null,this.timeUserInput.min=null,this.$nextTick(function(){if(t.$refs.maxTimePicker&&t.maxDate&&t.maxDatethis.maxDate&&(this.maxDate=this.minDate)):(this.maxDate=Object(ao["modifyDate"])(this.maxDate,n.getFullYear(),n.getMonth(),n.getDate()),this.maxDatethis.maxDate&&(this.maxDate=this.minDate),this.$refs.minTimePicker.value=this.minDate,this.minTimePickerVisible=!1):(this.maxDate=Object(ao["modifyTime"])(this.maxDate,n.getHours(),n.getMinutes(),n.getSeconds()),this.maxDate1&&void 0!==arguments[1])||arguments[1],i=this.defaultTime||[],r=Object(ao["modifyWithTimeString"])(e.minDate,i[0]),o=Object(ao["modifyWithTimeString"])(e.maxDate,i[1]);this.maxDate===o&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=o,this.minDate=r,setTimeout(function(){t.maxDate=o,t.minDate=r},10),n&&!this.showTime&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},handleMinTimePick:function(e,t,n){this.minDate=this.minDate||new Date,e&&(this.minDate=Object(ao["modifyTime"])(this.minDate,e.getHours(),e.getMinutes(),e.getSeconds())),n||(this.minTimePickerVisible=t),(!this.maxDate||this.maxDate&&this.maxDate.getTime()this.maxDate.getTime()&&(this.minDate=new Date(this.maxDate))},handleMaxTimeClose:function(){this.maxTimePickerVisible=!1},leftPrevYear:function(){this.leftDate=Object(ao["prevYear"])(this.leftDate),this.unlinkPanels||(this.rightDate=Object(ao["nextMonth"])(this.leftDate))},leftPrevMonth:function(){this.leftDate=Object(ao["prevMonth"])(this.leftDate),this.unlinkPanels||(this.rightDate=Object(ao["nextMonth"])(this.leftDate))},rightNextYear:function(){this.unlinkPanels?this.rightDate=Object(ao["nextYear"])(this.rightDate):(this.leftDate=Object(ao["nextYear"])(this.leftDate),this.rightDate=Object(ao["nextMonth"])(this.leftDate))},rightNextMonth:function(){this.unlinkPanels?this.rightDate=Object(ao["nextMonth"])(this.rightDate):(this.leftDate=Object(ao["nextMonth"])(this.leftDate),this.rightDate=Object(ao["nextMonth"])(this.leftDate))},leftNextYear:function(){this.leftDate=Object(ao["nextYear"])(this.leftDate)},leftNextMonth:function(){this.leftDate=Object(ao["nextMonth"])(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(ao["prevYear"])(this.rightDate)},rightPrevMonth:function(){this.rightDate=Object(ao["prevMonth"])(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(ao["isDate"])(e[0])&&Object(ao["isDate"])(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!==typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(ao["isDate"])(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(ao["isDate"])(this.value[0])?new Date(this.value[1]):null}},components:{TimePicker:$o,DateTable:ua,ElInput:v.a,ElButton:ae.a}},ya=ba,_a=s(ya,va,ma,!1,null,null,null);_a.options.__file="packages/date-picker/src/panel/date-range.vue";var Ca=_a.exports,wa=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-picker-panel el-date-range-picker el-popper",class:[{"has-sidebar":e.$slots.sidebar||e.shortcuts},e.popperClass]},[n("div",{staticClass:"el-picker-panel__body-wrapper"},[e._t("sidebar"),e.shortcuts?n("div",{staticClass:"el-picker-panel__sidebar"},e._l(e.shortcuts,function(t,i){return n("button",{key:i,staticClass:"el-picker-panel__shortcut",attrs:{type:"button"},on:{click:function(n){e.handleShortcutClick(t)}}},[e._v(e._s(t.text))])}),0):e._e(),n("div",{staticClass:"el-picker-panel__body"},[n("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-left"},[n("div",{staticClass:"el-date-range-picker__header"},[n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",attrs:{type:"button"},on:{click:e.leftPrevYear}}),e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.leftNextYear}}):e._e(),n("div",[e._v(e._s(e.leftLabel))])]),n("month-table",{attrs:{"selection-mode":"range",date:e.leftDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1),n("div",{staticClass:"el-picker-panel__content el-date-range-picker__content is-right"},[n("div",{staticClass:"el-date-range-picker__header"},[e.unlinkPanels?n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-left",class:{"is-disabled":!e.enableYearArrow},attrs:{type:"button",disabled:!e.enableYearArrow},on:{click:e.rightPrevYear}}):e._e(),n("button",{staticClass:"el-picker-panel__icon-btn el-icon-d-arrow-right",attrs:{type:"button"},on:{click:e.rightNextYear}}),n("div",[e._v(e._s(e.rightLabel))])]),n("month-table",{attrs:{"selection-mode":"range",date:e.rightDate,"default-value":e.defaultValue,"min-date":e.minDate,"max-date":e.maxDate,"range-state":e.rangeState,"disabled-date":e.disabledDate},on:{changerange:e.handleChangeRange,pick:e.handleRangePick}})],1)])],2)])])},xa=[];wa._withStripped=!0;var Sa=function(e){return Array.isArray(e)?[new Date(e[0]),new Date(e[1])]:e?[new Date(e),Object(ao["nextMonth"])(new Date(e))]:[new Date,Object(ao["nextMonth"])(new Date)]},Ea={mixins:[g.a],directives:{Clickoutside:$.a},computed:{btnDisabled:function(){return!(this.minDate&&this.maxDate&&!this.selecting&&this.isValidValue([this.minDate,this.maxDate]))},leftLabel:function(){return this.leftDate.getFullYear()+" "+this.t("el.datepicker.year")},rightLabel:function(){return this.rightDate.getFullYear()+" "+this.t("el.datepicker.year")},leftYear:function(){return this.leftDate.getFullYear()},rightYear:function(){return this.rightDate.getFullYear()===this.leftDate.getFullYear()?this.leftDate.getFullYear()+1:this.rightDate.getFullYear()},enableYearArrow:function(){return this.unlinkPanels&&this.rightYear>this.leftYear+1}},data:function(){return{popperClass:"",value:[],defaultValue:null,defaultTime:null,minDate:"",maxDate:"",leftDate:new Date,rightDate:Object(ao["nextYear"])(new Date),rangeState:{endDate:null,selecting:!1,row:null,column:null},shortcuts:"",visible:"",disabledDate:"",format:"",arrowControl:!1,unlinkPanels:!1}},watch:{value:function(e){if(e){if(Array.isArray(e))if(this.minDate=Object(ao["isDate"])(e[0])?new Date(e[0]):null,this.maxDate=Object(ao["isDate"])(e[1])?new Date(e[1]):null,this.minDate)if(this.leftDate=this.minDate,this.unlinkPanels&&this.maxDate){var t=this.minDate.getFullYear(),n=this.maxDate.getFullYear();this.rightDate=t===n?Object(ao["nextYear"])(this.maxDate):this.maxDate}else this.rightDate=Object(ao["nextYear"])(this.leftDate);else this.leftDate=Sa(this.defaultValue)[0],this.rightDate=Object(ao["nextYear"])(this.leftDate)}else this.minDate=null,this.maxDate=null},defaultValue:function(e){if(!Array.isArray(this.value)){var t=Sa(e),n=t[0],i=t[1];this.leftDate=n,this.rightDate=e&&e[1]&&n.getFullYear()!==i.getFullYear()&&this.unlinkPanels?i:Object(ao["nextYear"])(this.leftDate)}}},methods:{handleClear:function(){this.minDate=null,this.maxDate=null,this.leftDate=Sa(this.defaultValue)[0],this.rightDate=Object(ao["nextYear"])(this.leftDate),this.$emit("pick",null)},handleChangeRange:function(e){this.minDate=e.minDate,this.maxDate=e.maxDate,this.rangeState=e.rangeState},handleRangePick:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this.defaultTime||[],r=Object(ao["modifyWithTimeString"])(e.minDate,i[0]),o=Object(ao["modifyWithTimeString"])(e.maxDate,i[1]);this.maxDate===o&&this.minDate===r||(this.onPick&&this.onPick(e),this.maxDate=o,this.minDate=r,setTimeout(function(){t.maxDate=o,t.minDate=r},10),n&&this.handleConfirm())},handleShortcutClick:function(e){e.onClick&&e.onClick(this)},leftPrevYear:function(){this.leftDate=Object(ao["prevYear"])(this.leftDate),this.unlinkPanels||(this.rightDate=Object(ao["prevYear"])(this.rightDate))},rightNextYear:function(){this.unlinkPanels||(this.leftDate=Object(ao["nextYear"])(this.leftDate)),this.rightDate=Object(ao["nextYear"])(this.rightDate)},leftNextYear:function(){this.leftDate=Object(ao["nextYear"])(this.leftDate)},rightPrevYear:function(){this.rightDate=Object(ao["prevYear"])(this.rightDate)},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.isValidValue([this.minDate,this.maxDate])&&this.$emit("pick",[this.minDate,this.maxDate],e)},isValidValue:function(e){return Array.isArray(e)&&e&&e[0]&&e[1]&&Object(ao["isDate"])(e[0])&&Object(ao["isDate"])(e[1])&&e[0].getTime()<=e[1].getTime()&&("function"!==typeof this.disabledDate||!this.disabledDate(e[0])&&!this.disabledDate(e[1]))},resetView:function(){this.minDate=this.value&&Object(ao["isDate"])(this.value[0])?new Date(this.value[0]):null,this.maxDate=this.value&&Object(ao["isDate"])(this.value[0])?new Date(this.value[1]):null}},components:{MonthTable:ta,ElInput:v.a,ElButton:ae.a}},Oa=Ea,Ma=s(Oa,wa,xa,!1,null,null,null);Ma.options.__file="packages/date-picker/src/panel/month-range.vue";var za=Ma.exports,ka=function(e){return"daterange"===e||"datetimerange"===e?Ca:"monthrange"===e?za:pa},Ta={mixins:[Eo],name:"ElDatePicker",props:{type:{type:String,default:"date"},timeArrowControl:Boolean},watch:{type:function(e){this.picker?(this.unmountPicker(),this.panel=ka(e),this.mountPicker()):this.panel=ka(e)}},created:function(){this.panel=ka(this.type)},install:function(e){e.component(Ta.name,Ta)}},La=Ta,Aa=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"before-enter":e.handleMenuEnter,"after-leave":function(t){e.$emit("dodestroy")}}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],ref:"popper",staticClass:"el-picker-panel time-select el-popper",class:e.popperClass,style:{width:e.width+"px"}},[n("el-scrollbar",{attrs:{noresize:"","wrap-class":"el-picker-panel__content"}},e._l(e.items,function(t){return n("div",{key:t.value,staticClass:"time-select-item",class:{selected:e.value===t.value,disabled:t.disabled,default:t.value===e.defaultValue},attrs:{disabled:t.disabled},on:{click:function(n){e.handleClick(t)}}},[e._v(e._s(t.value))])}),0)],1)])},Ha=[];Aa._withStripped=!0;var Va=function(e){var t=(e||"").split(":");if(t.length>=2){var n=parseInt(t[0],10),i=parseInt(t[1],10);return{hours:n,minutes:i}}return null},Na=function(e,t){var n=Va(e),i=Va(t),r=n.minutes+60*n.hours,o=i.minutes+60*i.hours;return r===o?0:r>o?1:-1},Ia=function(e){return(e.hours<10?"0"+e.hours:e.hours)+":"+(e.minutes<10?"0"+e.minutes:e.minutes)},Da=function(e,t){var n=Va(e),i=Va(t),r={hours:n.hours,minutes:n.minutes};return r.minutes+=i.minutes,r.hours+=i.hours,r.hours+=Math.floor(r.minutes/60),r.minutes=r.minutes%60,Ia(r)},Pa={components:{ElScrollbar:U.a},watch:{value:function(e){var t=this;e&&this.$nextTick(function(){return t.scrollToOption()})}},methods:{handleClick:function(e){e.disabled||this.$emit("pick",e.value)},handleClear:function(){this.$emit("pick",null)},scrollToOption:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:".selected",t=this.$refs.popper.querySelector(".el-picker-panel__content");ii()(t,t.querySelector(e))},handleMenuEnter:function(){var e=this,t=-1!==this.items.map(function(e){return e.value}).indexOf(this.value),n=-1!==this.items.map(function(e){return e.value}).indexOf(this.defaultValue),i=(t?".selected":n&&".default")||".time-select-item:not(.disabled)";this.$nextTick(function(){return e.scrollToOption(i)})},scrollDown:function(e){var t=this.items,n=t.length,i=t.length,r=t.map(function(e){return e.value}).indexOf(this.value);while(i--)if(r=(r+e+n)%n,!t[r].disabled)return void this.$emit("pick",t[r].value,!0)},isValidValue:function(e){return-1!==this.items.filter(function(e){return!e.disabled}).map(function(e){return e.value}).indexOf(e)},handleKeydown:function(e){var t=e.keyCode;if(38===t||40===t){var n={40:1,38:-1},i=n[t.toString()];return this.scrollDown(i),void e.stopPropagation()}}},data:function(){return{popperClass:"",start:"09:00",end:"18:00",step:"00:30",value:"",defaultValue:"",visible:!1,minTime:"",maxTime:"",width:0}},computed:{items:function(){var e=this.start,t=this.end,n=this.step,i=[];if(e&&t&&n){var r=e;while(Na(r,t)<=0)i.push({value:r,disabled:Na(r,this.minTime||"-1:-1")<=0||Na(r,this.maxTime||"100:100")>=0}),r=Da(r,n)}return i}}},$a=Pa,Ra=s($a,Aa,Ha,!1,null,null,null);Ra.options.__file="packages/date-picker/src/panel/time-select.vue";var ja=Ra.exports,Fa={mixins:[Eo],name:"ElTimeSelect",componentName:"ElTimeSelect",props:{type:{type:String,default:"time-select"}},beforeCreate:function(){this.panel=ja},install:function(e){e.component(Fa.name,Fa)}},Ba=Fa,Wa=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":function(t){e.$emit("dodestroy")}}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-time-range-picker el-picker-panel el-popper",class:e.popperClass},[n("div",{staticClass:"el-time-range-picker__content"},[n("div",{staticClass:"el-time-range-picker__cell"},[n("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.startTime")))]),n("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[n("time-spinner",{ref:"minSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.minDate},on:{change:e.handleMinChange,"select-range":e.setMinSelectionRange}})],1)]),n("div",{staticClass:"el-time-range-picker__cell"},[n("div",{staticClass:"el-time-range-picker__header"},[e._v(e._s(e.t("el.datepicker.endTime")))]),n("div",{staticClass:"el-time-range-picker__body el-time-panel__content",class:{"has-seconds":e.showSeconds,"is-arrow":e.arrowControl}},[n("time-spinner",{ref:"maxSpinner",attrs:{"show-seconds":e.showSeconds,"am-pm-mode":e.amPmMode,"arrow-control":e.arrowControl,date:e.maxDate},on:{change:e.handleMaxChange,"select-range":e.setMaxSelectionRange}})],1)])]),n("div",{staticClass:"el-time-panel__footer"},[n("button",{staticClass:"el-time-panel__btn cancel",attrs:{type:"button"},on:{click:function(t){e.handleCancel()}}},[e._v(e._s(e.t("el.datepicker.cancel")))]),n("button",{staticClass:"el-time-panel__btn confirm",attrs:{type:"button",disabled:e.btnDisabled},on:{click:function(t){e.handleConfirm()}}},[e._v(e._s(e.t("el.datepicker.confirm")))])])])])},Ua=[];Wa._withStripped=!0;var Ka=Object(ao["parseDate"])("00:00:00","HH:mm:ss"),qa=Object(ao["parseDate"])("23:59:59","HH:mm:ss"),Ga=function(e){return Object(ao["modifyDate"])(Ka,e.getFullYear(),e.getMonth(),e.getDate())},Ya=function(e){return Object(ao["modifyDate"])(qa,e.getFullYear(),e.getMonth(),e.getDate())},Xa=function(e,t){return new Date(Math.min(e.getTime()+t,Ya(e).getTime()))},Qa={mixins:[g.a],components:{TimeSpinner:No},computed:{showSeconds:function(){return-1!==(this.format||"").indexOf("ss")},offset:function(){return this.showSeconds?11:8},spinner:function(){return this.selectionRange[0]this.maxDate.getTime()},amPmMode:function(){return-1!==(this.format||"").indexOf("A")?"A":-1!==(this.format||"").indexOf("a")?"a":""}},data:function(){return{popperClass:"",minDate:new Date,maxDate:new Date,value:[],oldValue:[new Date,new Date],defaultValue:null,format:"HH:mm:ss",visible:!1,selectionRange:[0,2],arrowControl:!1}},watch:{value:function(e){Array.isArray(e)?(this.minDate=new Date(e[0]),this.maxDate=new Date(e[1])):Array.isArray(this.defaultValue)?(this.minDate=new Date(this.defaultValue[0]),this.maxDate=new Date(this.defaultValue[1])):this.defaultValue?(this.minDate=new Date(this.defaultValue),this.maxDate=Xa(new Date(this.defaultValue),36e5)):(this.minDate=new Date,this.maxDate=Xa(new Date,36e5))},visible:function(e){var t=this;e&&(this.oldValue=this.value,this.$nextTick(function(){return t.$refs.minSpinner.emitSelectRange("hours")}))}},methods:{handleClear:function(){this.$emit("pick",null)},handleCancel:function(){this.$emit("pick",this.oldValue)},handleMinChange:function(e){this.minDate=Object(ao["clearMilliseconds"])(e),this.handleChange()},handleMaxChange:function(e){this.maxDate=Object(ao["clearMilliseconds"])(e),this.handleChange()},handleChange:function(){this.isValidValue([this.minDate,this.maxDate])&&(this.$refs.minSpinner.selectableRange=[[Ga(this.minDate),this.maxDate]],this.$refs.maxSpinner.selectableRange=[[this.minDate,Ya(this.maxDate)]],this.$emit("pick",[this.minDate,this.maxDate],!0))},setMinSelectionRange:function(e,t){this.$emit("select-range",e,t,"min"),this.selectionRange=[e,t]},setMaxSelectionRange:function(e,t){this.$emit("select-range",e,t,"max"),this.selectionRange=[e+this.offset,t+this.offset]},handleConfirm:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$refs.minSpinner.selectableRange,n=this.$refs.maxSpinner.selectableRange;this.minDate=Object(ao["limitTimeRange"])(this.minDate,t,this.format),this.maxDate=Object(ao["limitTimeRange"])(this.maxDate,n,this.format),this.$emit("pick",[this.minDate,this.maxDate],e)},adjustSpinners:function(){this.$refs.minSpinner.adjustSpinners(),this.$refs.maxSpinner.adjustSpinners()},changeSelectionRange:function(e){var t=this.showSeconds?[0,3,6,11,14,17]:[0,3,8,11],n=["hours","minutes"].concat(this.showSeconds?["seconds"]:[]),i=t.indexOf(this.selectionRange[0]),r=(i+e+t.length)%t.length,o=t.length/2;r-1}},openDelay:{type:Number,default:0},title:String,disabled:Boolean,content:String,reference:{},popperClass:String,width:{},visibleArrow:{default:!0},arrowOffset:{type:Number,default:0},transition:{type:String,default:"fade-in-linear"},tabindex:{type:Number,default:0}},computed:{tooltipId:function(){return"el-popover-"+Object(b["generateId"])()}},watch:{showPopper:function(e){this.disabled||(e?this.$emit("show"):this.$emit("hide"))}},mounted:function(){var e=this,t=this.referenceElm=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),t&&(Object(Pe["addClass"])(t,"el-popover__reference"),t.setAttribute("aria-describedby",this.tooltipId),t.setAttribute("tabindex",this.tabindex),n.setAttribute("tabindex",0),"click"!==this.trigger&&(Object(Pe["on"])(t,"focusin",function(){e.handleFocus();var n=t.__vue__;n&&"function"===typeof n.focus&&n.focus()}),Object(Pe["on"])(n,"focusin",this.handleFocus),Object(Pe["on"])(t,"focusout",this.handleBlur),Object(Pe["on"])(n,"focusout",this.handleBlur)),Object(Pe["on"])(t,"keydown",this.handleKeydown),Object(Pe["on"])(t,"click",this.handleClick)),"click"===this.trigger?(Object(Pe["on"])(t,"click",this.doToggle),Object(Pe["on"])(document,"click",this.handleDocumentClick)):"hover"===this.trigger?(Object(Pe["on"])(t,"mouseenter",this.handleMouseEnter),Object(Pe["on"])(n,"mouseenter",this.handleMouseEnter),Object(Pe["on"])(t,"mouseleave",this.handleMouseLeave),Object(Pe["on"])(n,"mouseleave",this.handleMouseLeave)):"focus"===this.trigger&&(this.tabindex<0&&console.warn("[Element Warn][Popover]a negative taindex means that the element cannot be focused by tab key"),t.querySelector("input, textarea")?(Object(Pe["on"])(t,"focusin",this.doShow),Object(Pe["on"])(t,"focusout",this.doClose)):(Object(Pe["on"])(t,"mousedown",this.doShow),Object(Pe["on"])(t,"mouseup",this.doClose)))},beforeDestroy:function(){this.cleanup()},deactivated:function(){this.cleanup()},methods:{doToggle:function(){this.showPopper=!this.showPopper},doShow:function(){this.showPopper=!0},doClose:function(){this.showPopper=!1},handleFocus:function(){Object(Pe["addClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!0)},handleClick:function(){Object(Pe["removeClass"])(this.referenceElm,"focusing")},handleBlur:function(){Object(Pe["removeClass"])(this.referenceElm,"focusing"),"click"!==this.trigger&&"focus"!==this.trigger||(this.showPopper=!1)},handleMouseEnter:function(){var e=this;clearTimeout(this._timer),this.openDelay?this._timer=setTimeout(function(){e.showPopper=!0},this.openDelay):this.showPopper=!0},handleKeydown:function(e){27===e.keyCode&&"manual"!==this.trigger&&this.doClose()},handleMouseLeave:function(){var e=this;clearTimeout(this._timer),this._timer=setTimeout(function(){e.showPopper=!1},200)},handleDocumentClick:function(e){var t=this.reference||this.$refs.reference,n=this.popper||this.$refs.popper;!t&&this.$slots.reference&&this.$slots.reference[0]&&(t=this.referenceElm=this.$slots.reference[0].elm),this.$el&&t&&!this.$el.contains(e.target)&&!t.contains(e.target)&&n&&!n.contains(e.target)&&(this.showPopper=!1)},handleAfterEnter:function(){this.$emit("after-enter")},handleAfterLeave:function(){this.$emit("after-leave"),this.doDestroy()},cleanup:function(){this.openDelay&&clearTimeout(this._timer)}},destroyed:function(){var e=this.reference;Object(Pe["off"])(e,"click",this.doToggle),Object(Pe["off"])(e,"mouseup",this.doClose),Object(Pe["off"])(e,"mousedown",this.doShow),Object(Pe["off"])(e,"focusin",this.doShow),Object(Pe["off"])(e,"focusout",this.doClose),Object(Pe["off"])(e,"mousedown",this.doShow),Object(Pe["off"])(e,"mouseup",this.doClose),Object(Pe["off"])(e,"mouseleave",this.handleMouseLeave),Object(Pe["off"])(e,"mouseenter",this.handleMouseEnter),Object(Pe["off"])(document,"click",this.handleDocumentClick)}},as=os,ss=s(as,is,rs,!1,null,null,null);ss.options.__file="packages/popover/src/main.vue";var cs=ss.exports,ls=function(e,t,n){var i=t.expression?t.value:t.arg,r=n.context.$refs[i];r&&(Array.isArray(r)?r[0].$refs.reference=e:r.$refs.reference=e)},us={bind:function(e,t,n){ls(e,t,n)},inserted:function(e,t,n){ls(e,t,n)}};Wi.a.directive("popover",us),cs.install=function(e){e.directive("popover",us),e.component(cs.name,cs)},cs.directive=us;var hs=cs,ds={name:"ElTooltip",mixins:[B.a],props:{openDelay:{type:Number,default:0},disabled:Boolean,manual:Boolean,effect:{type:String,default:"dark"},arrowOffset:{type:Number,default:0},popperClass:String,content:String,visibleArrow:{default:!0},transition:{type:String,default:"el-fade-in-linear"},popperOptions:{default:function(){return{boundariesPadding:10,gpuAcceleration:!1}}},enterable:{type:Boolean,default:!0},hideAfter:{type:Number,default:0},tabindex:{type:Number,default:0}},data:function(){return{tooltipId:"el-tooltip-"+Object(b["generateId"])(),timeoutPending:null,focusing:!1}},beforeCreate:function(){var e=this;this.$isServer||(this.popperVM=new Wi.a({data:{node:""},render:function(e){return this.node}}).$mount(),this.debounceClose=D()(200,function(){return e.handleClosePopper()}))},render:function(e){var t=this;this.popperVM&&(this.popperVM.node=e("transition",{attrs:{name:this.transition},on:{afterLeave:this.doDestroy}},[e("div",{on:{mouseleave:function(){t.setExpectedState(!1),t.debounceClose()},mouseenter:function(){t.setExpectedState(!0)}},ref:"popper",attrs:{role:"tooltip",id:this.tooltipId,"aria-hidden":this.disabled||!this.showPopper?"true":"false"},directives:[{name:"show",value:!this.disabled&&this.showPopper}],class:["el-tooltip__popper","is-"+this.effect,this.popperClass]},[this.$slots.content||this.content])]));var n=this.getFirstElement();if(!n)return null;var i=n.data=n.data||{};return i.staticClass=this.addTooltipClass(i.staticClass),n},mounted:function(){var e=this;this.referenceElm=this.$el,1===this.$el.nodeType&&(this.$el.setAttribute("aria-describedby",this.tooltipId),this.$el.setAttribute("tabindex",this.tabindex),Object(Pe["on"])(this.referenceElm,"mouseenter",this.show),Object(Pe["on"])(this.referenceElm,"mouseleave",this.hide),Object(Pe["on"])(this.referenceElm,"focus",function(){if(e.$slots.default&&e.$slots.default.length){var t=e.$slots.default[0].componentInstance;t&&t.focus?t.focus():e.handleFocus()}else e.handleFocus()}),Object(Pe["on"])(this.referenceElm,"blur",this.handleBlur),Object(Pe["on"])(this.referenceElm,"click",this.removeFocusing)),this.value&&this.popperVM&&this.popperVM.$nextTick(function(){e.value&&e.updatePopper()})},watch:{focusing:function(e){e?Object(Pe["addClass"])(this.referenceElm,"focusing"):Object(Pe["removeClass"])(this.referenceElm,"focusing")}},methods:{show:function(){this.setExpectedState(!0),this.handleShowPopper()},hide:function(){this.setExpectedState(!1),this.debounceClose()},handleFocus:function(){this.focusing=!0,this.show()},handleBlur:function(){this.focusing=!1,this.hide()},removeFocusing:function(){this.focusing=!1},addTooltipClass:function(e){return e?"el-tooltip "+e.replace("el-tooltip",""):"el-tooltip"},handleShowPopper:function(){var e=this;this.expectedState&&!this.manual&&(clearTimeout(this.timeout),this.timeout=setTimeout(function(){e.showPopper=!0},this.openDelay),this.hideAfter>0&&(this.timeoutPending=setTimeout(function(){e.showPopper=!1},this.hideAfter)))},handleClosePopper:function(){this.enterable&&this.expectedState||this.manual||(clearTimeout(this.timeout),this.timeoutPending&&clearTimeout(this.timeoutPending),this.showPopper=!1,this.disabled&&this.doDestroy())},setExpectedState:function(e){!1===e&&clearTimeout(this.timeoutPending),this.expectedState=e},getFirstElement:function(){var e=this.$slots.default;if(!Array.isArray(e))return null;for(var t=null,n=0;n0){zs=Ts.shift();var t=zs.options;for(var n in t)t.hasOwnProperty(n)&&(ks[n]=t[n]);void 0===t.callback&&(ks.callback=Ls);var i=ks.callback;ks.callback=function(t,n){i(t,n),e()},Object(Ss["isVNode"])(ks.message)?(ks.$slots.default=[ks.message],ks.message=null):delete ks.$slots.default,["modal","showClose","closeOnClickModal","closeOnPressEscape","closeOnHashChange"].forEach(function(e){void 0===ks[e]&&(ks[e]=!0)}),document.body.appendChild(ks.$el),Wi.a.nextTick(function(){ks.visible=!0})}},Vs=function e(t,n){if(!Wi.a.prototype.$isServer){if("string"===typeof t||Object(Ss["isVNode"])(t)?(t={message:t},"string"===typeof arguments[1]&&(t.title=arguments[1])):t.callback&&!n&&(n=t.callback),"undefined"!==typeof Promise)return new Promise(function(i,r){Ts.push({options:Et()({},Os,e.defaults,t),callback:n,resolve:i,reject:r}),Hs()});Ts.push({options:Et()({},Os,e.defaults,t),callback:n}),Hs()}};Vs.setDefaults=function(e){Vs.defaults=e},Vs.alert=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":Es(t))?(n=t,t=""):void 0===t&&(t=""),Vs(Et()({title:t,message:e,$type:"alert",closeOnPressEscape:!1,closeOnClickModal:!1},n))},Vs.confirm=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":Es(t))?(n=t,t=""):void 0===t&&(t=""),Vs(Et()({title:t,message:e,$type:"confirm",showCancelButton:!0},n))},Vs.prompt=function(e,t,n){return"object"===("undefined"===typeof t?"undefined":Es(t))?(n=t,t=""):void 0===t&&(t=""),Vs(Et()({title:t,message:e,showCancelButton:!0,showInput:!0,$type:"prompt"},n))},Vs.close=function(){ks.doClose(),ks.visible=!1,Ts=[],zs=null};var Ns=Vs,Is=Ns,Ds=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-breadcrumb",attrs:{"aria-label":"Breadcrumb",role:"navigation"}},[e._t("default")],2)},Ps=[];Ds._withStripped=!0;var $s={name:"ElBreadcrumb",props:{separator:{type:String,default:"/"},separatorClass:{type:String,default:""}},provide:function(){return{elBreadcrumb:this}},mounted:function(){var e=this.$el.querySelectorAll(".el-breadcrumb__item");e.length&&e[e.length-1].setAttribute("aria-current","page")}},Rs=$s,js=s(Rs,Ds,Ps,!1,null,null,null);js.options.__file="packages/breadcrumb/src/breadcrumb.vue";var Fs=js.exports;Fs.install=function(e){e.component(Fs.name,Fs)};var Bs=Fs,Ws=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"el-breadcrumb__item"},[n("span",{ref:"link",class:["el-breadcrumb__inner",e.to?"is-link":""],attrs:{role:"link"}},[e._t("default")],2),e.separatorClass?n("i",{staticClass:"el-breadcrumb__separator",class:e.separatorClass}):n("span",{staticClass:"el-breadcrumb__separator",attrs:{role:"presentation"}},[e._v(e._s(e.separator))])])},Us=[];Ws._withStripped=!0;var Ks={name:"ElBreadcrumbItem",props:{to:{},replace:Boolean},data:function(){return{separator:"",separatorClass:""}},inject:["elBreadcrumb"],mounted:function(){var e=this;this.separator=this.elBreadcrumb.separator,this.separatorClass=this.elBreadcrumb.separatorClass;var t=this.$refs.link;t.setAttribute("role","link"),t.addEventListener("click",function(t){var n=e.to,i=e.$router;n&&i&&(e.replace?i.replace(n):i.push(n))})}},qs=Ks,Gs=s(qs,Ws,Us,!1,null,null,null);Gs.options.__file="packages/breadcrumb/src/breadcrumb-item.vue";var Ys=Gs.exports;Ys.install=function(e){e.component(Ys.name,Ys)};var Xs=Ys,Qs=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("form",{staticClass:"el-form",class:[e.labelPosition?"el-form--label-"+e.labelPosition:"",{"el-form--inline":e.inline}]},[e._t("default")],2)},Js=[];Qs._withStripped=!0;var Zs={name:"ElForm",componentName:"ElForm",provide:function(){return{elForm:this}},props:{model:Object,rules:Object,labelPosition:String,labelWidth:String,labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},size:String,disabled:Boolean,validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:{type:Boolean,default:!1}},watch:{rules:function(){this.fields.forEach(function(e){e.removeValidateEvents(),e.addValidateEvents()}),this.validateOnRuleChange&&this.validate(function(){})}},computed:{autoLabelWidth:function(){if(!this.potentialLabelWidthArr.length)return 0;var e=Math.max.apply(Math,this.potentialLabelWidthArr);return e?e+"px":""}},data:function(){return{fields:[],potentialLabelWidthArr:[]}},created:function(){var e=this;this.$on("el.form.addField",function(t){t&&e.fields.push(t)}),this.$on("el.form.removeField",function(t){t.prop&&e.fields.splice(e.fields.indexOf(t),1)})},methods:{resetFields:function(){this.model?this.fields.forEach(function(e){e.resetField()}):console.warn("[Element Warn][Form]model is required for resetFields to work.")},clearValidate:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=e.length?"string"===typeof e?this.fields.filter(function(t){return e===t.prop}):this.fields.filter(function(t){return e.indexOf(t.prop)>-1}):this.fields;t.forEach(function(e){e.clearValidate()})},validate:function(e){var t=this;if(this.model){var n=void 0;"function"!==typeof e&&window.Promise&&(n=new window.Promise(function(t,n){e=function(e){e?t(e):n(e)}}));var i=!0,r=0;0===this.fields.length&&e&&e(!0);var o={};return this.fields.forEach(function(n){n.validate("",function(n,a){n&&(i=!1),o=Et()({},o,a),"function"===typeof e&&++r===t.fields.length&&e(i,o)})}),n||void 0}console.warn("[Element Warn][Form]model is required for validate to work!")},validateField:function(e,t){e=[].concat(e);var n=this.fields.filter(function(t){return-1!==e.indexOf(t.prop)});n.length?n.forEach(function(e){e.validate("",t)}):console.warn("[Element Warn]please pass correct props!")},getLabelWidthIndex:function(e){var t=this.potentialLabelWidthArr.indexOf(e);if(-1===t)throw new Error("[ElementForm]unpected width ",e);return t},registerLabelWidth:function(e,t){if(e&&t){var n=this.getLabelWidthIndex(t);this.potentialLabelWidthArr.splice(n,1,e)}else e&&this.potentialLabelWidthArr.push(e)},deregisterLabelWidth:function(e){var t=this.getLabelWidthIndex(e);this.potentialLabelWidthArr.splice(t,1)}}},ec=Zs,tc=s(ec,Qs,Js,!1,null,null,null);tc.options.__file="packages/form/src/form.vue";var nc=tc.exports;nc.install=function(e){e.component(nc.name,nc)};var ic=nc,rc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-form-item",class:[{"el-form-item--feedback":e.elForm&&e.elForm.statusIcon,"is-error":"error"===e.validateState,"is-validating":"validating"===e.validateState,"is-success":"success"===e.validateState,"is-required":e.isRequired||e.required,"is-no-asterisk":e.elForm&&e.elForm.hideRequiredAsterisk},e.sizeClass?"el-form-item--"+e.sizeClass:""]},[n("label-wrap",{attrs:{"is-auto-width":e.labelStyle&&"auto"===e.labelStyle.width,"update-all":"auto"===e.form.labelWidth}},[e.label||e.$slots.label?n("label",{staticClass:"el-form-item__label",style:e.labelStyle,attrs:{for:e.labelFor}},[e._t("label",[e._v(e._s(e.label+e.form.labelSuffix))])],2):e._e()]),n("div",{staticClass:"el-form-item__content",style:e.contentStyle},[e._t("default"),n("transition",{attrs:{name:"el-zoom-in-top"}},["error"===e.validateState&&e.showMessage&&e.form.showMessage?e._t("error",[n("div",{staticClass:"el-form-item__error",class:{"el-form-item__error--inline":"boolean"===typeof e.inlineMessage?e.inlineMessage:e.elForm&&e.elForm.inlineMessage||!1}},[e._v("\n "+e._s(e.validateMessage)+"\n ")])],{error:e.validateMessage}):e._e()],2)],2)],1)},oc=[];rc._withStripped=!0;var ac,sc,cc=n(40),lc=n.n(cc),uc={props:{isAutoWidth:Boolean,updateAll:Boolean},inject:["elForm","elFormItem"],render:function(){var e=arguments[0],t=this.$slots.default;if(!t)return null;if(this.isAutoWidth){var n=this.elForm.autoLabelWidth,i={};if(n&&"auto"!==n){var r=parseInt(n,10)-this.computedWidth;r&&(i.marginLeft=r+"px")}return e("div",{class:"el-form-item__label-wrap",style:i},[t])}return t[0]},methods:{getLabelWidth:function(){if(this.$el&&this.$el.firstElementChild){var e=window.getComputedStyle(this.$el.firstElementChild).width;return Math.ceil(parseFloat(e))}return 0},updateLabelWidth:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"update";this.$slots.default&&this.isAutoWidth&&this.$el.firstElementChild&&("update"===e?this.computedWidth=this.getLabelWidth():"remove"===e&&this.elForm.deregisterLabelWidth(this.computedWidth))}},watch:{computedWidth:function(e,t){this.updateAll&&(this.elForm.registerLabelWidth(e,t),this.elFormItem.updateComputedLabelWidth(e))}},data:function(){return{computedWidth:0}},mounted:function(){this.updateLabelWidth("update")},updated:function(){this.updateLabelWidth("update")},beforeDestroy:function(){this.updateLabelWidth("remove")}},hc=uc,dc=s(hc,ac,sc,!1,null,null,null);dc.options.__file="packages/form/src/label-wrap.vue";var fc=dc.exports,pc={name:"ElFormItem",componentName:"ElFormItem",mixins:[z.a],provide:function(){return{elFormItem:this}},inject:["elForm"],props:{label:String,labelWidth:String,prop:String,required:{type:Boolean,default:void 0},rules:[Object,Array],error:String,validateStatus:String,for:String,inlineMessage:{type:[String,Boolean],default:""},showMessage:{type:Boolean,default:!0},size:String},components:{LabelWrap:fc},watch:{error:{immediate:!0,handler:function(e){this.validateMessage=e,this.validateState=e?"error":""}},validateStatus:function(e){this.validateState=e}},computed:{labelFor:function(){return this.for||this.prop},labelStyle:function(){var e={};if("top"===this.form.labelPosition)return e;var t=this.labelWidth||this.form.labelWidth;return t&&(e.width=t),e},contentStyle:function(){var e={},t=this.label;if("top"===this.form.labelPosition||this.form.inline)return e;if(!t&&!this.labelWidth&&this.isNested)return e;var n=this.labelWidth||this.form.labelWidth;return"auto"===n?"auto"===this.labelWidth?e.marginLeft=this.computedLabelWidth:"auto"===this.form.labelWidth&&(e.marginLeft=this.elForm.autoLabelWidth):e.marginLeft=n,e},form:function(){var e=this.$parent,t=e.$options.componentName;while("ElForm"!==t)"ElFormItem"===t&&(this.isNested=!0),e=e.$parent,t=e.$options.componentName;return e},fieldValue:function(){var e=this.form.model;if(e&&this.prop){var t=this.prop;return-1!==t.indexOf(":")&&(t=t.replace(/:/,".")),Object(b["getPropByPath"])(e,t,!0).v}},isRequired:function(){var e=this.getRules(),t=!1;return e&&e.length&&e.every(function(e){return!e.required||(t=!0,!1)}),t},_formSize:function(){return this.elForm.size},elFormItemSize:function(){return this.size||this._formSize},sizeClass:function(){return this.elFormItemSize||(this.$ELEMENT||{}).size}},data:function(){return{validateState:"",validateMessage:"",validateDisabled:!1,validator:{},isNested:!1,computedLabelWidth:""}},methods:{validate:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:b["noop"];this.validateDisabled=!1;var i=this.getFilteredRule(e);if((!i||0===i.length)&&void 0===this.required)return n(),!0;this.validateState="validating";var r={};i&&i.length>0&&i.forEach(function(e){delete e.trigger}),r[this.prop]=i;var o=new lc.a(r),a={};a[this.prop]=this.fieldValue,o.validate(a,{firstFields:!0},function(e,i){t.validateState=e?"error":"success",t.validateMessage=e?e[0].message:"",n(t.validateMessage,i),t.elForm&&t.elForm.$emit("validate",t.prop,!e,t.validateMessage||null)})},clearValidate:function(){this.validateState="",this.validateMessage="",this.validateDisabled=!1},resetField:function(){var e=this;this.validateState="",this.validateMessage="";var t=this.form.model,n=this.fieldValue,i=this.prop;-1!==i.indexOf(":")&&(i=i.replace(/:/,"."));var r=Object(b["getPropByPath"])(t,i,!0);this.validateDisabled=!0,Array.isArray(n)?r.o[r.k]=[].concat(this.initialValue):r.o[r.k]=this.initialValue,this.$nextTick(function(){e.validateDisabled=!1}),this.broadcast("ElTimeSelect","fieldReset",this.initialValue)},getRules:function(){var e=this.form.rules,t=this.rules,n=void 0!==this.required?{required:!!this.required}:[],i=Object(b["getPropByPath"])(e,this.prop||"");return e=e?i.o[this.prop||""]||i.v:[],[].concat(t||e||[]).concat(n)},getFilteredRule:function(e){var t=this.getRules();return t.filter(function(t){return!t.trigger||""===e||(Array.isArray(t.trigger)?t.trigger.indexOf(e)>-1:t.trigger===e)}).map(function(e){return Et()({},e)})},onFieldBlur:function(){this.validate("blur")},onFieldChange:function(){this.validateDisabled?this.validateDisabled=!1:this.validate("change")},updateComputedLabelWidth:function(e){this.computedLabelWidth=e?e+"px":""},addValidateEvents:function(){var e=this.getRules();(e.length||void 0!==this.required)&&(this.$on("el.form.blur",this.onFieldBlur),this.$on("el.form.change",this.onFieldChange))},removeValidateEvents:function(){this.$off()}},mounted:function(){if(this.prop){this.dispatch("ElForm","el.form.addField",[this]);var e=this.fieldValue;Array.isArray(e)&&(e=[].concat(e)),Object.defineProperty(this,"initialValue",{value:e}),this.addValidateEvents()}},beforeDestroy:function(){this.dispatch("ElForm","el.form.removeField",[this])}},vc=pc,mc=s(vc,rc,oc,!1,null,null,null);mc.options.__file="packages/form/src/form-item.vue";var gc=mc.exports;gc.install=function(e){e.component(gc.name,gc)};var bc=gc,yc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-tabs__active-bar",class:"is-"+e.rootTabs.tabPosition,style:e.barStyle})},_c=[];yc._withStripped=!0;var Cc={name:"TabBar",props:{tabs:Array},inject:["rootTabs"],computed:{barStyle:{get:function(){var e=this,t={},n=0,i=0,r=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height",o="width"===r?"x":"y",a=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})};this.tabs.every(function(t,o){var s=Object(b["arrayFind"])(e.$parent.$refs.tabs||[],function(e){return e.id.replace("tab-","")===t.paneName});return!!s&&(t.active?(i=s["client"+a(r)],"width"===r&&e.tabs.length>1&&(i-=0===o||o===e.tabs.length-1?20:40),!1):(n+=s["client"+a(r)],!0))}),"width"===r&&0!==n&&(n+=20);var s="translate"+a(o)+"("+n+"px)";return t[r]=i+"px",t.transform=s,t.msTransform=s,t.webkitTransform=s,t}}}},wc=Cc,xc=s(wc,yc,_c,!1,null,null,null);xc.options.__file="packages/tabs/src/tab-bar.vue";var Sc=xc.exports;function Ec(){}var Oc,Mc,zc=function(e){return e.toLowerCase().replace(/( |^)[a-z]/g,function(e){return e.toUpperCase()})},kc={name:"TabNav",components:{TabBar:Sc},inject:["rootTabs"],props:{panes:Array,currentName:String,editable:Boolean,onTabClick:{type:Function,default:Ec},onTabRemove:{type:Function,default:Ec},type:String,stretch:Boolean},data:function(){return{scrollable:!1,navOffset:0,isFocus:!1,focusable:!0}},computed:{navStyle:function(){var e=-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"X":"Y";return{transform:"translate"+e+"(-"+this.navOffset+"px)"}},sizeName:function(){return-1!==["top","bottom"].indexOf(this.rootTabs.tabPosition)?"width":"height"}},methods:{scrollPrev:function(){var e=this.$refs.navScroll["offset"+zc(this.sizeName)],t=this.navOffset;if(t){var n=t>e?t-e:0;this.navOffset=n}},scrollNext:function(){var e=this.$refs.nav["offset"+zc(this.sizeName)],t=this.$refs.navScroll["offset"+zc(this.sizeName)],n=this.navOffset;if(!(e-n<=t)){var i=e-n>2*t?n+t:e-t;this.navOffset=i}},scrollToActiveTab:function(){if(this.scrollable){var e=this.$refs.nav,t=this.$el.querySelector(".is-active");if(t){var n=this.$refs.navScroll,i=t.getBoundingClientRect(),r=n.getBoundingClientRect(),o=e.offsetWidth-r.width,a=this.navOffset,s=a;i.leftr.right&&(s=a+i.right-r.right),s=Math.max(s,0),this.navOffset=Math.min(s,o)}}},update:function(){if(this.$refs.nav){var e=this.sizeName,t=this.$refs.nav["offset"+zc(e)],n=this.$refs.navScroll["offset"+zc(e)],i=this.navOffset;if(n0&&(this.navOffset=0)}},changeTab:function(e){var t=e.keyCode,n=void 0,i=void 0,r=void 0;-1!==[37,38,39,40].indexOf(t)&&(r=e.currentTarget.querySelectorAll("[role=tab]"),i=Array.prototype.indexOf.call(r,e.target),n=37===t||38===t?0===i?r.length-1:i-1:i0&&void 0!==arguments[0]&&arguments[0];if(this.$slots.default){var n=this.$slots.default.filter(function(e){return e.tag&&e.componentOptions&&"ElTabPane"===e.componentOptions.Ctor.options.name}),i=n.map(function(e){var t=e.componentInstance;return t}),r=!(i.length===this.panes.length&&i.every(function(t,n){return t===e.panes[n]}));(t||r)&&(this.panes=i)}else 0!==this.panes.length&&(this.panes=[])},handleTabClick:function(e,t,n){e.disabled||(this.setCurrentName(t),this.$emit("tab-click",e,n))},handleTabRemove:function(e,t){e.disabled||(t.stopPropagation(),this.$emit("edit",e.name,"remove"),this.$emit("tab-remove",e.name))},handleTabAdd:function(){this.$emit("edit",null,"add"),this.$emit("tab-add")},setCurrentName:function(e){var t=this,n=function(){t.currentName=e,t.$emit("input",e)};if(this.currentName!==e&&this.beforeLeave){var i=this.beforeLeave(e,this.currentName);i&&i.then?i.then(function(){n(),t.$refs.nav&&t.$refs.nav.removeFocus()},function(){}):!1!==i&&n()}else n()}},render:function(e){var t,n=this.type,i=this.handleTabClick,r=this.handleTabRemove,o=this.handleTabAdd,a=this.currentName,s=this.panes,c=this.editable,l=this.addable,u=this.tabPosition,h=this.stretch,d=c||l?e("span",{class:"el-tabs__new-tab",on:{click:o,keydown:function(e){13===e.keyCode&&o()}},attrs:{tabindex:"0"}},[e("i",{class:"el-icon-plus"})]):null,f={props:{currentName:a,onTabClick:i,onTabRemove:r,editable:c,type:n,panes:s,stretch:h},ref:"nav"},p=e("div",{class:["el-tabs__header","is-"+u]},[d,e("tab-nav",f)]),v=e("div",{class:"el-tabs__content"},[this.$slots.default]);return e("div",{class:(t={"el-tabs":!0,"el-tabs--card":"card"===n},t["el-tabs--"+u]=!0,t["el-tabs--border-card"]="border-card"===n,t)},["bottom"!==u?[p,v]:[v,p]])},created:function(){this.currentName||this.setCurrentName("0"),this.$on("tab-nav-update",this.calcPaneInstances.bind(null,!0))},mounted:function(){this.calcPaneInstances()},updated:function(){this.calcPaneInstances()}},Ic=Nc,Dc=s(Ic,Ac,Hc,!1,null,null,null);Dc.options.__file="packages/tabs/src/tabs.vue";var Pc=Dc.exports;Pc.install=function(e){e.component(Pc.name,Pc)};var $c=Pc,Rc=function(){var e=this,t=e.$createElement,n=e._self._c||t;return!e.lazy||e.loaded||e.active?n("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],staticClass:"el-tab-pane",attrs:{role:"tabpanel","aria-hidden":!e.active,id:"pane-"+e.paneName,"aria-labelledby":"tab-"+e.paneName}},[e._t("default")],2):e._e()},jc=[];Rc._withStripped=!0;var Fc={name:"ElTabPane",componentName:"ElTabPane",props:{label:String,labelContent:Function,name:String,closable:Boolean,disabled:Boolean,lazy:Boolean},data:function(){return{index:null,loaded:!1}},computed:{isClosable:function(){return this.closable||this.$parent.closable},active:function(){var e=this.$parent.currentName===(this.name||this.index);return e&&(this.loaded=!0),e},paneName:function(){return this.name||this.index}},updated:function(){this.$parent.$emit("tab-nav-update")}},Bc=Fc,Wc=s(Bc,Rc,jc,!1,null,null,null);Wc.options.__file="packages/tabs/src/tab-pane.vue";var Uc=Wc.exports;Uc.install=function(e){e.component(Uc.name,Uc)};var Kc,qc,Gc=Uc,Yc={name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return["dark","light","plain"].includes(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,n=this.tagSize,i=this.hit,r=this.effect,o=["el-tag",t?"el-tag--"+t:"",n?"el-tag--"+n:"",r?"el-tag--"+r:"",i&&"is-hit"],a=e("span",{class:o,style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?a:e("transition",{attrs:{name:"el-zoom-in-center"}},[a])}},Xc=Yc,Qc=s(Xc,Kc,qc,!1,null,null,null);Qc.options.__file="packages/tag/src/tag.vue";var Jc=Qc.exports;Jc.install=function(e){e.component(Jc.name,Jc)};var Zc=Jc,el=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-tree",class:{"el-tree--highlight-current":e.highlightCurrent,"is-dragging":!!e.dragState.draggingNode,"is-drop-not-allow":!e.dragState.allowDrop,"is-drop-inner":"inner"===e.dragState.dropType},attrs:{role:"tree"}},[e._l(e.root.childNodes,function(t){return n("el-tree-node",{key:e.getNodeKey(t),attrs:{node:t,props:e.props,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,"render-content":e.renderContent},on:{"node-expand":e.handleNodeExpand}})}),e.isEmpty?n("div",{staticClass:"el-tree__empty-block"},[n("span",{staticClass:"el-tree__empty-text"},[e._v(e._s(e.emptyText))])]):e._e(),n("div",{directives:[{name:"show",rawName:"v-show",value:e.dragState.showDropIndicator,expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)},tl=[];el._withStripped=!0;var nl="$treeNodeId",il=function(e,t){t&&!t[nl]&&Object.defineProperty(t,nl,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},rl=function(e,t){return e?t[e]:t[nl]},ol=function(e,t){var n=e;while(n&&"BODY"!==n.tagName){if(n.__vue__&&n.__vue__.$options.name===t)return n.__vue__;n=n.parentNode}return null},al=function(){function e(e,t){for(var n=0;n0&&i.lazy&&i.defaultExpandAll&&this.expand(),Array.isArray(this.data)||il(this,this.data),this.data){var a=i.defaultExpandedKeys,s=i.key;s&&a&&-1!==a.indexOf(this.key)&&this.expand(null,i.autoExpandParent),s&&void 0!==i.currentNodeKey&&this.key===i.currentNodeKey&&(i.currentNode=this,i.currentNode.isCurrent=!0),i.lazy&&i._initDefaultCheckedNode(this),this.updateLeafState()}}return e.prototype.setData=function(e){Array.isArray(e)||il(this,e),this.data=e,this.childNodes=[];var t=void 0;t=0===this.level&&this.data instanceof Array?this.data:ul(this,"children")||[];for(var n=0,i=t.length;n1&&void 0!==arguments[1])||arguments[1],n=function n(i){for(var r=i.childNodes||[],o=!1,a=0,s=r.length;a-1&&t.splice(n,1);var i=this.childNodes.indexOf(e);i>-1&&(this.store&&this.store.deregisterNode(e),e.parent=null,this.childNodes.splice(i,1)),this.updateLeafState()},e.prototype.removeChildByData=function(e){for(var t=null,n=0;n0)i.expanded=!0,i=i.parent}n.expanded=!0,e&&e()};this.shouldLoadData()?this.loadData(function(e){e instanceof Array&&(n.checked?n.setChecked(!0,!0):n.store.checkStrictly||ll(n),i())}):i()},e.prototype.doCreateChildren=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.forEach(function(e){t.insertChild(Et()({data:e},n),void 0,!0)})},e.prototype.collapse=function(){this.expanded=!1},e.prototype.shouldLoadData=function(){return!0===this.store.lazy&&this.store.load&&!this.loaded},e.prototype.updateLeafState=function(){if(!0!==this.store.lazy||!0===this.loaded||"undefined"===typeof this.isLeafByUser){var e=this.childNodes;!this.store.lazy||!0===this.store.lazy&&!0===this.loaded?this.isLeaf=!e||0===e.length:this.isLeaf=!1}else this.isLeaf=this.isLeafByUser},e.prototype.setChecked=function(e,t,n,i){var r=this;if(this.indeterminate="half"===e,this.checked=!0===e,!this.store.checkStrictly){if(!this.shouldLoadData()||this.store.checkDescendants){var o=cl(this.childNodes),a=o.all,s=o.allWithoutDisable;this.isLeaf||a||!s||(this.checked=!1,e=!1);var c=function(){if(t){for(var n=r.childNodes,o=0,a=n.length;o0&&void 0!==arguments[0]&&arguments[0];if(0===this.level)return this.data;var t=this.data;if(!t)return null;var n=this.store.props,i="children";return n&&(i=n.children||"children"),void 0===t[i]&&(t[i]=null),e&&!t[i]&&(t[i]=[]),t[i]},e.prototype.updateChildren=function(){var e=this,t=this.getChildren()||[],n=this.childNodes.map(function(e){return e.data}),i={},r=[];t.forEach(function(e,t){e[nl]?i[e[nl]]={index:t,data:e}:r.push({index:t,data:e})}),this.store.lazy||n.forEach(function(t){i[t[nl]]||e.removeChildByData(t)}),r.forEach(function(t){var n=t.index,i=t.data;e.insertChild({data:i},n)}),this.updateLeafState()},e.prototype.loadData=function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!0!==this.store.lazy||!this.store.load||this.loaded||this.loading&&!Object.keys(n).length)e&&e.call(this);else{this.loading=!0;var i=function(i){t.loaded=!0,t.loading=!1,t.childNodes=[],t.doCreateChildren(i,n),t.updateLeafState(),e&&e.call(t,i)};this.store.load(this,i)}},al(e,[{key:"label",get:function(){return ul(this,"label")}},{key:"key",get:function(){var e=this.store.key;return this.data?this.data[e]:null}},{key:"disabled",get:function(){return ul(this,"disabled")}},{key:"nextSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return e.childNodes[t+1]}return null}},{key:"previousSibling",get:function(){var e=this.parent;if(e){var t=e.childNodes.indexOf(this);if(t>-1)return t>0?e.childNodes[t-1]:null}return null}}]),e}(),fl=dl,pl="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 vl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var ml=function(){function e(t){var n=this;for(var i in vl(this,e),this.currentNode=null,this.currentNodeKey=null,t)t.hasOwnProperty(i)&&(this[i]=t[i]);if(this.nodesMap={},this.root=new fl({data:this.data,store:this}),this.lazy&&this.load){var r=this.load;r(this.root,function(e){n.root.doCreateChildren(e),n._initDefaultCheckedNodes()})}else this._initDefaultCheckedNodes()}return e.prototype.filter=function(e){var t=this.filterNodeMethod,n=this.lazy,i=function i(r){var o=r.root?r.root.childNodes:r.childNodes;if(o.forEach(function(n){n.visible=t.call(n,e,n.data,n),i(n)}),!r.visible&&o.length){var a=!0;o.forEach(function(e){e.visible&&(a=!1)}),r.root?r.root.visible=!1===a:r.visible=!1===a}e&&(!r.visible||r.isLeaf||n||r.expand())};i(this)},e.prototype.setData=function(e){var t=e!==this.root.data;t?(this.root.setData(e),this._initDefaultCheckedNodes()):this.root.updateChildren()},e.prototype.getNode=function(e){if(e instanceof fl)return e;var t="object"!==("undefined"===typeof e?"undefined":pl(e))?e:rl(this.key,e);return this.nodesMap[t]||null},e.prototype.insertBefore=function(e,t){var n=this.getNode(t);n.parent.insertBefore({data:e},n)},e.prototype.insertAfter=function(e,t){var n=this.getNode(t);n.parent.insertAfter({data:e},n)},e.prototype.remove=function(e){var t=this.getNode(e);t&&t.parent&&(t===this.currentNode&&(this.currentNode=null),t.parent.removeChild(t))},e.prototype.append=function(e,t){var n=t?this.getNode(t):this.root;n&&n.insertChild({data:e})},e.prototype._initDefaultCheckedNodes=function(){var e=this,t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(function(t){var i=n[t];i&&i.setChecked(!0,!e.checkStrictly)})},e.prototype._initDefaultCheckedNode=function(e){var t=this.defaultCheckedKeys||[];-1!==t.indexOf(e.key)&&e.setChecked(!0,!this.checkStrictly)},e.prototype.setDefaultCheckedKey=function(e){e!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=e,this._initDefaultCheckedNodes())},e.prototype.registerNode=function(e){var t=this.key;if(t&&e&&e.data){var n=e.key;void 0!==n&&(this.nodesMap[e.key]=e)}},e.prototype.deregisterNode=function(e){var t=this,n=this.key;n&&e&&e.data&&(e.childNodes.forEach(function(e){t.deregisterNode(e)}),delete this.nodesMap[e.key])},e.prototype.getCheckedNodes=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],i=function i(r){var o=r.root?r.root.childNodes:r.childNodes;o.forEach(function(r){(r.checked||t&&r.indeterminate)&&(!e||e&&r.isLeaf)&&n.push(r.data),i(r)})};return i(this),n},e.prototype.getCheckedKeys=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.getCheckedNodes(t).map(function(t){return(t||{})[e.key]})},e.prototype.getHalfCheckedNodes=function(){var e=[],t=function t(n){var i=n.root?n.root.childNodes:n.childNodes;i.forEach(function(n){n.indeterminate&&e.push(n.data),t(n)})};return t(this),e},e.prototype.getHalfCheckedKeys=function(){var e=this;return this.getHalfCheckedNodes().map(function(t){return(t||{})[e.key]})},e.prototype._getAllNodes=function(){var e=[],t=this.nodesMap;for(var n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e},e.prototype.updateChildren=function(e,t){var n=this.nodesMap[e];if(n){for(var i=n.childNodes,r=i.length-1;r>=0;r--){var o=i[r];this.remove(o.data)}for(var a=0,s=t.length;a1&&void 0!==arguments[1]&&arguments[1],n=arguments[2],i=this._getAllNodes().sort(function(e,t){return t.level-e.level}),r=Object.create(null),o=Object.keys(n);i.forEach(function(e){return e.setChecked(!1,!1)});for(var a=0,s=i.length;a-1;if(u){var h=c.parent;while(h&&h.level>0)r[h.data[e]]=!0,h=h.parent;c.isLeaf||this.checkStrictly?c.setChecked(!0,!1):(c.setChecked(!0,!0),t&&function(){c.setChecked(!1,!1);var e=function e(t){var n=t.childNodes;n.forEach(function(t){t.isLeaf||t.setChecked(!1,!1),e(t)})};e(c)}())}else c.checked&&!r[l]&&c.setChecked(!1,!1)}},e.prototype.setCheckedNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.key,i={};e.forEach(function(e){i[(e||{})[n]]=!0}),this._setCheckedKeys(n,t,i)},e.prototype.setCheckedKeys=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.defaultCheckedKeys=e;var n=this.key,i={};e.forEach(function(e){i[e]=!0}),this._setCheckedKeys(n,t,i)},e.prototype.setDefaultExpandedKeys=function(e){var t=this;e=e||[],this.defaultExpandedKeys=e,e.forEach(function(e){var n=t.getNode(e);n&&n.expand(null,t.autoExpandParent)})},e.prototype.setChecked=function(e,t,n){var i=this.getNode(e);i&&i.setChecked(!!t,n)},e.prototype.getCurrentNode=function(){return this.currentNode},e.prototype.setCurrentNode=function(e){var t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0},e.prototype.setUserCurrentNode=function(e){var t=e[this.key],n=this.nodesMap[t];this.setCurrentNode(n)},e.prototype.setCurrentNodeKey=function(e){if(null!==e){var t=this.getNode(e);t&&this.setCurrentNode(t)}else this.currentNode=null},e}(),gl=ml,bl=function(){var e=this,t=this,n=t.$createElement,i=t._self._c||n;return i("div",{directives:[{name:"show",rawName:"v-show",value:t.node.visible,expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{"is-expanded":t.expanded,"is-current":t.node.isCurrent,"is-hidden":!t.node.visible,"is-focusable":!t.node.disabled,"is-checked":!t.node.disabled&&t.node.checked},attrs:{role:"treeitem",tabindex:"-1","aria-expanded":t.expanded,"aria-disabled":t.node.disabled,"aria-checked":t.node.checked,draggable:t.tree.draggable},on:{click:function(e){return e.stopPropagation(),t.handleClick(e)},contextmenu:function(t){return e.handleContextMenu(t)},dragstart:function(e){return e.stopPropagation(),t.handleDragStart(e)},dragover:function(e){return e.stopPropagation(),t.handleDragOver(e)},dragend:function(e){return e.stopPropagation(),t.handleDragEnd(e)},drop:function(e){return e.stopPropagation(),t.handleDrop(e)}}},[i("div",{staticClass:"el-tree-node__content",style:{"padding-left":(t.node.level-1)*t.tree.indent+"px"}},[i("span",{class:[{"is-leaf":t.node.isLeaf,expanded:!t.node.isLeaf&&t.expanded},"el-tree-node__expand-icon",t.tree.iconClass?t.tree.iconClass:"el-icon-caret-right"],on:{click:function(e){return e.stopPropagation(),t.handleExpandIconClick(e)}}}),t.showCheckbox?i("el-checkbox",{attrs:{indeterminate:t.node.indeterminate,disabled:!!t.node.disabled},on:{change:t.handleCheckChange},nativeOn:{click:function(e){e.stopPropagation()}},model:{value:t.node.checked,callback:function(e){t.$set(t.node,"checked",e)},expression:"node.checked"}}):t._e(),t.node.loading?i("span",{staticClass:"el-tree-node__loading-icon el-icon-loading"}):t._e(),i("node-content",{attrs:{node:t.node}})],1),i("el-collapse-transition",[!t.renderAfterExpand||t.childNodeRendered?i("div",{directives:[{name:"show",rawName:"v-show",value:t.expanded,expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{role:"group","aria-expanded":t.expanded}},t._l(t.node.childNodes,function(e){return i("el-tree-node",{key:t.getNodeKey(e),attrs:{"render-content":t.renderContent,"render-after-expand":t.renderAfterExpand,"show-checkbox":t.showCheckbox,node:e},on:{"node-expand":t.handleChildNodeExpand}})}),1):t._e()])],1)},yl=[];bl._withStripped=!0;var _l={name:"ElTreeNode",componentName:"ElTreeNode",mixins:[z.a],props:{node:{default:function(){return{}}},props:{},renderContent:Function,renderAfterExpand:{type:Boolean,default:!0},showCheckbox:{type:Boolean,default:!1}},components:{ElCollapseTransition:qe.a,ElCheckbox:Ii.a,NodeContent:{props:{node:{required:!0}},render:function(e){var t=this.$parent,n=t.tree,i=this.node,r=i.data,o=i.store;return t.renderContent?t.renderContent.call(t._renderProxy,e,{_self:n.$vnode.context,node:i,data:r,store:o}):n.$scopedSlots.default?n.$scopedSlots.default({node:i,data:r}):e("span",{class:"el-tree-node__label"},[i.label])}}},data:function(){return{tree:null,expanded:!1,childNodeRendered:!1,oldChecked:null,oldIndeterminate:null}},watch:{"node.indeterminate":function(e){this.handleSelectChange(this.node.checked,e)},"node.checked":function(e){this.handleSelectChange(e,this.node.indeterminate)},"node.expanded":function(e){var t=this;this.$nextTick(function(){return t.expanded=e}),e&&(this.childNodeRendered=!0)}},methods:{getNodeKey:function(e){return rl(this.tree.nodeKey,e.data)},handleSelectChange:function(e,t){this.oldChecked!==e&&this.oldIndeterminate!==t&&this.tree.$emit("check-change",this.node.data,e,t),this.oldChecked=e,this.indeterminate=t},handleClick:function(){var e=this.tree.store;e.setCurrentNode(this.node),this.tree.$emit("current-change",e.currentNode?e.currentNode.data:null,e.currentNode),this.tree.currentNode=this,this.tree.expandOnClickNode&&this.handleExpandIconClick(),this.tree.checkOnClickNode&&!this.node.disabled&&this.handleCheckChange(null,{target:{checked:!this.node.checked}}),this.tree.$emit("node-click",this.node.data,this.node,this)},handleContextMenu:function(e){this.tree._events["node-contextmenu"]&&this.tree._events["node-contextmenu"].length>0&&(e.stopPropagation(),e.preventDefault()),this.tree.$emit("node-contextmenu",e,this.node.data,this.node,this)},handleExpandIconClick:function(){this.node.isLeaf||(this.expanded?(this.tree.$emit("node-collapse",this.node.data,this.node,this),this.node.collapse()):(this.node.expand(),this.$emit("node-expand",this.node.data,this.node,this)))},handleCheckChange:function(e,t){var n=this;this.node.setChecked(t.target.checked,!this.tree.checkStrictly),this.$nextTick(function(){var e=n.tree.store;n.tree.$emit("check",n.node.data,{checkedNodes:e.getCheckedNodes(),checkedKeys:e.getCheckedKeys(),halfCheckedNodes:e.getHalfCheckedNodes(),halfCheckedKeys:e.getHalfCheckedKeys()})})},handleChildNodeExpand:function(e,t,n){this.broadcast("ElTreeNode","tree-node-expand",t),this.tree.$emit("node-expand",e,t,n)},handleDragStart:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-start",e,this)},handleDragOver:function(e){this.tree.draggable&&(this.tree.$emit("tree-node-drag-over",e,this),e.preventDefault())},handleDrop:function(e){e.preventDefault()},handleDragEnd:function(e){this.tree.draggable&&this.tree.$emit("tree-node-drag-end",e,this)}},created:function(){var e=this,t=this.$parent;t.isTree?this.tree=t:this.tree=t.tree;var n=this.tree;n||console.warn("Can not find node's tree.");var i=n.props||{},r=i["children"]||"children";this.$watch("node.data."+r,function(){e.node.updateChildren()}),this.node.expanded&&(this.expanded=!0,this.childNodeRendered=!0),this.tree.accordion&&this.$on("tree-node-expand",function(t){e.node!==t&&e.node.collapse()})}},Cl=_l,wl=s(Cl,bl,yl,!1,null,null,null);wl.options.__file="packages/tree/src/tree-node.vue";var xl=wl.exports,Sl={name:"ElTree",mixins:[z.a],components:{ElTreeNode:xl},data:function(){return{store:null,root:null,currentNode:null,treeItems:null,checkboxItems:[],dragState:{showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0}}},props:{data:{type:Array},emptyText:{type:String,default:function(){return Object(ei["t"])("el.tree.emptyText")}},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{default:function(){return{children:"children",label:"label",disabled:"disabled"}}},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},iconClass:String},computed:{children:{set:function(e){this.data=e},get:function(){return this.data}},treeItemArray:function(){return Array.prototype.slice.call(this.treeItems)},isEmpty:function(){var e=this.root.childNodes;return!e||0===e.length||e.every(function(e){var t=e.visible;return!t})}},watch:{defaultCheckedKeys:function(e){this.store.setDefaultCheckedKey(e)},defaultExpandedKeys:function(e){this.store.defaultExpandedKeys=e,this.store.setDefaultExpandedKeys(e)},data:function(e){this.store.setData(e)},checkboxItems:function(e){Array.prototype.forEach.call(e,function(e){e.setAttribute("tabindex",-1)})},checkStrictly:function(e){this.store.checkStrictly=e}},methods:{filter:function(e){if(!this.filterNodeMethod)throw new Error("[Tree] filterNodeMethod is required when filter");this.store.filter(e)},getNodeKey:function(e){return rl(this.nodeKey,e.data)},getNodePath:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getNodePath");var t=this.store.getNode(e);if(!t)return[];var n=[t.data],i=t.parent;while(i&&i!==this.root)n.push(i.data),i=i.parent;return n.reverse()},getCheckedNodes:function(e,t){return this.store.getCheckedNodes(e,t)},getCheckedKeys:function(e){return this.store.getCheckedKeys(e)},getCurrentNode:function(){var e=this.store.getCurrentNode();return e?e.data:null},getCurrentKey:function(){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in getCurrentKey");var e=this.getCurrentNode();return e?e[this.nodeKey]:null},setCheckedNodes:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedNodes");this.store.setCheckedNodes(e,t)},setCheckedKeys:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCheckedKeys");this.store.setCheckedKeys(e,t)},setChecked:function(e,t,n){this.store.setChecked(e,t,n)},getHalfCheckedNodes:function(){return this.store.getHalfCheckedNodes()},getHalfCheckedKeys:function(){return this.store.getHalfCheckedKeys()},setCurrentNode:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentNode");this.store.setUserCurrentNode(e)},setCurrentKey:function(e){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in setCurrentKey");this.store.setCurrentNodeKey(e)},getNode:function(e){return this.store.getNode(e)},remove:function(e){this.store.remove(e)},append:function(e,t){this.store.append(e,t)},insertBefore:function(e,t){this.store.insertBefore(e,t)},insertAfter:function(e,t){this.store.insertAfter(e,t)},handleNodeExpand:function(e,t,n){this.broadcast("ElTreeNode","tree-node-expand",t),this.$emit("node-expand",e,t,n)},updateKeyChildren:function(e,t){if(!this.nodeKey)throw new Error("[Tree] nodeKey is required in updateKeyChild");this.store.updateChildren(e,t)},initTabIndex:function(){this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]");var e=this.$el.querySelectorAll(".is-checked[role=treeitem]");e.length?e[0].setAttribute("tabindex",0):this.treeItems[0]&&this.treeItems[0].setAttribute("tabindex",0)},handleKeydown:function(e){var t=e.target;if(-1!==t.className.indexOf("el-tree-node")){var n=e.keyCode;this.treeItems=this.$el.querySelectorAll(".is-focusable[role=treeitem]");var i=this.treeItemArray.indexOf(t),r=void 0;[38,40].indexOf(n)>-1&&(e.preventDefault(),r=38===n?0!==i?i-1:0:i-1&&(e.preventDefault(),t.click());var o=t.querySelector('[type="checkbox"]');[13,32].indexOf(n)>-1&&o&&(e.preventDefault(),o.click())}}},created:function(){var e=this;this.isTree=!0,this.store=new gl({key:this.nodeKey,data:this.data,lazy:this.lazy,props:this.props,load:this.load,currentNodeKey:this.currentNodeKey,checkStrictly:this.checkStrictly,checkDescendants:this.checkDescendants,defaultCheckedKeys:this.defaultCheckedKeys,defaultExpandedKeys:this.defaultExpandedKeys,autoExpandParent:this.autoExpandParent,defaultExpandAll:this.defaultExpandAll,filterNodeMethod:this.filterNodeMethod}),this.root=this.store.root;var t=this.dragState;this.$on("tree-node-drag-start",function(n,i){if("function"===typeof e.allowDrag&&!e.allowDrag(i.node))return n.preventDefault(),!1;n.dataTransfer.effectAllowed="move";try{n.dataTransfer.setData("text/plain","")}catch(r){}t.draggingNode=i,e.$emit("node-drag-start",i.node,n)}),this.$on("tree-node-drag-over",function(n,i){var r=ol(n.target,"ElTreeNode"),o=t.dropNode;o&&o!==r&&Object(Pe["removeClass"])(o.$el,"is-drop-inner");var a=t.draggingNode;if(a&&r){var s=!0,c=!0,l=!0,u=!0;"function"===typeof e.allowDrop&&(s=e.allowDrop(a.node,r.node,"prev"),u=c=e.allowDrop(a.node,r.node,"inner"),l=e.allowDrop(a.node,r.node,"next")),n.dataTransfer.dropEffect=c?"move":"none",(s||c||l)&&o!==r&&(o&&e.$emit("node-drag-leave",a.node,o.node,n),e.$emit("node-drag-enter",a.node,r.node,n)),(s||c||l)&&(t.dropNode=r),r.node.nextSibling===a.node&&(l=!1),r.node.previousSibling===a.node&&(s=!1),r.node.contains(a.node,!1)&&(c=!1),(a.node===r.node||a.node.contains(r.node))&&(s=!1,c=!1,l=!1);var h=r.$el.getBoundingClientRect(),d=e.$el.getBoundingClientRect(),f=void 0,p=s?c?.25:l?.45:1:-1,v=l?c?.75:s?.55:0:1,m=-9999,g=n.clientY-h.top;f=gh.height*v?"after":c?"inner":"none";var b=r.$el.querySelector(".el-tree-node__expand-icon").getBoundingClientRect(),y=e.$refs.dropIndicator;"before"===f?m=b.top-d.top:"after"===f&&(m=b.bottom-d.top),y.style.top=m+"px",y.style.left=b.right-d.left+"px","inner"===f?Object(Pe["addClass"])(r.$el,"is-drop-inner"):Object(Pe["removeClass"])(r.$el,"is-drop-inner"),t.showDropIndicator="before"===f||"after"===f,t.allowDrop=t.showDropIndicator||u,t.dropType=f,e.$emit("node-drag-over",a.node,r.node,n)}}),this.$on("tree-node-drag-end",function(n){var i=t.draggingNode,r=t.dropType,o=t.dropNode;if(n.preventDefault(),n.dataTransfer.dropEffect="move",i&&o){var a={data:i.node.data};"none"!==r&&i.node.remove(),"before"===r?o.node.parent.insertBefore(a,o.node):"after"===r?o.node.parent.insertAfter(a,o.node):"inner"===r&&o.node.insertChild(a),"none"!==r&&e.store.registerNode(a),Object(Pe["removeClass"])(o.$el,"is-drop-inner"),e.$emit("node-drag-end",i.node,o.node,r,n),"none"!==r&&e.$emit("node-drop",i.node,o.node,r,n)}i&&!o&&e.$emit("node-drag-end",i.node,null,r,n),t.showDropIndicator=!1,t.draggingNode=null,t.dropNode=null,t.allowDrop=!0})},mounted:function(){this.initTabIndex(),this.$el.addEventListener("keydown",this.handleKeydown)},updated:function(){this.treeItems=this.$el.querySelectorAll("[role=treeitem]"),this.checkboxItems=this.$el.querySelectorAll("input[type=checkbox]")}},El=Sl,Ol=s(El,el,tl,!1,null,null,null);Ol.options.__file="packages/tree/src/tree.vue";var Ml=Ol.exports;Ml.install=function(e){e.component(Ml.name,Ml)};var zl=Ml,kl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-alert-fade"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-alert",class:[e.typeClass,e.center?"is-center":"","is-"+e.effect],attrs:{role:"alert"}},[e.showIcon?n("i",{staticClass:"el-alert__icon",class:[e.iconClass,e.isBigIcon]}):e._e(),n("div",{staticClass:"el-alert__content"},[e.title||e.$slots.title?n("span",{staticClass:"el-alert__title",class:[e.isBoldTitle]},[e._t("title",[e._v(e._s(e.title))])],2):e._e(),e.$slots.default&&!e.description?n("p",{staticClass:"el-alert__description"},[e._t("default")],2):e._e(),e.description&&!e.$slots.default?n("p",{staticClass:"el-alert__description"},[e._v(e._s(e.description))]):e._e(),n("i",{directives:[{name:"show",rawName:"v-show",value:e.closable,expression:"closable"}],staticClass:"el-alert__closebtn",class:{"is-customed":""!==e.closeText,"el-icon-close":""===e.closeText},on:{click:function(t){e.close()}}},[e._v(e._s(e.closeText))])])])])},Tl=[];kl._withStripped=!0;var Ll={success:"el-icon-success",warning:"el-icon-warning",error:"el-icon-error"},Al={name:"ElAlert",props:{title:{type:String,default:""},description:{type:String,default:""},type:{type:String,default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,default:"light",validator:function(e){return-1!==["light","dark"].indexOf(e)}}},data:function(){return{visible:!0}},methods:{close:function(){this.visible=!1,this.$emit("close")}},computed:{typeClass:function(){return"el-alert--"+this.type},iconClass:function(){return Ll[this.type]||"el-icon-info"},isBigIcon:function(){return this.description||this.$slots.default?"is-big":""},isBoldTitle:function(){return this.description||this.$slots.default?"is-bold":""}}},Hl=Al,Vl=s(Hl,kl,Tl,!1,null,null,null);Vl.options.__file="packages/alert/src/main.vue";var Nl=Vl.exports;Nl.install=function(e){e.component(Nl.name,Nl)};var Il=Nl,Dl=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-notification-fade"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-notification",e.customClass,e.horizontalClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:function(t){e.clearTimer()},mouseleave:function(t){e.startTimer()},click:e.click}},[e.type||e.iconClass?n("i",{staticClass:"el-notification__icon",class:[e.typeClass,e.iconClass]}):e._e(),n("div",{staticClass:"el-notification__group",class:{"is-with-icon":e.typeClass||e.iconClass}},[n("h2",{staticClass:"el-notification__title",domProps:{textContent:e._s(e.title)}}),n("div",{directives:[{name:"show",rawName:"v-show",value:e.message,expression:"message"}],staticClass:"el-notification__content"},[e._t("default",[e.dangerouslyUseHTMLString?n("p",{domProps:{innerHTML:e._s(e.message)}}):n("p",[e._v(e._s(e.message))])])],2),e.showClose?n("div",{staticClass:"el-notification__closeBtn el-icon-close",on:{click:function(t){return t.stopPropagation(),e.close(t)}}}):e._e()])])])},Pl=[];Dl._withStripped=!0;var $l={success:"success",info:"info",warning:"warning",error:"error"},Rl={data:function(){return{visible:!1,title:"",message:"",duration:4500,type:"",showClose:!0,customClass:"",iconClass:"",onClose:null,onClick:null,closed:!1,verticalOffset:0,timer:null,dangerouslyUseHTMLString:!1,position:"top-right"}},computed:{typeClass:function(){return this.type&&$l[this.type]?"el-icon-"+$l[this.type]:""},horizontalClass:function(){return this.position.indexOf("right")>-1?"right":"left"},verticalProperty:function(){return/^top-/.test(this.position)?"top":"bottom"},positionStyle:function(){var e;return e={},e[this.verticalProperty]=this.verticalOffset+"px",e}},watch:{closed:function(e){e&&(this.visible=!1,this.$el.addEventListener("transitionend",this.destroyElement))}},methods:{destroyElement:function(){this.$el.removeEventListener("transitionend",this.destroyElement),this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},click:function(){"function"===typeof this.onClick&&this.onClick()},close:function(){this.closed=!0,"function"===typeof this.onClose&&this.onClose()},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){46===e.keyCode||8===e.keyCode?this.clearTimer():27===e.keyCode?this.closed||this.close():this.startTimer()}},mounted:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration)),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},jl=Rl,Fl=s(jl,Dl,Pl,!1,null,null,null);Fl.options.__file="packages/notification/src/main.vue";var Bl=Fl.exports,Wl=Wi.a.extend(Bl),Ul=void 0,Kl=[],ql=1,Gl=function e(t){if(!Wi.a.prototype.$isServer){t=t||{};var n=t.onClose,i="notification_"+ql++,r=t.position||"top-right";t.onClose=function(){e.close(i,n)},Ul=new Wl({data:t}),Object(Ss["isVNode"])(t.message)&&(Ul.$slots.default=[t.message],t.message="REPLACED_BY_VNODE"),Ul.id=i,Ul.$mount(),document.body.appendChild(Ul.$el),Ul.visible=!0,Ul.dom=Ul.$el,Ul.dom.style.zIndex=x["PopupManager"].nextZIndex();var o=t.offset||0;return Kl.filter(function(e){return e.position===r}).forEach(function(e){o+=e.$el.offsetHeight+16}),o+=16,Ul.verticalOffset=o,Kl.push(Ul),Ul}};["success","warning","info","error"].forEach(function(e){Gl[e]=function(t){return("string"===typeof t||Object(Ss["isVNode"])(t))&&(t={message:t}),t.type=e,Gl(t)}}),Gl.close=function(e,t){var n=-1,i=Kl.length,r=Kl.filter(function(t,i){return t.id===e&&(n=i,!0)})[0];if(r&&("function"===typeof t&&t(r),Kl.splice(n,1),!(i<=1)))for(var o=r.position,a=r.dom.offsetHeight,s=n;s=0;e--)Kl[e].close()};var Yl=Gl,Xl=Yl,Ql=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-slider",class:{"is-vertical":e.vertical,"el-slider--with-input":e.showInput},attrs:{role:"slider","aria-valuemin":e.min,"aria-valuemax":e.max,"aria-orientation":e.vertical?"vertical":"horizontal","aria-disabled":e.sliderDisabled}},[e.showInput&&!e.range?n("el-input-number",{ref:"input",staticClass:"el-slider__input",attrs:{step:e.step,disabled:e.sliderDisabled,controls:e.showInputControls,min:e.min,max:e.max,debounce:e.debounce,size:e.inputSize},on:{change:function(t){e.$nextTick(e.emitChange)}},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}):e._e(),n("div",{ref:"slider",staticClass:"el-slider__runway",class:{"show-input":e.showInput,disabled:e.sliderDisabled},style:e.runwayStyle,on:{click:e.onSliderClick}},[n("div",{staticClass:"el-slider__bar",style:e.barStyle}),n("slider-button",{ref:"button1",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.firstValue,callback:function(t){e.firstValue=t},expression:"firstValue"}}),e.range?n("slider-button",{ref:"button2",attrs:{vertical:e.vertical,"tooltip-class":e.tooltipClass},model:{value:e.secondValue,callback:function(t){e.secondValue=t},expression:"secondValue"}}):e._e(),e._l(e.stops,function(t,i){return e.showStops?n("div",{key:i,staticClass:"el-slider__stop",style:e.getStopStyle(t)}):e._e()}),e.markList.length>0?[n("div",e._l(e.markList,function(t,i){return n("div",{key:i,staticClass:"el-slider__stop el-slider__marks-stop",style:e.getStopStyle(t.position)})}),0),n("div",{staticClass:"el-slider__marks"},e._l(e.markList,function(t,i){return n("slider-marker",{key:i,style:e.getStopStyle(t.position),attrs:{mark:t.mark}})}),1)]:e._e()],2)],1)},Jl=[];Ql._withStripped=!0;var Zl=n(41),eu=n.n(Zl),tu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{ref:"button",staticClass:"el-slider__button-wrapper",class:{hover:e.hovering,dragging:e.dragging},style:e.wrapperStyle,attrs:{tabindex:"0"},on:{mouseenter:e.handleMouseEnter,mouseleave:e.handleMouseLeave,mousedown:e.onButtonDown,touchstart:e.onButtonDown,focus:e.handleMouseEnter,blur:e.handleMouseLeave,keydown:[function(t){return"button"in t||!e._k(t.keyCode,"left",37,t.key,["Left","ArrowLeft"])?"button"in t&&0!==t.button?null:e.onLeftKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"right",39,t.key,["Right","ArrowRight"])?"button"in t&&2!==t.button?null:e.onRightKeyDown(t):null},function(t){return"button"in t||!e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?(t.preventDefault(),e.onLeftKeyDown(t)):null},function(t){return"button"in t||!e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?(t.preventDefault(),e.onRightKeyDown(t)):null}]}},[n("el-tooltip",{ref:"tooltip",attrs:{placement:"top","popper-class":e.tooltipClass,disabled:!e.showTooltip}},[n("span",{attrs:{slot:"content"},slot:"content"},[e._v(e._s(e.formatValue))]),n("div",{staticClass:"el-slider__button",class:{hover:e.hovering,dragging:e.dragging}})])],1)},nu=[];tu._withStripped=!0;var iu={name:"ElSliderButton",components:{ElTooltip:rt.a},props:{value:{type:Number,default:0},vertical:{type:Boolean,default:!1},tooltipClass:String},data:function(){return{hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:null,oldValue:this.value}},computed:{disabled:function(){return this.$parent.sliderDisabled},max:function(){return this.$parent.max},min:function(){return this.$parent.min},step:function(){return this.$parent.step},showTooltip:function(){return this.$parent.showTooltip},precision:function(){return this.$parent.precision},currentPosition:function(){return(this.value-this.min)/(this.max-this.min)*100+"%"},enableFormat:function(){return this.$parent.formatTooltip instanceof Function},formatValue:function(){return this.enableFormat&&this.$parent.formatTooltip(this.value)||this.value},wrapperStyle:function(){return this.vertical?{bottom:this.currentPosition}:{left:this.currentPosition}}},watch:{dragging:function(e){this.$parent.dragging=e}},methods:{displayTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!0)},hideTooltip:function(){this.$refs.tooltip&&(this.$refs.tooltip.showPopper=!1)},handleMouseEnter:function(){this.hovering=!0,this.displayTooltip()},handleMouseLeave:function(){this.hovering=!1,this.hideTooltip()},onButtonDown:function(e){this.disabled||(e.preventDefault(),this.onDragStart(e),window.addEventListener("mousemove",this.onDragging),window.addEventListener("touchmove",this.onDragging),window.addEventListener("mouseup",this.onDragEnd),window.addEventListener("touchend",this.onDragEnd),window.addEventListener("contextmenu",this.onDragEnd))},onLeftKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)-this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onRightKeyDown:function(){this.disabled||(this.newPosition=parseFloat(this.currentPosition)+this.step/(this.max-this.min)*100,this.setPosition(this.newPosition),this.$parent.emitChange())},onDragStart:function(e){this.dragging=!0,this.isClick=!0,"touchstart"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?this.startY=e.clientY:this.startX=e.clientX,this.startPosition=parseFloat(this.currentPosition),this.newPosition=this.startPosition},onDragging:function(e){if(this.dragging){this.isClick=!1,this.displayTooltip(),this.$parent.resetSize();var t=0;"touchmove"===e.type&&(e.clientY=e.touches[0].clientY,e.clientX=e.touches[0].clientX),this.vertical?(this.currentY=e.clientY,t=(this.startY-this.currentY)/this.$parent.sliderSize*100):(this.currentX=e.clientX,t=(this.currentX-this.startX)/this.$parent.sliderSize*100),this.newPosition=this.startPosition+t,this.setPosition(this.newPosition)}},onDragEnd:function(){var e=this;this.dragging&&(setTimeout(function(){e.dragging=!1,e.hideTooltip(),e.isClick||(e.setPosition(e.newPosition),e.$parent.emitChange())},0),window.removeEventListener("mousemove",this.onDragging),window.removeEventListener("touchmove",this.onDragging),window.removeEventListener("mouseup",this.onDragEnd),window.removeEventListener("touchend",this.onDragEnd),window.removeEventListener("contextmenu",this.onDragEnd))},setPosition:function(e){var t=this;if(null!==e&&!isNaN(e)){e<0?e=0:e>100&&(e=100);var n=100/((this.max-this.min)/this.step),i=Math.round(e/n),r=i*n*(this.max-this.min)*.01+this.min;r=parseFloat(r.toFixed(this.precision)),this.$emit("input",r),this.$nextTick(function(){t.displayTooltip(),t.$refs.tooltip&&t.$refs.tooltip.updatePopper()}),this.dragging||this.value===this.oldValue||(this.oldValue=this.value)}}}},ru=iu,ou=s(ru,tu,nu,!1,null,null,null);ou.options.__file="packages/slider/src/button.vue";var au=ou.exports,su={name:"ElMarker",props:{mark:{type:[String,Object]}},render:function(){var e=arguments[0],t="string"===typeof this.mark?this.mark:this.mark.label;return e("div",{class:"el-slider__marks-text",style:this.mark.style||{}},[t])}},cu={name:"ElSlider",mixins:[z.a],inject:{elForm:{default:""}},props:{min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:{type:[Number,Array],default:0},showInput:{type:Boolean,default:!1},showInputControls:{type:Boolean,default:!0},inputSize:{type:String,default:"small"},showStops:{type:Boolean,default:!1},showTooltip:{type:Boolean,default:!0},formatTooltip:Function,disabled:{type:Boolean,default:!1},range:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},height:{type:String},debounce:{type:Number,default:300},label:{type:String},tooltipClass:String,marks:Object},components:{ElInputNumber:eu.a,SliderButton:au,SliderMarker:su},data:function(){return{firstValue:null,secondValue:null,oldValue:null,dragging:!1,sliderSize:1}},watch:{value:function(e,t){this.dragging||Array.isArray(e)&&Array.isArray(t)&&e.every(function(e,n){return e===t[n]})||this.setValues()},dragging:function(e){e||this.setValues()},firstValue:function(e){this.range?this.$emit("input",[this.minValue,this.maxValue]):this.$emit("input",e)},secondValue:function(){this.range&&this.$emit("input",[this.minValue,this.maxValue])},min:function(){this.setValues()},max:function(){this.setValues()}},methods:{valueChanged:function(){var e=this;return this.range?![this.minValue,this.maxValue].every(function(t,n){return t===e.oldValue[n]}):this.value!==this.oldValue},setValues:function(){if(this.min>this.max)console.error("[Element Error][Slider]min should not be greater than max.");else{var e=this.value;this.range&&Array.isArray(e)?e[1]this.max?this.$emit("input",[this.max,this.max]):e[0]this.max?this.$emit("input",[e[0],this.max]):(this.firstValue=e[0],this.secondValue=e[1],this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",[this.minValue,this.maxValue]),this.oldValue=e.slice())):this.range||"number"!==typeof e||isNaN(e)||(ethis.max?this.$emit("input",this.max):(this.firstValue=e,this.valueChanged()&&(this.dispatch("ElFormItem","el.form.change",e),this.oldValue=e)))}},setPosition:function(e){var t=this.min+e*(this.max-this.min)/100;if(this.range){var n=void 0;n=Math.abs(this.minValue-t)this.secondValue?"button1":"button2",this.$refs[n].setPosition(e)}else this.$refs.button1.setPosition(e)},onSliderClick:function(e){if(!this.sliderDisabled&&!this.dragging){if(this.resetSize(),this.vertical){var t=this.$refs.slider.getBoundingClientRect().bottom;this.setPosition((t-e.clientY)/this.sliderSize*100)}else{var n=this.$refs.slider.getBoundingClientRect().left;this.setPosition((e.clientX-n)/this.sliderSize*100)}this.emitChange()}},resetSize:function(){this.$refs.slider&&(this.sliderSize=this.$refs.slider["client"+(this.vertical?"Height":"Width")])},emitChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.range?[e.minValue,e.maxValue]:e.value)})},getStopStyle:function(e){return this.vertical?{bottom:e+"%"}:{left:e+"%"}}},computed:{stops:function(){var e=this;if(!this.showStops||this.min>this.max)return[];if(0===this.step)return[];for(var t=(this.max-this.min)/this.step,n=100*this.step/(this.max-this.min),i=[],r=1;r100*(e.maxValue-e.min)/(e.max-e.min)}):i.filter(function(t){return t>100*(e.firstValue-e.min)/(e.max-e.min)})},markList:function(){var e=this;if(!this.marks)return[];var t=Object.keys(this.marks);return t.map(parseFloat).sort(function(e,t){return e-t}).filter(function(t){return t<=e.max&&t>=e.min}).map(function(t){return{point:t,position:100*(t-e.min)/(e.max-e.min),mark:e.marks[t]}})},minValue:function(){return Math.min(this.firstValue,this.secondValue)},maxValue:function(){return Math.max(this.firstValue,this.secondValue)},barSize:function(){return this.range?100*(this.maxValue-this.minValue)/(this.max-this.min)+"%":100*(this.firstValue-this.min)/(this.max-this.min)+"%"},barStart:function(){return this.range?100*(this.minValue-this.min)/(this.max-this.min)+"%":"0%"},precision:function(){var e=[this.min,this.max,this.step].map(function(e){var t=(""+e).split(".")[1];return t?t.length:0});return Math.max.apply(null,e)},runwayStyle:function(){return this.vertical?{height:this.height}:{}},barStyle:function(){return this.vertical?{height:this.barSize,bottom:this.barStart}:{width:this.barSize,left:this.barStart}},sliderDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},mounted:function(){var e=void 0;this.range?(Array.isArray(this.value)?(this.firstValue=Math.max(this.min,this.value[0]),this.secondValue=Math.min(this.max,this.value[1])):(this.firstValue=this.min,this.secondValue=this.max),this.oldValue=[this.firstValue,this.secondValue],e=this.firstValue+"-"+this.secondValue):("number"!==typeof this.value||isNaN(this.value)?this.firstValue=this.min:this.firstValue=Math.min(this.max,Math.max(this.min,this.value)),this.oldValue=this.firstValue,e=this.firstValue),this.$el.setAttribute("aria-valuetext",e),this.$el.setAttribute("aria-label",this.label?this.label:"slider between "+this.min+" and "+this.max),this.resetSize(),window.addEventListener("resize",this.resetSize)},beforeDestroy:function(){window.removeEventListener("resize",this.resetSize)}},lu=cu,uu=s(lu,Ql,Jl,!1,null,null,null);uu.options.__file="packages/slider/src/main.vue";var hu=uu.exports;hu.install=function(e){e.component(hu.name,hu)};var du=hu,fu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-loading-fade"},on:{"after-leave":e.handleAfterLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-loading-mask",class:[e.customClass,{"is-fullscreen":e.fullscreen}],style:{backgroundColor:e.background||""}},[n("div",{staticClass:"el-loading-spinner"},[e.spinner?n("i",{class:e.spinner}):n("svg",{staticClass:"circular",attrs:{viewBox:"25 25 50 50"}},[n("circle",{staticClass:"path",attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]),e.text?n("p",{staticClass:"el-loading-text"},[e._v(e._s(e.text))]):e._e()])])])},pu=[];fu._withStripped=!0;var vu={data:function(){return{text:null,spinner:null,background:null,fullscreen:!0,visible:!1,customClass:""}},methods:{handleAfterLeave:function(){this.$emit("after-leave")},setText:function(e){this.text=e}}},mu=vu,gu=s(mu,fu,pu,!1,null,null,null);gu.options.__file="packages/loading/src/loading.vue";var bu=gu.exports,yu=n(31),_u=n.n(yu),Cu=Wi.a.extend(bu),wu={install:function(e){if(!e.prototype.$isServer){var t=function(t,i){i.value?e.nextTick(function(){i.modifiers.fullscreen?(t.originalPosition=Object(Pe["getStyle"])(document.body,"position"),t.originalOverflow=Object(Pe["getStyle"])(document.body,"overflow"),t.maskStyle.zIndex=x["PopupManager"].nextZIndex(),Object(Pe["addClass"])(t.mask,"is-fullscreen"),n(document.body,t,i)):(Object(Pe["removeClass"])(t.mask,"is-fullscreen"),i.modifiers.body?(t.originalPosition=Object(Pe["getStyle"])(document.body,"position"),["top","left"].forEach(function(e){var n="top"===e?"scrollTop":"scrollLeft";t.maskStyle[e]=t.getBoundingClientRect()[e]+document.body[n]+document.documentElement[n]-parseInt(Object(Pe["getStyle"])(document.body,"margin-"+e),10)+"px"}),["height","width"].forEach(function(e){t.maskStyle[e]=t.getBoundingClientRect()[e]+"px"}),n(document.body,t,i)):(t.originalPosition=Object(Pe["getStyle"])(t,"position"),n(t,t,i)))}):(_u()(t.instance,function(e){if(t.instance.hiding){t.domVisible=!1;var n=i.modifiers.fullscreen||i.modifiers.body?document.body:t;Object(Pe["removeClass"])(n,"el-loading-parent--relative"),Object(Pe["removeClass"])(n,"el-loading-parent--hidden"),t.instance.hiding=!1}},300,!0),t.instance.visible=!1,t.instance.hiding=!0)},n=function(t,n,i){n.domVisible||"none"===Object(Pe["getStyle"])(n,"display")||"hidden"===Object(Pe["getStyle"])(n,"visibility")?n.domVisible&&!0===n.instance.hiding&&(n.instance.visible=!0,n.instance.hiding=!1):(Object.keys(n.maskStyle).forEach(function(e){n.mask.style[e]=n.maskStyle[e]}),"absolute"!==n.originalPosition&&"fixed"!==n.originalPosition&&Object(Pe["addClass"])(t,"el-loading-parent--relative"),i.modifiers.fullscreen&&i.modifiers.lock&&Object(Pe["addClass"])(t,"el-loading-parent--hidden"),n.domVisible=!0,t.appendChild(n.mask),e.nextTick(function(){n.instance.hiding?n.instance.$emit("after-leave"):n.instance.visible=!0}),n.domInserted=!0)};e.directive("loading",{bind:function(e,n,i){var r=e.getAttribute("element-loading-text"),o=e.getAttribute("element-loading-spinner"),a=e.getAttribute("element-loading-background"),s=e.getAttribute("element-loading-custom-class"),c=i.context,l=new Cu({el:document.createElement("div"),data:{text:c&&c[r]||r,spinner:c&&c[o]||o,background:c&&c[a]||a,customClass:c&&c[s]||s,fullscreen:!!n.modifiers.fullscreen}});e.instance=l,e.mask=l.$el,e.maskStyle={},n.value&&t(e,n)},update:function(e,n){e.instance.setText(e.getAttribute("element-loading-text")),n.oldValue!==n.value&&t(e,n)},unbind:function(e,n){e.domInserted&&(e.mask&&e.mask.parentNode&&e.mask.parentNode.removeChild(e.mask),t(e,{value:!1,modifiers:n.modifiers})),e.instance&&e.instance.$destroy()}})}}},xu=wu,Su=Wi.a.extend(bu),Eu={text:null,fullscreen:!0,body:!1,lock:!1,customClass:""},Ou=void 0;Su.prototype.originalPosition="",Su.prototype.originalOverflow="",Su.prototype.close=function(){var e=this;this.fullscreen&&(Ou=void 0),_u()(this,function(t){var n=e.fullscreen||e.body?document.body:e.target;Object(Pe["removeClass"])(n,"el-loading-parent--relative"),Object(Pe["removeClass"])(n,"el-loading-parent--hidden"),e.$el&&e.$el.parentNode&&e.$el.parentNode.removeChild(e.$el),e.$destroy()},300),this.visible=!1};var Mu=function(e,t,n){var i={};e.fullscreen?(n.originalPosition=Object(Pe["getStyle"])(document.body,"position"),n.originalOverflow=Object(Pe["getStyle"])(document.body,"overflow"),i.zIndex=x["PopupManager"].nextZIndex()):e.body?(n.originalPosition=Object(Pe["getStyle"])(document.body,"position"),["top","left"].forEach(function(t){var n="top"===t?"scrollTop":"scrollLeft";i[t]=e.target.getBoundingClientRect()[t]+document.body[n]+document.documentElement[n]+"px"}),["height","width"].forEach(function(t){i[t]=e.target.getBoundingClientRect()[t]+"px"})):n.originalPosition=Object(Pe["getStyle"])(t,"position"),Object.keys(i).forEach(function(e){n.$el.style[e]=i[e]})},zu=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Wi.a.prototype.$isServer){if(e=Et()({},Eu,e),"string"===typeof e.target&&(e.target=document.querySelector(e.target)),e.target=e.target||document.body,e.target!==document.body?e.fullscreen=!1:e.body=!0,e.fullscreen&&Ou)return Ou;var t=e.body?document.body:e.target,n=new Su({el:document.createElement("div"),data:e});return Mu(e,t,n),"absolute"!==n.originalPosition&&"fixed"!==n.originalPosition&&Object(Pe["addClass"])(t,"el-loading-parent--relative"),e.fullscreen&&e.lock&&Object(Pe["addClass"])(t,"el-loading-parent--hidden"),t.appendChild(n.$el),Wi.a.nextTick(function(){n.visible=!0}),e.fullscreen&&(Ou=n),n}},ku=zu,Tu={install:function(e){e.use(xu),e.prototype.$loading=ku},directive:xu,service:ku},Lu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("i",{class:"el-icon-"+e.name})},Au=[];Lu._withStripped=!0;var Hu={name:"ElIcon",props:{name:String}},Vu=Hu,Nu=s(Vu,Lu,Au,!1,null,null,null);Nu.options.__file="packages/icon/src/icon.vue";var Iu=Nu.exports;Iu.install=function(e){e.component(Iu.name,Iu)};var Du=Iu,Pu={name:"ElRow",componentName:"ElRow",props:{tag:{type:String,default:"div"},gutter:Number,type:String,justify:{type:String,default:"start"},align:{type:String,default:"top"}},computed:{style:function(){var e={};return this.gutter&&(e.marginLeft="-"+this.gutter/2+"px",e.marginRight=e.marginLeft),e}},render:function(e){return e(this.tag,{class:["el-row","start"!==this.justify?"is-justify-"+this.justify:"","top"!==this.align?"is-align-"+this.align:"",{"el-row--flex":"flex"===this.type}],style:this.style},this.$slots.default)},install:function(e){e.component(Pu.name,Pu)}},$u=Pu,Ru="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},ju={name:"ElCol",props:{span:{type:Number,default:24},tag:{type:String,default:"div"},offset:Number,pull:Number,push:Number,xs:[Number,Object],sm:[Number,Object],md:[Number,Object],lg:[Number,Object],xl:[Number,Object]},computed:{gutter:function(){var e=this.$parent;while(e&&"ElRow"!==e.$options.componentName)e=e.$parent;return e?e.gutter:0}},render:function(e){var t=this,n=[],i={};return this.gutter&&(i.paddingLeft=this.gutter/2+"px",i.paddingRight=i.paddingLeft),["span","offset","pull","push"].forEach(function(e){(t[e]||0===t[e])&&n.push("span"!==e?"el-col-"+e+"-"+t[e]:"el-col-"+t[e])}),["xs","sm","md","lg","xl"].forEach(function(e){if("number"===typeof t[e])n.push("el-col-"+e+"-"+t[e]);else if("object"===Ru(t[e])){var i=t[e];Object.keys(i).forEach(function(t){n.push("span"!==t?"el-col-"+e+"-"+t+"-"+i[t]:"el-col-"+e+"-"+i[t])})}}),e(this.tag,{class:["el-col",n],style:i},this.$slots.default)},install:function(e){e.component(ju.name,ju)}},Fu=ju,Bu=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition-group",{class:["el-upload-list","el-upload-list--"+e.listType,{"is-disabled":e.disabled}],attrs:{tag:"ul",name:"el-list"}},e._l(e.files,function(t){return n("li",{key:t.uid,class:["el-upload-list__item","is-"+t.status,e.focusing?"focusing":""],attrs:{tabindex:"0"},on:{keydown:function(n){if(!("button"in n)&&e._k(n.keyCode,"delete",[8,46],n.key,["Backspace","Delete","Del"]))return null;!e.disabled&&e.$emit("remove",t)},focus:function(t){e.focusing=!0},blur:function(t){e.focusing=!1},click:function(t){e.focusing=!1}}},["uploading"!==t.status&&["picture-card","picture"].indexOf(e.listType)>-1?n("img",{staticClass:"el-upload-list__item-thumbnail",attrs:{src:t.url,alt:""}}):e._e(),n("a",{staticClass:"el-upload-list__item-name",on:{click:function(n){e.handleClick(t)}}},[n("i",{staticClass:"el-icon-document"}),e._v(e._s(t.name)+"\n ")]),n("label",{staticClass:"el-upload-list__item-status-label"},[n("i",{class:{"el-icon-upload-success":!0,"el-icon-circle-check":"text"===e.listType,"el-icon-check":["picture-card","picture"].indexOf(e.listType)>-1}})]),e.disabled?e._e():n("i",{staticClass:"el-icon-close",on:{click:function(n){e.$emit("remove",t)}}}),e.disabled?e._e():n("i",{staticClass:"el-icon-close-tip"},[e._v(e._s(e.t("el.upload.deleteTip")))]),"uploading"===t.status?n("el-progress",{attrs:{type:"picture-card"===e.listType?"circle":"line","stroke-width":"picture-card"===e.listType?6:2,percentage:e.parsePercentage(t.percentage)}}):e._e(),"picture-card"===e.listType?n("span",{staticClass:"el-upload-list__item-actions"},[e.handlePreview&&"picture-card"===e.listType?n("span",{staticClass:"el-upload-list__item-preview",on:{click:function(n){e.handlePreview(t)}}},[n("i",{staticClass:"el-icon-zoom-in"})]):e._e(),e.disabled?e._e():n("span",{staticClass:"el-upload-list__item-delete",on:{click:function(n){e.$emit("remove",t)}}},[n("i",{staticClass:"el-icon-delete"})])]):e._e()],1)}),0)},Wu=[];Bu._withStripped=!0;var Uu=n(32),Ku=n.n(Uu),qu={name:"ElUploadList",mixins:[g.a],data:function(){return{focusing:!1}},components:{ElProgress:Ku.a},props:{files:{type:Array,default:function(){return[]}},disabled:{type:Boolean,default:!1},handlePreview:Function,listType:String},methods:{parsePercentage:function(e){return parseInt(e,10)},handleClick:function(e){this.handlePreview&&this.handlePreview(e)}}},Gu=qu,Yu=s(Gu,Bu,Wu,!1,null,null,null);Yu.options.__file="packages/upload/src/upload-list.vue";var Xu=Yu.exports,Qu=n(24),Ju=n.n(Qu);function Zu(e,t,n){var i=void 0;i=n.response?""+(n.response.error||n.response):n.responseText?""+n.responseText:"fail to post "+e+" "+n.status;var r=new Error(i);return r.status=n.status,r.method="post",r.url=e,r}function eh(e){var t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch(n){return t}}function th(e){if("undefined"!==typeof XMLHttpRequest){var t=new XMLHttpRequest,n=e.action;t.upload&&(t.upload.onprogress=function(t){t.total>0&&(t.percent=t.loaded/t.total*100),e.onProgress(t)});var i=new FormData;e.data&&Object.keys(e.data).forEach(function(t){i.append(t,e.data[t])}),i.append(e.filename,e.file,e.file.name),t.onerror=function(t){e.onError(t)},t.onload=function(){if(t.status<200||t.status>=300)return e.onError(Zu(n,e,t));e.onSuccess(eh(t))},t.open("post",n,!0),e.withCredentials&&"withCredentials"in t&&(t.withCredentials=!0);var r=e.headers||{};for(var o in r)r.hasOwnProperty(o)&&null!==r[o]&&t.setRequestHeader(o,r[o]);return t.send(i),t}}var nh=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-upload-dragger",class:{"is-dragover":e.dragover},on:{drop:function(t){return t.preventDefault(),e.onDrop(t)},dragover:function(t){return t.preventDefault(),e.onDragover(t)},dragleave:function(t){t.preventDefault(),e.dragover=!1}}},[e._t("default")],2)},ih=[];nh._withStripped=!0;var rh={name:"ElUploadDrag",props:{disabled:Boolean},inject:{uploader:{default:""}},data:function(){return{dragover:!1}},methods:{onDragover:function(){this.disabled||(this.dragover=!0)},onDrop:function(e){if(!this.disabled&&this.uploader){var t=this.uploader.accept;this.dragover=!1,t?this.$emit("file",[].slice.call(e.dataTransfer.files).filter(function(e){var n=e.type,i=e.name,r=i.indexOf(".")>-1?"."+i.split(".").pop():"",o=n.replace(/\/.*$/,"");return t.split(",").map(function(e){return e.trim()}).filter(function(e){return e}).some(function(e){return/\..+$/.test(e)?r===e:/\/\*$/.test(e)?o===e.replace(/\/\*$/,""):!!/^[^\/]+\/[^\/]+$/.test(e)&&n===e})})):this.$emit("file",e.dataTransfer.files)}}}},oh=rh,ah=s(oh,nh,ih,!1,null,null,null);ah.options.__file="packages/upload/src/upload-dragger.vue";var sh,ch,lh=ah.exports,uh={inject:["uploader"],components:{UploadDragger:lh},props:{type:String,action:{type:String,required:!0},name:{type:String,default:"file"},data:Object,headers:Object,withCredentials:Boolean,multiple:Boolean,accept:String,onStart:Function,onProgress:Function,onSuccess:Function,onError:Function,beforeUpload:Function,drag:Boolean,onPreview:{type:Function,default:function(){}},onRemove:{type:Function,default:function(){}},fileList:Array,autoUpload:Boolean,listType:String,httpRequest:{type:Function,default:th},disabled:Boolean,limit:Number,onExceed:Function},data:function(){return{mouseover:!1,reqs:{}}},methods:{isImage:function(e){return-1!==e.indexOf("image")},handleChange:function(e){var t=e.target.files;t&&this.uploadFiles(t)},uploadFiles:function(e){var t=this;if(this.limit&&this.fileList.length+e.length>this.limit)this.onExceed&&this.onExceed(e,this.fileList);else{var n=Array.prototype.slice.call(e);this.multiple||(n=n.slice(0,1)),0!==n.length&&n.forEach(function(e){t.onStart(e),t.autoUpload&&t.upload(e)})}},upload:function(e){var t=this;if(this.$refs.input.value=null,!this.beforeUpload)return this.post(e);var n=this.beforeUpload(e);n&&n.then?n.then(function(n){var i=Object.prototype.toString.call(n);if("[object File]"===i||"[object Blob]"===i){for(var r in"[object Blob]"===i&&(n=new File([n],e.name,{type:e.type})),e)e.hasOwnProperty(r)&&(n[r]=e[r]);t.post(n)}else t.post(e)},function(){t.onRemove(null,e)}):!1!==n?this.post(e):this.onRemove(null,e)},abort:function(e){var t=this.reqs;if(e){var n=e;e.uid&&(n=e.uid),t[n]&&t[n].abort()}else Object.keys(t).forEach(function(e){t[e]&&t[e].abort(),delete t[e]})},post:function(e){var t=this,n=e.uid,i={headers:this.headers,withCredentials:this.withCredentials,file:e,data:this.data,filename:this.name,action:this.action,onProgress:function(n){t.onProgress(n,e)},onSuccess:function(i){t.onSuccess(i,e),delete t.reqs[n]},onError:function(i){t.onError(i,e),delete t.reqs[n]}},r=this.httpRequest(i);this.reqs[n]=r,r&&r.then&&r.then(i.onSuccess,i.onError)},handleClick:function(){this.disabled||(this.$refs.input.value=null,this.$refs.input.click())},handleKeydown:function(e){e.target===e.currentTarget&&(13!==e.keyCode&&32!==e.keyCode||this.handleClick())}},render:function(e){var t=this.handleClick,n=this.drag,i=this.name,r=this.handleChange,o=this.multiple,a=this.accept,s=this.listType,c=this.uploadFiles,l=this.disabled,u=this.handleKeydown,h={class:{"el-upload":!0},on:{click:t,keydown:u}};return h.class["el-upload--"+s]=!0,e("div",Ju()([h,{attrs:{tabindex:"0"}}]),[n?e("upload-dragger",{attrs:{disabled:l},on:{file:c}},[this.$slots.default]):this.$slots.default,e("input",{class:"el-upload__input",attrs:{type:"file",name:i,multiple:o,accept:a},ref:"input",on:{change:r}})])}},hh=uh,dh=s(hh,sh,ch,!1,null,null,null);dh.options.__file="packages/upload/src/upload.vue";var fh=dh.exports;function ph(){}var vh,mh,gh={name:"ElUpload",mixins:[O.a],components:{ElProgress:Ku.a,UploadList:Xu,Upload:fh},provide:function(){return{uploader:this}},inject:{elForm:{default:""}},props:{action:{type:String,required:!0},headers:{type:Object,default:function(){return{}}},data:Object,multiple:Boolean,name:{type:String,default:"file"},drag:Boolean,dragger:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:String,type:{type:String,default:"select"},beforeUpload:Function,beforeRemove:Function,onRemove:{type:Function,default:ph},onChange:{type:Function,default:ph},onPreview:{type:Function},onSuccess:{type:Function,default:ph},onProgress:{type:Function,default:ph},onError:{type:Function,default:ph},fileList:{type:Array,default:function(){return[]}},autoUpload:{type:Boolean,default:!0},listType:{type:String,default:"text"},httpRequest:Function,disabled:Boolean,limit:Number,onExceed:{type:Function,default:ph}},data:function(){return{uploadFiles:[],dragOver:!1,draging:!1,tempIndex:1}},computed:{uploadDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{listType:function(e){"picture-card"!==e&&"picture"!==e||(this.uploadFiles=this.uploadFiles.map(function(e){if(!e.url&&e.raw)try{e.url=URL.createObjectURL(e.raw)}catch(t){console.error("[Element Error][Upload]",t)}return e}))},fileList:{immediate:!0,handler:function(e){var t=this;this.uploadFiles=e.map(function(e){return e.uid=e.uid||Date.now()+t.tempIndex++,e.status=e.status||"success",e})}}},methods:{handleStart:function(e){e.uid=Date.now()+this.tempIndex++;var t={status:"ready",name:e.name,size:e.size,percentage:0,uid:e.uid,raw:e};if("picture-card"===this.listType||"picture"===this.listType)try{t.url=URL.createObjectURL(e)}catch(n){return void console.error("[Element Error][Upload]",n)}this.uploadFiles.push(t),this.onChange(t,this.uploadFiles)},handleProgress:function(e,t){var n=this.getFile(t);this.onProgress(e,n,this.uploadFiles),n.status="uploading",n.percentage=e.percent||0},handleSuccess:function(e,t){var n=this.getFile(t);n&&(n.status="success",n.response=e,this.onSuccess(e,n,this.uploadFiles),this.onChange(n,this.uploadFiles))},handleError:function(e,t){var n=this.getFile(t),i=this.uploadFiles;n.status="fail",i.splice(i.indexOf(n),1),this.onError(e,n,this.uploadFiles),this.onChange(n,this.uploadFiles)},handleRemove:function(e,t){var n=this;t&&(e=this.getFile(t));var i=function(){n.abort(e);var t=n.uploadFiles;t.splice(t.indexOf(e),1),n.onRemove(e,t)};if(this.beforeRemove){if("function"===typeof this.beforeRemove){var r=this.beforeRemove(e,this.uploadFiles);r&&r.then?r.then(function(){i()},ph):!1!==r&&i()}}else i()},getFile:function(e){var t=this.uploadFiles,n=void 0;return t.every(function(t){return n=e.uid===t.uid?t:null,!n}),n},abort:function(e){this.$refs["upload-inner"].abort(e)},clearFiles:function(){this.uploadFiles=[]},submit:function(){var e=this;this.uploadFiles.filter(function(e){return"ready"===e.status}).forEach(function(t){e.$refs["upload-inner"].upload(t.raw)})},getMigratingConfig:function(){return{props:{"default-file-list":"default-file-list is renamed to file-list.","show-upload-list":"show-upload-list is renamed to show-file-list.","thumbnail-mode":"thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan"}}}},beforeDestroy:function(){this.uploadFiles.forEach(function(e){e.url&&0===e.url.indexOf("blob:")&&URL.revokeObjectURL(e.url)})},render:function(e){var t=void 0;this.showFileList&&(t=e(Xu,{attrs:{disabled:this.uploadDisabled,listType:this.listType,files:this.uploadFiles,handlePreview:this.onPreview},on:{remove:this.handleRemove}}));var n={props:{type:this.type,drag:this.drag,action:this.action,multiple:this.multiple,"before-upload":this.beforeUpload,"with-credentials":this.withCredentials,headers:this.headers,name:this.name,data:this.data,accept:this.accept,fileList:this.uploadFiles,autoUpload:this.autoUpload,listType:this.listType,disabled:this.uploadDisabled,limit:this.limit,"on-exceed":this.onExceed,"on-start":this.handleStart,"on-progress":this.handleProgress,"on-success":this.handleSuccess,"on-error":this.handleError,"on-preview":this.onPreview,"on-remove":this.handleRemove,"http-request":this.httpRequest},ref:"upload-inner"},i=this.$slots.trigger||this.$slots.default,r=e("upload",n,[i]);return e("div",["picture-card"===this.listType?t:"",this.$slots.trigger?[r,this.$slots.default]:r,this.$slots.tip,"picture-card"!==this.listType?t:""])}},bh=gh,yh=s(bh,vh,mh,!1,null,null,null);yh.options.__file="packages/upload/src/index.vue";var _h=yh.exports;_h.install=function(e){e.component(_h.name,_h)};var Ch=_h,wh=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?n("div",{staticClass:"el-progress-bar"},[n("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[n("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?n("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):n("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[n("svg",{attrs:{viewBox:"0 0 100 100"}},[n("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),n("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":"round","stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?n("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?n("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])},xh=[];wh._withStripped=!0;var Sh={name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){var e=-1*this.perimeter*(1-this.rate)/2;return e+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"===typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"===typeof this.color?this.color(e):"string"===typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),n=0;ne)return t[n].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,n){return"string"===typeof e?{color:e,progress:(n+1)*t}:e})}}},Eh=Sh,Oh=s(Eh,wh,xh,!1,null,null,null);Oh.options.__file="packages/progress/src/progress.vue";var Mh=Oh.exports;Mh.install=function(e){e.component(Mh.name,Mh)};var zh=Mh,kh=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("span",{staticClass:"el-spinner"},[n("svg",{staticClass:"el-spinner-inner",style:{width:e.radius/2+"px",height:e.radius/2+"px"},attrs:{viewBox:"0 0 50 50"}},[n("circle",{staticClass:"path",attrs:{cx:"25",cy:"25",r:"20",fill:"none",stroke:e.strokeColor,"stroke-width":e.strokeWidth}})])])},Th=[];kh._withStripped=!0;var Lh={name:"ElSpinner",props:{type:String,radius:{type:Number,default:100},strokeWidth:{type:Number,default:5},strokeColor:{type:String,default:"#efefef"}}},Ah=Lh,Hh=s(Ah,kh,Th,!1,null,null,null);Hh.options.__file="packages/spinner/src/spinner.vue";var Vh=Hh.exports;Vh.install=function(e){e.component(Vh.name,Vh)};var Nh=Vh,Ih=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-message-fade"},on:{"after-leave":e.handleAfterLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],class:["el-message",e.type&&!e.iconClass?"el-message--"+e.type:"",e.center?"is-center":"",e.showClose?"is-closable":"",e.customClass],style:e.positionStyle,attrs:{role:"alert"},on:{mouseenter:e.clearTimer,mouseleave:e.startTimer}},[e.iconClass?n("i",{class:e.iconClass}):n("i",{class:e.typeClass}),e._t("default",[e.dangerouslyUseHTMLString?n("p",{staticClass:"el-message__content",domProps:{innerHTML:e._s(e.message)}}):n("p",{staticClass:"el-message__content"},[e._v(e._s(e.message))])]),e.showClose?n("i",{staticClass:"el-message__closeBtn el-icon-close",on:{click:e.close}}):e._e()],2)])},Dh=[];Ih._withStripped=!0;var Ph={success:"success",info:"info",warning:"warning",error:"error"},$h={data:function(){return{visible:!1,message:"",duration:3e3,type:"info",iconClass:"",customClass:"",onClose:null,showClose:!1,closed:!1,verticalOffset:20,timer:null,dangerouslyUseHTMLString:!1,center:!1}},computed:{typeClass:function(){return this.type&&!this.iconClass?"el-message__icon el-icon-"+Ph[this.type]:""},positionStyle:function(){return{top:this.verticalOffset+"px"}}},watch:{closed:function(e){e&&(this.visible=!1)}},methods:{handleAfterLeave:function(){this.$destroy(!0),this.$el.parentNode.removeChild(this.$el)},close:function(){this.closed=!0,"function"===typeof this.onClose&&this.onClose(this)},clearTimer:function(){clearTimeout(this.timer)},startTimer:function(){var e=this;this.duration>0&&(this.timer=setTimeout(function(){e.closed||e.close()},this.duration))},keydown:function(e){27===e.keyCode&&(this.closed||this.close())}},mounted:function(){this.startTimer(),document.addEventListener("keydown",this.keydown)},beforeDestroy:function(){document.removeEventListener("keydown",this.keydown)}},Rh=$h,jh=s(Rh,Ih,Dh,!1,null,null,null);jh.options.__file="packages/message/src/main.vue";var Fh=jh.exports,Bh=Wi.a.extend(Fh),Wh=void 0,Uh=[],Kh=1,qh=function e(t){if(!Wi.a.prototype.$isServer){t=t||{},"string"===typeof t&&(t={message:t});var n=t.onClose,i="message_"+Kh++;t.onClose=function(){e.close(i,n)},Wh=new Bh({data:t}),Wh.id=i,Object(Ss["isVNode"])(Wh.message)&&(Wh.$slots.default=[Wh.message],Wh.message=null),Wh.$mount(),document.body.appendChild(Wh.$el);var r=t.offset||20;return Uh.forEach(function(e){r+=e.$el.offsetHeight+16}),Wh.verticalOffset=r,Wh.visible=!0,Wh.$el.style.zIndex=x["PopupManager"].nextZIndex(),Uh.push(Wh),Wh}};["success","warning","info","error"].forEach(function(e){qh[e]=function(t){return"string"===typeof t&&(t={message:t}),t.type=e,qh(t)}}),qh.close=function(e,t){for(var n=Uh.length,i=-1,r=0;rUh.length-1))for(var o=Uh[i].$el.offsetHeight,a=i;a=0;e--)Uh[e].close()};var Gh=qh,Yh=Gh,Xh=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-badge"},[e._t("default"),n("transition",{attrs:{name:"el-zoom-in-center"}},[n("sup",{directives:[{name:"show",rawName:"v-show",value:!e.hidden&&(e.content||0===e.content||e.isDot),expression:"!hidden && (content || content === 0 || isDot)"}],staticClass:"el-badge__content",class:["el-badge__content--"+e.type,{"is-fixed":e.$slots.default,"is-dot":e.isDot}],domProps:{textContent:e._s(e.content)}})])],2)},Qh=[];Xh._withStripped=!0;var Jh={name:"ElBadge",props:{value:{},max:Number,isDot:Boolean,hidden:Boolean,type:{type:String,validator:function(e){return["primary","success","warning","info","danger"].indexOf(e)>-1}}},computed:{content:function(){if(!this.isDot){var e=this.value,t=this.max;return"number"===typeof e&&"number"===typeof t&&t0&&e-1this.value,n=this.allowHalf&&this.pointerAtLeftHalf&&e-.5<=this.currentValue&&e>this.currentValue;return t||n},getIconStyle:function(e){var t=this.rateDisabled?this.disabledVoidColor:this.voidColor;return{color:e<=this.currentValue?this.activeColor:t}},selectValue:function(e){this.rateDisabled||(this.allowHalf&&this.pointerAtLeftHalf?(this.$emit("input",this.currentValue),this.$emit("change",this.currentValue)):(this.$emit("input",e),this.$emit("change",e)))},handleKey:function(e){if(!this.rateDisabled){var t=this.currentValue,n=e.keyCode;38===n||39===n?(this.allowHalf?t+=.5:t+=1,e.stopPropagation(),e.preventDefault()):37!==n&&40!==n||(this.allowHalf?t-=.5:t-=1,e.stopPropagation(),e.preventDefault()),t=t<0?0:t,t=t>this.max?this.max:t,this.$emit("input",t),this.$emit("change",t)}},setCurrentValue:function(e,t){if(!this.rateDisabled){if(this.allowHalf){var n=t.target;Object(Pe["hasClass"])(n,"el-rate__item")&&(n=n.querySelector(".el-rate__icon")),Object(Pe["hasClass"])(n,"el-rate__decimal")&&(n=n.parentNode),this.pointerAtLeftHalf=2*t.offsetX<=n.clientWidth,this.currentValue=this.pointerAtLeftHalf?e-.5:e}else this.currentValue=e;this.hoverIndex=e}},resetCurrentValue:function(){this.rateDisabled||(this.allowHalf&&(this.pointerAtLeftHalf=this.value!==Math.floor(this.value)),this.currentValue=this.value,this.hoverIndex=-1)}},created:function(){this.value||this.$emit("input",0)}},pd=fd,vd=s(pd,ud,hd,!1,null,null,null);vd.options.__file="packages/rate/src/main.vue";var md=vd.exports;md.install=function(e){e.component(md.name,md)};var gd=md,bd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-steps",class:[!e.simple&&"el-steps--"+e.direction,e.simple&&"el-steps--simple"]},[e._t("default")],2)},yd=[];bd._withStripped=!0;var _d={name:"ElSteps",mixins:[O.a],props:{space:[Number,String],active:Number,direction:{type:String,default:"horizontal"},alignCenter:Boolean,simple:Boolean,finishStatus:{type:String,default:"finish"},processStatus:{type:String,default:"process"}},data:function(){return{steps:[],stepOffset:0}},methods:{getMigratingConfig:function(){return{props:{center:"center is removed."}}}},watch:{active:function(e,t){this.$emit("change",e,t)},steps:function(e){e.forEach(function(e,t){e.index=t})}}},Cd=_d,wd=s(Cd,bd,yd,!1,null,null,null);wd.options.__file="packages/steps/src/steps.vue";var xd=wd.exports;xd.install=function(e){e.component(xd.name,xd)};var Sd=xd,Ed=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-step",class:[!e.isSimple&&"is-"+e.$parent.direction,e.isSimple&&"is-simple",e.isLast&&!e.space&&!e.isCenter&&"is-flex",e.isCenter&&!e.isVertical&&!e.isSimple&&"is-center"],style:e.style},[n("div",{staticClass:"el-step__head",class:"is-"+e.currentStatus},[n("div",{staticClass:"el-step__line",style:e.isLast?"":{marginRight:e.$parent.stepOffset+"px"}},[n("i",{staticClass:"el-step__line-inner",style:e.lineStyle})]),n("div",{staticClass:"el-step__icon",class:"is-"+(e.icon?"icon":"text")},["success"!==e.currentStatus&&"error"!==e.currentStatus?e._t("icon",[e.icon?n("i",{staticClass:"el-step__icon-inner",class:[e.icon]}):e._e(),e.icon||e.isSimple?e._e():n("div",{staticClass:"el-step__icon-inner"},[e._v(e._s(e.index+1))])]):n("i",{staticClass:"el-step__icon-inner is-status",class:["el-icon-"+("success"===e.currentStatus?"check":"close")]})],2)]),n("div",{staticClass:"el-step__main"},[n("div",{ref:"title",staticClass:"el-step__title",class:["is-"+e.currentStatus]},[e._t("title",[e._v(e._s(e.title))])],2),e.isSimple?n("div",{staticClass:"el-step__arrow"}):n("div",{staticClass:"el-step__description",class:["is-"+e.currentStatus]},[e._t("description",[e._v(e._s(e.description))])],2)])])},Od=[];Ed._withStripped=!0;var Md={name:"ElStep",props:{title:String,icon:String,description:String,status:String},data:function(){return{index:-1,lineStyle:{},internalStatus:""}},beforeCreate:function(){this.$parent.steps.push(this)},beforeDestroy:function(){var e=this.$parent.steps,t=e.indexOf(this);t>=0&&e.splice(t,1)},computed:{currentStatus:function(){return this.status||this.internalStatus},prevStatus:function(){var e=this.$parent.steps[this.index-1];return e?e.currentStatus:"wait"},isCenter:function(){return this.$parent.alignCenter},isVertical:function(){return"vertical"===this.$parent.direction},isSimple:function(){return this.$parent.simple},isLast:function(){var e=this.$parent;return e.steps[e.steps.length-1]===this},stepsCount:function(){return this.$parent.steps.length},space:function(){var e=this.isSimple,t=this.$parent.space;return e?"":t},style:function(){var e={},t=this.$parent,n=t.steps.length,i="number"===typeof this.space?this.space+"px":this.space?this.space:100/(n-(this.isCenter?0:1))+"%";return e.flexBasis=i,this.isVertical?e:(this.isLast?e.maxWidth=100/this.stepsCount+"%":e.marginRight=-this.$parent.stepOffset+"px",e)}},methods:{updateStatus:function(e){var t=this.$parent.$children[this.index-1];e>this.index?this.internalStatus=this.$parent.finishStatus:e===this.index&&"error"!==this.prevStatus?this.internalStatus=this.$parent.processStatus:this.internalStatus="wait",t&&t.calcProgress(this.internalStatus)},calcProgress:function(e){var t=100,n={};n.transitionDelay=150*this.index+"ms",e===this.$parent.processStatus?(this.currentStatus,t=0):"wait"===e&&(t=0,n.transitionDelay=-150*this.index+"ms"),n.borderWidth=t&&!this.isSimple?"1px":0,"vertical"===this.$parent.direction?n.height=t+"%":n.width=t+"%",this.lineStyle=n}},mounted:function(){var e=this,t=this.$watch("index",function(n){e.$watch("$parent.active",e.updateStatus,{immediate:!0}),e.$watch("$parent.processStatus",function(){var t=e.$parent.active;e.updateStatus(t)},{immediate:!0}),t()})}},zd=Md,kd=s(zd,Ed,Od,!1,null,null,null);kd.options.__file="packages/steps/src/step.vue";var Td=kd.exports;Td.install=function(e){e.component(Td.name,Td)};var Ld=Td,Ad=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.carouselClasses,on:{mouseenter:function(t){return t.stopPropagation(),e.handleMouseEnter(t)},mouseleave:function(t){return t.stopPropagation(),e.handleMouseLeave(t)}}},[n("div",{staticClass:"el-carousel__container",style:{height:e.height}},[e.arrowDisplay?n("transition",{attrs:{name:"carousel-arrow-left"}},[n("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex>0),expression:"(arrow === 'always' || hover) && (loop || activeIndex > 0)"}],staticClass:"el-carousel__arrow el-carousel__arrow--left",attrs:{type:"button"},on:{mouseenter:function(t){e.handleButtonEnter("left")},mouseleave:e.handleButtonLeave,click:function(t){t.stopPropagation(),e.throttledArrowClick(e.activeIndex-1)}}},[n("i",{staticClass:"el-icon-arrow-left"})])]):e._e(),e.arrowDisplay?n("transition",{attrs:{name:"carousel-arrow-right"}},[n("button",{directives:[{name:"show",rawName:"v-show",value:("always"===e.arrow||e.hover)&&(e.loop||e.activeIndex0})},carouselClasses:function(){var e=["el-carousel","el-carousel--"+this.direction];return"card"===this.type&&e.push("el-carousel--card"),e},indicatorsClasses:function(){var e=["el-carousel__indicators","el-carousel__indicators--"+this.direction];return this.hasLabel&&e.push("el-carousel__indicators--labels"),"outside"!==this.indicatorPosition&&"card"!==this.type||e.push("el-carousel__indicators--outside"),e}},watch:{items:function(e){e.length>0&&this.setActiveItem(this.initialIndex)},activeIndex:function(e,t){this.resetItemPosition(t),this.$emit("change",e,t)},autoplay:function(e){e?this.startTimer():this.pauseTimer()},loop:function(){this.setActiveItem(this.activeIndex)}},methods:{handleMouseEnter:function(){this.hover=!0,this.pauseTimer()},handleMouseLeave:function(){this.hover=!1,this.startTimer()},itemInStage:function(e,t){var n=this.items.length;return t===n-1&&e.inStage&&this.items[0].active||e.inStage&&this.items[t+1]&&this.items[t+1].active?"left":!!(0===t&&e.inStage&&this.items[n-1].active||e.inStage&&this.items[t-1]&&this.items[t-1].active)&&"right"},handleButtonEnter:function(e){var t=this;"vertical"!==this.direction&&this.items.forEach(function(n,i){e===t.itemInStage(n,i)&&(n.hover=!0)})},handleButtonLeave:function(){"vertical"!==this.direction&&this.items.forEach(function(e){e.hover=!1})},updateItems:function(){this.items=this.$children.filter(function(e){return"ElCarouselItem"===e.$options.name})},resetItemPosition:function(e){var t=this;this.items.forEach(function(n,i){n.translateItem(i,t.activeIndex,e)})},playSlides:function(){this.activeIndex0&&(e=this.items.indexOf(t[0]))}if(e=Number(e),isNaN(e)||e!==Math.floor(e))console.warn("[Element Warn][Carousel]index must be an integer.");else{var n=this.items.length,i=this.activeIndex;this.activeIndex=e<0?this.loop?n-1:0:e>=n?this.loop?0:n-1:e,i===this.activeIndex&&this.resetItemPosition(i)}},prev:function(){this.setActiveItem(this.activeIndex-1)},next:function(){this.setActiveItem(this.activeIndex+1)},handleIndicatorClick:function(e){this.activeIndex=e},handleIndicatorHover:function(e){"hover"===this.trigger&&e!==this.activeIndex&&(this.activeIndex=e)}},created:function(){var e=this;this.throttledArrowClick=Nd()(300,!0,function(t){e.setActiveItem(t)}),this.throttledIndicatorHover=Nd()(300,function(t){e.handleIndicatorHover(t)})},mounted:function(){var e=this;this.updateItems(),this.$nextTick(function(){Object(Zn["addResizeListener"])(e.$el,e.resetItemPosition),e.initialIndex=0&&(e.activeIndex=e.initialIndex),e.startTimer()})},beforeDestroy:function(){this.$el&&Object(Zn["removeResizeListener"])(this.$el,this.resetItemPosition),this.pauseTimer()}},Dd=Id,Pd=s(Dd,Ad,Hd,!1,null,null,null);Pd.options.__file="packages/carousel/src/main.vue";var $d=Pd.exports;$d.install=function(e){e.component($d.name,$d)};var Rd=$d,jd={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}};function Fd(e){var t=e.move,n=e.size,i=e.bar,r={},o="translate"+i.axis+"("+t+"%)";return r[i.size]=n,r.transform=o,r.msTransform=o,r.webkitTransform=o,r}var Bd={name:"Bar",props:{vertical:Boolean,size:String,move:Number},computed:{bar:function(){return jd[this.vertical?"vertical":"horizontal"]},wrap:function(){return this.$parent.wrap}},render:function(e){var t=this.size,n=this.move,i=this.bar;return e("div",{class:["el-scrollbar__bar","is-"+i.key],on:{mousedown:this.clickTrackHandler}},[e("div",{ref:"thumb",class:"el-scrollbar__thumb",on:{mousedown:this.clickThumbHandler},style:Fd({size:t,move:n,bar:i})})])},methods:{clickThumbHandler:function(e){e.ctrlKey||2===e.button||(this.startDrag(e),this[this.bar.axis]=e.currentTarget[this.bar.offset]-(e[this.bar.client]-e.currentTarget.getBoundingClientRect()[this.bar.direction]))},clickTrackHandler:function(e){var t=Math.abs(e.target.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),n=this.$refs.thumb[this.bar.offset]/2,i=100*(t-n)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=i*this.wrap[this.bar.scrollSize]/100},startDrag:function(e){e.stopImmediatePropagation(),this.cursorDown=!0,Object(Pe["on"])(document,"mousemove",this.mouseMoveDocumentHandler),Object(Pe["on"])(document,"mouseup",this.mouseUpDocumentHandler),document.onselectstart=function(){return!1}},mouseMoveDocumentHandler:function(e){if(!1!==this.cursorDown){var t=this[this.bar.axis];if(t){var n=-1*(this.$el.getBoundingClientRect()[this.bar.direction]-e[this.bar.client]),i=this.$refs.thumb[this.bar.offset]-t,r=100*(n-i)/this.$el[this.bar.offset];this.wrap[this.bar.scroll]=r*this.wrap[this.bar.scrollSize]/100}}},mouseUpDocumentHandler:function(e){this.cursorDown=!1,this[this.bar.axis]=0,Object(Pe["off"])(document,"mousemove",this.mouseMoveDocumentHandler),document.onselectstart=null}},destroyed:function(){Object(Pe["off"])(document,"mouseup",this.mouseUpDocumentHandler)}},Wd={name:"ElScrollbar",components:{Bar:Bd},props:{native:Boolean,wrapStyle:{},wrapClass:{},viewClass:{},viewStyle:{},noresize:Boolean,tag:{type:String,default:"div"}},data:function(){return{sizeWidth:"0",sizeHeight:"0",moveX:0,moveY:0}},computed:{wrap:function(){return this.$refs.wrap}},render:function(e){var t=yr()(),n=this.wrapStyle;if(t){var i="-"+t+"px",r="margin-bottom: "+i+"; margin-right: "+i+";";Array.isArray(this.wrapStyle)?(n=Object(b["toObject"])(this.wrapStyle),n.marginRight=n.marginBottom=i):"string"===typeof this.wrapStyle?n+=r:n=r}var o=e(this.tag,{class:["el-scrollbar__view",this.viewClass],style:this.viewStyle,ref:"resize"},this.$slots.default),a=e("div",{ref:"wrap",style:n,on:{scroll:this.handleScroll},class:[this.wrapClass,"el-scrollbar__wrap",t?"":"el-scrollbar__wrap--hidden-default"]},[[o]]),s=void 0;return s=this.native?[e("div",{ref:"wrap",class:[this.wrapClass,"el-scrollbar__wrap"],style:n},[[o]])]:[a,e(Bd,{attrs:{move:this.moveX,size:this.sizeWidth}}),e(Bd,{attrs:{vertical:!0,move:this.moveY,size:this.sizeHeight}})],e("div",{class:"el-scrollbar"},s)},methods:{handleScroll:function(){var e=this.wrap;this.moveY=100*e.scrollTop/e.clientHeight,this.moveX=100*e.scrollLeft/e.clientWidth},update:function(){var e=void 0,t=void 0,n=this.wrap;n&&(e=100*n.clientHeight/n.scrollHeight,t=100*n.clientWidth/n.scrollWidth,this.sizeHeight=e<100?e+"%":"",this.sizeWidth=t<100?t+"%":"")}},mounted:function(){this.native||(this.$nextTick(this.update),!this.noresize&&Object(Zn["addResizeListener"])(this.$refs.resize,this.update))},beforeDestroy:function(){this.native||!this.noresize&&Object(Zn["removeResizeListener"])(this.$refs.resize,this.update)},install:function(e){e.component(Wd.name,Wd)}},Ud=Wd,Kd=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"show",rawName:"v-show",value:e.ready,expression:"ready"}],staticClass:"el-carousel__item",class:{"is-active":e.active,"el-carousel__item--card":"card"===e.$parent.type,"is-in-stage":e.inStage,"is-hover":e.hover,"is-animating":e.animating},style:e.itemStyle,on:{click:e.handleItemClick}},["card"===e.$parent.type?n("div",{directives:[{name:"show",rawName:"v-show",value:!e.active,expression:"!active"}],staticClass:"el-carousel__mask"}):e._e(),e._t("default")],2)},qd=[];Kd._withStripped=!0;var Gd=.83,Yd={name:"ElCarouselItem",props:{name:String,label:{type:[String,Number],default:""}},data:function(){return{hover:!1,translate:0,scale:1,active:!1,ready:!1,inStage:!1,animating:!1}},methods:{processIndex:function(e,t,n){return 0===t&&e===n-1?-1:t===n-1&&0===e?n:e=n/2?n+1:e>t+1&&e-t>=n/2?-2:e},calcCardTranslate:function(e,t){var n=this.$parent.$el.offsetWidth;return this.inStage?n*((2-Gd)*(e-t)+1)/4:e2&&this.$parent.loop&&(e=this.processIndex(e,t,o)),"card"===i)"vertical"===r&&console.warn("[Element Warn][Carousel]vertical directionis not supported in card mode"),this.inStage=Math.round(Math.abs(e-t))<=1,this.active=e===t,this.translate=this.calcCardTranslate(e,t),this.scale=this.active?1:Gd;else{this.active=e===t;var a="vertical"===r;this.translate=this.calcTranslate(e,t,a)}this.ready=!0},handleItemClick:function(){var e=this.$parent;if(e&&"card"===e.type){var t=e.items.indexOf(this);e.setActiveItem(t)}}},computed:{parentDirection:function(){return this.$parent.direction},itemStyle:function(){var e="vertical"===this.parentDirection?"translateY":"translateX",t=e+"("+this.translate+"px) scale("+this.scale+")",n={transform:t};return Object(b["autoprefixer"])(n)}},created:function(){this.$parent&&this.$parent.updateItems()},destroyed:function(){this.$parent&&this.$parent.updateItems()}},Xd=Yd,Qd=s(Xd,Kd,qd,!1,null,null,null);Qd.options.__file="packages/carousel/src/item.vue";var Jd=Qd.exports;Jd.install=function(e){e.component(Jd.name,Jd)};var Zd=Jd,ef=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-collapse",attrs:{role:"tablist","aria-multiselectable":"true"}},[e._t("default")],2)},tf=[];ef._withStripped=!0;var nf={name:"ElCollapse",componentName:"ElCollapse",props:{accordion:Boolean,value:{type:[Array,String,Number],default:function(){return[]}}},data:function(){return{activeNames:[].concat(this.value)}},provide:function(){return{collapse:this}},watch:{value:function(e){this.activeNames=[].concat(e)}},methods:{setActiveNames:function(e){e=[].concat(e);var t=this.accordion?e[0]:e;this.activeNames=e,this.$emit("input",t),this.$emit("change",t)},handleItemClick:function(e){if(this.accordion)this.setActiveNames(!this.activeNames[0]&&0!==this.activeNames[0]||this.activeNames[0]!==e.name?e.name:"");else{var t=this.activeNames.slice(0),n=t.indexOf(e.name);n>-1?t.splice(n,1):t.push(e.name),this.setActiveNames(t)}}},created:function(){this.$on("item-click",this.handleItemClick)}},rf=nf,of=s(rf,ef,tf,!1,null,null,null);of.options.__file="packages/collapse/src/collapse.vue";var af=of.exports;af.install=function(e){e.component(af.name,af)};var sf=af,cf=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-collapse-item",class:{"is-active":e.isActive,"is-disabled":e.disabled}},[n("div",{attrs:{role:"tab","aria-expanded":e.isActive,"aria-controls":"el-collapse-content-"+e.id,"aria-describedby":"el-collapse-content-"+e.id}},[n("div",{staticClass:"el-collapse-item__header",class:{focusing:e.focusing,"is-active":e.isActive},attrs:{role:"button",id:"el-collapse-head-"+e.id,tabindex:e.disabled?void 0:0},on:{click:e.handleHeaderClick,keyup:function(t){return"button"in t||!e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"])||!e._k(t.keyCode,"enter",13,t.key,"Enter")?(t.stopPropagation(),e.handleEnterClick(t)):null},focus:e.handleFocus,blur:function(t){e.focusing=!1}}},[e._t("title",[e._v(e._s(e.title))]),n("i",{staticClass:"el-collapse-item__arrow el-icon-arrow-right",class:{"is-active":e.isActive}})],2)]),n("el-collapse-transition",[n("div",{directives:[{name:"show",rawName:"v-show",value:e.isActive,expression:"isActive"}],staticClass:"el-collapse-item__wrap",attrs:{role:"tabpanel","aria-hidden":!e.isActive,"aria-labelledby":"el-collapse-head-"+e.id,id:"el-collapse-content-"+e.id}},[n("div",{staticClass:"el-collapse-item__content"},[e._t("default")],2)])])],1)},lf=[];cf._withStripped=!0;var uf={name:"ElCollapseItem",componentName:"ElCollapseItem",mixins:[z.a],components:{ElCollapseTransition:qe.a},data:function(){return{contentWrapStyle:{height:"auto",display:"block"},contentHeight:0,focusing:!1,isClick:!1,id:Object(b["generateId"])()}},inject:["collapse"],props:{title:String,name:{type:[String,Number],default:function(){return this._uid}},disabled:Boolean},computed:{isActive:function(){return this.collapse.activeNames.indexOf(this.name)>-1}},methods:{handleFocus:function(){var e=this;setTimeout(function(){e.isClick?e.isClick=!1:e.focusing=!0},50)},handleHeaderClick:function(){this.disabled||(this.dispatch("ElCollapse","item-click",this),this.focusing=!1,this.isClick=!0)},handleEnterClick:function(){this.dispatch("ElCollapse","item-click",this)}}},hf=uf,df=s(hf,cf,lf,!1,null,null,null);df.options.__file="packages/collapse/src/collapse-item.vue";var ff=df.exports;ff.install=function(e){e.component(ff.name,ff)};var pf=ff,vf=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:function(){return e.toggleDropDownVisible(!1)},expression:"() => toggleDropDownVisible(false)"}],ref:"reference",class:["el-cascader",e.realSize&&"el-cascader--"+e.realSize,{"is-disabled":e.isDisabled}],on:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1},click:function(){return e.toggleDropDownVisible(!e.readonly||void 0)},keydown:e.handleKeyDown}},[n("el-input",{ref:"input",class:{"is-focus":e.dropDownVisible},attrs:{size:e.realSize,placeholder:e.placeholder,readonly:e.readonly,disabled:e.isDisabled,"validate-event":!1},on:{focus:e.handleFocus,blur:e.handleBlur,input:e.handleInput},model:{value:e.multiple?e.presentText:e.inputValue,callback:function(t){e.multiple?e.presentText:e.inputValue=t},expression:"multiple ? presentText : inputValue"}},[n("template",{slot:"suffix"},[e.clearBtnVisible?n("i",{key:"clear",staticClass:"el-input__icon el-icon-circle-close",on:{click:function(t){return t.stopPropagation(),e.handleClear(t)}}}):n("i",{key:"arrow-down",class:["el-input__icon","el-icon-arrow-down",e.dropDownVisible&&"is-reverse"],on:{click:function(t){t.stopPropagation(),e.toggleDropDownVisible()}}})])],2),e.multiple?n("div",{staticClass:"el-cascader__tags"},[e._l(e.presentTags,function(t,i){return n("el-tag",{key:t.key,attrs:{type:"info",size:e.tagSize,hit:t.hitState,closable:t.closable,"disable-transitions":""},on:{close:function(t){e.deleteTag(i)}}},[n("span",[e._v(e._s(t.text))])])}),e.filterable&&!e.isDisabled?n("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.inputValue,expression:"inputValue",modifiers:{trim:!0}}],staticClass:"el-cascader__search-input",attrs:{type:"text",placeholder:e.presentTags.length?"":e.placeholder},domProps:{value:e.inputValue},on:{input:[function(t){t.target.composing||(e.inputValue=t.target.value.trim())},function(t){return e.handleInput(e.inputValue,t)}],click:function(t){t.stopPropagation(),e.toggleDropDownVisible(!0)},keydown:function(t){return"button"in t||!e._k(t.keyCode,"delete",[8,46],t.key,["Backspace","Delete","Del"])?e.handleDelete(t):null},blur:function(t){e.$forceUpdate()}}}):e._e()],2):e._e(),n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.handleDropdownLeave}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.dropDownVisible,expression:"dropDownVisible"}],ref:"popper",class:["el-popper","el-cascader__dropdown",e.popperClass]},[n("el-cascader-panel",{directives:[{name:"show",rawName:"v-show",value:!e.filtering,expression:"!filtering"}],ref:"panel",attrs:{options:e.options,props:e.config,border:!1,"render-label":e.$scopedSlots.default},on:{"expand-change":e.handleExpandChange,close:function(t){e.toggleDropDownVisible(!1)}},model:{value:e.checkedValue,callback:function(t){e.checkedValue=t},expression:"checkedValue"}}),e.filterable?n("el-scrollbar",{directives:[{name:"show",rawName:"v-show",value:e.filtering,expression:"filtering"}],ref:"suggestionPanel",staticClass:"el-cascader__suggestion-panel",attrs:{tag:"ul","view-class":"el-cascader__suggestion-list"},nativeOn:{keydown:function(t){return e.handleSuggestionKeyDown(t)}}},[e.suggestions.length?e._l(e.suggestions,function(t,i){return n("li",{key:t.uid,class:["el-cascader__suggestion-item",t.checked&&"is-checked"],attrs:{tabindex:-1},on:{click:function(t){e.handleSuggestionClick(i)}}},[n("span",[e._v(e._s(t.text))]),t.checked?n("i",{staticClass:"el-icon-check"}):e._e()])}):e._t("empty",[n("li",{staticClass:"el-cascader__empty-text"},[e._v(e._s(e.t("el.cascader.noMatch")))])])],2):e._e()],1)])],1)},mf=[];vf._withStripped=!0;var gf=n(42),bf=n.n(gf),yf=n(33),_f=n.n(yf),Cf=_f.a.keys,wf={expandTrigger:{newProp:"expandTrigger",type:String},changeOnSelect:{newProp:"checkStrictly",type:Boolean},hoverThreshold:{newProp:"hoverThreshold",type:Number}},xf={props:{placement:{type:String,default:"bottom-start"},appendToBody:B.a.props.appendToBody,visibleArrow:{type:Boolean,default:!0},arrowOffset:B.a.props.arrowOffset,offset:B.a.props.offset,boundariesPadding:B.a.props.boundariesPadding,popperOptions:B.a.props.popperOptions},methods:B.a.methods,data:B.a.data,beforeDestroy:B.a.beforeDestroy},Sf={medium:36,small:32,mini:28},Ef={name:"ElCascader",directives:{Clickoutside:$.a},mixins:[xf,z.a,g.a,O.a],inject:{elForm:{default:""},elFormItem:{default:""}},components:{ElInput:v.a,ElTag:Jn.a,ElScrollbar:U.a,ElCascaderPanel:bf.a},props:{value:{},options:Array,props:Object,size:String,placeholder:{type:String,default:function(){return Object(ei["t"])("el.cascader.placeholder")}},disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:Function,separator:{type:String,default:" / "},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,debounce:{type:Number,default:300},beforeFilter:{type:Function,default:function(){return function(){}}},popperClass:String},data:function(){return{dropDownVisible:!1,checkedValue:this.value||null,inputHover:!1,inputValue:null,presentText:null,presentTags:[],checkedNodes:[],filtering:!1,suggestions:[],inputInitialHeight:0,pressDeleteCount:0}},computed:{realSize:function(){var e=(this.elFormItem||{}).elFormItemSize;return this.size||e||(this.$ELEMENT||{}).size},tagSize:function(){return["small","mini"].indexOf(this.realSize)>-1?"mini":"small"},isDisabled:function(){return this.disabled||(this.elForm||{}).disabled},config:function(){var e=this.props||{},t=this.$attrs;return Object.keys(wf).forEach(function(n){var i=wf[n],r=i.newProp,o=i.type,a=t[n]||t[Object(b["kebabCase"])(n)];Object(oi["isDef"])(n)&&!Object(oi["isDef"])(e[r])&&(o===Boolean&&""===a&&(a=!0),e[r]=a)}),e},multiple:function(){return this.config.multiple},leafOnly:function(){return!this.config.checkStrictly},readonly:function(){return!this.filterable||this.multiple},clearBtnVisible:function(){return!(!this.clearable||this.isDisabled||this.filtering||!this.inputHover)&&(this.multiple?!!this.checkedNodes.filter(function(e){return!e.isDisabled}).length:!!this.presentText)},panel:function(){return this.$refs.panel}},watch:{value:function(e){Object(b["isEqual"])(e,this.checkedValue)||(this.checkedValue=e,this.computePresentContent())},checkedValue:function(e){var t=this.value;Object(b["isEqual"])(e,t)&&!Object(dd["isUndefined"])(t)||(this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",[e]),this.computePresentContent())},options:{handler:function(){this.$nextTick(this.computePresentContent)},deep:!0},presentText:function(e){this.inputValue=e},presentTags:function(e,t){this.multiple&&(e.length||t.length)&&this.$nextTick(this.updateStyle)},filtering:function(e){this.$nextTick(this.updatePopper)}},mounted:function(){var e=this,t=this.$refs.input;t&&t.$el&&(this.inputInitialHeight=t.$el.offsetHeight||Sf[this.realSize]||40),Object(b["isEmpty"])(this.value)||this.computePresentContent(),this.filterHandler=D()(this.debounce,function(){var t=e.inputValue;if(t){var n=e.beforeFilter(t);n&&n.then?n.then(e.getSuggestions):!1!==n?e.getSuggestions():e.filtering=!1}else e.filtering=!1}),Object(Zn["addResizeListener"])(this.$el,this.updateStyle)},beforeDestroy:function(){Object(Zn["removeResizeListener"])(this.$el,this.updateStyle)},methods:{getMigratingConfig:function(){return{props:{"expand-trigger":"expand-trigger is removed, use `props.expandTrigger` instead.","change-on-select":"change-on-select is removed, use `props.checkStrictly` instead.","hover-threshold":"hover-threshold is removed, use `props.hoverThreshold` instead"},events:{"active-item-change":"active-item-change is renamed to expand-change"}}},toggleDropDownVisible:function(e){var t=this;if(!this.isDisabled){var n=this.dropDownVisible,i=this.$refs.input;e=Object(oi["isDef"])(e)?e:!n,e!==n&&(this.dropDownVisible=e,e&&this.$nextTick(function(){t.updatePopper(),t.panel.scrollIntoView()}),i.$refs.input.setAttribute("aria-expanded",e),this.$emit("visible-change",e))}},handleDropdownLeave:function(){this.filtering=!1,this.inputValue=this.presentText},handleKeyDown:function(e){switch(e.keyCode){case Cf.enter:this.toggleDropDownVisible();break;case Cf.down:this.toggleDropDownVisible(!0),this.focusFirstNode(),e.preventDefault();break;case Cf.esc:case Cf.tab:this.toggleDropDownVisible(!1);break}},handleFocus:function(e){this.$emit("focus",e)},handleBlur:function(e){this.$emit("blur",e)},handleInput:function(e,t){!this.dropDownVisible&&this.toggleDropDownVisible(!0),t&&t.isComposing||(e?this.filterHandler():this.filtering=!1)},handleClear:function(){this.presentText="",this.panel.clearCheckedNodes()},handleExpandChange:function(e){this.$nextTick(this.updatePopper.bind(this)),this.$emit("expand-change",e),this.$emit("active-item-change",e)},focusFirstNode:function(){var e=this;this.$nextTick(function(){var t=e.filtering,n=e.$refs,i=n.popper,r=n.suggestionPanel,o=null;if(t&&r)o=r.$el.querySelector(".el-cascader__suggestion-item");else{var a=i.querySelector(".el-cascader-menu");o=a.querySelector('.el-cascader-node[tabindex="-1"]')}o&&(o.focus(),!t&&o.click())})},computePresentContent:function(){var e=this;this.$nextTick(function(){var t=e.config,n=t.multiple,i=t.checkStrictly;n?(e.computePresentTags(),e.presentText=e.presentTags.length?" ":null):(e.computePresentText(),!i&&e.dropDownVisible&&e.toggleDropDownVisible(!1))})},computePresentText:function(){var e=this.checkedValue,t=this.config;if(!Object(b["isEmpty"])(e)){var n=this.panel.getNodeByValue(e);if(n&&(t.checkStrictly||n.isLeaf))return void(this.presentText=n.getText(this.showAllLevels,this.separator))}this.presentText=null},computePresentTags:function(){var e=this.isDisabled,t=this.leafOnly,n=this.showAllLevels,i=this.separator,r=this.collapseTags,o=this.getCheckedNodes(t),a=[],s=function(t){return{node:t,key:t.uid,text:t.getText(n,i),hitState:!1,closable:!e&&!t.isDisabled}};if(o.length){var c=o[0],l=o.slice(1),u=l.length;a.push(s(c)),u&&(r?a.push({key:-1,text:"+ "+u,closable:!1}):l.forEach(function(e){return a.push(s(e))}))}this.checkedNodes=o,this.presentTags=a},getSuggestions:function(){var e=this,t=this.filterMethod;Object(dd["isFunction"])(t)||(t=function(e,t){return e.text.includes(t)});var n=this.panel.getFlattedNodes(this.leafOnly).filter(function(n){return!n.isDisabled&&(n.text=n.getText(e.showAllLevels,e.separator)||"",t(n,e.inputValue))});this.multiple?this.presentTags.forEach(function(e){e.hitState=!1}):n.forEach(function(t){t.checked=Object(b["isEqual"])(e.checkedValue,t.getValueByOption())}),this.filtering=!0,this.suggestions=n,this.$nextTick(this.updatePopper)},handleSuggestionKeyDown:function(e){var t=e.keyCode,n=e.target;switch(t){case Cf.enter:n.click();break;case Cf.up:var i=n.previousElementSibling;i&&i.focus();break;case Cf.down:var r=n.nextElementSibling;r&&r.focus();break;case Cf.esc:case Cf.tab:this.toggleDropDownVisible(!1);break}},handleDelete:function(){var e=this.inputValue,t=this.pressDeleteCount,n=this.presentTags,i=n.length-1,r=n[i];this.pressDeleteCount=e?0:t+1,r&&this.pressDeleteCount&&(r.hitState?this.deleteTag(i):r.hitState=!0)},handleSuggestionClick:function(e){var t=this.multiple,n=this.suggestions[e];if(t){var i=n.checked;n.doCheck(!i),this.panel.calculateMultiCheckedValue()}else this.checkedValue=n.getValueByOption(),this.toggleDropDownVisible(!1)},deleteTag:function(e){var t=this.checkedValue,n=t[e];this.checkedValue=t.filter(function(t,n){return n!==e}),this.$emit("remove-tag",n)},updateStyle:function(){var e=this.$el,t=this.inputInitialHeight;if(!this.$isServer&&e){var n=this.$refs.suggestionPanel,i=e.querySelector(".el-input__inner");if(i){var r=e.querySelector(".el-cascader__tags"),o=null;if(n&&(o=n.$el)){var a=o.querySelector(".el-cascader__suggestion-list");a.style.minWidth=i.offsetWidth+"px"}if(r){var s=r.offsetHeight,c=Math.max(s+6,t)+"px";i.style.height=c,this.updatePopper()}}}},getCheckedNodes:function(e){return this.panel.getCheckedNodes(e)}}},Of=Ef,Mf=s(Of,vf,mf,!1,null,null,null);Mf.options.__file="packages/cascader/src/cascader.vue";var zf=Mf.exports;zf.install=function(e){e.component(zf.name,zf)};var kf=zf,Tf=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{directives:[{name:"clickoutside",rawName:"v-clickoutside",value:e.hide,expression:"hide"}],class:["el-color-picker",e.colorDisabled?"is-disabled":"",e.colorSize?"el-color-picker--"+e.colorSize:""]},[e.colorDisabled?n("div",{staticClass:"el-color-picker__mask"}):e._e(),n("div",{staticClass:"el-color-picker__trigger",on:{click:e.handleTrigger}},[n("span",{staticClass:"el-color-picker__color",class:{"is-alpha":e.showAlpha}},[n("span",{staticClass:"el-color-picker__color-inner",style:{backgroundColor:e.displayedColor}}),e.value||e.showPanelColor?e._e():n("span",{staticClass:"el-color-picker__empty el-icon-close"})]),n("span",{directives:[{name:"show",rawName:"v-show",value:e.value||e.showPanelColor,expression:"value || showPanelColor"}],staticClass:"el-color-picker__icon el-icon-arrow-down"})]),n("picker-dropdown",{ref:"dropdown",class:["el-color-picker__panel",e.popperClass||""],attrs:{color:e.color,"show-alpha":e.showAlpha,predefine:e.predefine},on:{pick:e.confirmValue,clear:e.clearValue},model:{value:e.showPicker,callback:function(t){e.showPicker=t},expression:"showPicker"}})],1)},Lf=[];Tf._withStripped=!0;var Af="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 Hf(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Vf=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},Nf=function(e){return"string"===typeof e&&-1!==e.indexOf(".")&&1===parseFloat(e)},If=function(e){return"string"===typeof e&&-1!==e.indexOf("%")},Df=function(e,t){Nf(e)&&(e="100%");var n=If(e);return e=Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},Pf={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"},$f=function(e){var t=e.r,n=e.g,i=e.b,r=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),n=e%16;return""+(Pf[t]||t)+(Pf[n]||n)};return isNaN(t)||isNaN(n)||isNaN(i)?"":"#"+r(t)+r(n)+r(i)},Rf={A:10,B:11,C:12,D:13,E:14,F:15},jf=function(e){return 2===e.length?16*(Rf[e[0].toUpperCase()]||+e[0])+(Rf[e[1].toUpperCase()]||+e[1]):Rf[e[1].toUpperCase()]||+e[1]},Ff=function(e,t,n){t/=100,n/=100;var i=t,r=Math.max(n,.01),o=void 0,a=void 0;return n*=2,t*=n<=1?n:2-n,i*=r<=1?r:2-r,a=(n+t)/2,o=0===n?2*i/(r+i):2*t/(n+t),{h:e,s:100*o,v:100*a}},Bf=function(e,t,n){e=Df(e,255),t=Df(t,255),n=Df(n,255);var i=Math.max(e,t,n),r=Math.min(e,t,n),o=void 0,a=void 0,s=i,c=i-r;if(a=0===i?0:c/i,i===r)o=0;else{switch(i){case e:o=(t-n)/c+(t2?parseFloat(e):parseInt(e,10)});if(4===i.length?this._alpha=Math.floor(100*parseFloat(i[3])):3===i.length&&(this._alpha=100),i.length>=3){var r=Ff(i[0],i[1],i[2]),o=r.h,a=r.s,s=r.v;n(o,a,s)}}else if(-1!==e.indexOf("hsv")){var c=e.replace(/hsva|hsv|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});4===c.length?this._alpha=Math.floor(100*parseFloat(c[3])):3===c.length&&(this._alpha=100),c.length>=3&&n(c[0],c[1],c[2])}else if(-1!==e.indexOf("rgb")){var l=e.replace(/rgba|rgb|\(|\)/gm,"").split(/\s|,/g).filter(function(e){return""!==e}).map(function(e,t){return t>2?parseFloat(e):parseInt(e,10)});if(4===l.length?this._alpha=Math.floor(100*parseFloat(l[3])):3===l.length&&(this._alpha=100),l.length>=3){var u=Bf(l[0],l[1],l[2]),h=u.h,d=u.s,f=u.v;n(h,d,f)}}else if(-1!==e.indexOf("#")){var p=e.replace("#","").trim();if(!/^(?:[0-9a-fA-F]{3}){1,2}$/.test(p))return;var v=void 0,m=void 0,g=void 0;3===p.length?(v=jf(p[0]+p[0]),m=jf(p[1]+p[1]),g=jf(p[2]+p[2])):6!==p.length&&8!==p.length||(v=jf(p.substring(0,2)),m=jf(p.substring(2,4)),g=jf(p.substring(4,6))),8===p.length?this._alpha=Math.floor(jf(p.substring(6))/255*100):3!==p.length&&6!==p.length||(this._alpha=100);var b=Bf(v,m,g),y=b.h,_=b.s,C=b.v;n(y,_,C)}},e.prototype.compare=function(e){return Math.abs(e._hue-this._hue)<2&&Math.abs(e._saturation-this._saturation)<1&&Math.abs(e._value-this._value)<1&&Math.abs(e._alpha-this._alpha)<1},e.prototype.doOnChange=function(){var e=this._hue,t=this._saturation,n=this._value,i=this._alpha,r=this.format;if(this.enableAlpha)switch(r){case"hsl":var o=Vf(e,t/100,n/100);this.value="hsla("+e+", "+Math.round(100*o[1])+"%, "+Math.round(100*o[2])+"%, "+i/100+")";break;case"hsv":this.value="hsva("+e+", "+Math.round(t)+"%, "+Math.round(n)+"%, "+i/100+")";break;default:var a=Wf(e,t,n),s=a.r,c=a.g,l=a.b;this.value="rgba("+s+", "+c+", "+l+", "+i/100+")"}else switch(r){case"hsl":var u=Vf(e,t/100,n/100);this.value="hsl("+e+", "+Math.round(100*u[1])+"%, "+Math.round(100*u[2])+"%)";break;case"hsv":this.value="hsv("+e+", "+Math.round(t)+"%, "+Math.round(n)+"%)";break;case"rgb":var h=Wf(e,t,n),d=h.r,f=h.g,p=h.b;this.value="rgb("+d+", "+f+", "+p+")";break;default:this.value=$f(Wf(e,t,n))}},e}(),Kf=Uf,qf=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("transition",{attrs:{name:"el-zoom-in-top"},on:{"after-leave":e.doDestroy}},[n("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopper,expression:"showPopper"}],staticClass:"el-color-dropdown"},[n("div",{staticClass:"el-color-dropdown__main-wrapper"},[n("hue-slider",{ref:"hue",staticStyle:{float:"right"},attrs:{color:e.color,vertical:""}}),n("sv-panel",{ref:"sl",attrs:{color:e.color}})],1),e.showAlpha?n("alpha-slider",{ref:"alpha",attrs:{color:e.color}}):e._e(),e.predefine?n("predefine",{attrs:{color:e.color,colors:e.predefine}}):e._e(),n("div",{staticClass:"el-color-dropdown__btns"},[n("span",{staticClass:"el-color-dropdown__value"},[n("el-input",{attrs:{"validate-event":!1,size:"mini"},on:{blur:e.handleConfirm},nativeOn:{keyup:function(t){return"button"in t||!e._k(t.keyCode,"enter",13,t.key,"Enter")?e.handleConfirm(t):null}},model:{value:e.customInput,callback:function(t){e.customInput=t},expression:"customInput"}})],1),n("el-button",{staticClass:"el-color-dropdown__link-btn",attrs:{size:"mini",type:"text"},on:{click:function(t){e.$emit("clear")}}},[e._v("\n "+e._s(e.t("el.colorpicker.clear"))+"\n ")]),n("el-button",{staticClass:"el-color-dropdown__btn",attrs:{plain:"",size:"mini"},on:{click:e.confirmValue}},[e._v("\n "+e._s(e.t("el.colorpicker.confirm"))+"\n ")])],1)],1)])},Gf=[];qf._withStripped=!0;var Yf=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-color-svpanel",style:{backgroundColor:e.background}},[n("div",{staticClass:"el-color-svpanel__white"}),n("div",{staticClass:"el-color-svpanel__black"}),n("div",{staticClass:"el-color-svpanel__cursor",style:{top:e.cursorTop+"px",left:e.cursorLeft+"px"}},[n("div")])])},Xf=[];Yf._withStripped=!0;var Qf=!1,Jf=function(e,t){if(!Wi.a.prototype.$isServer){var n=function(e){t.drag&&t.drag(e)},i=function e(i){document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",e),document.onselectstart=null,document.ondragstart=null,Qf=!1,t.end&&t.end(i)};e.addEventListener("mousedown",function(e){Qf||(document.onselectstart=function(){return!1},document.ondragstart=function(){return!1},document.addEventListener("mousemove",n),document.addEventListener("mouseup",i),Qf=!0,t.start&&t.start(e))})}},Zf={name:"el-sl-panel",props:{color:{required:!0}},computed:{colorValue:function(){var e=this.color.get("hue"),t=this.color.get("value");return{hue:e,value:t}}},watch:{colorValue:function(){this.update()}},methods:{update:function(){var e=this.color.get("saturation"),t=this.color.get("value"),n=this.$el,i=n.clientWidth,r=n.clientHeight;this.cursorLeft=e*i/100,this.cursorTop=(100-t)*r/100,this.background="hsl("+this.color.get("hue")+", 100%, 50%)"},handleDrag:function(e){var t=this.$el,n=t.getBoundingClientRect(),i=e.clientX-n.left,r=e.clientY-n.top;i=Math.max(0,i),i=Math.min(i,n.width),r=Math.max(0,r),r=Math.min(r,n.height),this.cursorLeft=i,this.cursorTop=r,this.color.set({saturation:i/n.width*100,value:100-r/n.height*100})}},mounted:function(){var e=this;Jf(this.$el,{drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}}),this.update()},data:function(){return{cursorTop:0,cursorLeft:0,background:"hsl(0, 100%, 50%)"}}},ep=Zf,tp=s(ep,Yf,Xf,!1,null,null,null);tp.options.__file="packages/color-picker/src/components/sv-panel.vue";var np=tp.exports,ip=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-color-hue-slider",class:{"is-vertical":e.vertical}},[n("div",{ref:"bar",staticClass:"el-color-hue-slider__bar",on:{click:e.handleClick}}),n("div",{ref:"thumb",staticClass:"el-color-hue-slider__thumb",style:{left:e.thumbLeft+"px",top:e.thumbTop+"px"}})])},rp=[];ip._withStripped=!0;var op={name:"el-color-hue-slider",props:{color:{required:!0},vertical:Boolean},data:function(){return{thumbLeft:0,thumbTop:0}},computed:{hueValue:function(){var e=this.color.get("hue");return e}},watch:{hueValue:function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb,n=e.target;n!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),n=this.$refs.thumb,i=void 0;if(this.vertical){var r=e.clientY-t.top;r=Math.min(r,t.height-n.offsetHeight/2),r=Math.max(n.offsetHeight/2,r),i=Math.round((r-n.offsetHeight/2)/(t.height-n.offsetHeight)*360)}else{var o=e.clientX-t.left;o=Math.min(o,t.width-n.offsetWidth/2),o=Math.max(n.offsetWidth/2,o),i=Math.round((o-n.offsetWidth/2)/(t.width-n.offsetWidth)*360)}this.color.set("hue",i)},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetWidth-n.offsetWidth/2)/360)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color.get("hue");if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetHeight-n.offsetHeight/2)/360)},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop()}},mounted:function(){var e=this,t=this.$refs,n=t.bar,i=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Jf(n,r),Jf(i,r),this.update()}},ap=op,sp=s(ap,ip,rp,!1,null,null,null);sp.options.__file="packages/color-picker/src/components/hue-slider.vue";var cp=sp.exports,lp=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-color-alpha-slider",class:{"is-vertical":e.vertical}},[n("div",{ref:"bar",staticClass:"el-color-alpha-slider__bar",style:{background:e.background},on:{click:e.handleClick}}),n("div",{ref:"thumb",staticClass:"el-color-alpha-slider__thumb",style:{left:e.thumbLeft+"px",top:e.thumbTop+"px"}})])},up=[];lp._withStripped=!0;var hp={name:"el-color-alpha-slider",props:{color:{required:!0},vertical:Boolean},watch:{"color._alpha":function(){this.update()},"color.value":function(){this.update()}},methods:{handleClick:function(e){var t=this.$refs.thumb,n=e.target;n!==t&&this.handleDrag(e)},handleDrag:function(e){var t=this.$el.getBoundingClientRect(),n=this.$refs.thumb;if(this.vertical){var i=e.clientY-t.top;i=Math.max(n.offsetHeight/2,i),i=Math.min(i,t.height-n.offsetHeight/2),this.color.set("alpha",Math.round((i-n.offsetHeight/2)/(t.height-n.offsetHeight)*100))}else{var r=e.clientX-t.left;r=Math.max(n.offsetWidth/2,r),r=Math.min(r,t.width-n.offsetWidth/2),this.color.set("alpha",Math.round((r-n.offsetWidth/2)/(t.width-n.offsetWidth)*100))}},getThumbLeft:function(){if(this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetWidth-n.offsetWidth/2)/100)},getThumbTop:function(){if(!this.vertical)return 0;var e=this.$el,t=this.color._alpha;if(!e)return 0;var n=this.$refs.thumb;return Math.round(t*(e.offsetHeight-n.offsetHeight/2)/100)},getBackground:function(){if(this.color&&this.color.value){var e=this.color.toRgb(),t=e.r,n=e.g,i=e.b;return"linear-gradient(to right, rgba("+t+", "+n+", "+i+", 0) 0%, rgba("+t+", "+n+", "+i+", 1) 100%)"}return null},update:function(){this.thumbLeft=this.getThumbLeft(),this.thumbTop=this.getThumbTop(),this.background=this.getBackground()}},data:function(){return{thumbLeft:0,thumbTop:0,background:null}},mounted:function(){var e=this,t=this.$refs,n=t.bar,i=t.thumb,r={drag:function(t){e.handleDrag(t)},end:function(t){e.handleDrag(t)}};Jf(n,r),Jf(i,r),this.update()}},dp=hp,fp=s(dp,lp,up,!1,null,null,null);fp.options.__file="packages/color-picker/src/components/alpha-slider.vue";var pp=fp.exports,vp=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-color-predefine"},[n("div",{staticClass:"el-color-predefine__colors"},e._l(e.rgbaColors,function(t,i){return n("div",{key:e.colors[i],staticClass:"el-color-predefine__color-selector",class:{selected:t.selected,"is-alpha":t._alpha<100},on:{click:function(t){e.handleSelect(i)}}},[n("div",{style:{"background-color":t.value}})])}),0)])},mp=[];vp._withStripped=!0;var gp={props:{colors:{type:Array,required:!0},color:{required:!0}},data:function(){return{rgbaColors:this.parseColors(this.colors,this.color)}},methods:{handleSelect:function(e){this.color.fromString(this.colors[e])},parseColors:function(e,t){return e.map(function(e){var n=new Kf;return n.enableAlpha=!0,n.format="rgba",n.fromString(e),n.selected=n.value===t.value,n})}},watch:{"$parent.currentColor":function(e){var t=new Kf;t.fromString(e),this.rgbaColors.forEach(function(e){e.selected=t.compare(e)})},colors:function(e){this.rgbaColors=this.parseColors(e,this.color)},color:function(e){this.rgbaColors=this.parseColors(this.colors,e)}}},bp=gp,yp=s(bp,vp,mp,!1,null,null,null);yp.options.__file="packages/color-picker/src/components/predefine.vue";var _p=yp.exports,Cp={name:"el-color-picker-dropdown",mixins:[B.a,g.a],components:{SvPanel:np,HueSlider:cp,AlphaSlider:pp,ElInput:v.a,ElButton:ae.a,Predefine:_p},props:{color:{required:!0},showAlpha:Boolean,predefine:Array},data:function(){return{customInput:""}},computed:{currentColor:function(){var e=this.$parent;return e.value||e.showPanelColor?e.color.value:""}},methods:{confirmValue:function(){this.$emit("pick")},handleConfirm:function(){this.color.fromString(this.customInput)}},mounted:function(){this.$parent.popperElm=this.popperElm=this.$el,this.referenceElm=this.$parent.$el},watch:{showPopper:function(e){var t=this;!0===e&&this.$nextTick(function(){var e=t.$refs,n=e.sl,i=e.hue,r=e.alpha;n&&n.update(),i&&i.update(),r&&r.update()})},currentColor:{immediate:!0,handler:function(e){this.customInput=e}}}},wp=Cp,xp=s(wp,qf,Gf,!1,null,null,null);xp.options.__file="packages/color-picker/src/components/picker-dropdown.vue";var Sp=xp.exports,Ep={name:"ElColorPicker",mixins:[z.a],props:{value:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:String,popperClass:String,predefine:Array},inject:{elForm:{default:""},elFormItem:{default:""}},directives:{Clickoutside:$.a},computed:{displayedColor:function(){return this.value||this.showPanelColor?this.displayedRgb(this.color,this.showAlpha):"transparent"},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},colorSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},colorDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},watch:{value:function(e){e?e&&e!==this.color.value&&this.color.fromString(e):this.showPanelColor=!1},color:{deep:!0,handler:function(){this.showPanelColor=!0}},displayedColor:function(e){if(this.showPicker){var t=new Kf({enableAlpha:this.showAlpha,format:this.colorFormat});t.fromString(this.value);var n=this.displayedRgb(t,this.showAlpha);e!==n&&this.$emit("active-change",e)}}},methods:{handleTrigger:function(){this.colorDisabled||(this.showPicker=!this.showPicker)},confirmValue:function(){var e=this.color.value;this.$emit("input",e),this.$emit("change",e),this.dispatch("ElFormItem","el.form.change",e),this.showPicker=!1},clearValue:function(){this.$emit("input",null),this.$emit("change",null),null!==this.value&&this.dispatch("ElFormItem","el.form.change",null),this.showPanelColor=!1,this.showPicker=!1,this.resetColor()},hide:function(){this.showPicker=!1,this.resetColor()},resetColor:function(){var e=this;this.$nextTick(function(t){e.value?e.color.fromString(e.value):e.showPanelColor=!1})},displayedRgb:function(e,t){if(!(e instanceof Kf))throw Error("color should be instance of Color Class");var n=e.toRgb(),i=n.r,r=n.g,o=n.b;return t?"rgba("+i+", "+r+", "+o+", "+e.get("alpha")/100+")":"rgb("+i+", "+r+", "+o+")"}},mounted:function(){var e=this.value;e&&this.color.fromString(e),this.popperElm=this.$refs.dropdown.$el},data:function(){var e=new Kf({enableAlpha:this.showAlpha,format:this.colorFormat});return{color:e,showPicker:!1,showPanelColor:!1}},components:{PickerDropdown:Sp}},Op=Ep,Mp=s(Op,Tf,Lf,!1,null,null,null);Mp.options.__file="packages/color-picker/src/main.vue";var zp=Mp.exports;zp.install=function(e){e.component(zp.name,zp)};var kp=zp,Tp=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-transfer"},[n("transfer-panel",e._b({ref:"leftPanel",attrs:{data:e.sourceData,title:e.titles[0]||e.t("el.transfer.titles.0"),"default-checked":e.leftDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onSourceCheckedChange}},"transfer-panel",e.$props,!1),[e._t("left-footer")],2),n("div",{staticClass:"el-transfer__buttons"},[n("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.rightChecked.length},nativeOn:{click:function(t){return e.addToLeft(t)}}},[n("i",{staticClass:"el-icon-arrow-left"}),void 0!==e.buttonTexts[0]?n("span",[e._v(e._s(e.buttonTexts[0]))]):e._e()]),n("el-button",{class:["el-transfer__button",e.hasButtonTexts?"is-with-texts":""],attrs:{type:"primary",disabled:0===e.leftChecked.length},nativeOn:{click:function(t){return e.addToRight(t)}}},[void 0!==e.buttonTexts[1]?n("span",[e._v(e._s(e.buttonTexts[1]))]):e._e(),n("i",{staticClass:"el-icon-arrow-right"})])],1),n("transfer-panel",e._b({ref:"rightPanel",attrs:{data:e.targetData,title:e.titles[1]||e.t("el.transfer.titles.1"),"default-checked":e.rightDefaultChecked,placeholder:e.filterPlaceholder||e.t("el.transfer.filterPlaceholder")},on:{"checked-change":e.onTargetCheckedChange}},"transfer-panel",e.$props,!1),[e._t("right-footer")],2)],1)},Lp=[];Tp._withStripped=!0;var Ap=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-transfer-panel"},[n("p",{staticClass:"el-transfer-panel__header"},[n("el-checkbox",{attrs:{indeterminate:e.isIndeterminate},on:{change:e.handleAllCheckedChange},model:{value:e.allChecked,callback:function(t){e.allChecked=t},expression:"allChecked"}},[e._v("\n "+e._s(e.title)+"\n "),n("span",[e._v(e._s(e.checkedSummary))])])],1),n("div",{class:["el-transfer-panel__body",e.hasFooter?"is-with-footer":""]},[e.filterable?n("el-input",{staticClass:"el-transfer-panel__filter",attrs:{size:"small",placeholder:e.placeholder},nativeOn:{mouseenter:function(t){e.inputHover=!0},mouseleave:function(t){e.inputHover=!1}},model:{value:e.query,callback:function(t){e.query=t},expression:"query"}},[n("i",{class:["el-input__icon","el-icon-"+e.inputIcon],attrs:{slot:"prefix"},on:{click:e.clearQuery},slot:"prefix"})]):e._e(),n("el-checkbox-group",{directives:[{name:"show",rawName:"v-show",value:!e.hasNoMatch&&e.data.length>0,expression:"!hasNoMatch && data.length > 0"}],staticClass:"el-transfer-panel__list",class:{"is-filterable":e.filterable},model:{value:e.checked,callback:function(t){e.checked=t},expression:"checked"}},e._l(e.filteredData,function(t){return n("el-checkbox",{key:t[e.keyProp],staticClass:"el-transfer-panel__item",attrs:{label:t[e.keyProp],disabled:t[e.disabledProp]}},[n("option-content",{attrs:{option:t}})],1)}),1),n("p",{directives:[{name:"show",rawName:"v-show",value:e.hasNoMatch,expression:"hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noMatch")))]),n("p",{directives:[{name:"show",rawName:"v-show",value:0===e.data.length&&!e.hasNoMatch,expression:"data.length === 0 && !hasNoMatch"}],staticClass:"el-transfer-panel__empty"},[e._v(e._s(e.t("el.transfer.noData")))])],1),e.hasFooter?n("p",{staticClass:"el-transfer-panel__footer"},[e._t("default")],2):e._e()])},Hp=[];Ap._withStripped=!0;var Vp={mixins:[g.a],name:"ElTransferPanel",componentName:"ElTransferPanel",components:{ElCheckboxGroup:Ar.a,ElCheckbox:Ii.a,ElInput:v.a,OptionContent:{props:{option:Object},render:function(e){var t=function e(t){return"ElTransferPanel"===t.$options.componentName?t:t.$parent?e(t.$parent):t},n=t(this),i=n.$parent||n;return n.renderContent?n.renderContent(e,this.option):i.$scopedSlots.default?i.$scopedSlots.default({option:this.option}):e("span",[this.option[n.labelProp]||this.option[n.keyProp]])}}},props:{data:{type:Array,default:function(){return[]}},renderContent:Function,placeholder:String,title:String,filterable:Boolean,format:Object,filterMethod:Function,defaultChecked:Array,props:Object},data:function(){return{checked:[],allChecked:!1,query:"",inputHover:!1,checkChangeByUser:!0}},watch:{checked:function(e,t){if(this.updateAllChecked(),this.checkChangeByUser){var n=e.concat(t).filter(function(n){return-1===e.indexOf(n)||-1===t.indexOf(n)});this.$emit("checked-change",e,n)}else this.$emit("checked-change",e),this.checkChangeByUser=!0},data:function(){var e=this,t=[],n=this.filteredData.map(function(t){return t[e.keyProp]});this.checked.forEach(function(e){n.indexOf(e)>-1&&t.push(e)}),this.checkChangeByUser=!1,this.checked=t},checkableData:function(){this.updateAllChecked()},defaultChecked:{immediate:!0,handler:function(e,t){var n=this;if(!t||e.length!==t.length||!e.every(function(e){return t.indexOf(e)>-1})){var i=[],r=this.checkableData.map(function(e){return e[n.keyProp]});e.forEach(function(e){r.indexOf(e)>-1&&i.push(e)}),this.checkChangeByUser=!1,this.checked=i}}}},computed:{filteredData:function(){var e=this;return this.data.filter(function(t){if("function"===typeof e.filterMethod)return e.filterMethod(e.query,t);var n=t[e.labelProp]||t[e.keyProp].toString();return n.toLowerCase().indexOf(e.query.toLowerCase())>-1})},checkableData:function(){var e=this;return this.filteredData.filter(function(t){return!t[e.disabledProp]})},checkedSummary:function(){var e=this.checked.length,t=this.data.length,n=this.format,i=n.noChecked,r=n.hasChecked;return i&&r?e>0?r.replace(/\${checked}/g,e).replace(/\${total}/g,t):i.replace(/\${total}/g,t):e+"/"+t},isIndeterminate:function(){var e=this.checked.length;return e>0&&e0&&0===this.filteredData.length},inputIcon:function(){return this.query.length>0&&this.inputHover?"circle-close":"search"},labelProp:function(){return this.props.label||"label"},keyProp:function(){return this.props.key||"key"},disabledProp:function(){return this.props.disabled||"disabled"},hasFooter:function(){return!!this.$slots.default}},methods:{updateAllChecked:function(){var e=this,t=this.checkableData.map(function(t){return t[e.keyProp]});this.allChecked=t.length>0&&t.every(function(t){return e.checked.indexOf(t)>-1})},handleAllCheckedChange:function(e){var t=this;this.checked=e?this.checkableData.map(function(e){return e[t.keyProp]}):[]},clearQuery:function(){"circle-close"===this.inputIcon&&(this.query="")}}},Np=Vp,Ip=s(Np,Ap,Hp,!1,null,null,null);Ip.options.__file="packages/transfer/src/transfer-panel.vue";var Dp=Ip.exports,Pp={name:"ElTransfer",mixins:[z.a,g.a,O.a],components:{TransferPanel:Dp,ElButton:ae.a},props:{data:{type:Array,default:function(){return[]}},titles:{type:Array,default:function(){return[]}},buttonTexts:{type:Array,default:function(){return[]}},filterPlaceholder:{type:String,default:""},filterMethod:Function,leftDefaultChecked:{type:Array,default:function(){return[]}},rightDefaultChecked:{type:Array,default:function(){return[]}},renderContent:Function,value:{type:Array,default:function(){return[]}},format:{type:Object,default:function(){return{}}},filterable:Boolean,props:{type:Object,default:function(){return{label:"label",key:"key",disabled:"disabled"}}},targetOrder:{type:String,default:"original"}},data:function(){return{leftChecked:[],rightChecked:[]}},computed:{dataObj:function(){var e=this.props.key;return this.data.reduce(function(t,n){return(t[n[e]]=n)&&t},{})},sourceData:function(){var e=this;return this.data.filter(function(t){return-1===e.value.indexOf(t[e.props.key])})},targetData:function(){var e=this;return"original"===this.targetOrder?this.data.filter(function(t){return e.value.indexOf(t[e.props.key])>-1}):this.value.reduce(function(t,n){var i=e.dataObj[n];return i&&t.push(i),t},[])},hasButtonTexts:function(){return 2===this.buttonTexts.length}},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}},methods:{getMigratingConfig:function(){return{props:{"footer-format":"footer-format is renamed to format."}}},onSourceCheckedChange:function(e,t){this.leftChecked=e,void 0!==t&&this.$emit("left-check-change",e,t)},onTargetCheckedChange:function(e,t){this.rightChecked=e,void 0!==t&&this.$emit("right-check-change",e,t)},addToLeft:function(){var e=this.value.slice();this.rightChecked.forEach(function(t){var n=e.indexOf(t);n>-1&&e.splice(n,1)}),this.$emit("input",e),this.$emit("change",e,"left",this.rightChecked)},addToRight:function(){var e=this,t=this.value.slice(),n=[],i=this.props.key;this.data.forEach(function(t){var r=t[i];e.leftChecked.indexOf(r)>-1&&-1===e.value.indexOf(r)&&n.push(r)}),t="unshift"===this.targetOrder?n.concat(t):t.concat(n),this.$emit("input",t),this.$emit("change",t,"right",this.leftChecked)},clearQuery:function(e){"left"===e?this.$refs.leftPanel.query="":"right"===e&&(this.$refs.rightPanel.query="")}}},$p=Pp,Rp=s($p,Tp,Lp,!1,null,null,null);Rp.options.__file="packages/transfer/src/main.vue";var jp=Rp.exports;jp.install=function(e){e.component(jp.name,jp)};var Fp=jp,Bp=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",{staticClass:"el-container",class:{"is-vertical":e.isVertical}},[e._t("default")],2)},Wp=[];Bp._withStripped=!0;var Up={name:"ElContainer",componentName:"ElContainer",props:{direction:String},computed:{isVertical:function(){return"vertical"===this.direction||"horizontal"!==this.direction&&(!(!this.$slots||!this.$slots.default)&&this.$slots.default.some(function(e){var t=e.componentOptions&&e.componentOptions.tag;return"el-header"===t||"el-footer"===t}))}}},Kp=Up,qp=s(Kp,Bp,Wp,!1,null,null,null);qp.options.__file="packages/container/src/main.vue";var Gp=qp.exports;Gp.install=function(e){e.component(Gp.name,Gp)};var Yp=Gp,Xp=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("header",{staticClass:"el-header",style:{height:e.height}},[e._t("default")],2)},Qp=[];Xp._withStripped=!0;var Jp={name:"ElHeader",componentName:"ElHeader",props:{height:{type:String,default:"60px"}}},Zp=Jp,ev=s(Zp,Xp,Qp,!1,null,null,null);ev.options.__file="packages/header/src/main.vue";var tv=ev.exports;tv.install=function(e){e.component(tv.name,tv)};var nv=tv,iv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("aside",{staticClass:"el-aside",style:{width:e.width}},[e._t("default")],2)},rv=[];iv._withStripped=!0;var ov={name:"ElAside",componentName:"ElAside",props:{width:{type:String,default:"300px"}}},av=ov,sv=s(av,iv,rv,!1,null,null,null);sv.options.__file="packages/aside/src/main.vue";var cv=sv.exports;cv.install=function(e){e.component(cv.name,cv)};var lv=cv,uv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("main",{staticClass:"el-main"},[e._t("default")],2)},hv=[];uv._withStripped=!0;var dv={name:"ElMain",componentName:"ElMain"},fv=dv,pv=s(fv,uv,hv,!1,null,null,null);pv.options.__file="packages/main/src/main.vue";var vv=pv.exports;vv.install=function(e){e.component(vv.name,vv)};var mv=vv,gv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("footer",{staticClass:"el-footer",style:{height:e.height}},[e._t("default")],2)},bv=[];gv._withStripped=!0;var yv={name:"ElFooter",componentName:"ElFooter",props:{height:{type:String,default:"60px"}}},_v=yv,Cv=s(_v,gv,bv,!1,null,null,null);Cv.options.__file="packages/footer/src/main.vue";var wv=Cv.exports;wv.install=function(e){e.component(wv.name,wv)};var xv=wv,Sv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("ul",{staticClass:"el-timeline",class:{"is-reverse":e.reverse}},[e._t("default")],2)},Ev=[];Sv._withStripped=!0;var Ov={name:"ElTimeline",props:{reverse:{type:Boolean,default:!1}},provide:function(){return{timeline:this}},watch:{reverse:{handler:function(e){e&&(this.$slots.default=[].concat(this.$slots.default).reverse())},immediate:!0}}},Mv=Ov,zv=s(Mv,Sv,Ev,!1,null,null,null);zv.options.__file="packages/timeline/src/main.vue";var kv=zv.exports;kv.install=function(e){e.component(kv.name,kv)};var Tv=kv,Lv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{staticClass:"el-timeline-item"},[n("div",{staticClass:"el-timeline-item__tail"}),e.$slots.dot?e._e():n("div",{staticClass:"el-timeline-item__node",class:["el-timeline-item__node--"+(e.size||""),"el-timeline-item__node--"+(e.type||"")],style:{backgroundColor:e.color}},[e.icon?n("i",{staticClass:"el-timeline-item__icon",class:e.icon}):e._e()]),e.$slots.dot?n("div",{staticClass:"el-timeline-item__dot"},[e._t("dot")],2):e._e(),n("div",{staticClass:"el-timeline-item__wrapper"},[e.hideTimestamp||"top"!==e.placement?e._e():n("div",{staticClass:"el-timeline-item__timestamp is-top"},[e._v("\n "+e._s(e.timestamp)+"\n ")]),n("div",{staticClass:"el-timeline-item__content"},[e._t("default")],2),e.hideTimestamp||"bottom"!==e.placement?e._e():n("div",{staticClass:"el-timeline-item__timestamp is-bottom"},[e._v("\n "+e._s(e.timestamp)+"\n ")])])])},Av=[];Lv._withStripped=!0;var Hv={name:"ElTimelineItem",inject:["timeline"],props:{timestamp:String,hideTimestamp:{type:Boolean,default:!1},placement:{type:String,default:"bottom"},type:String,color:String,size:{type:String,default:"normal"},icon:String}},Vv=Hv,Nv=s(Vv,Lv,Av,!1,null,null,null);Nv.options.__file="packages/timeline/src/item.vue";var Iv=Nv.exports;Iv.install=function(e){e.component(Iv.name,Iv)};var Dv=Iv,Pv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("a",e._b({class:["el-link",e.type?"el-link--"+e.type:"",e.disabled&&"is-disabled",e.underline&&!e.disabled&&"is-underline"],attrs:{href:e.disabled?null:e.href},on:{click:e.handleClick}},"a",e.$attrs,!1),[e.icon?n("i",{class:e.icon}):e._e(),e.$slots.default?n("span",{staticClass:"el-link--inner"},[e._t("default")],2):e._e(),e.$slots.icon?[e.$slots.icon?e._t("icon"):e._e()]:e._e()],2)},$v=[];Pv._withStripped=!0;var Rv={name:"ElLink",props:{type:{type:String,default:"default"},underline:{type:Boolean,default:!0},disabled:Boolean,href:String,icon:String},methods:{handleClick:function(e){this.disabled||this.href||this.$emit("click",e)}}},jv=Rv,Fv=s(jv,Pv,$v,!1,null,null,null);Fv.options.__file="packages/link/src/main.vue";var Bv=Fv.exports;Bv.install=function(e){e.component(Bv.name,Bv)};var Wv=Bv,Uv={functional:!0,name:"ElDivider",props:{direction:{type:String,default:"horizontal",validator:function(e){return-1!==["horizontal","vertical"].indexOf(e)}},contentPosition:{type:String,default:"center",validator:function(e){return-1!==["left","center","right"].indexOf(e)}}},render:function(e,t){var n=t.slots(),i=t.props,r=i.direction,o=i.contentPosition;return e("div",{class:["el-divider","el-divider--"+r]},[n.default&&"vertical"!==r?e("div",{class:["el-divider__text","is-"+o]},[n.default]):null])},install:function(e){e.component(Uv.name,Uv)}},Kv=Uv,qv=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-image"},[e.loading?e._t("placeholder",[n("div",{staticClass:"el-image__placeholder"})]):e.error?e._t("error",[n("div",{staticClass:"el-image__error"},[e._v(e._s(e.t("el.image.error")))])]):n("img",e._g(e._b({staticClass:"el-image__inner",class:{"el-image__inner--center":e.alignCenter},style:e.imageStyle,attrs:{src:e.src}},"img",e.$attrs,!1),e.$listeners))],2)},Gv=[];qv._withStripped=!0;var Yv=function(){return void 0!==document.documentElement.style.objectFit},Xv={NONE:"none",CONTAIN:"contain",COVER:"cover",FILL:"fill",SCALE_DOWN:"scale-down"},Qv={name:"ElImage",mixins:[g.a],inheritAttrs:!1,props:{src:String,fit:String,lazy:Boolean,scrollContainer:{}},data:function(){return{loading:!0,error:!1,show:!this.lazy,imageWidth:0,imageHeight:0}},computed:{imageStyle:function(){var e=this.fit;return!this.$isServer&&e?Yv()?{"object-fit":e}:this.getImageStyle(e):{}},alignCenter:function(){return!this.$isServer&&!Yv()&&this.fit!==Xv.FILL}},watch:{src:function(e){this.show&&this.loadImage()},show:function(e){e&&this.loadImage()}},mounted:function(){this.lazy?this.addLazyLoadListener():this.loadImage()},beforeDestroy:function(){this.lazy&&this.removeLazyLoadListener()},methods:{loadImage:function(){var e=this;if(!this.$isServer){this.loading=!0,this.error=!1;var t=new Image;t.onload=function(n){return e.handleLoad(n,t)},t.onerror=this.handleError.bind(this),Object.keys(this.$attrs).forEach(function(n){var i=e.$attrs[n];t.setAttribute(n,i)}),t.src=this.src}},handleLoad:function(e,t){this.imageWidth=t.width,this.imageHeight=t.height,this.loading=!1},handleError:function(e){this.loading=!1,this.error=!0,this.$emit("error",e)},handleLazyLoad:function(){Object(Pe["isInContainer"])(this.$el,this._scrollContainer)&&(this.show=!0,this.removeLazyLoadListener())},addLazyLoadListener:function(){if(!this.$isServer){var e=this.scrollContainer,t=null;t=Object(dd["isHtmlElement"])(e)?e:Object(dd["isString"])(e)?document.querySelector(e):Object(Pe["getScrollContainer"])(this.$el),t&&(this._scrollContainer=t,this._lazyLoadHandler=Nd()(200,this.handleLazyLoad),Object(Pe["on"])(t,"scroll",this._lazyLoadHandler),this.handleLazyLoad())}},removeLazyLoadListener:function(){var e=this._scrollContainer,t=this._lazyLoadHandler;!this.$isServer&&e&&t&&(Object(Pe["off"])(e,"scroll",t),this._scrollContainer=null,this._lazyLoadHandler=null)},getImageStyle:function(e){var t=this.imageWidth,n=this.imageHeight,i=this.$el,r=i.clientWidth,o=i.clientHeight;if(!t||!n||!r||!o)return{};var a=t/n<1;if(e===Xv.SCALE_DOWN){var s=to)return console.warn("[ElementCalendar]end time should be greater than start time"),[];if(Object(ao["validateRangeInOneMonth"])(r,o))return[[r,o]];var a=[],s=new Date(r.getFullYear(),r.getMonth()+1,1),c=this.toDate(s.getTime()-fm);if(!Object(ao["validateRangeInOneMonth"])(s,o))return console.warn("[ElementCalendar]start time and end time interval must not exceed two months"),[];a.push([r,c]);var l=s.getDay();return l=l<=1?Math.abs(l-1):8-l,s=this.toDate(s.getTime()+l*fm),s.getDate()=this.visibilityHeight},handleClick:function(e){this.scrollToTop(),this.$emit("click",e)},scrollToTop:function(){var e=this.el,t=0,n=setInterval(function(){e.scrollTop<=0?clearInterval(n):(t+=10,e.scrollTop-=t)},20)}},beforeDestroy:function(){this.container.removeEventListener("scroll",this.throttledScrollHandler)}},wm=Cm,xm=s(wm,ym,_m,!1,null,null,null);xm.options.__file="packages/backtop/src/main.vue";var Sm=xm.exports;Sm.install=function(e){e.component(Sm.name,Sm)};var Em=Sm,Om=function(e,t){if(e===window&&(e=document.documentElement),1!==e.nodeType)return[];var n=window.getComputedStyle(e,null);return t?n[t]:n},Mm=function(e){return Object.keys(e||{}).map(function(t){return[t,e[t]]})},zm=function(e,t){return e===window||e===document?document.documentElement[t]:e[t]},km=function(e){return zm(e,"offsetHeight")},Tm=function(e){return zm(e,"clientHeight")},Lm="ElInfiniteScroll",Am={delay:{type:Number,default:200},distance:{type:Number,default:0},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Hm=function(e,t){return Object(dd["isHtmlElement"])(e)?Mm(Am).reduce(function(n,i){var r=i[0],o=i[1],a=o.type,s=o.default,c=e.getAttribute("infinite-scroll-"+r);switch(c=Object(dd["isUndefined"])(t[c])?c:t[c],a){case Number:c=Number(c),c=Number.isNaN(c)?s:c;break;case Boolean:c=Object(dd["isDefined"])(c)?"false"!==c&&Boolean(c):s;break;default:c=a(c)}return n[r]=c,n},{}):{}},Vm=function(e){return e.getBoundingClientRect().top},Nm=function(e){var t=this[Lm],n=t.el,i=t.vm,r=t.container,o=t.observer,a=Hm(n,i),s=a.distance,c=a.disabled;if(!c){var l=!1;if(r===n){var u=r.scrollTop+Tm(r);l=r.scrollHeight-u<=s}else{var h=km(n)+Vm(n)-Vm(r),d=km(r),f=Number.parseFloat(Om(r,"borderBottomWidth"));l=h-d+f<=s}l&&Object(dd["isFunction"])(e)?e.call(i):o&&(o.disconnect(),this[Lm].observer=null)}},Im={name:"InfiniteScroll",inserted:function(e,t,n){var i=t.value,r=n.context,o=Object(Pe["getScrollContainer"])(e,!0),a=Hm(e,r),s=a.delay,c=a.immediate,l=D()(s,Nm.bind(e,i));if(e[Lm]={el:e,vm:r,container:o,onScroll:l},o&&(o.addEventListener("scroll",l),c)){var u=e[Lm].observer=new MutationObserver(l);u.observe(o,{childList:!0,subtree:!0}),l()}},unbind:function(e){var t=e[Lm],n=t.container,i=t.onScroll;n&&n.removeEventListener("scroll",i)},install:function(e){e.directive(Im.name,Im)}},Dm=Im,Pm=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-page-header"},[n("div",{staticClass:"el-page-header__left",on:{click:function(t){e.$emit("back")}}},[n("i",{staticClass:"el-icon-back"}),n("div",{staticClass:"el-page-header__title"},[e._t("title",[e._v(e._s(e.title))])],2)]),n("div",{staticClass:"el-page-header__content"},[e._t("content",[e._v(e._s(e.content))])],2)])},$m=[];Pm._withStripped=!0;var Rm={name:"ElPageHeader",props:{title:{type:String,default:function(){return Object(ei["t"])("el.pageHeader.title")}},content:String}},jm=Rm,Fm=s(jm,Pm,$m,!1,null,null,null);Fm.options.__file="packages/page-header/src/main.vue";var Bm=Fm.exports;Bm.install=function(e){e.component(Bm.name,Bm)};var Wm=Bm,Um=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["el-cascader-panel",e.border&&"is-bordered"],on:{keydown:e.handleKeyDown}},e._l(e.menus,function(e,t){return n("cascader-menu",{key:t,ref:"menu",refInFor:!0,attrs:{index:t,nodes:e}})}),1)},Km=[];Um._withStripped=!0;var qm,Gm,Ym=n(43),Xm=n.n(Ym),Qm=function(e){return e.stopPropagation()},Jm={inject:["panel"],components:{ElCheckbox:Ii.a,ElRadio:Xm.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some(function(t){return e.isInPath(t)})},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,n=this.node,i=this.isDisabled,r=this.config,o=r.multiple,a=r.checkStrictly;!a&&i||n.loading||(r.lazy&&!n.loaded?t.lazyLoad(n,function(){var t=e.isLeaf;if(t||e.handleExpand(),o){var i=!!t&&n.checked;e.handleMultiCheckChange(i)}}):t.handleExpand(n))},handleCheckChange:function(){var e=this.panel,t=this.value;e.handleCheckChange(t)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node,n=e[t.level-1]||{};return n.uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,n=this.isChecked,i=this.config,r=i.checkStrictly,o=i.multiple;return o?this.renderCheckbox(e):r?this.renderRadio(e):t&&n?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,n=this.isLeaf;return t.loading?this.renderLoadingIcon(e):n?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,n=this.config,i=this.isDisabled,r={on:{change:this.handleMultiCheckChange},nativeOn:{}};return n.checkStrictly&&(r.nativeOn.click=Qm),e("el-checkbox",Ju()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:i}},r]))},renderRadio:function(e){var t=this.checkedValue,n=this.value,i=this.isDisabled;return Object(b["isEqual"])(n,t)&&(n=t),e("el-radio",{attrs:{value:t,label:n,disabled:i},on:{change:this.handleCheckChange},nativeOn:{click:Qm}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,n=this.node,i=t.renderLabelFn,r=i?i({node:n,data:n.data}):null;return e("span",{class:"el-cascader-node__label"},[r||n.label])}},render:function(e){var t=this,n=this.inActivePath,i=this.inCheckedPath,r=this.isChecked,o=this.isLeaf,a=this.isDisabled,s=this.config,c=this.nodeId,l=s.expandTrigger,u=s.checkStrictly,h=s.multiple,d=!u&&a,f={on:{}};return o?a||u||h||(f.on.click=this.handleCheckChange):"click"===l?f.on.click=this.handleExpand:(f.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},f.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),e("li",Ju()([{attrs:{role:"menuitem",id:c,"aria-expanded":n,tabindex:d?null:-1},class:{"el-cascader-node":!0,"is-selectable":u,"in-active-path":n,"in-checked-path":i,"is-active":r,"is-disabled":d}},f]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},Zm=Jm,eg=s(Zm,qm,Gm,!1,null,null,null);eg.options.__file="packages/cascader-panel/src/cascader-node.vue";var tg,ng,ig=eg.exports,rg={name:"ElCascaderMenu",mixins:[g.a],inject:["panel"],components:{ElScrollbar:U.a,CascaderNode:ig},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(b["generateId"])()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,n=this.hoverTimer,i=this.$refs.hoverZone;if(t&&i)if(t.contains(e.target)){clearTimeout(n);var r=this.$el.getBoundingClientRect(),o=r.left,a=e.clientX-o,s=this.$el,c=s.offsetWidth,l=s.offsetHeight,u=t.offsetTop,h=u+t.offsetHeight;i.innerHTML='\n \n \n '}else n||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,n=this.panel.isHoverMenu,i={on:{}};n&&(i.on.expand=this.handleExpand);var r=this.nodes.map(function(n,r){var o=n.hasChildren;return e("cascader-node",Ju()([{key:n.uid,attrs:{node:n,"node-id":t+"-"+r,"aria-haspopup":o,"aria-owns":o?t:null}},i]))});return[].concat(r,[n?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,n=this.menuId,i={nativeOn:{}};return this.panel.isHoverMenu&&(i.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",Ju()([{attrs:{tag:"ul",role:"menu",id:n,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},i]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},og=rg,ag=s(og,tg,ng,!1,null,null,null);ag.options.__file="packages/cascader-panel/src/cascader-menu.vue";var sg=ag.exports,cg=function(){function e(e,t){for(var n=0;n1?t-1:0),i=1;i1?i-1:0),o=1;o0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),n=this.isSameNode(e,t);this.doCheck(n)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},cg(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,n=this.config,i=n.disabled,r=n.checkStrictly;return e[i]||!r&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,n=this.hasChildren,i=this.children,r=this.config,o=r.lazy,a=r.leaf;if(o){var s=Object(oi["isDef"])(e[a])?e[a]:!!t&&!i.length;return this.hasChildren=!s,s}return!n}}]),e}(),dg=hg;function fg(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var pg=function e(t,n){return t.reduce(function(t,i){return i.isLeaf?t.push(i):(!n&&t.push(i),t=t.concat(e(i.children,n))),t},[])},vg=function(){function e(t,n){fg(this,e),this.config=n,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(b["coerceTruthyValueToArray"])(e),this.nodes=e.map(function(e){return new dg(e,t.config)}),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var n=new dg(e,this.config,t),i=t?t.children:this.nodes;i.push(n)},e.prototype.appendNodes=function(e,t){var n=this;e=Object(b["coerceTruthyValueToArray"])(e),e.forEach(function(e){return n.appendNode(e,t)})},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e?this.leafNodes:this.flattedNodes;return t?n:pg(this.nodes,e)},e.prototype.getNodeByValue=function(e){if(e){e=Array.isArray(e)?e[e.length-1]:e;var t=this.getFlattedNodes(!1,!this.config.lazy).filter(function(t){return t.value===e});return t&&t.length?t[0]:null}return null},e}(),mg=vg,gg=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};ti.a.use(t.locale),ti.a.i18n(t.i18n),Tg.forEach(function(t){e.component(t.name,t)}),e.use(Dm),e.use(Tu.directive),e.prototype.$ELEMENT={size:t.size||"",zIndex:t.zIndex||2e3},e.prototype.$loading=Tu.service,e.prototype.$msgbox=Is,e.prototype.$alert=Is.alert,e.prototype.$confirm=Is.confirm,e.prototype.$prompt=Is.prompt,e.prototype.$notify=Xl,e.prototype.$message=Yh};"undefined"!==typeof window&&window.Vue&&Lg(window.Vue);t["default"]={version:"2.9.1",locale:ti.a.use,i18n:ti.a.i18n,install:Lg,CollapseTransition:qe.a,Loading:Tu,Pagination:_,Dialog:H,Autocomplete:re,Dropdown:fe,DropdownMenu:_e,DropdownItem:Me,Menu:Ue,Submenu:et,MenuItem:lt,MenuItemGroup:mt,Input:Tt,InputNumber:Pt,Radio:Ut,RadioGroup:Zt,RadioButton:sn,Checkbox:pn,CheckboxButton:Cn,CheckboxGroup:zn,Switch:Nn,Select:ui,Option:hi,OptionGroup:bi,Button:Ei,ButtonGroup:Ai,Table:Yr,TableColumn:io,DatePicker:La,TimeSelect:Ba,TimePicker:ns,Popover:hs,Tooltip:fs,MessageBox:Is,Breadcrumb:Bs,BreadcrumbItem:Xs,Form:ic,FormItem:bc,Tabs:$c,TabPane:Gc,Tag:Zc,Tree:zl,Alert:Il,Notification:Xl,Slider:du,Icon:Du,Row:$u,Col:Fu,Upload:Ch,Progress:zh,Spinner:Nh,Message:Yh,Badge:nd,Card:ld,Rate:gd,Steps:Sd,Step:Ld,Carousel:Rd,Scrollbar:Ud,CarouselItem:Zd,Collapse:sf,CollapseItem:pf,Cascader:kf,ColorPicker:kp,Transfer:Fp,Container:Yp,Header:nv,Aside:lv,Main:mv,Footer:xv,Timeline:Tv,TimelineItem:Dv,Link:Wv,Divider:Kv,Image:tm,Calendar:bm,Backtop:Em,InfiniteScroll:Dm,PageHeader:Wm,CascaderPanel:kg}}])["default"]},"5ca1":function(e,t,n){var i=n("7726"),r=n("8378"),o=n("32e9"),a=n("2aba"),s=n("9b43"),c="prototype",l=function(e,t,n){var u,h,d,f,p=e&l.F,v=e&l.G,m=e&l.S,g=e&l.P,b=e&l.B,y=v?i:m?i[t]||(i[t]={}):(i[t]||{})[c],_=v?r:r[t]||(r[t]={}),C=_[c]||(_[c]={});for(u in v&&(n=t),n)h=!p&&y&&void 0!==y[u],d=(h?y:n)[u],f=b&&h?s(d,i):g&&"function"==typeof d?s(Function.call,d):d,y&&a(y,u,d,e&l.U),_[u]!=d&&o(_,u,f),g&&C[u]!=d&&(C[u]=d)};i.core=r,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},"5cc5":function(e,t,n){var i=n("2b4c")("iterator"),r=!1;try{var o=[7][i]();o["return"]=function(){r=!0},Array.from(o,function(){throw 2})}catch(a){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var o=[7],s=o[i]();s.next=function(){return{done:n=!0}},o[i]=function(){return s},e(o)}catch(a){}return n}},"5d40":function(e,t,n){n("28e4")("WeakMap")},"5d58":function(e,t,n){e.exports=n("d8d6")},"5d73":function(e,t,n){e.exports=n("469f")},"5d89":function(e,t,n){var i=n("f8af");function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}e.exports=r},"5d90":function(e,t,n){n("28e4")("WeakSet")},"5dbc":function(e,t,n){var i=n("d3f4"),r=n("8b97").set;e.exports=function(e,t,n){var o,a=t.constructor;return a!==n&&"function"==typeof a&&(o=a.prototype)!==n.prototype&&i(o)&&r&&r(e,o),e}},"5df2":function(e,t,n){var i=n("5ca1"),r=n("d752");i(i.S+i.F*(Number.parseFloat!=r),"Number",{parseFloat:r})},"5df3":function(e,t,n){"use strict";var i=n("02f4")(!0);n("01f9")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})})},"5e2e":function(e,t,n){var i=n("28c9"),r=n("69d5"),o=n("b4c0"),a=n("fba5"),s=n("67ca");function c(e){var t=-1,n=null==e?0:e.length;this.clear();while(++t1&&console.warn("WARNING: the given `parent` query("+t.parent+") matched more than one element, the first one will be used"),0===a.length)throw"ERROR: the given `parent` doesn't exists!";a=a[0]}return a.length>1&&a instanceof Element===!1&&(console.warn("WARNING: you have passed as parent a list of elements, the first one will be used"),a=a[0]),a.appendChild(r),r;function s(e,t){t.forEach(function(t){e.classList.add(t)})}function c(e,t){t.forEach(function(t){e.setAttribute(t.split(":")[0],t.split(":")[1]||"")})}},n.prototype._getPosition=function(e,t){var n=c(t);if(this._options.forceAbsolute)return"absolute";var i=u(t,n);return i?"fixed":"absolute"},n.prototype._getOffsets=function(e,t,n){n=n.split("-")[0];var r={};r.position=this.state.position;var o="fixed"===r.position,a=v(t,c(e),o),s=i(e);return-1!==["right","left"].indexOf(n)?(r.top=a.top+a.height/2-s.height/2,r.left="left"===n?a.left-s.width:a.right):(r.left=a.left+a.width/2-s.width/2,r.top="top"===n?a.top-s.height:a.bottom),r.width=s.width,r.height=s.height,{popper:r,reference:a}},n.prototype._setupEventListeners=function(){if(this.state.updateBound=this.update.bind(this),e.addEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement){var t=l(this._reference);t!==e.document.body&&t!==e.document.documentElement||(t=e),t.addEventListener("scroll",this.state.updateBound),this.state.scrollTarget=t}},n.prototype._removeEventListeners=function(){e.removeEventListener("resize",this.state.updateBound),"window"!==this._options.boundariesElement&&this.state.scrollTarget&&(this.state.scrollTarget.removeEventListener("scroll",this.state.updateBound),this.state.scrollTarget=null),this.state.updateBound=null},n.prototype._getBoundaries=function(t,n,i){var r,o,a={};if("window"===i){var s=e.document.body,u=e.document.documentElement;o=Math.max(s.scrollHeight,s.offsetHeight,u.clientHeight,u.scrollHeight,u.offsetHeight),r=Math.max(s.scrollWidth,s.offsetWidth,u.clientWidth,u.scrollWidth,u.offsetWidth),a={top:0,right:r,bottom:o,left:0}}else if("viewport"===i){var h=c(this._popper),d=l(this._popper),p=f(h),v=function(e){return e==document.body?Math.max(document.documentElement.scrollTop,document.body.scrollTop):e.scrollTop},m=function(e){return e==document.body?Math.max(document.documentElement.scrollLeft,document.body.scrollLeft):e.scrollLeft},g="fixed"===t.offsets.popper.position?0:v(d),b="fixed"===t.offsets.popper.position?0:m(d);a={top:0-(p.top-g),right:e.document.documentElement.clientWidth-(p.left-b),bottom:e.document.documentElement.clientHeight-(p.top-g),left:0-(p.left-b)}}else a=c(this._popper)===i?{top:0,left:0,right:i.clientWidth,bottom:i.clientHeight}:f(i);return a.left+=n,a.right-=n,a.top=a.top+n,a.bottom=a.bottom-n,a},n.prototype.runModifiers=function(e,t,n){var i=t.slice();return void 0!==n&&(i=this._options.modifiers.slice(0,a(this._options.modifiers,n))),i.forEach(function(t){d(t)&&(e=t.call(this,e))}.bind(this)),e},n.prototype.isModifierRequired=function(e,t){var n=a(this._options.modifiers,e);return!!this._options.modifiers.slice(0,n).filter(function(e){return e===t}).length},n.prototype.modifiers={},n.prototype.modifiers.applyStyle=function(e){var t,n={position:e.offsets.popper.position},i=Math.round(e.offsets.popper.left),r=Math.round(e.offsets.popper.top);return this._options.gpuAcceleration&&(t=m("transform"))?(n[t]="translate3d("+i+"px, "+r+"px, 0)",n.top=0,n.left=0):(n.left=i,n.top=r),Object.assign(n,e.styles),h(this._popper,n),this._popper.setAttribute("x-placement",e.placement),this.isModifierRequired(this.modifiers.applyStyle,this.modifiers.arrow)&&e.offsets.arrow&&h(e.arrowElement,e.offsets.arrow),e},n.prototype.modifiers.shift=function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var r=e.offsets.reference,a=o(e.offsets.popper),s={y:{start:{top:r.top},end:{top:r.top+r.height-a.height}},x:{start:{left:r.left},end:{left:r.left+r.width-a.width}}},c=-1!==["bottom","top"].indexOf(n)?"x":"y";e.offsets.popper=Object.assign(a,s[c][i])}return e},n.prototype.modifiers.preventOverflow=function(e){var t=this._options.preventOverflowOrder,n=o(e.offsets.popper),i={left:function(){var t=n.left;return n.lefte.boundaries.right&&(t=Math.min(n.left,e.boundaries.right-n.width)),{left:t}},top:function(){var t=n.top;return n.tope.boundaries.bottom&&(t=Math.min(n.top,e.boundaries.bottom-n.height)),{top:t}}};return t.forEach(function(t){e.offsets.popper=Object.assign(n,i[t]())}),e},n.prototype.modifiers.keepTogether=function(e){var t=o(e.offsets.popper),n=e.offsets.reference,i=Math.floor;return t.righti(n.right)&&(e.offsets.popper.left=i(n.right)),t.bottomi(n.bottom)&&(e.offsets.popper.top=i(n.bottom)),e},n.prototype.modifiers.flip=function(e){if(!this.isModifierRequired(this.modifiers.flip,this.modifiers.preventOverflow))return console.warn("WARNING: preventOverflow modifier is required by flip modifier in order to work, be sure to include it before flip!"),e;if(e.flipped&&e.placement===e._originalPlacement)return e;var t=e.placement.split("-")[0],n=r(t),i=e.placement.split("-")[1]||"",a=[];return a="flip"===this._options.flipBehavior?[t,n]:this._options.flipBehavior,a.forEach(function(s,c){if(t===s&&a.length!==c+1){t=e.placement.split("-")[0],n=r(t);var l=o(e.offsets.popper),u=-1!==["right","bottom"].indexOf(t);(u&&Math.floor(e.offsets.reference[t])>Math.floor(l[n])||!u&&Math.floor(e.offsets.reference[t])s[f]&&(e.offsets.popper[h]+=c[h]+p-s[f]);var v=c[h]+(n||c[u]/2-p/2),m=v-s[h];return m=Math.max(Math.min(s[u]-p-8,m),8),r[h]=m,r[d]="",e.offsets.arrow=r,e.arrowElement=t,e},Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var t=Object(e),n=1;n.5?c/(2-o-a):c/(o+a),o){case e:i=(t-n)/c+(t1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=$(e,360),t=$(t,100),n=$(n,100),0===t)i=r=o=n;else{var s=n<.5?n*(1+t):n+t-n*t,c=2*n-s;i=a(c,s,e+1/3),r=a(c,s,e),o=a(c,s,e-1/3)}return{r:255*i,g:255*r,b:255*o}}function g(e,t,n){e=$(e,255),t=$(t,255),n=$(n,255);var i,r,o=u(e,t,n),a=l(e,t,n),s=o,c=o-a;if(r=0===o?0:c/o,o==a)i=0;else{switch(o){case e:i=(t-n)/c+(t>1)+720)%360;--t;)i.h=(i.h+r)%360,o.push(d(i));return o}function V(e,t){t=t||6;var n=d(e).toHsv(),i=n.h,r=n.s,o=n.v,a=[],s=1/t;while(t--)a.push(d({h:i,s:r,v:o})),o=(o+s)%1;return a}d.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,i,o,a,s=this.toRgb();return e=s.r/255,t=s.g/255,n=s.b/255,i=e<=.03928?e/12.92:r.pow((e+.055)/1.055,2.4),o=t<=.03928?t/12.92:r.pow((t+.055)/1.055,2.4),a=n<=.03928?n/12.92:r.pow((n+.055)/1.055,2.4),.2126*i+.7152*o+.0722*a},setAlpha:function(e){return this._a=P(e),this._roundA=c(100*this._a)/100,this},toHsv:function(){var e=g(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=g(this._r,this._g,this._b),t=c(360*e.h),n=c(100*e.s),i=c(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+i+"%)":"hsva("+t+", "+n+"%, "+i+"%, "+this._roundA+")"},toHsl:function(){var e=v(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=v(this._r,this._g,this._b),t=c(360*e.h),n=c(100*e.s),i=c(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+i+"%)":"hsla("+t+", "+n+"%, "+i+"%, "+this._roundA+")"},toHex:function(e){return y(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return _(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:c(this._r),g:c(this._g),b:c(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+c(this._r)+", "+c(this._g)+", "+c(this._b)+")":"rgba("+c(this._r)+", "+c(this._g)+", "+c(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:c(100*$(this._r,255))+"%",g:c(100*$(this._g,255))+"%",b:c(100*$(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+c(100*$(this._r,255))+"%, "+c(100*$(this._g,255))+"%, "+c(100*$(this._b,255))+"%)":"rgba("+c(100*$(this._r,255))+"%, "+c(100*$(this._g,255))+"%, "+c(100*$(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(I[y(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+C(this._r,this._g,this._b,this._a),n=t,i=this._gradientType?"GradientType = 1, ":"";if(e){var r=d(e);n="#"+C(r._r,r._g,r._b,r._a)}return"progid:DXImageTransform.Microsoft.gradient("+i+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,i=this._a<1&&this._a>=0,r=!t&&i&&("hex"===e||"hex6"===e||"hex3"===e||"hex4"===e||"hex8"===e||"name"===e);return r?"name"===e&&0===this._a?this.toName():this.toRgbString():("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString())},clone:function(){return d(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(E,arguments)},brighten:function(){return this._applyModification(O,arguments)},darken:function(){return this._applyModification(M,arguments)},desaturate:function(){return this._applyModification(w,arguments)},saturate:function(){return this._applyModification(x,arguments)},greyscale:function(){return this._applyModification(S,arguments)},spin:function(){return this._applyModification(z,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(H,arguments)},complement:function(){return this._applyCombination(k,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(A,arguments)},triad:function(){return this._applyCombination(T,arguments)},tetrad:function(){return this._applyCombination(L,arguments)}},d.fromRatio=function(e,t){if("object"==typeof e){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]="a"===i?e[i]:U(e[i]));e=n}return d(e,t)},d.equals=function(e,t){return!(!e||!t)&&d(e).toRgbString()==d(t).toRgbString()},d.random=function(){return d.fromRatio({r:h(),g:h(),b:h()})},d.mix=function(e,t,n){n=0===n?0:n||50;var i=d(e).toRgb(),r=d(t).toRgb(),o=n/100,a={r:(r.r-i.r)*o+i.r,g:(r.g-i.g)*o+i.g,b:(r.b-i.b)*o+i.b,a:(r.a-i.a)*o+i.a};return d(a)},d.readability=function(e,t){var n=d(e),i=d(t);return(r.max(n.getLuminance(),i.getLuminance())+.05)/(r.min(n.getLuminance(),i.getLuminance())+.05)},d.isReadable=function(e,t,n){var i,r,o=d.readability(e,t);switch(r=!1,i=Q(n),i.level+i.size){case"AAsmall":case"AAAlarge":r=o>=4.5;break;case"AAlarge":r=o>=3;break;case"AAAsmall":r=o>=7;break}return r},d.mostReadable=function(e,t,n){var i,r,o,a,s=null,c=0;n=n||{},r=n.includeFallbackColors,o=n.level,a=n.size;for(var l=0;lc&&(c=i,s=d(t[l]));return d.isReadable(e,s,{level:o,size:a})||!r?s:(n.includeFallbackColors=!1,d.mostReadable(e,["#fff","#000"],n))};var N=d.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},I=d.hexNames=D(N);function D(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function P(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function $(e,t){F(e)&&(e="100%");var n=B(e);return e=l(t,u(0,parseFloat(e))),n&&(e=parseInt(e*t,10)/100),r.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function R(e){return l(1,u(0,e))}function j(e){return parseInt(e,16)}function F(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)}function B(e){return"string"===typeof e&&-1!=e.indexOf("%")}function W(e){return 1==e.length?"0"+e:""+e}function U(e){return e<=1&&(e=100*e+"%"),e}function K(e){return r.round(255*parseFloat(e)).toString(16)}function q(e){return j(e)/255}var G=function(){var e="[-\\+]?\\d+%?",t="[-\\+]?\\d*\\.\\d+%?",n="(?:"+t+")|(?:"+e+")",i="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?",r="[\\s|\\(]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")[,|\\s]+("+n+")\\s*\\)?";return{CSS_UNIT:new RegExp(n),rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+r),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+r),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+r),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Y(e){return!!G.CSS_UNIT.exec(e)}function X(e){e=e.replace(o,"").replace(a,"").toLowerCase();var t,n=!1;if(N[e])e=N[e],n=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};return(t=G.rgb.exec(e))?{r:t[1],g:t[2],b:t[3]}:(t=G.rgba.exec(e))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=G.hsl.exec(e))?{h:t[1],s:t[2],l:t[3]}:(t=G.hsla.exec(e))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=G.hsv.exec(e))?{h:t[1],s:t[2],v:t[3]}:(t=G.hsva.exec(e))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=G.hex8.exec(e))?{r:j(t[1]),g:j(t[2]),b:j(t[3]),a:q(t[4]),format:n?"name":"hex8"}:(t=G.hex6.exec(e))?{r:j(t[1]),g:j(t[2]),b:j(t[3]),format:n?"name":"hex"}:(t=G.hex4.exec(e))?{r:j(t[1]+""+t[1]),g:j(t[2]+""+t[2]),b:j(t[3]+""+t[3]),a:q(t[4]+""+t[4]),format:n?"name":"hex8"}:!!(t=G.hex3.exec(e))&&{r:j(t[1]+""+t[1]),g:j(t[2]+""+t[2]),b:j(t[3]+""+t[3]),format:n?"name":"hex"}}function Q(e){var t,n;return e=e||{level:"AA",size:"small"},t=(e.level||"AA").toUpperCase(),n=(e.size||"small").toLowerCase(),"AA"!==t&&"AAA"!==t&&(t="AA"),"small"!==n&&"large"!==n&&(n="small"),{level:t,size:n}}e.exports?e.exports=d:(i=function(){return d}.call(t,n,t,e),void 0===i||(e.exports=i))})(Math)},"66f9":function(e,t,n){n("8a81"),n("8478"),n("1c01"),n("58b2"),n("9986"),n("e4f7"),n("456d"),n("25db"),n("0d6d"),n("cf6a"),n("9aea"),n("66c8"),n("57f0"),n("165b"),n("f751"),n("db97"),n("fd24"),n("06db"),n("d92a"),n("7f7f"),n("217b"),n("18d0"),n("b72c"),n("c5f6"),n("036c"),n("54a8"),n("2e37"),n("fca0"),n("7cdf"),n("ee1d"),n("b1b1"),n("87f3"),n("9278"),n("5df2"),n("04ff"),n("7f25"),n("536b"),n("d9ab"),n("f9ab"),n("32d7"),n("25c9"),n("9f3c"),n("042e"),n("c7c6"),n("f4ff"),n("7872"),n("049f"),n("a69f"),n("0b21"),n("6c1a"),n("c7c62"),n("84b4"),n("5695"),n("788d"),n("4f37"),n("5df3"),n("a032"),n("aef6"),n("2fdb"),n("14b9"),n("f559"),n("8449"),n("9c86"),n("fa83"),n("48c0"),n("d263"),n("6c37"),n("9ec8"),n("d0b0"),n("b54a"),n("f386"),n("1448"),n("673e"),n("242a"),n("78ce"),n("0298"),n("8ea5"),n("87b3"),n("c8ce"),n("2caf"),n("1c4c"),n("e804"),n("373f"),n("23bf"),n("55dd"),n("f3e2"),n("6d67"),n("d25f"),n("759f"),n("6095"),n("0cd8"),n("48f8"),n("57e7"),n("9865"),n("744f"),n("6c7b"),n("7514"),n("20d6"),n("d04f"),n("cadf"),n("3b2b"),n("b0c5"),n("6b54"),n("3846"),n("4917"),n("a481"),n("386d"),n("28a5"),n("551c"),n("f400"),n("4f7f"),n("10ad"),n("c02b"),n("c66f"),n("262f"),n("b05c"),n("34ef"),n("6aa2"),n("15ac"),n("af56"),n("b6e4"),n("9c29"),n("63d9"),n("4dda"),n("df1b"),n("2397"),n("88ca"),n("ba16"),n("7ff6"),n("d185"),n("ebde"),n("2d34"),n("f6b3"),n("2251"),n("c698"),n("a19f"),n("9253"),n("9275"),n("6762"),n("e956"),n("71f1"),n("3535"),n("f576"),n("ed50"),n("23be"),n("7c0e"),n("988d"),n("ac4d"),n("c7ca"),n("8e6e"),n("8615"),n("ffc1"),n("4504"),n("fee7"),n("b9a1"),n("64d5"),n("4704"),n("db9a"),n("729b"),n("99c5"),n("764f"),n("bdd1"),n("416c"),n("dd8a"),n("5d40"),n("5d90"),n("0c36"),n("a234"),n("4276"),n("09e0"),n("0c00"),n("2748"),n("1f91"),n("9c00"),n("2f78"),n("b4c2"),n("1f18"),n("692b"),n("c775"),n("8a5c"),n("ed7e"),n("097d"),n("a9cc"),n("e3d0"),n("ceaf"),n("e394"),n("b80b"),n("06a7"),n("7cdff"),n("896f"),n("ec39"),n("3a9c"),n("0d25"),n("37b5"),n("4795"),n("130f"),n("ac6a"),e.exports=n("8378")},6718:function(e,t,n){var i=n("e53d"),r=n("584a"),o=n("b8e3"),a=n("ccb9"),s=n("d9f6").f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},"673e":function(e,t,n){"use strict";n("386b")("sub",function(e){return function(){return e(this,"sub","","")}})},6747:function(e,t){var n=Array.isArray;e.exports=n},6762:function(e,t,n){"use strict";var i=n("5ca1"),r=n("c366")(!0);i(i.P,"Array",{includes:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")("includes")},"67ab":function(e,t,n){var i=n("ca5a")("meta"),r=n("d3f4"),o=n("69a8"),a=n("86cc").f,s=0,c=Object.isExtensible||function(){return!0},l=!n("79e5")(function(){return c(Object.preventExtensions({}))}),u=function(e){a(e,i,{value:{i:"O"+ ++s,w:{}}})},h=function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,i)){if(!c(e))return"F";if(!t)return"E";u(e)}return e[i].i},d=function(e,t){if(!o(e,i)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[i].w},f=function(e){return l&&p.NEED&&c(e)&&!o(e,i)&&u(e),e},p=e.exports={KEY:i,NEED:!1,fastKey:h,getWeak:d,onFreeze:f}},"67b8":function(e,t,n){var i=n("41d9"),r=n("42c6"),o=n("a090"),a=n("056c"),s=1/0,c=i?i.prototype:void 0,l=c?c.toString:void 0;function u(e){if("string"==typeof e)return e;if(o(e))return r(e,u)+"";if(a(e))return l?l.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}e.exports=u},"67bb":function(e,t,n){e.exports=n("f921")},"67ca":function(e,t,n){var i=n("cb5a");function r(e,t){var n=this.__data__,r=i(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}e.exports=r},6821:function(e,t,n){var i=n("626a"),r=n("be13");e.exports=function(e){return i(r(e))}},"692b":function(e,t,n){var i=n("5ca1"),r=Math.PI/180;i(i.S,"Math",{radians:function(e){return e*r}})},"696e":function(e,t,n){n("c207"),n("1654"),n("6c1c"),n("24c5"),n("3c11"),n("43fc"),e.exports=n("584a").Promise},"69a8":function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},"69d3":function(e,t,n){n("6718")("asyncIterator")},"69d5":function(e,t,n){var i=n("cb5a"),r=Array.prototype,o=r.splice;function a(e){var t=this.__data__,n=i(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():o.call(t,n,1),--this.size,!0}e.exports=a},"6a21":function(e,t,n){"use strict";var i=n("e834"),r=n.n(i),o={};t["a"]=function(e,t){e||o[t]||(r()(!1,t),o[t]=!0)}},"6a99":function(e,t,n){var i=n("d3f4");e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},"6aa2":function(e,t,n){n("ec30")("Uint8",1,function(e){return function(t,n,i){return e(this,t,n,i)}},!0)},"6abf":function(e,t,n){var i=n("e6f3"),r=n("1691").concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return i(e,r)}},"6b4c":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"6b51":function(e,t,n){"use strict";t.__esModule=!0,t["default"]={WHITESPACE:"whitespace",WORD:"word",STRING:"string",RESERVED:"reserved",RESERVED_TOPLEVEL:"reserved-toplevel",RESERVED_NEWLINE:"reserved-newline",OPERATOR:"operator",OPEN_PAREN:"open-paren",CLOSE_PAREN:"close-paren",LINE_COMMENT:"line-comment",BLOCK_COMMENT:"block-comment",NUMBER:"number",PLACEHOLDER:"placeholder"},e.exports=t["default"]},"6b54":function(e,t,n){"use strict";n("3846");var i=n("cb7c"),r=n("0bfb"),o=n("9e1e"),a="toString",s=/./[a],c=function(e){n("2aba")(RegExp.prototype,a,e,!0)};n("79e5")(function(){return"/a/b"!=s.call({source:"a",flags:"b"})})?c(function(){var e=i(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?r.call(e):void 0)}):s.name!=a&&c(function(){return s.call(this)})},"6b7c":function(e,t,n){"use strict";t.__esModule=!0;var i=n("4897");t.default={methods:{t:function(){for(var e=arguments.length,t=Array(e),n=0;n0},e.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),u?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,i=l.some(function(e){return!!~n.indexOf(e)});i&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),d=function(e,t){for(var n=0,i=Object.keys(t);n0},e}(),z="undefined"!==typeof WeakMap?new WeakMap:new n,k=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=h.getInstance(),i=new M(t,n,this);z.set(this,i)}return e}();["observe","unobserve","disconnect"].forEach(function(e){k.prototype[e]=function(){var t;return(t=z.get(this))[e].apply(t,arguments)}});var T=function(){return"undefined"!==typeof r.ResizeObserver?r.ResizeObserver:k}();t["default"]=T}.call(this,n("c8ba"))},"6e22":function(e,t,n){var i=n("9dfa6"),r=i(Object.keys,Object);e.exports=r},"6eea":function(e,t){function n(e){return null!=e&&"object"==typeof e}e.exports=n},"6f6c":function(e,t){var n=/\w*$/;function i(e){var t=new e.constructor(e.source,n.exec(e));return t.lastIndex=e.lastIndex,t}e.exports=i},"6fcd":function(e,t,n){var i=n("50d8"),r=n("d370"),o=n("6747"),a=n("0d24"),s=n("c0983"),c=n("73ac"),l=Object.prototype,u=l.hasOwnProperty;function h(e,t){var n=o(e),l=!n&&r(e),h=!n&&!l&&a(e),d=!n&&!l&&!h&&c(e),f=n||l||h||d,p=f?i(e.length,String):[],v=p.length;for(var m in e)!t&&!u.call(e,m)||f&&("length"==m||h&&("offset"==m||"parent"==m)||d&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||s(m,v))||p.push(m);return p}e.exports=h},"719f":function(e,t,n){var i=n("967f"),r=n("4a7f"),o=n("db36"),a=n("11e6");function s(e,t,n){return t=(n?r(e,t,n):void 0===t)?1:o(t),i(a(e),t)}e.exports=s},"71c1":function(e,t,n){var i=n("3a38"),r=n("25eb");e.exports=function(e){return function(t,n){var o,a,s=String(r(t)),c=i(n),l=s.length;return c<0||c>=l?e?"":void 0:(o=s.charCodeAt(c),o<55296||o>56319||c+1===l||(a=s.charCodeAt(c+1))<56320||a>57343?e?s.charAt(c):o:e?s.slice(c,c+2):a-56320+(o-55296<<10)+65536)}}},"71f1":function(e,t,n){"use strict";var i=n("5ca1"),r=n("c45f"),o=n("4bf8"),a=n("9def"),s=n("4588"),c=n("cd1c");i(i.P,"Array",{flatten:function(){var e=arguments[0],t=o(this),n=a(t.length),i=c(t,0);return r(i,t,t,n,0,void 0===e?1:s(e)),i}}),n("9c6c")("flatten")},"722f":function(e,t,n){"use strict";t.__esModule=!0;var i="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},r=n("e452"),o=a(r);function a(e){return e&&e.__esModule?e:{default:e}}var s,c=c||{};c.Dialog=function(e,t,n){var r=this;if(this.dialogNode=e,null===this.dialogNode||"dialog"!==this.dialogNode.getAttribute("role"))throw new Error("Dialog() requires a DOM element with ARIA role of dialog.");"string"===typeof t?this.focusAfterClosed=document.getElementById(t):"object"===("undefined"===typeof t?"undefined":i(t))?this.focusAfterClosed=t:this.focusAfterClosed=null,"string"===typeof n?this.focusFirst=document.getElementById(n):"object"===("undefined"===typeof n?"undefined":i(n))?this.focusFirst=n:this.focusFirst=null,this.focusFirst?this.focusFirst.focus():o.default.focusFirstDescendant(this.dialogNode),this.lastFocus=document.activeElement,s=function(e){r.trapFocus(e)},this.addListeners()},c.Dialog.prototype.addListeners=function(){document.addEventListener("focus",s,!0)},c.Dialog.prototype.removeListeners=function(){document.removeEventListener("focus",s,!0)},c.Dialog.prototype.closeDialog=function(){var e=this;this.removeListeners(),this.focusAfterClosed&&setTimeout(function(){e.focusAfterClosed.focus()})},c.Dialog.prototype.trapFocus=function(e){o.default.IgnoreUtilFocusChanges||(this.dialogNode.contains(e.target)?this.lastFocus=e.target:(o.default.focusFirstDescendant(this.dialogNode),this.lastFocus===document.activeElement&&o.default.focusLastDescendant(this.dialogNode),this.lastFocus=document.activeElement))},t.default=c.Dialog},"729b":function(e,t,n){n("c6a1")("Map")},7333:function(e,t,n){"use strict";var i=n("9e1e"),r=n("0d58"),o=n("2621"),a=n("52a7"),s=n("4bf8"),c=n("626a"),l=Object.assign;e.exports=!l||n("79e5")(function(){var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=i})?function(e,t){var n=s(e),l=arguments.length,u=1,h=o.f,d=a.f;while(l>u){var f,p=c(arguments[u++]),v=h?r(p).concat(h(p)):r(p),m=v.length,g=0;while(m>g)f=v[g++],i&&!d.call(p,f)||(n[f]=p[f])}return n}:l},"73ac":function(e,t,n){var i=n("743f"),r=n("b047"),o=n("99d3"),a=o&&o.isTypedArray,s=a?r(a):i;e.exports=s},7430:function(e,t){var n=Function.prototype,i=n.toString;function r(e){if(null!=e){try{return i.call(e)}catch(t){}try{return e+""}catch(t){}}return""}e.exports=r},"743f":function(e,t,n){var i=n("3729"),r=n("b218"),o=n("1310"),a="[object Arguments]",s="[object Array]",c="[object Boolean]",l="[object Date]",u="[object Error]",h="[object Function]",d="[object Map]",f="[object Number]",p="[object Object]",v="[object RegExp]",m="[object Set]",g="[object String]",b="[object WeakMap]",y="[object ArrayBuffer]",_="[object DataView]",C="[object Float32Array]",w="[object Float64Array]",x="[object Int8Array]",S="[object Int16Array]",E="[object Int32Array]",O="[object Uint8Array]",M="[object Uint8ClampedArray]",z="[object Uint16Array]",k="[object Uint32Array]",T={};function L(e){return o(e)&&r(e.length)&&!!T[i(e)]}T[C]=T[w]=T[x]=T[S]=T[E]=T[O]=T[M]=T[z]=T[k]=!0,T[a]=T[s]=T[y]=T[c]=T[_]=T[l]=T[u]=T[h]=T[d]=T[f]=T[p]=T[v]=T[m]=T[g]=T[b]=!1,e.exports=L},"744f":function(e,t,n){var i=n("5ca1");i(i.P,"Array",{copyWithin:n("ba92")}),n("9c6c")("copyWithin")},7514:function(e,t,n){"use strict";var i=n("5ca1"),r=n("0a49")(5),o="find",a=!0;o in[]&&Array(1)[o](function(){a=!1}),i(i.P+i.F*a,"Array",{find:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),n("9c6c")(o)},7530:function(e,t,n){var i=n("1a8c"),r=Object.create,o=function(){function e(){}return function(t){if(!i(t))return{};if(r)return r(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},"759f":function(e,t,n){"use strict";var i=n("5ca1"),r=n("0a49")(3);i(i.P+i.F*!n("2f21")([].some,!0),"Array",{some:function(e){return r(this,e,arguments[1])}})},"75fc":function(e,t,n){"use strict";var i=n("a745"),r=n.n(i);function o(e){if(r()(e)){for(var t=0,n=new Array(e.length);ts)a.push(String(t[s++])),s-1);return n}e.exports=r},"794b":function(e,t,n){e.exports=!n("8e60")&&!n("294c")(function(){return 7!=Object.defineProperty(n("1ec9")("div"),"a",{get:function(){return 7}}).a})},"795b":function(e,t,n){e.exports=n("696e")},"79aa":function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},"79bc":function(e,t,n){var i=n("0b07"),r=n("2b3e"),o=i(r,"Map");e.exports=o},"79e5":function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},"7a48":function(e,t,n){var i=n("6044"),r=Object.prototype,o=r.hasOwnProperty;function a(e){var t=this.__data__;return i?void 0!==t[e]:o.call(t,e)}e.exports=a},"7a56":function(e,t,n){"use strict";var i=n("7726"),r=n("86cc"),o=n("9e1e"),a=n("2b4c")("species");e.exports=function(e){var t=i[e];o&&t&&!t[a]&&r.f(t,a,{configurable:!0,get:function(){return this}})}},"7a77":function(e,t,n){"use strict";function i(e){this.message=e}i.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},i.prototype.__CANCEL__=!0,e.exports=i},"7aac":function(e,t,n){"use strict";var i=n("c532");e.exports=i.isStandardBrowserEnv()?function(){return{write:function(e,t,n,r,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"7b05":function(e,t,n){"use strict";n.d(t,"a",function(){return u});var i=n("9b57"),r=n.n(i),o=n("41b2"),a=n.n(o),s=n("daa3");function c(e,t){var n=e.componentOptions,i=e.data,r={};n&&n.listeners&&(r=a()({},n.listeners));var o={};i&&i.on&&(o=a()({},i.on));var s=new e.constructor(e.tag,i?a()({},i,{on:o}):i,e.children,e.text,e.elm,e.context,n?a()({},n,{listeners:r}):n,e.asyncFactory);return s.ns=e.ns,s.isStatic=e.isStatic,s.key=e.key,s.isComment=e.isComment,s.fnContext=e.fnContext,s.fnOptions=e.fnOptions,s.fnScopeId=e.fnScopeId,s.isCloned=!0,t&&(e.children&&(s.children=l(e.children,!0)),n&&n.children&&(n.children=l(n.children,!0))),s}function l(e,t){for(var n=e.length,i=new Array(n),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2],i=e;if(Array.isArray(e)&&(i=Object(s["b"])(e)[0]),!i)return null;var o=c(i,n),l=t.props,u=void 0===l?{}:l,h=t.key,d=t.on,f=void 0===d?{}:d,p=t.children,v=t.directives,m=void 0===v?[]:v,g=o.data||{},b={},y={},_=t.attrs,C=void 0===_?{}:_,w=t.ref,x=t.domProps,S=void 0===x?{}:x,E=t.style,O=void 0===E?{}:E,M=t["class"],z=void 0===M?{}:M,k=t.scopedSlots,T=void 0===k?{}:k;return y="string"===typeof g.style?Object(s["n"])(g.style):a()({},g.style,y),y="string"===typeof O?a()({},y,Object(s["n"])(y)):a()({},y,O),"string"===typeof g["class"]&&""!==g["class"].trim()?g["class"].split(" ").forEach(function(e){b[e.trim()]=!0}):b=a()({},g["class"],b),"string"===typeof z&&""!==z.trim()?z.split(" ").forEach(function(e){b[e.trim()]=!0}):b=a()({},b,z),o.data=a()({},g,{style:y,attrs:a()({},g.attrs,C),class:b,domProps:a()({},g.domProps,S),scopedSlots:a()({},g.scopedSlots,T),directives:[].concat(r()(g.directives||[]),r()(m))}),o.componentOptions?(o.componentOptions.propsData=o.componentOptions.propsData||{},o.componentOptions.listeners=o.componentOptions.listeners||{},o.componentOptions.propsData=a()({},o.componentOptions.propsData,u),o.componentOptions.listeners=a()({},o.componentOptions.listeners,f),p&&(o.componentOptions.children=p)):o.data.on=a()({},o.data.on||{},f),void 0!==h&&(o.key=h,o.data.key=h),"string"===typeof w&&(o.data.ref=w),o}},"7b23":function(e,t,n){var i=n("d8e8"),r=n("4bf8"),o=n("626a"),a=n("9def");e.exports=function(e,t,n,s,c){i(t);var l=r(e),u=o(l),h=a(l.length),d=c?h-1:0,f=c?-1:1;if(n<2)for(;;){if(d in u){s=u[d],d+=f;break}if(d+=f,c?d<0:h<=d)throw TypeError("Reduce of empty array with no initial value")}for(;c?d>=0:h>d;d+=f)d in u&&(s=t(s,u[d],d,l));return s}},"7b3e":function(e,t,n){"use strict";var i,r=n("a3de"); +/** + * Checks if an event is supported in the current execution environment. + * + * NOTE: This will not work correctly for non-generic events such as `change`, + * `reset`, `load`, `error`, and `select`. + * + * Borrows from Modernizr. + * + * @param {string} eventNameSuffix Event name, e.g. "click". + * @param {?boolean} capture Check if the capture phase is supported. + * @return {boolean} True if the event is supported. + * @internal + * @license Modernizr 3.0.0pre (Custom Build) | MIT + */ +function o(e,t){if(!r.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,o=n in document;if(!o){var a=document.createElement("div");a.setAttribute(n,"return;"),o="function"===typeof a[n]}return!o&&i&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}r.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=o},"7b83":function(e,t,n){var i=n("7c64"),r=n("93ed"),o=n("2478"),a=n("a524"),s=n("1fc8");function c(e){var t=-1,n=null==e?0:e.length;this.clear();while(++tc)i.f(e,n=a[c++],t[n]);return e}},"7f20":function(e,t,n){var i=n("86cc").f,r=n("69a8"),o=n("2b4c")("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},"7f25":function(e,t,n){var i=n("5ca1"),r=n("d6c6"),o=Math.sqrt,a=Math.acosh;i(i.S+i.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:r(e-1+o(e-1)*o(e+1))}})},"7f4d":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e){for(var t=1,n=arguments.length;t=n.length)return{value:void 0,done:!0}}while(!((e=n[t._i++])in t._t));return{value:e,done:!1}}),i(i.S,"Reflect",{enumerate:function(e){return new o(e)}})},"802a":function(e,t){function n(e){return this.__data__.get(e)}e.exports=n},8057:function(e,t){function n(e,t){var n=-1,i=null==e?0:e.length;while(++n0&&void 0!==arguments[0]?arguments[0]:"";return String(e).replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")};var p=t.arrayFindIndex=function(e,t){for(var n=0;n!==e.length;++n)if(t(e[n]))return n;return-1},v=(t.arrayFind=function(e,t){var n=p(e,t);return-1!==n?e[n]:void 0},t.coerceTruthyValueToArray=function(e){return Array.isArray(e)?e:e?[e]:[]},t.isIE=function(){return!o.default.prototype.$isServer&&!isNaN(Number(document.documentMode))},t.isEdge=function(){return!o.default.prototype.$isServer&&navigator.userAgent.indexOf("Edge")>-1},t.autoprefixer=function(e){if("object"!==("undefined"===typeof e?"undefined":i(e)))return e;var t=["transform","transition","animation"],n=["ms-","webkit-"];return t.forEach(function(t){var i=e[t];t&&i&&n.forEach(function(n){e[n+t]=i})}),e},t.kebabCase=function(e){var t=/([^-])([A-Z])/g;return e.replace(t,"$1-$2").replace(t,"$1-$2").toLowerCase()},t.capitalize=function(e){return(0,a.isString)(e)?e.charAt(0).toUpperCase()+e.slice(1):e},t.looseEqual=function(e,t){var n=(0,a.isObject)(e),i=(0,a.isObject)(t);return n&&i?JSON.stringify(e)===JSON.stringify(t):!n&&!i&&String(e)===String(t)}),m=t.arrayEquals=function(e,t){if(e=e||[],t=t||[],e.length!==t.length)return!1;for(var n=0;n0?Math.floor:Math.ceil)(e)}})},"84f2":function(e,t){e.exports={}},"85f2":function(e,t,n){e.exports=n("454f")},8615:function(e,t,n){var i=n("5ca1"),r=n("504c")(!1);i(i.S,"Object",{values:function(e){return r(e)}})},"86cc":function(e,t,n){var i=n("cb7c"),r=n("c69a"),o=n("6a99"),a=Object.defineProperty;t.f=n("9e1e")?Object.defineProperty:function(e,t,n){if(i(e),t=o(t,!0),i(n),r)try{return a(e,t,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},"872a":function(e,t,n){var i=n("3b4a");function r(e,t,n){"__proto__"==t&&i?i(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}e.exports=r},"87b3":function(e,t,n){var i=Date.prototype,r="Invalid Date",o="toString",a=i[o],s=i.getTime;new Date(NaN)+""!=r&&n("2aba")(i,o,function(){var e=s.call(this);return e===e?a.call(this):r})},"87f3":function(e,t,n){var i=n("5ca1");i(i.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},8827:function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"88ca":function(e,t,n){var i=n("86cc"),r=n("5ca1"),o=n("cb7c"),a=n("6a99");r(r.S+r.F*n("79e5")(function(){Reflect.defineProperty(i.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(e,t,n){o(e),t=a(t,!0),o(n);try{return i.f(e,t,n),!0}catch(r){return!1}}})},"896f":function(e,t,n){var i=n("37a7"),r=n("cb7c"),o=n("38fd"),a=i.has,s=i.key,c=function(e,t,n){var i=a(e,t,n);if(i)return!0;var r=o(t);return null!==r&&c(e,r,n)};i.exp({hasMetadata:function(e,t){return c(e,r(t),arguments.length<3?void 0:s(arguments[2]))}})},"8a5c":function(e,t,n){var i=n("5ca1");i(i.S,"Math",{umulh:function(e,t){var n=65535,i=+e,r=+t,o=i&n,a=r&n,s=i>>>16,c=r>>>16,l=(s*a>>>0)+(o*a>>>16);return s*c+(l>>>16)+((o*c>>>0)+(l&n)>>>16)}})},"8a81":function(e,t,n){"use strict";var i=n("7726"),r=n("69a8"),o=n("9e1e"),a=n("5ca1"),s=n("2aba"),c=n("67ab").KEY,l=n("79e5"),u=n("5537"),h=n("7f20"),d=n("ca5a"),f=n("2b4c"),p=n("37c8"),v=n("3a72"),m=n("d4c0"),g=n("1169"),b=n("cb7c"),y=n("d3f4"),_=n("4bf8"),C=n("6821"),w=n("6a99"),x=n("4630"),S=n("2aeb"),E=n("7bbc"),O=n("11e9"),M=n("2621"),z=n("86cc"),k=n("0d58"),T=O.f,L=z.f,A=E.f,H=i.Symbol,V=i.JSON,N=V&&V.stringify,I="prototype",D=f("_hidden"),P=f("toPrimitive"),$={}.propertyIsEnumerable,R=u("symbol-registry"),j=u("symbols"),F=u("op-symbols"),B=Object[I],W="function"==typeof H&&!!M.f,U=i.QObject,K=!U||!U[I]||!U[I].findChild,q=o&&l(function(){return 7!=S(L({},"a",{get:function(){return L(this,"a",{value:7}).a}})).a})?function(e,t,n){var i=T(B,t);i&&delete B[t],L(e,t,n),i&&e!==B&&L(B,t,i)}:L,G=function(e){var t=j[e]=S(H[I]);return t._k=e,t},Y=W&&"symbol"==typeof H.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof H},X=function(e,t,n){return e===B&&X(F,t,n),b(e),t=w(t,!0),b(n),r(j,t)?(n.enumerable?(r(e,D)&&e[D][t]&&(e[D][t]=!1),n=S(n,{enumerable:x(0,!1)})):(r(e,D)||L(e,D,x(1,{})),e[D][t]=!0),q(e,t,n)):L(e,t,n)},Q=function(e,t){b(e);var n,i=m(t=C(t)),r=0,o=i.length;while(o>r)X(e,n=i[r++],t[n]);return e},J=function(e,t){return void 0===t?S(e):Q(S(e),t)},Z=function(e){var t=$.call(this,e=w(e,!0));return!(this===B&&r(j,e)&&!r(F,e))&&(!(t||!r(this,e)||!r(j,e)||r(this,D)&&this[D][e])||t)},ee=function(e,t){if(e=C(e),t=w(t,!0),e!==B||!r(j,t)||r(F,t)){var n=T(e,t);return!n||!r(j,t)||r(e,D)&&e[D][t]||(n.enumerable=!0),n}},te=function(e){var t,n=A(C(e)),i=[],o=0;while(n.length>o)r(j,t=n[o++])||t==D||t==c||i.push(t);return i},ne=function(e){var t,n=e===B,i=A(n?F:C(e)),o=[],a=0;while(i.length>a)!r(j,t=i[a++])||n&&!r(B,t)||o.push(j[t]);return o};W||(H=function(){if(this instanceof H)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(F,n),r(this,D)&&r(this[D],e)&&(this[D][e]=!1),q(this,e,x(1,n))};return o&&K&&q(B,e,{configurable:!0,set:t}),G(e)},s(H[I],"toString",function(){return this._k}),O.f=ee,z.f=X,n("9093").f=E.f=te,n("52a7").f=Z,M.f=ne,o&&!n("2d00")&&s(B,"propertyIsEnumerable",Z,!0),p.f=function(e){return G(f(e))}),a(a.G+a.W+a.F*!W,{Symbol:H});for(var ie="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;ie.length>re;)f(ie[re++]);for(var oe=k(f.store),ae=0;oe.length>ae;)v(oe[ae++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return r(R,e+="")?R[e]:R[e]=H(e)},keyFor:function(e){if(!Y(e))throw TypeError(e+" is not a symbol!");for(var t in R)if(R[t]===e)return t},useSetter:function(){K=!0},useSimple:function(){K=!1}}),a(a.S+a.F*!W,"Object",{create:J,defineProperty:X,defineProperties:Q,getOwnPropertyDescriptor:ee,getOwnPropertyNames:te,getOwnPropertySymbols:ne});var se=l(function(){M.f(1)});a(a.S+a.F*se,"Object",{getOwnPropertySymbols:function(e){return M.f(_(e))}}),V&&a(a.S+a.F*(!W||l(function(){var e=H();return"[null]"!=N([e])||"{}"!=N({a:e})||"{}"!=N(Object(e))})),"JSON",{stringify:function(e){var t,n,i=[e],r=1;while(arguments.length>r)i.push(arguments[r++]);if(n=t=i[1],(y(t)||void 0!==e)&&!Y(e))return g(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Y(t))return t}),i[1]=t,N.apply(V,i)}}),H[I][P]||n("32e9")(H[I],P,H[I].valueOf),h(H,"Symbol"),h(Math,"Math",!0),h(i.JSON,"JSON",!0)},"8aae":function(e,t,n){n("32a6"),e.exports=n("584a").Object.keys},"8b97":function(e,t,n){var i=n("d3f4"),r=n("cb7c"),o=function(e,t){if(r(e),!i(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,i){try{i=n("9b43")(Function.call,n("11e9").f(Object.prototype,"__proto__").set,2),i(e,[]),t=!(e instanceof Array)}catch(r){t=!0}return function(e,n){return o(e,n),t?e.__proto__=n:i(e,n),e}}({},!1):void 0),check:o}},"8bbc":function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=124)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},124:function(e,t,n){"use strict";n.r(t);var i,r,o={name:"ElTag",props:{text:String,closable:Boolean,type:String,hit:Boolean,disableTransitions:Boolean,color:String,size:String,effect:{type:String,default:"light",validator:function(e){return["dark","light","plain"].includes(e)}}},methods:{handleClose:function(e){e.stopPropagation(),this.$emit("close",e)},handleClick:function(e){this.$emit("click",e)}},computed:{tagSize:function(){return this.size||(this.$ELEMENT||{}).size}},render:function(e){var t=this.type,n=this.tagSize,i=this.hit,r=this.effect,o=["el-tag",t?"el-tag--"+t:"",n?"el-tag--"+n:"",r?"el-tag--"+r:"",i&&"is-hit"],a=e("span",{class:o,style:{backgroundColor:this.color},on:{click:this.handleClick}},[this.$slots.default,this.closable&&e("i",{class:"el-tag__close el-icon-close",on:{click:this.handleClose}})]);return this.disableTransitions?a:e("transition",{attrs:{name:"el-zoom-in-center"}},[a])}},a=o,s=n(0),c=Object(s["a"])(a,i,r,!1,null,null,null);c.options.__file="packages/tag/src/tag.vue";var l=c.exports;l.install=function(e){e.component(l.name,l)};t["default"]=l}})},"8c1e":function(e,t,n){"use strict";var i=Object.assign||function(e){for(var t=1;t-1}function o(e,t){for(var n in t)e[n]=t[n];return e}var a={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(e,t){var n=t.props,i=t.children,r=t.parent,a=t.data;a.routerView=!0;var c=r.$createElement,l=n.name,u=r.$route,h=r._routerViewCache||(r._routerViewCache={}),d=0,f=!1;while(r&&r._routerRoot!==r){var p=r.$vnode&&r.$vnode.data;p&&(p.routerView&&d++,p.keepAlive&&r._inactive&&(f=!0)),r=r.$parent}if(a.routerViewDepth=d,f)return c(h[l],a,i);var v=u.matched[d];if(!v)return h[l]=null,c();var m=h[l]=v.components[l];a.registerRouteInstance=function(e,t){var n=v.instances[l];(t&&n!==e||!t&&n===e)&&(v.instances[l]=t)},(a.hook||(a.hook={})).prepatch=function(e,t){v.instances[l]=t.componentInstance},a.hook.init=function(e){e.data.keepAlive&&e.componentInstance&&e.componentInstance!==v.instances[l]&&(v.instances[l]=e.componentInstance)};var g=a.props=s(u,v.props&&v.props[l]);if(g){g=a.props=o({},g);var b=a.attrs=a.attrs||{};for(var y in g)m.props&&y in m.props||(b[y]=g[y],delete g[y])}return c(m,a,i)}};function s(e,t){switch(typeof t){case"undefined":return;case"object":return t;case"function":return t(e);case"boolean":return t?e.params:void 0;default:0}}var c=/[!'()*]/g,l=function(e){return"%"+e.charCodeAt(0).toString(16)},u=/%2C/g,h=function(e){return encodeURIComponent(e).replace(c,l).replace(u,",")},d=decodeURIComponent;function f(e,t,n){void 0===t&&(t={});var i,r=n||p;try{i=r(e||"")}catch(a){i={}}for(var o in t)i[o]=t[o];return i}function p(e){var t={};return e=e.trim().replace(/^(\?|#|&)/,""),e?(e.split("&").forEach(function(e){var n=e.replace(/\+/g," ").split("="),i=d(n.shift()),r=n.length>0?d(n.join("=")):null;void 0===t[i]?t[i]=r:Array.isArray(t[i])?t[i].push(r):t[i]=[t[i],r]}),t):t}function v(e){var t=e?Object.keys(e).map(function(t){var n=e[t];if(void 0===n)return"";if(null===n)return h(t);if(Array.isArray(n)){var i=[];return n.forEach(function(e){void 0!==e&&(null===e?i.push(h(t)):i.push(h(t)+"="+h(e)))}),i.join("&")}return h(t)+"="+h(n)}).filter(function(e){return e.length>0}).join("&"):null;return t?"?"+t:""}var m=/\/?$/;function g(e,t,n,i){var r=i&&i.options.stringifyQuery,o=t.query||{};try{o=b(o)}catch(s){}var a={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:o,params:t.params||{},fullPath:C(t,r),matched:e?_(e):[]};return n&&(a.redirectedFrom=C(n,r)),Object.freeze(a)}function b(e){if(Array.isArray(e))return e.map(b);if(e&&"object"===typeof e){var t={};for(var n in e)t[n]=b(e[n]);return t}return e}var y=g(null,{path:"/"});function _(e){var t=[];while(e)t.unshift(e),e=e.parent;return t}function C(e,t){var n=e.path,i=e.query;void 0===i&&(i={});var r=e.hash;void 0===r&&(r="");var o=t||v;return(n||"/")+o(i)+r}function w(e,t){return t===y?e===t:!!t&&(e.path&&t.path?e.path.replace(m,"")===t.path.replace(m,"")&&e.hash===t.hash&&x(e.query,t.query):!(!e.name||!t.name)&&(e.name===t.name&&e.hash===t.hash&&x(e.query,t.query)&&x(e.params,t.params)))}function x(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e),i=Object.keys(t);return n.length===i.length&&n.every(function(n){var i=e[n],r=t[n];return"object"===typeof i&&"object"===typeof r?x(i,r):String(i)===String(r)})}function S(e,t){return 0===e.path.replace(m,"/").indexOf(t.path.replace(m,"/"))&&(!t.hash||e.hash===t.hash)&&E(e.query,t.query)}function E(e,t){for(var n in t)if(!(n in e))return!1;return!0}var O,M=[String,Object],z=[String,Array],k={name:"RouterLink",props:{to:{type:M,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:z,default:"click"}},render:function(e){var t=this,n=this.$router,i=this.$route,r=n.resolve(this.to,i,this.append),a=r.location,s=r.route,c=r.href,l={},u=n.options.linkActiveClass,h=n.options.linkExactActiveClass,d=null==u?"router-link-active":u,f=null==h?"router-link-exact-active":h,p=null==this.activeClass?d:this.activeClass,v=null==this.exactActiveClass?f:this.exactActiveClass,m=a.path?g(null,a,null,n):s;l[v]=w(i,m),l[p]=this.exact?l[v]:S(i,m);var b=function(e){T(e)&&(t.replace?n.replace(a):n.push(a))},y={click:T};Array.isArray(this.event)?this.event.forEach(function(e){y[e]=b}):y[this.event]=b;var _={class:l};if("a"===this.tag)_.on=y,_.attrs={href:c};else{var C=L(this.$slots.default);if(C){C.isStatic=!1;var x=C.data=o({},C.data);x.on=y;var E=C.data.attrs=o({},C.data.attrs);E.href=c}else _.on=y}return e(this.tag,_,this.$slots.default)}};function T(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(void 0===e.button||0===e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function L(e){if(e)for(var t,n=0;n=0&&(t=e.slice(i),e=e.slice(0,i));var r=e.indexOf("?");return r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),{path:e,query:n,hash:t}}function I(e){return e.replace(/\/\//g,"/")}var D=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)},P=ie,$=W,R=U,j=G,F=ne,B=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function W(e,t){var n,i=[],r=0,o=0,a="",s=t&&t.delimiter||"/";while(null!=(n=B.exec(e))){var c=n[0],l=n[1],u=n.index;if(a+=e.slice(o,u),o=u+c.length,l)a+=l[1];else{var h=e[o],d=n[2],f=n[3],p=n[4],v=n[5],m=n[6],g=n[7];a&&(i.push(a),a="");var b=null!=d&&null!=h&&h!==d,y="+"===m||"*"===m,_="?"===m||"*"===m,C=n[2]||s,w=p||v;i.push({name:f||r++,prefix:d||"",delimiter:C,optional:_,repeat:y,partial:b,asterisk:!!g,pattern:w?X(w):g?".*":"[^"+Y(C)+"]+?"})}}return o-1&&(s.params[d]=n.params[d]);if(l)return s.path=oe(l.path,s.params,'named route "'+c+'"'),u(l,s,a)}else if(s.path){s.params={};for(var f=0;f=e.length?n():e[r]?t(e[r],function(){i(r+1)}):i(r+1)};i(0)}function Ve(e){return function(t,n,i){var o=!1,a=0,s=null;Ne(e,function(e,t,n,c){if("function"===typeof e&&void 0===e.cid){o=!0,a++;var l,u=$e(function(t){Pe(t)&&(t=t.default),e.resolved="function"===typeof t?t:O.extend(t),n.components[c]=t,a--,a<=0&&i()}),h=$e(function(e){var t="Failed to resolve async component "+c+": "+e;s||(s=r(e)?e:new Error(t),i(s))});try{l=e(u,h)}catch(f){h(f)}if(l)if("function"===typeof l.then)l.then(u,h);else{var d=l.component;d&&"function"===typeof d.then&&d.then(u,h)}}}),o||i()}}function Ne(e,t){return Ie(e.map(function(e){return Object.keys(e.components).map(function(n){return t(e.components[n],e.instances[n],e,n)})}))}function Ie(e){return Array.prototype.concat.apply([],e)}var De="function"===typeof Symbol&&"symbol"===typeof Symbol.toStringTag;function Pe(e){return e.__esModule||De&&"Module"===e[Symbol.toStringTag]}function $e(e){var t=!1;return function(){var n=[],i=arguments.length;while(i--)n[i]=arguments[i];if(!t)return t=!0,e.apply(this,n)}}var Re=function(e,t){this.router=e,this.base=je(t),this.current=y,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function je(e){if(!e)if(H){var t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^https?:\/\/[^\/]+/,"")}else e="/";return"/"!==e.charAt(0)&&(e="/"+e),e.replace(/\/$/,"")}function Fe(e,t){var n,i=Math.max(e.length,t.length);for(n=0;n-1?decodeURI(e.slice(0,i))+e.slice(i):decodeURI(e)}else n>-1&&(e=decodeURI(e.slice(0,n))+e.slice(n));return e}function it(e){var t=window.location.href,n=t.indexOf("#"),i=n>=0?t.slice(0,n):t;return i+"#"+e}function rt(e){Ee?Le(it(e)):window.location.hash=e}function ot(e){Ee?Ae(it(e)):window.location.replace(it(e))}var at=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index+1).concat(e),i.index++,t&&t(e)},n)},t.prototype.replace=function(e,t,n){var i=this;this.transitionTo(e,function(e){i.stack=i.stack.slice(0,i.index).concat(e),t&&t(e)},n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var i=this.stack[n];this.confirmTransition(i,function(){t.index=n,t.updateRoute(i)})}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Re),st=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=he(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!Ee&&!1!==e.fallback,this.fallback&&(t="hash"),H||(t="abstract"),this.mode=t,t){case"history":this.history=new Qe(this,e.base);break;case"hash":this.history=new Ze(this,e.base,this.fallback);break;case"abstract":this.history=new at(this,e.base);break;default:0}},ct={currentRoute:{configurable:!0}};function lt(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}function ut(e,t,n){var i="hash"===n?"#"+t:t;return e?I(e+"/"+i):i}st.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},ct.currentRoute.get=function(){return this.history&&this.history.current},st.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null)}),!this.app){this.app=e;var n=this.history;if(n instanceof Qe)n.transitionTo(n.getCurrentLocation());else if(n instanceof Ze){var i=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),i,i)}n.listen(function(e){t.apps.forEach(function(t){t._route=e})})}},st.prototype.beforeEach=function(e){return lt(this.beforeHooks,e)},st.prototype.beforeResolve=function(e){return lt(this.resolveHooks,e)},st.prototype.afterEach=function(e){return lt(this.afterHooks,e)},st.prototype.onReady=function(e,t){this.history.onReady(e,t)},st.prototype.onError=function(e){this.history.onError(e)},st.prototype.push=function(e,t,n){this.history.push(e,t,n)},st.prototype.replace=function(e,t,n){this.history.replace(e,t,n)},st.prototype.go=function(e){this.history.go(e)},st.prototype.back=function(){this.go(-1)},st.prototype.forward=function(){this.go(1)},st.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map(function(e){return Object.keys(e.components).map(function(t){return e.components[t]})})):[]},st.prototype.resolve=function(e,t,n){t=t||this.history.current;var i=ue(e,t,n,this),r=this.match(i,t),o=r.redirectedFrom||r.fullPath,a=this.history.base,s=ut(a,o,this.mode);return{location:i,route:r,href:s,normalizedTo:i,resolved:r}},st.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(st.prototype,ct),st.install=A,st.version="3.0.6",H&&window.Vue&&window.Vue.use(st),t["a"]=st},"8c97":function(e,t,n){var i=n("f3e7"),r=n("3f54"),o=i(r,"Map");e.exports=o},"8df4":function(e,t,n){"use strict";var i=n("7a77");function r(e){if("function"!==typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new i(e),t(n.reason))})}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},"8e60":function(e,t,n){e.exports=!n("294c")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"8e6e":function(e,t,n){var i=n("5ca1"),r=n("990b"),o=n("6821"),a=n("11e9"),s=n("f1ae");i(i.S,"Object",{getOwnPropertyDescriptors:function(e){var t,n,i=o(e),c=a.f,l=r(i),u={},h=0;while(l.length>h)n=c(i,t=l[h++]),void 0!==n&&s(u,t,n);return u}})},"8e8e":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){var n={};for(var i in e)t.indexOf(i)>=0||Object.prototype.hasOwnProperty.call(e,i)&&(n[i]=e[i]);return n}},"8e95":function(e,t,n){var i=n("c195");e.exports=new i},"8ea5":function(e,t,n){var i=n("5ca1"),r=n("8ed0");i(i.P+i.F*(Date.prototype.toISOString!==r),"Date",{toISOString:r})},"8eb7":function(e,t){var n,i,r,o,a,s,c,l,u,h,d,f,p,v,m,g=!1;function b(){if(!g){g=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),b=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(f=/\b(iPhone|iP[ao]d)/.exec(e),p=/\b(iP[ao]d)/.exec(e),h=/Android/i.exec(e),v=/FBAN\/\w+;/i.exec(e),m=/Mobile/i.exec(e),d=!!/Win64/.exec(e),t){n=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,n&&document&&document.documentMode&&(n=document.documentMode);var y=/(?:Trident\/(\d+.\d+))/.exec(e);s=y?parseFloat(y[1])+4:n,i=t[2]?parseFloat(t[2]):NaN,r=t[3]?parseFloat(t[3]):NaN,o=t[4]?parseFloat(t[4]):NaN,o?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),a=t&&t[1]?parseFloat(t[1]):NaN):a=NaN}else n=i=r=a=o=NaN;if(b){if(b[1]){var _=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);c=!_||parseFloat(_[1].replace("_","."))}else c=!1;l=!!b[2],u=!!b[3]}else c=l=u=!1}}var y={ie:function(){return b()||n},ieCompatibilityMode:function(){return b()||s>n},ie64:function(){return y.ie()&&d},firefox:function(){return b()||i},opera:function(){return b()||r},webkit:function(){return b()||o},safari:function(){return y.webkit()},chrome:function(){return b()||a},windows:function(){return b()||l},osx:function(){return b()||c},linux:function(){return b()||u},iphone:function(){return b()||f},mobile:function(){return b()||f||p||h||m},nativeApp:function(){return b()||v},android:function(){return b()||h},ipad:function(){return b()||p}};e.exports=y},"8ed0":function(e,t,n){"use strict";var i=n("79e5"),r=Date.prototype.getTime,o=Date.prototype.toISOString,a=function(e){return e>9?e:"0"+e};e.exports=i(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!i(function(){o.call(new Date(NaN))})?function(){if(!isFinite(r.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),i=t<0?"-":t>9999?"+":"";return i+("00000"+Math.abs(t)).slice(i?-6:-4)+"-"+a(e.getUTCMonth()+1)+"-"+a(e.getUTCDate())+"T"+a(e.getUTCHours())+":"+a(e.getUTCMinutes())+":"+a(e.getUTCSeconds())+"."+(n>99?n:"0"+a(n))+"Z"}:o},"8eeb":function(e,t,n){var i=n("32b3"),r=n("872a");function o(e,t,n,o){var a=!n;n||(n={});var s=-1,c=t.length;while(++ss||n!=n?u*(1/0):u*n)}},"91e9":function(e,t){function n(e,t){return function(n){return e(t(n))}}e.exports=n},9253:function(e,t,n){var i=n("86cc"),r=n("11e9"),o=n("38fd"),a=n("69a8"),s=n("5ca1"),c=n("4630"),l=n("cb7c"),u=n("d3f4");function h(e,t,n){var s,d,f=arguments.length<4?e:arguments[3],p=r.f(l(e),t);if(!p){if(u(d=o(e)))return h(d,t,n,f);p=c(0)}if(a(p,"value")){if(!1===p.writable||!u(f))return!1;if(s=r.f(f,t)){if(s.get||s.set||!1===s.writable)return!1;s.value=n,i.f(f,t,s)}else i.f(f,t,c(0,n));return!0}return void 0!==p.set&&(p.set.call(f,n),!0)}s(s.S,"Reflect",{set:h})},9275:function(e,t,n){var i=n("5ca1"),r=n("8b97");r&&i(i.S,"Reflect",{setPrototypeOf:function(e,t){r.check(e,t);try{return r.set(e,t),!0}catch(n){return!1}}})},9278:function(e,t,n){var i=n("5ca1");i(i.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},"92fa":function(e,t){var n=/^(attrs|props|on|nativeOn|class|style|hook)$/;function i(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,o,a,s,c;for(a in t)if(r=e[a],o=t[a],r&&n.test(a))if("class"===a&&("string"===typeof r&&(c=r,e[a]=r={},r[c]=!0),"string"===typeof o&&(c=o,t[a]=o={},o[c]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(s in o)r[s]=i(r[s],o[s]);else if(Array.isArray(r))e[a]=r.concat(o);else if(Array.isArray(o))e[a]=[r].concat(o);else for(s in o)r[s]=o[s];else e[a]=t[a];return e},{})}},9306:function(e,t,n){"use strict";var i=n("8e60"),r=n("c3a1"),o=n("9aa9"),a=n("355d"),s=n("241e"),c=n("335c"),l=Object.assign;e.exports=!l||n("294c")(function(){var e={},t={},n=Symbol(),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=i})?function(e,t){var n=s(e),l=arguments.length,u=1,h=o.f,d=a.f;while(l>u){var f,p=c(arguments[u++]),v=h?r(p).concat(h(p)):r(p),m=v.length,g=0;while(m>g)f=v[g++],i&&!d.call(p,f)||(n[f]=p[f])}return n}:l},"93ed":function(e,t,n){var i=n("4245");function r(e){var t=i(this,e)["delete"](e);return this.size-=t?1:0,t}e.exports=r},"93ff":function(e,t,n){e.exports={default:n("54a1"),__esModule:!0}},9493:function(e,t,n){"use strict";t.__esModule=!0;var i=n("a48e"),r=s(i),o=n("c606"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var l=["ABS","ACTIVATE","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","ANY","ARE","ARRAY","AS","ASC","ASENSITIVE","ASSOCIATE","ASUTIME","ASYMMETRIC","AT","ATOMIC","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","AVG","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BLOB","BOOLEAN","BOTH","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CCSID","CEIL","CEILING","CHAR","CHARACTER","CHARACTER_LENGTH","CHAR_LENGTH","CHECK","CLOB","CLONE","CLOSE","CLUSTER","COALESCE","COLLATE","COLLECT","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","CONVERT","CORR","CORRESPONDING","COUNT","COUNT_BIG","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DATE","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DEREF","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DOUBLE","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELEMENT","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPTION","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXP","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FILTER","FINAL","FIRST","FLOAT","FLOOR","FOR","FOREIGN","FREE","FULL","FUNCTION","FUSION","GENERAL","GENERATED","GET","GLOBAL","GOTO","GRANT","GRAPHIC","GROUP","GROUPING","HANDLER","HASH","HASHED_VALUE","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INT","INTEGER","INTEGRITY","INTERSECTION","INTERVAL","INTO","IS","ISOBID","ISOLATION","ITERATE","JAR","JAVA","KEEP","KEY","LABEL","LANGUAGE","LARGE","LATERAL","LC_CTYPE","LEADING","LEAVE","LEFT","LIKE","LINKTYPE","LN","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LONG","LOOP","LOWER","MAINTAINED","MATCH","MATERIALIZED","MAX","MAXVALUE","MEMBER","MERGE","METHOD","MICROSECOND","MICROSECONDS","MIN","MINUTE","MINUTES","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MONTHS","MULTISET","NAN","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZE","NORMALIZED","NOT","NULL","NULLIF","NULLS","NUMERIC","NUMPARTS","OBID","OCTET_LENGTH","OF","OFFSET","OLD","OLD_TABLE","ON","ONLY","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","ORDER","OUT","OUTER","OVER","OVERLAPS","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PIECESIZE","PLAN","POSITION","POWER","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","REAL","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCOPE","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SIGNAL","SIMILAR","SIMPLE","SMALLINT","SNAN","SOME","SOURCE","SPECIFIC","SPECIFICTYPE","SQL","SQLEXCEPTION","SQLID","SQLSTATE","SQLWARNING","SQRT","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STDDEV_POP","STDDEV_SAMP","STOGROUP","STORES","STYLE","SUBMULTISET","SUBSTRING","SUM","SUMMARY","SYMMETRIC","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","TABLESPACE","THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSACTION","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TYPE","UESCAPE","UNDO","UNIQUE","UNKNOWN","UNNEST","UNTIL","UPPER","USAGE","USER","USING","VALIDPROC","VALUE","VARCHAR","VARIABLE","VARIANT","VARYING","VAR_POP","VAR_SAMP","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHILE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],u=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INTERSECT","LIMIT","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UPDATE","VALUES","WHERE"],h=["AND","CROSS JOIN","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN"],d=void 0,f=function(){function e(t){c(this,e),this.cfg=t}return e.prototype.format=function(e){return d||(d=new a["default"]({reservedWords:l,reservedToplevelWords:u,reservedNewlineWords:h,stringTypes:['""',"''","``","[]"],openParens:["("],closeParens:[")"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["#","@"]})),new r["default"](this.cfg,d).format(e)},e}();t["default"]=f,e.exports=t["default"]},"94eb":function(e,t,n){"use strict";var i=n("18ce"),r=function(){},o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.beforeEnter,o=t.enter,a=t.afterEnter,s=t.leave,c=t.afterLeave,l=t.appear,u=void 0===l||l,h=t.tag,d={props:{appear:u,css:!1},on:{beforeEnter:n||r,enter:o||function(t,n){Object(i["a"])(t,e+"-enter",n)},afterEnter:a||r,leave:s||function(t,n){Object(i["a"])(t,e+"-leave",n)},afterLeave:c||r}};return h&&(d.tag=h),d};t["a"]=o},9520:function(e,t,n){var i=n("3729"),r=n("1a8c"),o="[object AsyncFunction]",a="[object Function]",s="[object GeneratorFunction]",c="[object Proxy]";function l(e){if(!r(e))return!1;var t=i(e);return t==a||t==s||t==o||t==c}e.exports=l},"956a":function(e,t,n){"use strict";n("1b4c"),n("30f5"),n("3a13")},9571:function(e,t,n){"use strict";var i=n("6042"),r=n.n(i),o=n("8e8e"),a=n.n(o),s=n("41b2"),c=n.n(s),l=n("4d26"),u=n.n(l),h=n("92fa"),d=n.n(h),f=n("1098"),p=n.n(f),v=n("2b0e"),m=n("46cf"),g=n.n(m),b=n("b488"),y=n("daa3"),_=n("7b05"),C=n("98d3"),w=void 0;function x(e){if(e||void 0===w){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var n=document.createElement("div"),i=n.style;i.position="absolute",i.top=0,i.left=0,i.pointerEvents="none",i.visibility="hidden",i.width="200px",i.height="150px",i.overflow="hidden",n.appendChild(t),document.body.appendChild(n);var r=t.offsetWidth;n.style.overflow="scroll";var o=t.offsetWidth;r===o&&(o=n.clientWidth),document.body.removeChild(n),w=r-o}return w}var S=n("4d91"),E={wrapperClassName:S["a"].string,width:S["a"].any,height:S["a"].any,defaultOpen:S["a"].bool,firstEnter:S["a"].bool,open:S["a"].bool,prefixCls:S["a"].string,placement:S["a"].string,level:S["a"].oneOfType([S["a"].string,S["a"].array]),levelMove:S["a"].oneOfType([S["a"].number,S["a"].func,S["a"].array]),ease:S["a"].string,duration:S["a"].string,getContainer:S["a"].oneOfType([S["a"].string,S["a"].func,S["a"].object,S["a"].bool]),handler:S["a"].any,showMask:S["a"].bool,maskStyle:S["a"].object,className:S["a"].string,wrapStyle:S["a"].object};function O(e){return Array.isArray(e)?e:[e]}var M={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend"},z=Object.keys(M).filter(function(e){if("undefined"===typeof document)return!1;var t=document.getElementsByTagName("html")[0];return e in(t?t.style:{})})[0],k=M[z];function T(e,t,n,i){e.addEventListener?e.addEventListener(t,n,i):e.attachEvent&&e.attachEvent("on"+t,n)}function L(e,t,n,i){e.removeEventListener?e.removeEventListener(t,n,i):e.attachEvent&&e.detachEvent("on"+t,n)}function A(e,t){var n=void 0;return n="function"===typeof e?e(t):e,Array.isArray(n)?2===n.length?n:[n[0],n[1]]:[n]}var H=function(e){return!isNaN(parseFloat(e))&&isFinite(e)};function V(){}var N={},I=!("undefined"!==typeof window&&window.document&&window.document.createElement);v["default"].use(g.a,{name:"ant-ref"});var D={mixins:[b["a"]],props:Object(y["k"])(E,{prefixCls:"drawer",placement:"left",getContainer:"body",level:"all",duration:".3s",ease:"cubic-bezier(0.78, 0.14, 0.15, 0.86)",firstEnter:!1,showMask:!0,handler:!0,maskStyle:{},wrapperClassName:"",className:""}),data:function(){this.levelDom=[],this.contentDom=null,this.maskDom=null,this.handlerdom=null,this.mousePos=null,this.sFirstEnter=this.firstEnter,this.timeout=null,this.children=null,this.drawerId=Number((Date.now()+Math.random()).toString().replace(".",Math.round(9*Math.random()))).toString(16);var e=void 0!==this.open?this.open:!!this.defaultOpen;return N[this.drawerId]=e,this.orignalOpen=this.open,this.preProps=c()({},this.$props),{sOpen:e}},mounted:function(){var e=this;this.$nextTick(function(){if(!I){var t=!1;window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return t=!0,null}})),e.passive=!!t&&{passive:!1}}var n=e.getOpen();(e.handler||n||e.sFirstEnter)&&(e.getDefault(e.$props),n&&(e.isOpenChange=!0),e.$forceUpdate())})},watch:{open:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(function(e){void 0!==e&&e!==this.preProps.open&&(this.isOpenChange=!0,this.container||this.getDefault(this.$props),this.setState({sOpen:open})),this.preProps.open=e}),placement:function(e){e!==this.preProps.placement&&(this.contentDom=null),this.preProps.placement=e},level:function(e){this.preProps.level!==e&&this.getParentAndLevelDom(this.$props),this.preProps.level=e}},updated:function(){var e=this;this.$nextTick(function(){!e.sFirstEnter&&e.container&&(e.$forceUpdate(),e.sFirstEnter=!0)})},beforeDestroy:function(){delete N[this.drawerId],delete this.isOpenChange,this.container&&(this.sOpen&&this.setLevelDomTransform(!1,!0),document.body.style.overflow="",this.getSelfContainer&&this.container.parentNode.removeChild(this.container)),this.sFirstEnter=!1,clearTimeout(this.timeout),this.renderComponent&&this.renderComponent({afterClose:this.removeContainer,onClose:function(){},visible:!1})},methods:{onMaskTouchEnd:function(e){this.$emit("maskClick",e),this.onTouchEnd(e,!0)},onIconTouchEnd:function(e){this.$emit("handleClick",e),this.onTouchEnd(e)},onTouchEnd:function(e,t){if(void 0===this.open){var n=t||this.sOpen;this.isOpenChange=!0,this.setState({sOpen:!n})}},onWrapperTransitionEnd:function(e){e.target===this.contentWrapper&&(this.dom.style.transition="",!this.sOpen&&this.getCurrentDrawerSome()&&(document.body.style.overflowX="",this.maskDom&&(this.maskDom.style.left="",this.maskDom.style.width="")))},getDefault:function(e){this.getParentAndLevelDom(e),(e.getContainer||e.parent)&&(this.container=this.defaultGetContainer())},getCurrentDrawerSome:function(){return!Object.keys(N).some(function(e){return N[e]})},getSelfContainer:function(){return this.container},getParentAndLevelDom:function(e){var t=this;if(!I){var n=e.level,i=e.getContainer;if(this.levelDom=[],i){if("string"===typeof i){var r=document.querySelectorAll(i)[0];this.parent=r}"function"===typeof i&&(this.parent=i()),"object"===("undefined"===typeof i?"undefined":p()(i))&&i instanceof window.HTMLElement&&(this.parent=i)}if(!i&&this.container&&(this.parent=this.container.parentNode),"all"===n){var o=Array.prototype.slice.call(this.parent.children);o.forEach(function(e){"SCRIPT"!==e.nodeName&&"STYLE"!==e.nodeName&&"LINK"!==e.nodeName&&e!==t.container&&t.levelDom.push(e)})}else n&&O(n).forEach(function(e){document.querySelectorAll(e).forEach(function(e){t.levelDom.push(e)})})}},setLevelDomTransform:function(e,t,n,i){var r=this,o=this.$props,a=o.placement,s=o.levelMove,c=o.duration,l=o.ease,u=o.getContainer;if(!I&&(this.levelDom.forEach(function(o){if(r.isOpenChange||t){o.style.transition="transform "+c+" "+l,T(o,k,r.trnasitionEnd);var u=e?i:0;if(s){var h=A(s,{target:o,open:e});u=e?h[0]:h[1]||0}var d="number"===typeof u?u+"px":u,f="left"===a||"top"===a?d:"-"+d;o.style.transform=u?n+"("+f+")":"",o.style.msTransform=u?n+"("+f+")":""}}),"body"===u)){var h=["touchstart"],d=[document.body,this.maskDom,this.handlerdom,this.contentDom],f=document.body.scrollHeight>(window.innerHeight||document.documentElement.clientHeight)&&window.innerWidth>document.body.offsetWidth?x(1):0,p="width "+c+" "+l,v="transform "+c+" "+l;if(e&&"hidden"!==document.body.style.overflow){if(document.body.style.overflow="hidden",f){switch(document.body.style.position="relative",document.body.style.width="calc(100% - "+f+"px)",this.dom.style.transition="none",a){case"right":this.dom.style.transform="translateX(-"+f+"px)",this.dom.style.msTransform="translateX(-"+f+"px)";break;case"top":case"bottom":this.dom.style.width="calc(100% - "+f+"px)",this.dom.style.transform="translateZ(0)";break;default:break}clearTimeout(this.timeout),this.timeout=setTimeout(function(){r.dom.style.transition=v+","+p,r.dom.style.width="",r.dom.style.transform="",r.dom.style.msTransform=""})}d.forEach(function(e,t){e&&T(e,h[t]||"touchmove",t?r.removeMoveHandler:r.removeStartHandler,r.passive)})}else if(this.getCurrentDrawerSome()){if(document.body.style.overflow="",(this.isOpenChange||t)&&f){document.body.style.position="",document.body.style.width="",z&&(document.body.style.overflowX="hidden"),this.dom.style.transition="none";var m=void 0;switch(a){case"right":this.dom.style.transform="translateX("+f+"px)",this.dom.style.msTransform="translateX("+f+"px)",this.dom.style.width="100%",p="width 0s "+l+" "+c,this.maskDom&&(this.maskDom.style.left="-"+f+"px",this.maskDom.style.width="calc(100% + "+f+"px)");break;case"top":case"bottom":this.dom.style.width="calc(100% + "+f+"px)",this.dom.style.height="100%",this.dom.style.transform="translateZ(0)",m="height 0s "+l+" "+c;break;default:break}clearTimeout(this.timeout),this.timeout=setTimeout(function(){r.dom.style.transition=v+","+(m?m+",":"")+p,r.dom.style.transform="",r.dom.style.msTransform="",r.dom.style.width="",r.dom.style.height=""})}d.forEach(function(e,t){e&&L(e,h[t]||"touchmove",t?r.removeMoveHandler:r.removeStartHandler,r.passive)})}}var g=this.$listeners.change;g&&this.isOpenChange&&this.sFirstEnter&&(g(e),this.isOpenChange=!1)},getChildToRender:function(e){var t,n=this,i=this.$createElement,o=this.$props,a=o.className,s=o.prefixCls,c=o.placement,l=o.handler,h=o.showMask,f=o.maskStyle,p=o.width,v=o.height,m=o.wrapStyle,g=this.$slots["default"],b=u()(s,(t={},r()(t,s+"-"+c,!0),r()(t,s+"-open",e),r()(t,a,!!a),t)),C=this.isOpenChange,w="left"===c||"right"===c,x="translate"+(w?"X":"Y"),S="left"===c||"top"===c?"-100%":"100%",E=e?"":x+"("+S+")";if(void 0===C||C){var O=this.contentDom?this.contentDom.getBoundingClientRect()[w?"width":"height"]:0,M=(w?p:v)||O;this.setLevelDomTransform(e,!1,x,M)}var z=void 0;if(!1!==l){var k=i("div",{class:"drawer-handle"},[i("i",{class:"drawer-handle-icon"})]),T=this.handler,L=T&&T[0]||k,A=Object(y["e"])(L),N=A.click;z=Object(_["a"])(L,{on:{click:function(e){N&&N(),n.onIconTouchEnd(e)}},directives:[{name:"ant-ref",value:function(e){n.handlerdom=e}}]})}var I={class:b,directives:[{name:"ant-ref",value:function(e){n.dom=e}}],on:{transitionend:this.onWrapperTransitionEnd},style:m},D=[{name:"ant-ref",value:function(e){n.maskDom=e}}],P=[{name:"ant-ref",value:function(e){n.contentWrapper=e}}],$=[{name:"ant-ref",value:function(e){n.contentDom=e}}];return i("div",I,[h&&i("div",d()([{class:s+"-mask",on:{click:this.onMaskTouchEnd},style:f},{directives:D}])),i("div",d()([{class:s+"-content-wrapper",style:{transform:E,msTransform:E,width:H(p)?p+"px":p,height:H(v)?v+"px":v}},{directives:P}]),[i("div",d()([{class:s+"-content"},{directives:$},{on:{touchstart:e?this.removeStartHandler:V,touchmove:e?this.removeMoveHandler:V}}]),[g]),z])])},getOpen:function(){return void 0!==this.open?this.open:this.sOpen},getTouchParentScroll:function(e,t,n,i){if(!t||t===document)return!1;if(t===e.parentNode)return!0;var r=Math.max(Math.abs(n),Math.abs(i))===Math.abs(i),o=Math.max(Math.abs(n),Math.abs(i))===Math.abs(n),a=t.scrollHeight-t.clientHeight,s=t.scrollWidth-t.clientWidth,c=t.scrollTop,l=t.scrollLeft;t.scrollTo&&t.scrollTo(t.scrollLeft+1,t.scrollTop+1);var u=t.scrollTop,h=t.scrollLeft;return t.scrollTo&&t.scrollTo(t.scrollLeft-1,t.scrollTop-1),!((!r||a&&u-c&&(!a||!(t.scrollTop>=a&&i<0||t.scrollTop<=0&&i>0)))&&(!o||s&&h-l&&(!s||!(t.scrollLeft>=s&&n<0||t.scrollLeft<=0&&n>0))))&&this.getTouchParentScroll(e,t.parentNode,n,i)},removeStartHandler:function(e){e.touches.length>1||(this.startPos={x:e.touches[0].clientX,y:e.touches[0].clientY})},removeMoveHandler:function(e){if(!(e.changedTouches.length>1)){var t=e.currentTarget,n=e.changedTouches[0].clientX-this.startPos.x,i=e.changedTouches[0].clientY-this.startPos.y;(t===this.maskDom||t===this.handlerdom||t===this.contentDom&&this.getTouchParentScroll(t,e.target,n,i))&&e.preventDefault()}},trnasitionEnd:function(e){L(e.target,k,this.trnasitionEnd),e.target.style.transition=""},defaultGetContainer:function(){if(I)return null;var e=document.createElement("div");return this.parent.appendChild(e),this.wrapperClassName&&(e.className=this.wrapperClassName),e}},render:function(){var e=this,t=arguments[0],n=this.$props,i=n.getContainer,r=n.wrapperClassName,o=this.getOpen();N[this.drawerId]=o?this.container:o;var a=this.getChildToRender(!!this.sFirstEnter&&o);if(!i){var s=[{name:"ant-ref",value:function(t){e.container=t}}];return t("div",d()([{class:r},{directives:s}]),[a])}return this.container&&(o||this.sFirstEnter)?t(C["a"],{attrs:{parent:this,visible:!0,autoMount:!0,autoDestroy:!1,getComponent:function(){return a},getContainer:this.getSelfContainer,children:function(t){var n=t.renderComponent,i=t.removeContainer;return e.renderComponent=n,e.removeContainer=i,null}}}):null}},P=D,$=P,R=n("0c63"),j={name:"ADrawer",props:{closable:S["a"].bool.def(!0),destroyOnClose:S["a"].bool,getContainer:S["a"].any,maskClosable:S["a"].bool.def(!0),mask:S["a"].bool.def(!0),maskStyle:S["a"].object,wrapStyle:S["a"].object,title:S["a"].any,visible:S["a"].bool,width:S["a"].oneOfType([S["a"].string,S["a"].number]).def(256),height:S["a"].oneOfType([S["a"].string,S["a"].number]).def(256),zIndex:S["a"].number,prefixCls:S["a"].string.def("ant-drawer"),placement:S["a"].oneOf(["top","right","bottom","left"]).def("right"),level:S["a"].any.def(null),wrapClassName:S["a"].string,handle:S["a"].any},mixins:[b["a"]],data:function(){return this.destoryClose=!1,this.preVisible=this.$props.visible,{_push:!1}},inject:{parentDrawer:{default:function(){return null}}},provide:function(){return{parentDrawer:this}},updated:function(){var e=this;this.$nextTick(function(){e.preVisible!==e.visible&&e.parentDrawer&&(e.visible?e.parentDrawer.push():e.parentDrawer.pull()),e.preVisible=e.visible})},methods:{close:function(e){void 0===this.visible||this.$emit("close",e)},onMaskClick:function(e){this.maskClosable&&this.close(e)},push:function(){this.setState({_push:!0})},pull:function(){this.setState({_push:!1})},onDestoryTransitionEnd:function(){var e=this.getDestoryOnClose();e&&(this.visible||(this.destoryClose=!0,this.$forceUpdate()))},getDestoryOnClose:function(){return this.destroyOnClose&&!this.visible},getPushTransform:function(e){return"left"===e||"right"===e?"translateX("+("left"===e?180:-180)+"px)":"top"===e||"bottom"===e?"translateY("+("top"===e?180:-180)+"px)":void 0},renderBody:function(){var e=this.$createElement;if(this.destoryClose&&!this.visible)return null;this.destoryClose=!1;var t=this.$props.placement,n="left"===t||"right"===t?{overflow:"auto",height:"100%"}:{},i=this.getDestoryOnClose();i&&(n.opacity=0,n.transition="opacity .3s");var r=this.$props,o=r.prefixCls,a=r.closable,s=Object(y["d"])(this,"title"),c=void 0;s&&(c=e("div",{key:"header",class:o+"-header"},[e("div",{class:o+"-title"},[s])]));var l=void 0;return a&&(l=e("button",{key:"closer",on:{click:this.close},attrs:{"aria-label":"Close"},class:o+"-close"},[e("span",{class:o+"-close-x"},[e(R["a"],{attrs:{type:"close"}})])])),e("div",{class:o+"-wrapper-body",style:n,on:{transitionend:this.onDestoryTransitionEnd}},[c,l,e("div",{key:"body",class:o+"-body"},[this.$slots["default"]])])},getRcDrawerStyle:function(){var e=this.$props,t=e.zIndex,n=e.placement,i=e.maskStyle,r=e.wrapStyle,o=this.$data._push;return c()({},i,{zIndex:t,transform:o?this.getPushTransform(n):void 0},r)}},render:function(){var e,t=arguments[0],n=Object(y["f"])(this),i=n.width,o=n.height,s=n.visible,l=n.placement,h=n.wrapClassName,d=a()(n,["width","height","visible","placement","wrapClassName"]),f=d.mask?"":"no-mask",p={};"left"===l||"right"===l?p.width="number"===typeof i?i+"px":i:p.height="number"===typeof o?o+"px":o;var v=Object(y["d"])(this,"handle")||!1,m={props:c()({},d,{handler:v},p,{open:s,showMask:n.mask,placement:l,className:u()((e={},r()(e,h,!!h),r()(e,f,!!f),e)),wrapStyle:this.getRcDrawerStyle()}),on:c()({maskClick:this.onMaskClick},this.$listeners)};return t($,m,[this.renderBody()])},install:function(e){e.component(j.name,j)}};t["a"]=j},9599:function(e,t,n){},"95d5":function(e,t,n){var i=n("40c3"),r=n("5168")("iterator"),o=n("481b");e.exports=n("584a").isIterable=function(e){var t=Object(e);return void 0!==t[r]||"@@iterator"in t||o.hasOwnProperty(i(t))}},9619:function(e,t,n){var i=n("597f"),r=n("0e15");e.exports={throttle:i,debounce:r}},9638:function(e,t){function n(e,t){return e===t||e!==e&&t!==t}e.exports=n},"967f":function(e,t){var n=9007199254740991,i=Math.floor;function r(e,t){var r="";if(!e||t<1||t>n)return r;do{t%2&&(r+=e),t=i(t/2),t&&(e+=e)}while(t);return r}e.exports=r},"96cf":function(e,t,n){var i=function(e){"use strict";var t,n=Object.prototype,i=n.hasOwnProperty,r="function"===typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function c(e,t,n,i){var r=t&&t.prototype instanceof v?t:v,o=Object.create(r.prototype),a=new z(i||[]);return o._invoke=S(e,n,a),o}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(i){return{type:"throw",arg:i}}}e.wrap=c;var u="suspendedStart",h="suspendedYield",d="executing",f="completed",p={};function v(){}function m(){}function g(){}var b={};b[o]=function(){return this};var y=Object.getPrototypeOf,_=y&&y(y(k([])));_&&_!==n&&i.call(_,o)&&(b=_);var C=g.prototype=v.prototype=Object.create(b);function w(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function x(e){function t(n,r,o,a){var s=l(e[n],e,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"===typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(e){t("next",e,o,a)},function(e){t("throw",e,o,a)}):Promise.resolve(u).then(function(e){c.value=e,o(c)},function(e){return t("throw",e,o,a)})}a(s.arg)}var n;function r(e,i){function r(){return new Promise(function(n,r){t(e,i,n,r)})}return n=n?n.then(r,r):r()}this._invoke=r}function S(e,t,n){var i=u;return function(r,o){if(i===d)throw new Error("Generator is already running");if(i===f){if("throw"===r)throw o;return T()}n.method=r,n.arg=o;while(1){var a=n.delegate;if(a){var s=E(a,n);if(s){if(s===p)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===u)throw i=f,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=d;var c=l(e,t,n);if("normal"===c.type){if(i=n.done?f:h,c.arg===p)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=f,n.method="throw",n.arg=c.arg)}}}function E(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator["return"]&&(n.method="return",n.arg=t,E(e,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=l(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,p;var o=r.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,p):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function M(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function z(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function k(e){if(e){var n=e[o];if(n)return n.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){while(++r=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),l=i.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),M(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;M(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:k(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),p}},e}(e.exports);try{regeneratorRuntime=i}catch(r){Function("r","regeneratorRuntime = r")(i)}},"96fb":function(e,t){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},9744:function(e,t,n){"use strict";var i=n("4588"),r=n("be13");e.exports=function(e){var t=String(r(this)),n="",o=i(e);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(n+=t);return n}},9865:function(e,t,n){"use strict";var i=n("5ca1"),r=n("6821"),o=n("4588"),a=n("9def"),s=[].lastIndexOf,c=!!s&&1/[1].lastIndexOf(1,-0)<0;i(i.P+i.F*(c||!n("2f21")(s)),"Array",{lastIndexOf:function(e){if(c)return s.apply(this,arguments)||0;var t=r(this),n=a(t.length),i=n-1;for(arguments.length>1&&(i=Math.min(i,o(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in t&&t[i]===e)return i||0;return-1}})},"988d":function(e,t,n){"use strict";var i=n("5ca1"),r=n("be13"),o=n("9def"),a=n("aae3"),s=n("0bfb"),c=RegExp.prototype,l=function(e,t){this._r=e,this._s=t};n("41a0")(l,"RegExp String",function(){var e=this._r.exec(this._s);return{value:e,done:null===e}}),i(i.P,"String",{matchAll:function(e){if(r(this),!a(e))throw TypeError(e+" is not a regexp!");var t=String(this),n="flags"in c?String(e.flags):s.call(e),i=new RegExp(e.source,~n.indexOf("g")?n:"g"+n);return i.lastIndex=o(e.lastIndex),new l(i,t)}})},"98d3":function(e,t,n){"use strict";var i=n("2b0e"),r=n("4d91");t["a"]={props:{autoMount:r["a"].bool.def(!0),autoDestroy:r["a"].bool.def(!0),visible:r["a"].bool,forceRender:r["a"].bool.def(!1),parent:r["a"].any,getComponent:r["a"].func.isRequired,getContainer:r["a"].func.isRequired,children:r["a"].func.isRequired},mounted:function(){this.autoMount&&this.renderComponent()},updated:function(){this.autoMount&&this.renderComponent()},beforeDestroy:function(){this.autoDestroy&&this.removeContainer()},methods:{removeContainer:function(){this.container&&(this._component&&this._component.$destroy(),this.container.parentNode.removeChild(this.container),this.container=null,this._component=null)},renderComponent:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=this.visible,r=this.forceRender,o=this.getContainer,a=this.parent,s=this;if(n||a.$refs._component||r){var c=this.componentEl;this.container||(this.container=o(),c=document.createElement("div"),this.componentEl=c,this.container.appendChild(c)),this._component?this._component.comProps=e:this._component=new i["default"]({el:c,parent:s.parent,data:{comProps:e},mounted:function(){this.$nextTick(function(){t&&t.call(s)})},updated:function(){this.$nextTick(function(){t&&t.call(s)})},render:function(){return s.getComponent(this.comProps)}})}}},render:function(){return this.children({renderComponent:this.renderComponent,removeContainer:this.removeContainer})}}},"990b":function(e,t,n){var i=n("9093"),r=n("2621"),o=n("cb7c"),a=n("7726").Reflect;e.exports=a&&a.ownKeys||function(e){var t=i.f(o(e)),n=r.f;return n?t.concat(n(e)):t}},9934:function(e,t,n){var i=n("6fcd"),r=n("41c3"),o=n("30c9");function a(e){return o(e)?i(e,!0):r(e)}e.exports=a},9986:function(e,t,n){var i=n("6821"),r=n("11e9").f;n("5eda")("getOwnPropertyDescriptor",function(){return function(e,t){return r(i(e),t)}})},"99c5":function(e,t,n){n("c6a1")("Set")},"99d3":function(e,t,n){(function(e){var i=n("585a"),r=t&&!t.nodeType&&t,o=r&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===r,s=a&&i.process,c=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(t){}}();e.exports=c}).call(this,n("62e4")(e))},"9aa9":function(e,t){t.f=Object.getOwnPropertySymbols},"9aea":function(e,t,n){var i=n("d3f4"),r=n("67ab").onFreeze;n("5eda")("preventExtensions",function(e){return function(t){return e&&i(t)?e(r(t)):t}})},"9b43":function(e,t,n){var i=n("d8e8");e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},"9b57":function(e,t,n){"use strict";t.__esModule=!0;var i=n("adf5"),r=o(i);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t>>0,o=t>>>0,a=n>>>0;return o+(i>>>0)+((r&a|(r|a)&~(r+a>>>0))>>>31)|0}})},"9c12":function(e,t,n){var i=n("d3f4"),r=Math.floor;e.exports=function(e){return!i(e)&&isFinite(e)&&r(e)===e}},"9c29":function(e,t,n){n("ec30")("Uint32",4,function(e){return function(t,n,i){return e(this,t,n,i)}})},"9c6c":function(e,t,n){var i=n("2b4c")("unscopables"),r=Array.prototype;void 0==r[i]&&n("32e9")(r,i,{}),e.exports=function(e){r[i][e]=!0}},"9c80":function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(t){return{e:!0,v:t}}}},"9c86":function(e,t,n){"use strict";n("386b")("big",function(e){return function(){return e(this,"big","","")}})},"9d7e":function(e,t,n){"use strict";t.__esModule=!0;var i="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};t.default=function(e){function t(e){for(var t=arguments.length,n=Array(t>1?t-1:0),a=1;a0?r(i(e),9007199254740991):0}},"9dfa":function(e,t,n){var i=n("6328"),r=n("fc6d"),o=n("3a99"),a=n("a090"),s=n("3b3f"),c=n("d2c9"),l=n("f3e4"),u=n("9ebe"),h="[object Map]",d="[object Set]",f=Object.prototype,p=f.hasOwnProperty;function v(e){if(null==e)return!0;if(s(e)&&(a(e)||"string"==typeof e||"function"==typeof e.splice||c(e)||u(e)||o(e)))return!e.length;var t=r(e);if(t==h||t==d)return!e.size;if(l(e))return!i(e).length;for(var n in e)if(p.call(e,n))return!1;return!0}e.exports=v},"9dfa6":function(e,t){function n(e,t){return function(n){return e(t(n))}}e.exports=n},"9e1e":function(e,t,n){e.exports=!n("79e5")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"9e69":function(e,t,n){var i=n("2b3e"),r=i.Symbol;e.exports=r},"9ebe":function(e,t,n){var i=n("4849a"),r=n("7ce6"),o=n("d47a"),a=o&&o.isTypedArray,s=a?r(a):i;e.exports=s},"9ec8":function(e,t,n){"use strict";n("386b")("fontsize",function(e){return function(t){return e(this,"font","size",t)}})},"9f3c":function(e,t,n){var i=n("5ca1"),r=n("2d5c");i(i.S+i.F*(r!=Math.expm1),"Math",{expm1:r})},a029:function(e,t,n){var i=n("087d"),r=n("2dcb"),o=n("32f4"),a=n("d327"),s=Object.getOwnPropertySymbols,c=s?function(e){var t=[];while(e)i(t,o(e)),e=r(e);return t}:a;e.exports=c},a032:function(e,t,n){"use strict";var i=n("5ca1"),r=n("02f4")(!1);i(i.P,"String",{codePointAt:function(e){return r(this,e)}})},a071:function(e,t,n){"use strict";var i=n("92fa"),r=n.n(i),o=n("1098"),a=n.n(o),s=n("41b2"),c=n.n(s),l=n("6042"),u=n.n(l),h=n("4d91"),d=n("4d26"),f=n.n(d),p=n("b488"),v=n("daa3"),m=n("0464"),g=n("7b05");function b(e){return e?e.toString().split("").reverse().map(function(e){return Number(e)}):[]}var y={prefixCls:h["a"].string.def("ant-scroll-number"),count:h["a"].any,component:h["a"].string,title:h["a"].oneOfType([h["a"].number,h["a"].string,null]),displayComponent:h["a"].any,className:h["a"].object},_={mixins:[p["a"]],props:y,data:function(){return{animateStarted:!0,sCount:this.count}},watch:{count:function(e){var t=this;this.sCount!==e&&(this.lastCount=this.sCount,this.setState({animateStarted:!0},function(){setTimeout(function(){t.setState({animateStarted:!1,sCount:e},function(){t.$emit("animated")})},5)}))}},methods:{getPositionByNum:function(e,t){if(this.animateStarted)return 10+e;var n=b(this.sCount)[t],i=b(this.lastCount)[t];return this.sCount>this.lastCount?n>=i?10+e:20+e:n<=i?10+e:e},renderNumberList:function(e){for(var t=this.$createElement,n=[],i=0;i<30;i++){var r=e===i?"current":"";n.push(t("p",{key:i.toString(),class:r},[i%10]))}return n},renderCurrentNumber:function(e,t){var n=this.$createElement,i=this.getPositionByNum(e,t),r=this.animateStarted||void 0===b(this.lastCount)[t],o={transition:r?"none":void 0,msTransform:"translateY("+100*-i+"%)",WebkitTransform:"translateY("+100*-i+"%)",transform:"translateY("+100*-i+"%)"};return n("span",{class:this.prefixCls+"-only",style:o,key:t},[this.renderNumberList(i)])},renderNumberElement:function(){var e=this,t=this.sCount;return!t||isNaN(t)?t:b(t).map(function(t,n){return e.renderCurrentNumber(t,n)}).reverse()}},render:function(){var e=arguments[0],t=this.prefixCls,n=this.title,i=this.component,r=void 0===i?"sup":i,o=this.displayComponent,a=this.className;if(o)return Object(g["a"])(o,{class:t+"-custom-component"});var s=Object(v["i"])(this,!0),l=Object(m["a"])(this.$props,["count","component","prefixCls","displayComponent"]),u={props:c()({},l),attrs:{title:n},style:s,class:f()(t,a)};return s&&s.borderColor&&(u.style.boxShadow="0 0 0 1px "+s.borderColor+" inset"),e(r,u,[this.renderNumberElement()])}},C=n("94eb"),w=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},x=w,S={count:h["a"].any,showZero:h["a"].bool,overflowCount:h["a"].number,dot:h["a"].bool,prefixCls:h["a"].string,scrollNumberPrefixCls:h["a"].string,status:h["a"].oneOf(["success","processing","default","error","warning"]),text:h["a"].string,offset:h["a"].array,numberStyle:h["a"].object.def({}),title:h["a"].string},E={name:"ABadge",props:Object(v["k"])(S,{prefixCls:"ant-badge",scrollNumberPrefixCls:"ant-scroll-number",showZero:!1,dot:!1,overflowCount:99}),methods:{getBadgeClassName:function(){var e,t=this.$props,n=t.prefixCls,i=t.status,r=Object(v["b"])(this.$slots["default"]);return f()(n,(e={},u()(e,n+"-status",!!i),u()(e,n+"-not-a-wrapper",!r.length),e))},isZero:function(){var e=this.getNumberedDispayCount();return"0"===e||0===e},isDot:function(){var e=this.$props,t=e.dot,n=e.status,i=this.isZero();return t&&!i||n},isHidden:function(){var e=this.$props.showZero,t=this.getDispayCount(),n=this.isZero(),i=this.isDot(),r=null===t||void 0===t||""===t;return(r||n&&!e)&&!i},getNumberedDispayCount:function(){var e=this.$props.overflowCount,t=this.badgeCount,n=t>e?e+"+":t;return n},getDispayCount:function(){var e=this.isDot();return e?"":this.getNumberedDispayCount()},getScollNumberTitle:function(){var e=this.$props.title,t=this.badgeCount;return e||("string"===typeof t||"number"===typeof t?t:void 0)},getStyleWithOffset:function(){var e=this.$props,t=e.offset,n=e.numberStyle;return t?c()({right:-parseInt(t[0],10)+"px",marginTop:x(t[1])?t[1]+"px":t[1]},n):n},renderStatusText:function(){var e=this.$createElement,t=this.$props,n=t.prefixCls,i=t.text,r=this.isHidden();return r||!i?null:e("span",{class:n+"-status-text"},[i])},renderDispayComponent:function(){var e=this.badgeCount,t=e;if(t&&"object"===("undefined"===typeof t?"undefined":a()(t)))return Object(g["a"])(t,{style:this.getStyleWithOffset()})},renderBadgeNumber:function(){var e,t=this.$createElement,n=this.$props,i=n.prefixCls,r=n.scrollNumberPrefixCls,o=n.status,a=this.badgeCount,s=this.getDispayCount(),c=this.isDot(),l=this.isHidden(),h=(e={},u()(e,i+"-dot",c),u()(e,i+"-count",!c),u()(e,i+"-multiple-words",!c&&a&&a.toString&&a.toString().length>1),u()(e,i+"-status-"+o,!!o),e);return l?null:t(_,{attrs:{prefixCls:r,"data-show":!l,className:h,count:s,displayComponent:this.renderDispayComponent(),title:this.getScollNumberTitle()},directives:[{name:"show",value:!l}],style:this.getStyleWithOffset(),key:"scrollNumber"})}},render:function(){var e,t=arguments[0],n=this.prefixCls,i=this.status,o=this.text,a=this.$slots,s=Object(v["b"])(a["default"]),c=Object(v["d"])(this,"count");Array.isArray(c)&&(c=c[0]),this.badgeCount=c;var l=this.renderBadgeNumber(),h=this.renderStatusText(),d=f()((e={},u()(e,n+"-status-dot",!!i),u()(e,n+"-status-"+i,!!i),e));if(!s.length&&i)return t("span",r()([{on:this.$listeners},{class:this.getBadgeClassName(),style:this.getStyleWithOffset()}]),[t("span",{class:d}),t("span",{class:n+"-status-text"},[o])]);var p=Object(C["a"])(s.length?n+"-zoom":"");return t("span",r()([{on:this.$listeners},{class:this.getBadgeClassName()}]),[s,t("transition",p,[l]),h])},install:function(e){e.component(E.name,E)}};t["a"]=E},a090:function(e,t){var n=Array.isArray;e.exports=n},a159:function(e,t,n){var i=n("e4ae"),r=n("7e90"),o=n("1691"),a=n("5559")("IE_PROTO"),s=function(){},c="prototype",l=function(){var e,t=n("1ec9")("iframe"),i=o.length,r="<",a=">";t.style.display="none",n("32fc").appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(r+"script"+a+"document.F=Object"+r+"/script"+a),e.close(),l=e.F;while(i--)delete l[c][o[i]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s[c]=i(e),n=new s,s[c]=null,n[a]=e):n=l(),void 0===t?n:r(n,t)}},a19f:function(e,t,n){var i=n("5ca1"),r=n("cb7c"),o=Object.preventExtensions;i(i.S,"Reflect",{preventExtensions:function(e){r(e);try{return o&&o(e),!0}catch(t){return!1}}})},a22a:function(e,t,n){var i=n("d864"),r=n("b0dc"),o=n("3702"),a=n("e4ae"),s=n("b447"),c=n("7cd6"),l={},u={};t=e.exports=function(e,t,n,h,d){var f,p,v,m,g=d?function(){return e}:c(e),b=i(n,h,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(f=s(e.length);f>y;y++)if(m=t?b(a(p=e[y])[0],p[1]):b(e[y]),m===l||m===u)return m}else for(v=g.call(e);!(p=v.next()).done;)if(m=r(v,b,p.value,t),m===l||m===u)return m};t.BREAK=l,t.RETURN=u},a234:function(e,t,n){var i=n("5ca1");i(i.S,"System",{global:n("7726")})},a25f:function(e,t,n){var i=n("7726"),r=i.navigator;e.exports=r&&r.userAgent||""},a2db:function(e,t,n){var i=n("9e69"),r=i?i.prototype:void 0,o=r?r.valueOf:void 0;function a(e){return o?Object(o.call(e)):{}}e.exports=a},a3c3:function(e,t,n){var i=n("63b6");i(i.S+i.F,"Object",{assign:n("9306")})},a3de:function(e,t,n){"use strict";var i=!("undefined"===typeof window||!window.document||!window.document.createElement),r={canUseDOM:i,canUseWorkers:"undefined"!==typeof Worker,canUseEventListeners:i&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:i&&!!window.screen,isInWorker:!i};e.exports=r},a481:function(e,t,n){"use strict";var i=n("cb7c"),r=n("4bf8"),o=n("9def"),a=n("4588"),s=n("0390"),c=n("5f1b"),l=Math.max,u=Math.min,h=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,f=/\$([$&`']|\d\d?)/g,p=function(e){return void 0===e?e:String(e)};n("214f")("replace",2,function(e,t,n,v){return[function(i,r){var o=e(this),a=void 0==i?void 0:i[t];return void 0!==a?a.call(i,o,r):n.call(String(o),i,r)},function(e,t){var r=v(n,e,this,t);if(r.done)return r.value;var h=i(e),d=String(this),f="function"===typeof t;f||(t=String(t));var g=h.global;if(g){var b=h.unicode;h.lastIndex=0}var y=[];while(1){var _=c(h,d);if(null===_)break;if(y.push(_),!g)break;var C=String(_[0]);""===C&&(h.lastIndex=s(d,o(h.lastIndex),b))}for(var w="",x=0,S=0;S=x&&(w+=d.slice(x,O)+L,x=O+E.length)}return w+d.slice(x)}];function m(e,t,i,o,a,s){var c=i+e.length,l=o.length,u=f;return void 0!==a&&(a=r(a),u=d),n.call(s,u,function(n,r){var s;switch(r.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,i);case"'":return t.slice(c);case"<":s=a[r.slice(1,-1)];break;default:var u=+r;if(0===u)return n;if(u>l){var d=h(u/10);return 0===d?n:d<=l?void 0===o[d-1]?r.charAt(1):o[d-1]+r.charAt(1):n}s=o[u-1]}return void 0===s?"":s})}})},a48e:function(e,t,n){"use strict";t.__esModule=!0;var i=n("64a7"),r=f(i),o=n("6b51"),a=f(o),s=n("15e2"),c=f(s),l=n("d09a"),u=f(l),h=n("1d3a"),d=f(h);function f(e){return e&&e.__esModule?e:{default:e}}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var v=function(){function e(t,n){p(this,e),this.cfg=t||{},this.indentation=new c["default"](this.cfg.indent),this.inlineBlock=new u["default"],this.params=new d["default"](this.cfg.params),this.tokenizer=n,this.previousReservedWord={},this.tokens=[],this.index=0}return e.prototype.format=function(e){this.tokens=this.tokenizer.tokenize(e);var t=this.getFormattedQueryFromTokens();return t.trim()},e.prototype.getFormattedQueryFromTokens=function(){var e=this,t="";return this.tokens.forEach(function(n,i){e.index=i,n.type===a["default"].WHITESPACE||(n.type===a["default"].LINE_COMMENT?t=e.formatLineComment(n,t):n.type===a["default"].BLOCK_COMMENT?t=e.formatBlockComment(n,t):n.type===a["default"].RESERVED_TOPLEVEL?(t=e.formatToplevelReservedWord(n,t),e.previousReservedWord=n):n.type===a["default"].RESERVED_NEWLINE?(t=e.formatNewlineReservedWord(n,t),e.previousReservedWord=n):n.type===a["default"].RESERVED?(t=e.formatWithSpaces(n,t),e.previousReservedWord=n):t=n.type===a["default"].OPEN_PAREN?e.formatOpeningParentheses(n,t):n.type===a["default"].CLOSE_PAREN?e.formatClosingParentheses(n,t):n.type===a["default"].PLACEHOLDER?e.formatPlaceholder(n,t):","===n.value?e.formatComma(n,t):":"===n.value?e.formatWithSpaceAfter(n,t):"."===n.value?e.formatWithoutSpaces(n,t):";"===n.value?e.formatQuerySeparator(n,t):e.formatWithSpaces(n,t))}),t},e.prototype.formatLineComment=function(e,t){return this.addNewline(t+e.value)},e.prototype.formatBlockComment=function(e,t){return this.addNewline(this.addNewline(t)+this.indentComment(e.value))},e.prototype.indentComment=function(e){return e.replace(/\n/g,"\n"+this.indentation.getIndent())},e.prototype.formatToplevelReservedWord=function(e,t){return this.indentation.decreaseTopLevel(),t=this.addNewline(t),this.indentation.increaseToplevel(),t+=this.equalizeWhitespace(e.value),this.addNewline(t)},e.prototype.formatNewlineReservedWord=function(e,t){return this.addNewline(t)+this.equalizeWhitespace(e.value)+" "},e.prototype.equalizeWhitespace=function(e){return e.replace(/\s+/g," ")},e.prototype.formatOpeningParentheses=function(e,t){var n=[a["default"].WHITESPACE,a["default"].OPEN_PAREN,a["default"].LINE_COMMENT];return n.includes(this.previousToken().type)||(t=(0,r["default"])(t)),t+=e.value,this.inlineBlock.beginIfPossible(this.tokens,this.index),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),t=this.addNewline(t)),t},e.prototype.formatClosingParentheses=function(e,t){return this.inlineBlock.isActive()?(this.inlineBlock.end(),this.formatWithSpaceAfter(e,t)):(this.indentation.decreaseBlockLevel(),this.formatWithSpaces(e,this.addNewline(t)))},e.prototype.formatPlaceholder=function(e,t){return t+this.params.get(e)+" "},e.prototype.formatComma=function(e,t){return t=this.trimTrailingWhitespace(t)+e.value+" ",this.inlineBlock.isActive()?t:/^LIMIT$/i.test(this.previousReservedWord.value)?t:this.addNewline(t)},e.prototype.formatWithSpaceAfter=function(e,t){return this.trimTrailingWhitespace(t)+e.value+" "},e.prototype.formatWithoutSpaces=function(e,t){return this.trimTrailingWhitespace(t)+e.value},e.prototype.formatWithSpaces=function(e,t){return t+e.value+" "},e.prototype.formatQuerySeparator=function(e,t){return this.trimTrailingWhitespace(t)+e.value+"\n"},e.prototype.addNewline=function(e){return(0,r["default"])(e)+"\n"+this.indentation.getIndent()},e.prototype.trimTrailingWhitespace=function(e){return this.previousNonWhitespaceToken().type===a["default"].LINE_COMMENT?(0,r["default"])(e)+"\n":(0,r["default"])(e)},e.prototype.previousNonWhitespaceToken=function(){var e=1;while(this.previousToken(e).type===a["default"].WHITESPACE)e++;return this.previousToken(e)},e.prototype.previousToken=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.tokens[this.index-e]||{}},e}();t["default"]=v,e.exports=t["default"]},a4bb:function(e,t,n){e.exports=n("8aae")},a4e9:function(e,t,n){"use strict";n("1b4c"),n("f182"),n("104d")},a524:function(e,t,n){var i=n("4245");function r(e){return i(this,e).has(e)}e.exports=r},a5b8:function(e,t,n){"use strict";var i=n("d8e8");function r(e){var t,n;this.promise=new e(function(e,i){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=i}),this.resolve=i(t),this.reject=i(n)}e.exports.f=function(e){return new r(e)}},a5d8:function(e,t,n){},a69f:function(e,t,n){var i=n("5ca1");i(i.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},a742:function(e,t,n){"use strict";function i(e){return"[object String]"===Object.prototype.toString.call(e)}function r(e){return"[object Object]"===Object.prototype.toString.call(e)}function o(e){return e&&e.nodeType===Node.ELEMENT_NODE}t.__esModule=!0,t.isString=i,t.isObject=r,t.isHtmlElement=o;t.isFunction=function(e){var t={};return e&&"[object Function]"===t.toString.call(e)},t.isUndefined=function(e){return void 0===e},t.isDefined=function(e){return void 0!==e&&null!==e}},a745:function(e,t,n){e.exports=n("f410")},a7cd:function(e,t){function n(e,t,n){var i=-1,r=e.length;t<0&&(t=-t>r?0:r+t),n=n>r?r:n,n<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;var o=Array(r);while(++i-1)return e.splice(n,1)}}var p=Object.prototype.hasOwnProperty;function v(e,t){return p.call(e,t)}function m(e){for(var t=arguments,n=Object(e),i=1;i0)t[n]=arguments[n+1];var i=this.$i18n;return i._t.apply(i,[e,i.locale,i._getMessages(),this].concat(t))},e.prototype.$tc=function(e,t){var n=[],i=arguments.length-2;while(i-- >0)n[i]=arguments[i+2];var r=this.$i18n;return r._tc.apply(r,[e,r.locale,r._getMessages(),this,t].concat(n))},e.prototype.$te=function(e,t){var n=this.$i18n;return n._te(e,n.locale,n._getMessages(),t)},e.prototype.$d=function(e){var t,n=[],i=arguments.length-1;while(i-- >0)n[i]=arguments[i+1];return(t=this.$i18n).d.apply(t,[e].concat(n))},e.prototype.$n=function(e){var t,n=[],i=arguments.length-1;while(i-- >0)n[i]=arguments[i+1];return(t=this.$i18n).n.apply(t,[e].concat(n))}}var y,_={beforeCreate:function(){var e=this.$options;if(e.i18n=e.i18n||(e.__i18n?{}:null),e.i18n)if(e.i18n instanceof he){if(e.__i18n)try{var t={};e.__i18n.forEach(function(e){t=m(t,JSON.parse(e))}),Object.keys(t).forEach(function(n){e.i18n.mergeLocaleMessage(n,t[n])})}catch(i){0}this._i18n=e.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(l(e.i18n)){if(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof he&&(e.i18n.root=this.$root,e.i18n.formatter=this.$root.$i18n.formatter,e.i18n.fallbackLocale=this.$root.$i18n.fallbackLocale,e.i18n.silentTranslationWarn=this.$root.$i18n.silentTranslationWarn,e.i18n.silentFallbackWarn=this.$root.$i18n.silentFallbackWarn,e.i18n.pluralizationRules=this.$root.$i18n.pluralizationRules,e.i18n.preserveDirectiveContent=this.$root.$i18n.preserveDirectiveContent),e.__i18n)try{var n={};e.__i18n.forEach(function(e){n=m(n,JSON.parse(e))}),e.i18n.messages=n}catch(i){0}this._i18n=new he(e.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===e.i18n.sync||e.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale())}else 0;else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof he?this._i18n=this.$root.$i18n:e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof he&&(this._i18n=e.parent.$i18n)},beforeMount:function(){var e=this.$options;e.i18n=e.i18n||(e.__i18n?{}:null),e.i18n?e.i18n instanceof he?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):l(e.i18n)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof he?(this._i18n.subscribeDataChanging(this),this._subscribing=!0):e.parent&&e.parent.$i18n&&e.parent.$i18n instanceof he&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},beforeDestroy:function(){if(this._i18n){var e=this;this.$nextTick(function(){e._subscribing&&(e._i18n.unsubscribeDataChanging(e),delete e._subscribing),e._i18nWatcher&&(e._i18nWatcher(),e._i18n.destroyVM(),delete e._i18nWatcher),e._localeWatcher&&(e._localeWatcher(),delete e._localeWatcher),e._i18n=null})}}},C={name:"i18n",functional:!0,props:{tag:{type:String,default:"span"},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(e,t){var n=t.props,i=t.data,r=t.children,o=t.parent,a=o.$i18n;if(r=(r||[]).filter(function(e){return e.tag||(e.text=e.text.trim())}),!a)return r;var s=n.path,c=n.locale,l={},u=n.places||{},h=(Array.isArray(u)?u.length:Object.keys(u).length,r.every(function(e){if(e.data&&e.data.attrs){var t=e.data.attrs.place;return"undefined"!==typeof t&&""!==t}}));return Array.isArray(u)?u.forEach(function(e,t){l[t]=e}):Object.keys(u).forEach(function(e){l[e]=u[e]}),r.forEach(function(e,t){var n=h?""+e.data.attrs.place:""+t;l[n]=e}),e(n.tag,i,a.i(s,c,l))}},w={name:"i18n-n",functional:!0,props:{tag:{type:String,default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(e,t){var n=t.props,r=t.parent,o=t.data,s=r.$i18n;if(!s)return null;var c=null,l=null;"string"===typeof n.format?c=n.format:a(n.format)&&(n.format.key&&(c=n.format.key),l=Object.keys(n.format).reduce(function(e,t){var r;return i.includes(t)?Object.assign({},e,(r={},r[t]=n.format[t],r)):e},null));var u=n.locale||s.locale,h=s._ntp(n.value,u,c,l),d=h.map(function(e,t){var n,i=o.scopedSlots&&o.scopedSlots[e.type];return i?i((n={},n[e.type]=e.value,n.index=t,n.parts=h,n)):e.value});return e(n.tag,{attrs:o.attrs,class:o["class"],staticClass:o.staticClass},d)}};function x(e,t,n){O(e,n)&&z(e,t,n)}function S(e,t,n,i){if(O(e,n)){var r=n.context.$i18n;M(e,n)&&g(t.value,t.oldValue)&&g(e._localeMessage,r.getLocaleMessage(r.locale))||z(e,t,n)}}function E(e,t,n,i){var o=n.context;if(o){var a=n.context.$i18n||{};t.modifiers.preserve||a.preserveDirectiveContent||(e.textContent=""),e._vt=void 0,delete e["_vt"],e._locale=void 0,delete e["_locale"],e._localeMessage=void 0,delete e["_localeMessage"]}else r("Vue instance does not exists in VNode context")}function O(e,t){var n=t.context;return n?!!n.$i18n||(r("VueI18n instance does not exists in Vue instance"),!1):(r("Vue instance does not exists in VNode context"),!1)}function M(e,t){var n=t.context;return e._locale===n.$i18n.locale}function z(e,t,n){var i,o,a=t.value,s=k(a),c=s.path,l=s.locale,u=s.args,h=s.choice;if(c||l||u)if(c){var d=n.context;e._vt=e.textContent=h?(i=d.$i18n).tc.apply(i,[c,h].concat(T(l,u))):(o=d.$i18n).t.apply(o,[c].concat(T(l,u))),e._locale=d.$i18n.locale,e._localeMessage=d.$i18n.getLocaleMessage(d.$i18n.locale)}else r("`path` is required in v-t directive");else r("value type not supported")}function k(e){var t,n,i,r;return"string"===typeof e?t=e:l(e)&&(t=e.path,n=e.locale,i=e.args,r=e.choice),{path:t,locale:n,args:i,choice:r}}function T(e,t){var n=[];return e&&n.push(e),t&&(Array.isArray(t)||l(t))&&n.push(t),n}function L(e){L.installed=!0,y=e;y.version&&Number(y.version.split(".")[0]);b(y),y.mixin(_),y.directive("t",{bind:x,update:S,unbind:E}),y.component(C.name,C),y.component(w.name,w);var t=y.config.optionMergeStrategies;t.i18n=function(e,t){return void 0===t?e:t}}var A=function(){this._caches=Object.create(null)};A.prototype.interpolate=function(e,t){if(!t)return[e];var n=this._caches[e];return n||(n=N(e),this._caches[e]=n),I(n,t)};var H=/^(?:\d)+/,V=/^(?:\w)+/;function N(e){var t=[],n=0,i="";while(n0)h--,u=U,d[D]();else{if(h=0,n=te(n),!1===n)return!1;d[P]()}};while(null!==u)if(l++,t=e[l],"\\"!==t||!f()){if(r=ee(t),s=X[u],o=s[r]||s["else"]||Y,o===Y)return;if(u=o[0],a=d[o[1]],a&&(i=o[2],i=void 0===i?t:i,!1===a()))return;if(u===G)return c}}var ie=function(){this._cache=Object.create(null)};ie.prototype.parsePath=function(e){var t=this._cache[e];return t||(t=ne(e),t&&(this._cache[e]=t)),t||[]},ie.prototype.getPathValue=function(e,t){if(!a(e))return null;var n=this.parsePath(t);if(0===n.length)return null;var i=n.length,r=e,o=0;while(o/,ae=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,se=/^@(?:\.([a-z]+))?:/,ce=/[()]/g,le={upper:function(e){return e.toLocaleUpperCase()},lower:function(e){return e.toLocaleLowerCase()}},ue=new A,he=function(e){var t=this;void 0===e&&(e={}),!y&&"undefined"!==typeof window&&window.Vue&&L(window.Vue);var n=e.locale||"en-US",i=e.fallbackLocale||"en-US",r=e.messages||{},o=e.dateTimeFormats||{},a=e.numberFormats||{};this._vm=null,this._formatter=e.formatter||ue,this._missing=e.missing||null,this._root=e.root||null,this._sync=void 0===e.sync||!!e.sync,this._fallbackRoot=void 0===e.fallbackRoot||!!e.fallbackRoot,this._silentTranslationWarn=void 0!==e.silentTranslationWarn&&!!e.silentTranslationWarn,this._silentFallbackWarn=void 0!==e.silentFallbackWarn&&!!e.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new ie,this._dataListeners=[],this._preserveDirectiveContent=void 0!==e.preserveDirectiveContent&&!!e.preserveDirectiveContent,this.pluralizationRules=e.pluralizationRules||{},this._warnHtmlInMessage=e.warnHtmlInMessage||"off",this._exist=function(e,n){return!(!e||!n)&&(!u(t._path.getPathValue(e,n))||!!e[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(r).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,r[e])}),this._initVM({locale:n,fallbackLocale:i,messages:r,dateTimeFormats:o,numberFormats:a})},de={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0}};he.prototype._checkLocaleMessage=function(e,t,n){var i=[],a=function(e,t,n,i){if(l(n))Object.keys(n).forEach(function(r){var o=n[r];l(o)?(i.push(r),i.push("."),a(e,t,o,i),i.pop(),i.pop()):(i.push(r),a(e,t,o,i),i.pop())});else if(Array.isArray(n))n.forEach(function(n,r){l(n)?(i.push("["+r+"]"),i.push("."),a(e,t,n,i),i.pop(),i.pop()):(i.push("["+r+"]"),a(e,t,n,i),i.pop())});else if("string"===typeof n){var s=oe.test(n);if(s){var c="Detected HTML in message '"+n+"' of keypath '"+i.join("")+"' at '"+t+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===e?r(c):"error"===e&&o(c)}}};a(t,e,n,i)},he.prototype._initVM=function(e){var t=y.config.silent;y.config.silent=!0,this._vm=new y({data:e}),y.config.silent=t},he.prototype.destroyVM=function(){this._vm.$destroy()},he.prototype.subscribeDataChanging=function(e){this._dataListeners.push(e)},he.prototype.unsubscribeDataChanging=function(e){f(this._dataListeners,e)},he.prototype.watchI18nData=function(){var e=this;return this._vm.$watch("$data",function(){var t=e._dataListeners.length;while(t--)y.nextTick(function(){e._dataListeners[t]&&e._dataListeners[t].$forceUpdate()})},{deep:!0})},he.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var e=this._vm;return this._root.$i18n.vm.$watch("locale",function(t){e.$set(e,"locale",t),e.$forceUpdate()},{immediate:!0})},de.vm.get=function(){return this._vm},de.messages.get=function(){return d(this._getMessages())},de.dateTimeFormats.get=function(){return d(this._getDateTimeFormats())},de.numberFormats.get=function(){return d(this._getNumberFormats())},de.availableLocales.get=function(){return Object.keys(this.messages).sort()},de.locale.get=function(){return this._vm.locale},de.locale.set=function(e){this._vm.$set(this._vm,"locale",e)},de.fallbackLocale.get=function(){return this._vm.fallbackLocale},de.fallbackLocale.set=function(e){this._vm.$set(this._vm,"fallbackLocale",e)},de.missing.get=function(){return this._missing},de.missing.set=function(e){this._missing=e},de.formatter.get=function(){return this._formatter},de.formatter.set=function(e){this._formatter=e},de.silentTranslationWarn.get=function(){return this._silentTranslationWarn},de.silentTranslationWarn.set=function(e){this._silentTranslationWarn=e},de.silentFallbackWarn.get=function(){return this._silentFallbackWarn},de.silentFallbackWarn.set=function(e){this._silentFallbackWarn=e},de.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},de.preserveDirectiveContent.set=function(e){this._preserveDirectiveContent=e},de.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},de.warnHtmlInMessage.set=function(e){var t=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=e,n!==e&&("warn"===e||"error"===e)){var i=this._getMessages();Object.keys(i).forEach(function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,i[e])})}},he.prototype._getMessages=function(){return this._vm.messages},he.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},he.prototype._getNumberFormats=function(){return this._vm.numberFormats},he.prototype._warnDefault=function(e,t,n,i,r){if(!u(n))return n;if(this._missing){var o=this._missing.apply(null,[e,t,i,r]);if("string"===typeof o)return o}else 0;return t},he.prototype._isFallbackRoot=function(e){return!e&&!u(this._root)&&this._fallbackRoot},he.prototype._isSilentFallback=function(e){return this._silentFallbackWarn&&(this._isFallbackRoot()||e!==this.fallbackLocale)},he.prototype._interpolate=function(e,t,n,i,r,o,a){if(!t)return null;var s,c=this._path.getPathValue(t,n);if(Array.isArray(c)||l(c))return c;if(u(c)){if(!l(t))return null;if(s=t[n],"string"!==typeof s)return null}else{if("string"!==typeof c)return null;s=c}return(s.indexOf("@:")>=0||s.indexOf("@.")>=0)&&(s=this._link(e,t,s,i,"raw",o,a)),this._render(s,r,o,n)},he.prototype._link=function(e,t,n,i,r,o,a){var s=n,c=s.match(ae);for(var l in c)if(c.hasOwnProperty(l)){var u=c[l],h=u.match(se),d=h[0],f=h[1],p=u.replace(d,"").replace(ce,"");if(a.includes(p))return s;a.push(p);var v=this._interpolate(e,t,p,i,"raw"===r?"string":r,"raw"===r?void 0:o,a);if(this._isFallbackRoot(v)){if(!this._root)throw Error("unexpected error");var m=this._root.$i18n;v=m._translate(m._getMessages(),m.locale,m.fallbackLocale,p,i,r,o)}v=this._warnDefault(e,p,v,i,Array.isArray(o)?o:[o]),le.hasOwnProperty(f)&&(v=le[f](v)),a.pop(),s=v?s.replace(u,v):s}return s},he.prototype._render=function(e,t,n,i){var r=this._formatter.interpolate(e,n,i);return r||(r=ue.interpolate(e,n,i)),"string"===t?r.join(""):r},he.prototype._translate=function(e,t,n,i,r,o,a){var s=this._interpolate(t,e[t],i,r,o,a,[i]);return u(s)?(s=this._interpolate(n,e[n],i,r,o,a,[i]),u(s)?null:s):s},he.prototype._t=function(e,t,n,i){var r,o=[],a=arguments.length-4;while(a-- >0)o[a]=arguments[a+4];if(!e)return"";var s=h.apply(void 0,o),c=s.locale||t,l=this._translate(n,c,this.fallbackLocale,e,i,"string",s.params);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return(r=this._root).$t.apply(r,[e].concat(o))}return this._warnDefault(c,e,l,i,o)},he.prototype.t=function(e){var t,n=[],i=arguments.length-1;while(i-- >0)n[i]=arguments[i+1];return(t=this)._t.apply(t,[e,this.locale,this._getMessages(),null].concat(n))},he.prototype._i=function(e,t,n,i,r){var o=this._translate(n,t,this.fallbackLocale,e,i,"raw",r);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(e,t,r)}return this._warnDefault(t,e,o,i,[r])},he.prototype.i=function(e,t,n){return e?("string"!==typeof t&&(t=this.locale),this._i(e,t,this._getMessages(),null,n)):""},he.prototype._tc=function(e,t,n,i,r){var o,a=[],s=arguments.length-5;while(s-- >0)a[s]=arguments[s+5];if(!e)return"";void 0===r&&(r=1);var c={count:r,n:r},l=h.apply(void 0,a);return l.params=Object.assign(c,l.params),a=null===l.locale?[l.params]:[l.locale,l.params],this.fetchChoice((o=this)._t.apply(o,[e,t,n,i].concat(a)),r)},he.prototype.fetchChoice=function(e,t){if(!e&&"string"!==typeof e)return null;var n=e.split("|");return t=this.getChoiceIndex(t,n.length),n[t]?n[t].trim():e},he.prototype.getChoiceIndex=function(e,t){var n=function(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0};return this.locale in this.pluralizationRules?this.pluralizationRules[this.locale].apply(this,[e,t]):n(e,t)},he.prototype.tc=function(e,t){var n,i=[],r=arguments.length-2;while(r-- >0)i[r]=arguments[r+2];return(n=this)._tc.apply(n,[e,this.locale,this._getMessages(),null,t].concat(i))},he.prototype._te=function(e,t,n){var i=[],r=arguments.length-3;while(r-- >0)i[r]=arguments[r+3];var o=h.apply(void 0,i).locale||t;return this._exist(n[o],e)},he.prototype.te=function(e,t){return this._te(e,this.locale,this._getMessages(),t)},he.prototype.getLocaleMessage=function(e){return d(this._vm.messages[e]||{})},he.prototype.setLocaleMessage=function(e,t){("warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||(this._checkLocaleMessage(e,this._warnHtmlInMessage,t),"error"!==this._warnHtmlInMessage))&&this._vm.$set(this._vm.messages,e,t)},he.prototype.mergeLocaleMessage=function(e,t){("warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||(this._checkLocaleMessage(e,this._warnHtmlInMessage,t),"error"!==this._warnHtmlInMessage))&&this._vm.$set(this._vm.messages,e,m(this._vm.messages[e]||{},t))},he.prototype.getDateTimeFormat=function(e){return d(this._vm.dateTimeFormats[e]||{})},he.prototype.setDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,t)},he.prototype.mergeDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,m(this._vm.dateTimeFormats[e]||{},t))},he.prototype._localizeDateTime=function(e,t,n,i,r){var o=t,a=i[o];if((u(a)||u(a[r]))&&(o=n,a=i[o]),u(a)||u(a[r]))return null;var s=a[r],c=o+"__"+r,l=this._dateTimeFormatters[c];return l||(l=this._dateTimeFormatters[c]=new Intl.DateTimeFormat(o,s)),l.format(e)},he.prototype._d=function(e,t,n){if(!n)return new Intl.DateTimeFormat(t).format(e);var i=this._localizeDateTime(e,t,this.fallbackLocale,this._getDateTimeFormats(),n);if(this._isFallbackRoot(i)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.d(e,n,t)}return i||""},he.prototype.d=function(e){var t=[],n=arguments.length-1;while(n-- >0)t[n]=arguments[n+1];var i=this.locale,r=null;return 1===t.length?"string"===typeof t[0]?r=t[0]:a(t[0])&&(t[0].locale&&(i=t[0].locale),t[0].key&&(r=t[0].key)):2===t.length&&("string"===typeof t[0]&&(r=t[0]),"string"===typeof t[1]&&(i=t[1])),this._d(e,i,r)},he.prototype.getNumberFormat=function(e){return d(this._vm.numberFormats[e]||{})},he.prototype.setNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,t)},he.prototype.mergeNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,m(this._vm.numberFormats[e]||{},t))},he.prototype._getNumberFormatter=function(e,t,n,i,r,o){var a=t,s=i[a];if((u(s)||u(s[r]))&&(a=n,s=i[a]),u(s)||u(s[r]))return null;var c,l=s[r];if(o)c=new Intl.NumberFormat(a,Object.assign({},l,o));else{var h=a+"__"+r;c=this._numberFormatters[h],c||(c=this._numberFormatters[h]=new Intl.NumberFormat(a,l))}return c},he.prototype._n=function(e,t,n,i){if(!he.availabilities.numberFormat)return"";if(!n){var r=i?new Intl.NumberFormat(t,i):new Intl.NumberFormat(t);return r.format(e)}var o=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,i),a=o&&o.format(e);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.n(e,Object.assign({},{key:n,locale:t},i))}return a||""},he.prototype.n=function(e){var t=[],n=arguments.length-1;while(n-- >0)t[n]=arguments[n+1];var r=this.locale,o=null,s=null;return 1===t.length?"string"===typeof t[0]?o=t[0]:a(t[0])&&(t[0].locale&&(r=t[0].locale),t[0].key&&(o=t[0].key),s=Object.keys(t[0]).reduce(function(e,n){var r;return i.includes(n)?Object.assign({},e,(r={},r[n]=t[0][n],r)):e},null)):2===t.length&&("string"===typeof t[0]&&(o=t[0]),"string"===typeof t[1]&&(r=t[1])),this._n(e,r,o,s)},he.prototype._ntp=function(e,t,n,i){if(!he.availabilities.numberFormat)return[];if(!n){var r=i?new Intl.NumberFormat(t,i):new Intl.NumberFormat(t);return r.formatToParts(e)}var o=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,i),a=o&&o.formatToParts(e);if(this._isFallbackRoot(a)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(e,t,n,i)}return a||[]},Object.defineProperties(he.prototype,de),Object.defineProperty(he,"availabilities",{get:function(){if(!re){var e="undefined"!==typeof Intl;re={dateTimeFormat:e&&"undefined"!==typeof Intl.DateTimeFormat,numberFormat:e&&"undefined"!==typeof Intl.NumberFormat}}return re}}),he.install=L,he.version="8.11.2",t["a"]=he},a994:function(e,t,n){var i=n("7d1f"),r=n("32f4"),o=n("ec69");function a(e){return i(e,o,r)}e.exports=a},a9cc:function(e,t,n){"use strict";var i=n("5ca1"),r=n("a5b8"),o=n("9c80");i(i.S,"Promise",{try:function(e){var t=r.f(this),n=o(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},aa77:function(e,t,n){var i=n("5ca1"),r=n("be13"),o=n("79e5"),a=n("fdef"),s="["+a+"]",c="​…",l=RegExp("^"+s+s+"*"),u=RegExp(s+s+"*$"),h=function(e,t,n){var r={},s=o(function(){return!!a[e]()||c[e]()!=c}),l=r[e]=s?t(d):a[e];n&&(r[n]=l),i(i.P+i.F*s,"String",r)},d=h.trim=function(e,t){return e=String(r(e)),1&t&&(e=e.replace(l,"")),2&t&&(e=e.replace(u,"")),e};e.exports=h},aae3:function(e,t,n){var i=n("d3f4"),r=n("2d95"),o=n("2b4c")("match");e.exports=function(e){var t;return i(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==r(e))}},aba2:function(e,t,n){var i=n("e53d"),r=n("4178").set,o=i.MutationObserver||i.WebKitMutationObserver,a=i.process,s=i.Promise,c="process"==n("6b4c")(a);e.exports=function(){var e,t,n,l=function(){var i,r;c&&(i=a.domain)&&i.exit();while(e){r=e.fn,e=e.next;try{r()}catch(o){throw e?n():t=void 0,o}}t=void 0,i&&i.enter()};if(c)n=function(){a.nextTick(l)};else if(!o||i.navigator&&i.navigator.standalone)if(s&&s.resolve){var u=s.resolve(void 0);n=function(){u.then(l)}}else n=function(){r.call(i,l)};else{var h=!0,d=document.createTextNode("");new o(l).observe(d,{characterData:!0}),n=function(){d.data=h=!h}}return function(i){var r={fn:i,next:void 0};t&&(t.next=r),e||(e=r,n()),t=r}}},abd1:function(e,t,n){},abd7:function(e,t){e.exports=function(e,t){var n=t===Object(t)?function(e){return t[e]}:t;return function(t){return String(t).replace(e,n)}}},ac4d:function(e,t,n){n("3a72")("asyncIterator")},ac6a:function(e,t,n){for(var i=n("cadf"),r=n("0d58"),o=n("2aba"),a=n("7726"),s=n("32e9"),c=n("84f2"),l=n("2b4c"),u=l("iterator"),h=l("toStringTag"),d=c.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},p=r(f),v=0;v1?arguments[1]:void 0,i=r(t.length),c=void 0===n?i:Math.min(r(n),i),l=String(e);return s?s.call(t,l,c):t.slice(c-l.length,c)===l}})},af56:function(e,t,n){n("ec30")("Uint16",2,function(e){return function(t,n,i){return e(this,t,n,i)}})},b047:function(e,t){function n(e){return function(t){return e(t)}}e.exports=n},b047c:function(e,t,n){var i=n("1a8c"),r=n("408c"),o=n("b4b0"),a="Expected a function",s=Math.max,c=Math.min;function l(e,t,n){var l,u,h,d,f,p,v=0,m=!1,g=!1,b=!0;if("function"!=typeof e)throw new TypeError(a);function y(t){var n=l,i=u;return l=u=void 0,v=t,d=e.apply(i,n),d}function _(e){return v=e,f=setTimeout(x,t),m?y(e):d}function C(e){var n=e-p,i=e-v,r=t-n;return g?c(r,h-i):r}function w(e){var n=e-p,i=e-v;return void 0===p||n>=t||n<0||g&&i>=h}function x(){var e=r();if(w(e))return S(e);f=setTimeout(x,C(e))}function S(e){return f=void 0,b&&l?y(e):(l=u=void 0,d)}function E(){void 0!==f&&clearTimeout(f),v=0,l=p=u=f=void 0}function O(){return void 0===f?d:S(r())}function M(){var e=r(),n=w(e);if(l=arguments,u=this,p=e,n){if(void 0===f)return _(p);if(g)return f=setTimeout(x,t),y(p)}return void 0===f&&(f=setTimeout(x,t)),d}return t=o(t)||0,i(n)&&(m=!!n.leading,g="maxWait"in n,h=g?s(o(n.maxWait)||0,t):h,b="trailing"in n?!!n.trailing:b),M.cancel=E,M.flush=O,M}e.exports=l},b05c:function(e,t,n){n("ec30")("Int8",1,function(e){return function(t,n,i){return e(this,t,n,i)}})},b0c5:function(e,t,n){"use strict";var i=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:i!==/./.exec},{exec:i})},b0dc:function(e,t,n){var i=n("e4ae");e.exports=function(e,t,n,r){try{return r?t(i(n)[0],n[1]):t(n)}catch(a){var o=e["return"];throw void 0!==o&&i(o.call(e)),a}}},b1b1:function(e,t,n){var i=n("5ca1"),r=n("9c12"),o=Math.abs;i(i.S,"Number",{isSafeInteger:function(e){return r(e)&&o(e)<=9007199254740991}})},b218:function(e,t){var n=9007199254740991;function i(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n}e.exports=i},b24f:function(e,t,n){"use strict";t.__esModule=!0;var i=n("93ff"),r=s(i),o=n("1727"),a=s(o);function s(e){return e&&e.__esModule?e:{default:e}}t.default=function(){function e(e,t){var n=[],i=!0,r=!1,o=void 0;try{for(var s,c=(0,a.default)(e);!(i=(s=c.next()).done);i=!0)if(n.push(s.value),t&&n.length===t)break}catch(l){r=!0,o=l}finally{try{!i&&c["return"]&&c["return"]()}finally{if(r)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},b269:function(e,t){function n(e,t,n,i){var r=e.length,o=n+(i?1:-1);while(i?o--:++o0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"===typeof e.action?e.action:this.defaultAction,this.target="function"===typeof e.target?e.target:this.defaultTarget,this.text="function"===typeof e.text?e.text:this.defaultText,this.container="object"===i(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var t=this;this.listener=(0,u.default)(e,"click",function(e){return t.onClick(e)})}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(t),target:this.target(t),text:this.text(t),container:this.container,trigger:t,emitter:this})}},{key:"defaultAction",value:function(e){return m("action",e)}},{key:"defaultTarget",value:function(e){var t=m("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return m("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"===typeof e?[e]:e,n=!!document.queryCommandSupported;return t.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),t}(c.default);function m(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}e.exports=v},function(e,t,n){"use strict";var i="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},r=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,t="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[t?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(t){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==("undefined"===typeof e?"undefined":i(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}();e.exports=l},function(e,t){function n(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var i=window.getSelection(),r=document.createRange();r.selectNodeContents(e),i.removeAllRanges(),i.addRange(r),t=i.toString()}return t}e.exports=n},function(e,t){function n(){}n.prototype={on:function(e,t,n){var i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var i=this;function r(){i.off(e,r),t.apply(n,arguments)}return r._=t,this.on(e,r,n)},emit:function(e){var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),i=0,r=n.length;for(i;i0?r(i(e),9007199254740991):0}},b488:function(e,t,n){"use strict";var i=n("9b57"),r=n.n(i),o=n("41b2"),a=n.n(o);t["a"]={methods:{setState:function(e,t){var n="function"===typeof e?e(this.$data,this.$props):e;a()(this.$data,n),this.$nextTick(function(){t&&t()})},__emit:function(){var e,t=[].slice.call(arguments,0),n=[],i=t[0];t.length&&this.$listeners[i]&&(n.includes(i)?this.$emit.apply(this,[i].concat(r()(t.slice(1)))):(e=this.$listeners)[i].apply(e,r()(t.slice(1))))}}}},b4b0:function(e,t,n){var i=n("1a8c"),r=n("ffd6"),o=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;function h(e){if("number"==typeof e)return e;if(r(e))return o;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=c.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):s.test(e)?o:+e}e.exports=h},b4c0:function(e,t,n){var i=n("cb5a");function r(e){var t=this.__data__,n=i(t,e);return n<0?void 0:t[n][1]}e.exports=r},b4c2:function(e,t,n){var i=n("5ca1");i(i.S,"Math",{imulh:function(e,t){var n=65535,i=+e,r=+t,o=i&n,a=r&n,s=i>>16,c=r>>16,l=(s*a>>>0)+(o*a>>>16);return s*c+(l>>16)+((o*c>>>0)+(l&n)>>16)}})},b50d:function(e,t,n){"use strict";var i=n("c532"),r=n("467f"),o=n("30b5"),a=n("c345"),s=n("3934"),c=n("2d83");e.exports=function(e){return new Promise(function(t,l){var u=e.data,h=e.headers;i.isFormData(u)&&delete h["Content-Type"];var d=new XMLHttpRequest;if(e.auth){var f=e.auth.username||"",p=e.auth.password||"";h.Authorization="Basic "+btoa(f+":"+p)}if(d.open(e.method.toUpperCase(),o(e.url,e.params,e.paramsSerializer),!0),d.timeout=e.timeout,d.onreadystatechange=function(){if(d&&4===d.readyState&&(0!==d.status||d.responseURL&&0===d.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in d?a(d.getAllResponseHeaders()):null,i=e.responseType&&"text"!==e.responseType?d.response:d.responseText,o={data:i,status:d.status,statusText:d.statusText,headers:n,config:e,request:d};r(t,l,o),d=null}},d.onabort=function(){d&&(l(c("Request aborted",e,"ECONNABORTED",d)),d=null)},d.onerror=function(){l(c("Network Error",e,null,d)),d=null},d.ontimeout=function(){l(c("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",d)),d=null},i.isStandardBrowserEnv()){var v=n("7aac"),m=(e.withCredentials||s(e.url))&&e.xsrfCookieName?v.read(e.xsrfCookieName):void 0;m&&(h[e.xsrfHeaderName]=m)}if("setRequestHeader"in d&&i.forEach(h,function(e,t){"undefined"===typeof u&&"content-type"===t.toLowerCase()?delete h[t]:d.setRequestHeader(t,e)}),e.withCredentials&&(d.withCredentials=!0),e.responseType)try{d.responseType=e.responseType}catch(g){if("json"!==e.responseType)throw g}"function"===typeof e.onDownloadProgress&&d.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&d.upload&&d.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){d&&(d.abort(),l(e),d=null)}),void 0===u&&(u=null),d.send(u)})}},b54a:function(e,t,n){"use strict";n("386b")("link",function(e){return function(t){return e(this,"a","href",t)}})},b5a7:function(e,t,n){var i=n("0b07"),r=n("2b3e"),o=i(r,"DataView");e.exports=o},b689:function(e,t){var n="\\ud800-\\udfff",i="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",o="\\u20d0-\\u20ff",a=i+r+o,s="\\ufe0e\\ufe0f",c="\\u200d",l=RegExp("["+c+n+a+s+"]");function u(e){return l.test(e)}e.exports=u},b6e4:function(e,t,n){n("ec30")("Int32",4,function(e){return function(t,n,i){return e(this,t,n,i)}})},b6e6:function(e,t,n){},b72c:function(e,t,n){var i=n("5ca1"),r=n("d752");i(i.G+i.F*(parseFloat!=r),{parseFloat:r})},b80b:function(e,t,n){var i=n("4f7f"),r=n("4379"),o=n("37a7"),a=n("cb7c"),s=n("38fd"),c=o.keys,l=o.key,u=function(e,t){var n=c(e,t),o=s(e);if(null===o)return n;var a=u(o,t);return a.length?n.length?r(new i(n.concat(a))):a:n};o.exp({getMetadataKeys:function(e){return u(a(e),arguments.length<2?void 0:l(arguments[1]))}})},b897:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=m;var i=n("66cb"),r=o(i);function o(e){return e&&e.__esModule?e:{default:e}}var a=2,s=16,c=5,l=5,u=15,h=5,d=4;function f(e,t,n){var i=void 0;return i=Math.round(e.h)>=60&&Math.round(e.h)<=240?n?Math.round(e.h)-a*t:Math.round(e.h)+a*t:n?Math.round(e.h)+a*t:Math.round(e.h)-a*t,i<0?i+=360:i>=360&&(i-=360),i}function p(e,t,n){if(0===e.h&&0===e.s)return e.s;var i=void 0;return i=n?Math.round(100*e.s)-s*t:t===d?Math.round(100*e.s)+s:Math.round(100*e.s)+c*t,i>100&&(i=100),n&&t===h&&i>10&&(i=10),i<6&&(i=6),i}function v(e,t,n){return n?Math.round(100*e.v)+l*t:Math.round(100*e.v)-u*t}function m(e){for(var t=[],n=(0,r.default)(e),i=h;i>0;i-=1){var o=n.toHsv(),a=(0,r.default)({h:f(o,i,!0),s:p(o,i,!0),v:v(o,i,!0)}).toHexString();t.push(a)}t.push(n.toHexString());for(var s=1;s<=d;s+=1){var c=n.toHsv(),l=(0,r.default)({h:f(c,s),s:p(c,s),v:v(c,s)}).toHexString();t.push(l)}return t}},b8e3:function(e,t){e.exports=!0},b9a1:function(e,t,n){"use strict";var i=n("5ca1"),r=n("4bf8"),o=n("6a99"),a=n("38fd"),s=n("11e9").f;n("9e1e")&&i(i.P+n("c5b4"),"Object",{__lookupGetter__:function(e){var t,n=r(this),i=o(e,!0);do{if(t=s(n,i))return t.get}while(n=a(n))}})},ba16:function(e,t,n){var i=n("5ca1"),r=n("11e9").f,o=n("cb7c");i(i.S,"Reflect",{deleteProperty:function(e,t){var n=r(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},ba92:function(e,t,n){"use strict";var i=n("4bf8"),r=n("77f1"),o=n("9def");e.exports=[].copyWithin||function(e,t){var n=i(this),a=o(n.length),s=r(e,a),c=r(t,a),l=arguments.length>2?arguments[2]:void 0,u=Math.min((void 0===l?a:r(l,a))-c,a-s),h=1;c0)c in n?n[s]=n[c]:delete n[s],s+=h,c+=h;return n}},baca:function(e,t){function n(e){return e.split("")}e.exports=n},bafa:function(e,t){function n(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}e.exports=n},bbc0:function(e,t,n){var i=n("6044"),r="__lodash_hash_undefined__",o=Object.prototype,a=o.hasOwnProperty;function s(e){var t=this.__data__;if(i){var n=t[e];return n===r?void 0:n}return a.call(t,e)?t[e]:void 0}e.exports=s},bc13:function(e,t,n){var i=n("e53d"),r=i.navigator;e.exports=r&&r.userAgent||""},bc3a:function(e,t,n){e.exports=n("cee4")},bcaa:function(e,t,n){var i=n("cb7c"),r=n("d3f4"),o=n("a5b8");e.exports=function(e,t){if(i(e),r(t)&&t.constructor===e)return t;var n=o.f(e),a=n.resolve;return a(t),n.promise}},bcf7:function(e,t,n){var i=n("9020"),r=n("217d").each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new i(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;r(t,function(n,i){if(n.equals(e))return n.destroy(),!t.splice(i,1)})},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){r(this.handlers,function(e){e.destroy()}),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";r(this.handlers,function(t){t[e]()})}},e.exports=o},bd86:function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("85f2"),r=n.n(i);function o(e,t,n){return t in e?r()(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},bdd1:function(e,t,n){n("c6a1")("WeakSet")},be13:function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},bef9:function(e,t,n){var i=n("2d95");e.exports=function(e,t){if("number"!=typeof e&&"Number"!=i(e))throw TypeError(t);return+e}},bf0b:function(e,t,n){var i=n("355d"),r=n("aebd"),o=n("36c3"),a=n("1bc3"),s=n("07e3"),c=n("794b"),l=Object.getOwnPropertyDescriptor;t.f=n("8e60")?l:function(e,t){if(e=o(e),t=a(t,!0),c)try{return l(e,t)}catch(n){}if(s(e,t))return r(!i.f.call(e,t),e[t])}},bf90:function(e,t,n){var i=n("36c3"),r=n("bf0b").f;n("ce7e")("getOwnPropertyDescriptor",function(){return function(e,t){return r(i(e),t)}})},bfcf:function(e,t){var n=9007199254740991;function i(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=n}e.exports=i},c02b:function(e,t,n){"use strict";var i=n("643e"),r=n("b39a"),o="WeakSet";n("e0b8")(o,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return i.def(r(this,o),e,!0)}},i,!1,!0)},c098:function(e,t,n){e.exports=n("d4af")},c0983:function(e,t){var n=9007199254740991,i=/^(?:0|[1-9]\d*)$/;function r(e,t){var r=typeof e;return t=null==t?n:t,!!t&&("number"==r||"symbol"!=r&&i.test(e))&&e>-1&&e%1==0&&e1?arguments[1]:void 0,3);while(n=n?n.n:this._f){i(n.v,n.k,this);while(n&&n.r)n=n.p}},has:function(e){return!!m(p(this,t),e)}}),d&&i(u.prototype,"size",{get:function(){return p(this,t)[v]}}),u},def:function(e,t,n){var i,r,o=m(e,t);return o?o.v=n:(e._l=o={i:r=f(t,!0),k:t,v:n,p:i=e._l,n:void 0,r:!1},e._f||(e._f=o),i&&(i.n=o),e[v]++,"F"!==r&&(e._i[r]=o)),e},getEntry:m,setStrong:function(e,t,n){l(e,t,function(e,n){this._t=p(e,t),this._k=n,this._l=void 0},function(){var e=this,t=e._k,n=e._l;while(n&&n.r)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?u(0,"keys"==t?n.k:"values"==t?n.v:[n.k,n.v]):(e._t=void 0,u(1))},n?"entries":"values",!n,!0),h(t)}}},c284:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=97)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},97:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"el-progress",class:["el-progress--"+e.type,e.status?"is-"+e.status:"",{"el-progress--without-text":!e.showText,"el-progress--text-inside":e.textInside}],attrs:{role:"progressbar","aria-valuenow":e.percentage,"aria-valuemin":"0","aria-valuemax":"100"}},["line"===e.type?n("div",{staticClass:"el-progress-bar"},[n("div",{staticClass:"el-progress-bar__outer",style:{height:e.strokeWidth+"px"}},[n("div",{staticClass:"el-progress-bar__inner",style:e.barStyle},[e.showText&&e.textInside?n("div",{staticClass:"el-progress-bar__innerText"},[e._v(e._s(e.content))]):e._e()])])]):n("div",{staticClass:"el-progress-circle",style:{height:e.width+"px",width:e.width+"px"}},[n("svg",{attrs:{viewBox:"0 0 100 100"}},[n("path",{staticClass:"el-progress-circle__track",style:e.trailPathStyle,attrs:{d:e.trackPath,stroke:"#e5e9f2","stroke-width":e.relativeStrokeWidth,fill:"none"}}),n("path",{staticClass:"el-progress-circle__path",style:e.circlePathStyle,attrs:{d:e.trackPath,stroke:e.stroke,fill:"none","stroke-linecap":"round","stroke-width":e.percentage?e.relativeStrokeWidth:0}})])]),e.showText&&!e.textInside?n("div",{staticClass:"el-progress__text",style:{fontSize:e.progressTextSize+"px"}},[e.status?n("i",{class:e.iconClass}):[e._v(e._s(e.content))]],2):e._e()])},r=[];i._withStripped=!0;var o={name:"ElProgress",props:{type:{type:String,default:"line",validator:function(e){return["line","circle","dashboard"].indexOf(e)>-1}},percentage:{type:Number,default:0,required:!0,validator:function(e){return e>=0&&e<=100}},status:{type:String,validator:function(e){return["success","exception","warning"].indexOf(e)>-1}},strokeWidth:{type:Number,default:6},textInside:{type:Boolean,default:!1},width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:[String,Array,Function],default:""},format:Function},computed:{barStyle:function(){var e={};return e.width=this.percentage+"%",e.backgroundColor=this.getCurrentColor(this.percentage),e},relativeStrokeWidth:function(){return(this.strokeWidth/this.width*100).toFixed(1)},radius:function(){return"circle"===this.type||"dashboard"===this.type?parseInt(50-parseFloat(this.relativeStrokeWidth)/2,10):0},trackPath:function(){var e=this.radius,t="dashboard"===this.type;return"\n M 50 50\n m 0 "+(t?"":"-")+e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"-":"")+2*e+"\n a "+e+" "+e+" 0 1 1 0 "+(t?"":"-")+2*e+"\n "},perimeter:function(){return 2*Math.PI*this.radius},rate:function(){return"dashboard"===this.type?.75:1},strokeDashoffset:function(){var e=-1*this.perimeter*(1-this.rate)/2;return e+"px"},trailPathStyle:function(){return{strokeDasharray:this.perimeter*this.rate+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset}},circlePathStyle:function(){return{strokeDasharray:this.perimeter*this.rate*(this.percentage/100)+"px, "+this.perimeter+"px",strokeDashoffset:this.strokeDashoffset,transition:"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"}},stroke:function(){var e=void 0;if(this.color)e=this.getCurrentColor(this.percentage);else switch(this.status){case"success":e="#13ce66";break;case"exception":e="#ff4949";break;case"warning":e="#e6a23c";break;default:e="#20a0ff"}return e},iconClass:function(){return"warning"===this.status?"el-icon-warning":"line"===this.type?"success"===this.status?"el-icon-circle-check":"el-icon-circle-close":"success"===this.status?"el-icon-check":"el-icon-close"},progressTextSize:function(){return"line"===this.type?12+.4*this.strokeWidth:.111111*this.width+2},content:function(){return"function"===typeof this.format?this.format(this.percentage)||"":this.percentage+"%"}},methods:{getCurrentColor:function(e){return"function"===typeof this.color?this.color(e):"string"===typeof this.color?this.color:this.getLevelColor(e)},getLevelColor:function(e){for(var t=this.getColorArray().sort(function(e,t){return e.percentage-t.percentage}),n=0;ne)return t[n].color;return t[t.length-1].color},getColorArray:function(){var e=this.color,t=100/e.length;return e.map(function(e,n){return"string"===typeof e?{color:e,progress:(n+1)*t}:e})}}},a=o,s=n(0),c=Object(s["a"])(a,i,r,!1,null,null,null);c.options.__file="packages/progress/src/progress.vue";var l=c.exports;l.install=function(e){e.component(l.name,l)};t["default"]=l}})},c2b6:function(e,t,n){var i=n("f8af"),r=n("5d89"),o=n("6f6c"),a=n("a2db"),s=n("c8fe"),c="[object Boolean]",l="[object Date]",u="[object Map]",h="[object Number]",d="[object RegExp]",f="[object Set]",p="[object String]",v="[object Symbol]",m="[object ArrayBuffer]",g="[object DataView]",b="[object Float32Array]",y="[object Float64Array]",_="[object Int8Array]",C="[object Int16Array]",w="[object Int32Array]",x="[object Uint8Array]",S="[object Uint8ClampedArray]",E="[object Uint16Array]",O="[object Uint32Array]";function M(e,t,n){var M=e.constructor;switch(t){case m:return i(e);case c:case l:return new M(+e);case g:return r(e,n);case b:case y:case _:case C:case w:case x:case S:case E:case O:return s(e,n);case u:return new M;case h:case p:return new M(e);case d:return o(e);case f:return new M;case v:return a(e)}}e.exports=M},c345:function(e,t,n){"use strict";var i=n("c532"),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(i.forEach(e.split("\n"),function(e){if(o=e.indexOf(":"),t=i.trim(e.substr(0,o)).toLowerCase(),n=i.trim(e.substr(o+1)),t){if(a[t]&&r.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}}),a):a}},c366:function(e,t,n){var i=n("6821"),r=n("9def"),o=n("77f1");e.exports=function(e){return function(t,n,a){var s,c=i(t),l=r(c.length),u=o(a,l);if(e&&n!=n){while(l>u)if(s=c[u++],s!=s)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},c367:function(e,t,n){"use strict";var i=n("8436"),r=n("50ed"),o=n("481b"),a=n("36c3");e.exports=n("30f1")(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},c3a1:function(e,t,n){var i=n("e6f3"),r=n("1691");e.exports=Object.keys||function(e){return i(e,r)}},c3fc:function(e,t,n){var i=n("42a2"),r=n("1310"),o="[object Set]";function a(e){return r(e)&&i(e)==o}e.exports=a},c401:function(e,t,n){"use strict";var i=n("c532");e.exports=function(e,t,n){return i.forEach(n,function(n){e=n(e,t)}),e}},c449:function(e,t,n){(function(t){for(var i=n("6d08"),r="undefined"===typeof window?t:window,o=["moz","webkit"],a="AnimationFrame",s=r["request"+a],c=r["cancel"+a]||r["cancelRequest"+a],l=0;!s&&l0)m=c(e,t,p,o(p.length),m,h-1)-1;else{if(m>=9007199254740991)throw TypeError();e[m]=p}m++}g++}return m}e.exports=c},c532:function(e,t,n){"use strict";var i=n("1d2b"),r=n("c7ce"),o=Object.prototype.toString;function a(e){return"[object Array]"===o.call(e)}function s(e){return"[object ArrayBuffer]"===o.call(e)}function c(e){return"undefined"!==typeof FormData&&e instanceof FormData}function l(e){var t;return t="undefined"!==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer,t}function u(e){return"string"===typeof e}function h(e){return"number"===typeof e}function d(e){return"undefined"===typeof e}function f(e){return null!==e&&"object"===typeof e}function p(e){return"[object Date]"===o.call(e)}function v(e){return"[object File]"===o.call(e)}function m(e){return"[object Blob]"===o.call(e)}function g(e){return"[object Function]"===o.call(e)}function b(e){return f(e)&&g(e.pipe)}function y(e){return"undefined"!==typeof URLSearchParams&&e instanceof URLSearchParams}function _(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function C(){return("undefined"===typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!==typeof window&&"undefined"!==typeof document)}function w(e,t){if(null!==e&&"undefined"!==typeof e)if("object"!==typeof e&&(e=[e]),a(e))for(var n=0,i=e.length;n2&&void 0!==arguments[2]?arguments[2]:300,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!t)throw new Error("instance & callback is required");var r=!1,o=function(){r||(r=!0,t&&t.apply(null,arguments))};i?e.$once("after-leave",o):e.$on("after-leave",o),setTimeout(function(){o()},n+100)}},c5b4:function(e,t,n){"use strict";e.exports=n("2d00")||!n("79e5")(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete n("7726")[e]})},c5f6:function(e,t,n){"use strict";var i=n("7726"),r=n("69a8"),o=n("2d95"),a=n("5dbc"),s=n("6a99"),c=n("79e5"),l=n("9093").f,u=n("11e9").f,h=n("86cc").f,d=n("aa77").trim,f="Number",p=i[f],v=p,m=p.prototype,g=o(n("2aeb")(m))==f,b="trim"in String.prototype,y=function(e){var t=s(e,!1);if("string"==typeof t&&t.length>2){t=b?t.trim():d(t,3);var n,i,r,o=t.charCodeAt(0);if(43===o||45===o){if(n=t.charCodeAt(2),88===n||120===n)return NaN}else if(48===o){switch(t.charCodeAt(1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+t}for(var a,c=t.slice(2),l=0,u=c.length;lr)return NaN;return parseInt(c,i)}}return+t};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof p&&(g?c(function(){m.valueOf.call(n)}):o(n)!=f)?a(new v(y(t)),n,p):y(t)};for(var _,C=n("9e1e")?l(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),w=0;C.length>w;w++)r(v,_=C[w])&&!r(p,_)&&h(p,_,u(v,_));p.prototype=m,m.constructor=p,n("2aba")(i,f,p)}},c606:function(e,t,n){"use strict";t.__esModule=!0;var i=n("9dfa"),r=l(i),o=n("3fc5"),a=l(o),s=n("6b51"),c=l(s);function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var h=function(){function e(t){u(this,e),this.WHITESPACE_REGEX=/^(\s+)/,this.NUMBER_REGEX=/^((-\s*)?[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+)\b/,this.OPERATOR_REGEX=/^(!=|<>|==|<=|>=|!<|!>|\|\||::|->>|->|~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|.)/,this.BLOCK_COMMENT_REGEX=/^(\/\*[^]*?(?:\*\/|$))/,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(t.lineCommentTypes),this.RESERVED_TOPLEVEL_REGEX=this.createReservedWordRegex(t.reservedToplevelWords),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(t.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(t.reservedWords),this.WORD_REGEX=this.createWordRegex(t.specialWordChars),this.STRING_REGEX=this.createStringRegex(t.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(t.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(t.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(t.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(t.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(t.namedPlaceholderTypes,this.createStringPattern(t.stringTypes))}return e.prototype.createLineCommentRegex=function(e){return new RegExp("^((?:"+e.map(function(e){return(0,a["default"])(e)}).join("|")+").*?(?:\n|$))")},e.prototype.createReservedWordRegex=function(e){var t=e.join("|").replace(/ /g,"\\s+");return new RegExp("^("+t+")\\b","i")},e.prototype.createWordRegex=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new RegExp("^([\\w"+e.join("")+"]+)")},e.prototype.createStringRegex=function(e){return new RegExp("^("+this.createStringPattern(e)+")")},e.prototype.createStringPattern=function(e){var t={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)"};return e.map(function(e){return t[e]}).join("|")},e.prototype.createParenRegex=function(e){var t=this;return new RegExp("^("+e.map(function(e){return t.escapeParen(e)}).join("|")+")","i")},e.prototype.escapeParen=function(e){return 1===e.length?(0,a["default"])(e):"\\b"+e+"\\b"},e.prototype.createPlaceholderRegex=function(e,t){if((0,r["default"])(e))return!1;var n=e.map(a["default"]).join("|");return new RegExp("^((?:"+n+")(?:"+t+"))")},e.prototype.tokenize=function(e){var t=[],n=void 0;while(e.length)n=this.getNextToken(e,n),e=e.substring(n.value.length),t.push(n);return t},e.prototype.getNextToken=function(e,t){return this.getWhitespaceToken(e)||this.getCommentToken(e)||this.getStringToken(e)||this.getOpenParenToken(e)||this.getCloseParenToken(e)||this.getPlaceholderToken(e)||this.getNumberToken(e)||this.getReservedWordToken(e,t)||this.getWordToken(e)||this.getOperatorToken(e)},e.prototype.getWhitespaceToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].WHITESPACE,regex:this.WHITESPACE_REGEX})},e.prototype.getCommentToken=function(e){return this.getLineCommentToken(e)||this.getBlockCommentToken(e)},e.prototype.getLineCommentToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].LINE_COMMENT,regex:this.LINE_COMMENT_REGEX})},e.prototype.getBlockCommentToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].BLOCK_COMMENT,regex:this.BLOCK_COMMENT_REGEX})},e.prototype.getStringToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].STRING,regex:this.STRING_REGEX})},e.prototype.getOpenParenToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].OPEN_PAREN,regex:this.OPEN_PAREN_REGEX})},e.prototype.getCloseParenToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].CLOSE_PAREN,regex:this.CLOSE_PAREN_REGEX})},e.prototype.getPlaceholderToken=function(e){return this.getIdentNamedPlaceholderToken(e)||this.getStringNamedPlaceholderToken(e)||this.getIndexedPlaceholderToken(e)},e.prototype.getIdentNamedPlaceholderToken=function(e){return this.getPlaceholderTokenWithKey({input:e,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:function(e){return e.slice(1)}})},e.prototype.getStringNamedPlaceholderToken=function(e){var t=this;return this.getPlaceholderTokenWithKey({input:e,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:function(e){return t.getEscapedPlaceholderKey({key:e.slice(2,-1),quoteChar:e.slice(-1)})}})},e.prototype.getIndexedPlaceholderToken=function(e){return this.getPlaceholderTokenWithKey({input:e,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:function(e){return e.slice(1)}})},e.prototype.getPlaceholderTokenWithKey=function(e){var t=e.input,n=e.regex,i=e.parseKey,r=this.getTokenOnFirstMatch({input:t,regex:n,type:c["default"].PLACEHOLDER});return r&&(r.key=i(r.value)),r},e.prototype.getEscapedPlaceholderKey=function(e){var t=e.key,n=e.quoteChar;return t.replace(new RegExp((0,a["default"])("\\")+n,"g"),n)},e.prototype.getNumberToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].NUMBER,regex:this.NUMBER_REGEX})},e.prototype.getOperatorToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].OPERATOR,regex:this.OPERATOR_REGEX})},e.prototype.getReservedWordToken=function(e,t){if(!t||!t.value||"."!==t.value)return this.getToplevelReservedToken(e)||this.getNewlineReservedToken(e)||this.getPlainReservedToken(e)},e.prototype.getToplevelReservedToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].RESERVED_TOPLEVEL,regex:this.RESERVED_TOPLEVEL_REGEX})},e.prototype.getNewlineReservedToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].RESERVED_NEWLINE,regex:this.RESERVED_NEWLINE_REGEX})},e.prototype.getPlainReservedToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].RESERVED,regex:this.RESERVED_PLAIN_REGEX})},e.prototype.getWordToken=function(e){return this.getTokenOnFirstMatch({input:e,type:c["default"].WORD,regex:this.WORD_REGEX})},e.prototype.getTokenOnFirstMatch=function(e){var t=e.input,n=e.type,i=e.regex,r=t.match(i);if(r)return{type:n,value:r[1]}},e}();t["default"]=h,e.exports=t["default"]},c66f:function(e,t,n){"use strict";var i=n("5ca1"),r=n("0f88"),o=n("ed0b"),a=n("cb7c"),s=n("77f1"),c=n("9def"),l=n("d3f4"),u=n("7726").ArrayBuffer,h=n("ebd6"),d=o.ArrayBuffer,f=o.DataView,p=r.ABV&&u.isView,v=d.prototype.slice,m=r.VIEW,g="ArrayBuffer";i(i.G+i.W+i.F*(u!==d),{ArrayBuffer:d}),i(i.S+i.F*!r.CONSTR,g,{isView:function(e){return p&&p(e)||l(e)&&m in e}}),i(i.P+i.U+i.F*n("79e5")(function(){return!new d(2).slice(1,void 0).byteLength}),g,{slice:function(e,t){if(void 0!==v&&void 0===t)return v.call(a(this),e);var n=a(this).byteLength,i=s(e,n),r=s(void 0===t?n:t,n),o=new(h(this,d))(c(r-i)),l=new f(this),u=new f(o),p=0;while(i0?(i=n/c,o+=i*i):o+=n;return c===1/0?1/0:c*Math.sqrt(o)}})},c7c62:function(e,t,n){var i=n("5ca1"),r=n("2d5c"),o=Math.exp;i(i.S,"Math",{tanh:function(e){var t=r(e=+e),n=r(-e);return t==1/0?1:n==1/0?-1:(t-n)/(o(e)+o(-e))}})},c7ca:function(e,t,n){n("3a72")("observable")},c7ce:function(e,t){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +e.exports=function(e){return null!=e&&null!=e.constructor&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},c869:function(e,t,n){var i=n("0b07"),r=n("2b3e"),o=i(r,"Set");e.exports=o},c87c:function(e,t){var n=Object.prototype,i=n.hasOwnProperty;function r(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&i.call(e,"index")&&(n.index=e.index,n.input=e.input),n}e.exports=r},c8af:function(e,t,n){"use strict";var i=n("c532");e.exports=function(e,t){i.forEach(e,function(n,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[i])})}},c8ba:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(i){"object"===typeof window&&(n=window)}e.exports=n},c8bb:function(e,t,n){e.exports=n("54a1")},c8ce:function(e,t,n){var i=n("2b4c")("toPrimitive"),r=Date.prototype;i in r||n("32e9")(r,i,n("8381"))},c8fe:function(e,t,n){var i=n("f8af");function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}e.exports=r},c9d5:function(e,t,n){(function(n){var i,r; +/*! + * Waves v0.7.6 + * http://fian.my.id/Waves + * + * Copyright 2014-2018 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */(function(n,o){"use strict";i=[],r=function(){return n.Waves=o.call(n),n.Waves}.apply(t,i),void 0===r||(e.exports=r)})("object"===typeof n?n:this,function(){"use strict";var e=e||{},t=document.querySelectorAll.bind(document),n=Object.prototype.toString,i="ontouchstart"in window;function r(e){return null!==e&&e===e.window}function o(e){return r(e)?e:9===e.nodeType&&e.defaultView}function a(e){var t=typeof e;return"function"===t||"object"===t&&!!e}function s(e){return a(e)&&e.nodeType>0}function c(e){var i=n.call(e);return"[object String]"===i?t(e):a(e)&&/^\[object (Array|HTMLCollection|NodeList|Object)\]$/.test(i)&&e.hasOwnProperty("length")?e:s(e)?[e]:[]}function l(e){var t,n,i={top:0,left:0},r=e&&e.ownerDocument;return t=r.documentElement,"undefined"!==typeof e.getBoundingClientRect&&(i=e.getBoundingClientRect()),n=o(r),{top:i.top+n.pageYOffset-t.clientTop,left:i.left+n.pageXOffset-t.clientLeft}}function u(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+=n+":"+e[n]+";");return t}var h={duration:750,delay:200,show:function(e,t,n){if(2===e.button)return!1;t=t||this;var i=document.createElement("div");i.className="waves-ripple waves-rippling",t.appendChild(i);var r=l(t),o=0,a=0;"touches"in e&&e.touches.length?(o=e.touches[0].pageY-r.top,a=e.touches[0].pageX-r.left):(o=e.pageY-r.top,a=e.pageX-r.left),a=a>=0?a:0,o=o>=0?o:0;var s="scale("+t.clientWidth/100*3+")",c="translate(0,0)";n&&(c="translate("+n.x+"px, "+n.y+"px)"),i.setAttribute("data-hold",Date.now()),i.setAttribute("data-x",a),i.setAttribute("data-y",o),i.setAttribute("data-scale",s),i.setAttribute("data-translate",c);var d={top:o+"px",left:a+"px"};i.classList.add("waves-notransition"),i.setAttribute("style",u(d)),i.classList.remove("waves-notransition"),d["-webkit-transform"]=s+" "+c,d["-moz-transform"]=s+" "+c,d["-ms-transform"]=s+" "+c,d["-o-transform"]=s+" "+c,d.transform=s+" "+c,d.opacity="1";var f="mousemove"===e.type?2500:h.duration;d["-webkit-transition-duration"]=f+"ms",d["-moz-transition-duration"]=f+"ms",d["-o-transition-duration"]=f+"ms",d["transition-duration"]=f+"ms",i.setAttribute("style",u(d))},hide:function(e,t){t=t||this;for(var n=t.getElementsByClassName("waves-rippling"),r=0,o=n.length;r=0&&null!==t.wait){var f={type:"mouseup",button:1};setTimeout(d(f,i),t.wait)}},e.calm=function(e){e=c(e);for(var t={type:"mouseup",button:1},n=0,i=e.length;n=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},cb5a:function(e,t,n){var i=n("9638");function r(e,t){var n=e.length;while(n--)if(i(e[n][0],t))return n;return-1}e.exports=r},cb7c:function(e,t,n){var i=n("d3f4");e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},cc45:function(e,t,n){var i=n("1a2d"),r=n("b047"),o=n("99d3"),a=o&&o.isMap,s=a?r(a):i;e.exports=s},ccb9:function(e,t,n){t.f=n("5168")},cd1c:function(e,t,n){var i=n("e853");e.exports=function(e,t){return new(i(e))(t)}},cd78:function(e,t,n){var i=n("e4ae"),r=n("f772"),o=n("656e");e.exports=function(e,t){if(i(e),r(t)&&t.constructor===e)return t;var n=o.f(e),a=n.resolve;return a(t),n.promise}},cdeb:function(e,t,n){"use strict";var i=n("92fa"),r=n.n(i),o=n("6042"),a=n.n(o),s=n("0464"),c=n("41b2"),l=n.n(c),u=n("46cf"),h=n.n(u),d=n("2b0e"),f=n("1098"),p=n.n(f),v=n("0c63"),m=n("4d91"),g=n("daa3"),b=n("18a7"),y={width:0,height:0,overflow:"hidden",position:"absolute"},_={name:"Sentinel",props:{setRef:m["a"].func,prevElement:m["a"].any,nextElement:m["a"].any},methods:{onKeyDown:function(e){var t=e.target,n=e.which,i=e.shiftKey,r=this.$props,o=r.nextElement,a=r.prevElement;n===b["a"].TAB&&document.activeElement===t&&(!i&&o&&o.focus(),i&&a&&a.focus())}},render:function(){var e=arguments[0],t=this.$props.setRef;return e("div",r()([{attrs:{tabIndex:0}},{directives:[{name:"ant-ref",value:t}]},{style:y,on:{keydown:this.onKeyDown},attrs:{role:"presentation"}}]),[this.$slots["default"]])}},C={name:"TabPane",props:{active:m["a"].bool,destroyInactiveTabPane:m["a"].bool,forceRender:m["a"].bool,placeholder:m["a"].any,rootPrefixCls:m["a"].string,tab:m["a"].any,closable:m["a"].bool,disabled:m["a"].bool},inject:{sentinelContext:{default:function(){return{}}}},render:function(){var e,t=arguments[0],n=this.$props,i=n.destroyInactiveTabPane,r=n.active,o=n.forceRender,s=n.rootPrefixCls,c=this.$slots["default"],l=Object(g["d"])(this,"placeholder");this._isActived=this._isActived||r;var u=s+"-tabpane",h=(e={},a()(e,u,1),a()(e,u+"-inactive",!r),a()(e,u+"-active",r),e),d=i?r:this._isActived,f=d||o,p=this.sentinelContext,v=p.sentinelStart,m=p.sentinelEnd,b=p.setPanelSentinelStart,y=p.setPanelSentinelEnd,C=void 0,w=void 0;return r&&f&&(C=t(_,{attrs:{setRef:b,prevElement:v}}),w=t(_,{attrs:{setRef:y,nextElement:m}})),t("div",{class:h,attrs:{role:"tabpanel","aria-hidden":r?"false":"true"}},[C,f?c:l,w])}},w=n("b488"),x=n("c449"),S=n.n(x),E={LEFT:37,UP:38,RIGHT:39,DOWN:40},O=n("7b05");function M(e){var t=void 0,n=e.children;return n.forEach(function(e){!e||t||e.disabled||(t=e.key)}),t}function z(e,t){var n=e.children,i=n.map(function(e){return e&&e.key});return i.indexOf(t)>=0}var k={name:"Tabs",mixins:[w["a"]],model:{prop:"activeKey",event:"change"},props:{destroyInactiveTabPane:m["a"].bool,renderTabBar:m["a"].func.isRequired,renderTabContent:m["a"].func.isRequired,navWrapper:m["a"].func.def(function(e){return e}),children:m["a"].any.def([]),prefixCls:m["a"].string.def("ant-tabs"),tabBarPosition:m["a"].string.def("top"),activeKey:m["a"].oneOfType([m["a"].string,m["a"].number]),defaultActiveKey:m["a"].oneOfType([m["a"].string,m["a"].number]),__propsSymbol__:m["a"].any},data:function(){var e=Object(g["f"])(this),t=void 0;return t="activeKey"in e?e.activeKey:"defaultActiveKey"in e?e.defaultActiveKey:M(e),{_activeKey:t}},provide:function(){return{sentinelContext:this}},watch:{__propsSymbol__:function(){var e=Object(g["f"])(this);"activeKey"in e?this.setState({_activeKey:e.activeKey}):z(e,this.$data._activeKey)||this.setState({_activeKey:M(e)})}},beforeDestroy:function(){this.destroy=!0,S.a.cancel(this.sentinelId)},methods:{onTabClick:function(e,t){this.tabBar.componentOptions&&this.tabBar.componentOptions.listeners&&this.tabBar.componentOptions.listeners.tabClick&&this.tabBar.componentOptions.listeners.tabClick(e,t),this.setActiveKey(e)},onNavKeyDown:function(e){var t=e.keyCode;if(t===E.RIGHT||t===E.DOWN){e.preventDefault();var n=this.getNextActiveKey(!0);this.onTabClick(n)}else if(t===E.LEFT||t===E.UP){e.preventDefault();var i=this.getNextActiveKey(!1);this.onTabClick(i)}},onScroll:function(e){var t=e.target,n=e.currentTarget;t===n&&t.scrollLeft>0&&(t.scrollLeft=0)},setSentinelStart:function(e){this.sentinelStart=e},setSentinelEnd:function(e){this.sentinelEnd=e},setPanelSentinelStart:function(e){e!==this.panelSentinelStart&&this.updateSentinelContext(),this.panelSentinelStart=e},setPanelSentinelEnd:function(e){e!==this.panelSentinelEnd&&this.updateSentinelContext(),this.panelSentinelEnd=e},setActiveKey:function(e){if(this.$data._activeKey!==e){var t=Object(g["f"])(this);"activeKey"in t||this.setState({_activeKey:e}),this.__emit("change",e)}},getNextActiveKey:function(e){var t=this.$data._activeKey,n=[];this.$props.children.forEach(function(t){t&&!t.disabled&&""!==t.disabled&&(e?n.push(t):n.unshift(t))});var i=n.length,r=i&&n[0].key;return n.forEach(function(e,o){e.key===t&&(r=o===i-1?n[0].key:n[o+1].key)}),r},updateSentinelContext:function(){var e=this;this.destroy||(S.a.cancel(this.sentinelId),this.sentinelId=S()(function(){e.$forceUpdate()}))}},render:function(){var e,t=arguments[0],n=this.$props,i=n.prefixCls,r=n.navWrapper,o=n.tabBarPosition,c=n.renderTabContent,u=n.renderTabBar,h=n.destroyInactiveTabPane,d=(e={},a()(e,i,1),a()(e,i+"-"+o,1),e);this.tabBar=u();var f=Object(O["a"])(this.tabBar,{props:{prefixCls:i,navWrapper:r,tabBarPosition:o,panels:n.children,activeKey:this.$data._activeKey},on:{keydown:this.onNavKeyDown,tabClick:this.onTabClick},key:"tabBar"}),p=Object(O["a"])(c(),{props:{prefixCls:i,tabBarPosition:o,activeKey:this.$data._activeKey,destroyInactiveTabPane:h},on:{change:this.setActiveKey},children:n.children,key:"tabContent"}),v=t(_,{key:"sentinelStart",attrs:{setRef:this.setSentinelStart,nextElement:this.panelSentinelStart}}),m=t(_,{key:"sentinelEnd",attrs:{setRef:this.setSentinelEnd,prevElement:this.panelSentinelEnd}}),g=[];"bottom"===o?g.push(v,p,m,f):g.push(f,v,p,m);var b=l()({},Object(s["a"])(this.$listeners,["change"]),{scroll:this.onScroll});return t("div",{on:b,class:d},[g])}};d["default"].use(h.a,{name:"ant-ref"});var T=k;function L(e){var t=[];return e.forEach(function(e){e.data&&t.push(e)}),t}function A(e,t){for(var n=L(e),i=0;i=0)s=!1,this.setOffset(0,!1),o=0;else if(a1&&void 0!==arguments[1])||arguments[1],n=Math.min(0,e);if(this.offset!==n){this.offset=n;var i={},r=this.$props.tabBarPosition,o=this.$props.getRef("nav").style,a=V(o);i="left"===r||"right"===r?a?{value:"translate3d(0,"+n+"px,0)"}:{name:"top",value:n+"px"}:a?{value:"translate3d("+n+"px,0,0)"}:{name:"left",value:n+"px"},a?H(o,i.value):o[i.name]=i.value,t&&this.setNextPrev()}},setPrev:function(e){this.prev!==e&&(this.prev=e)},setNext:function(e){this.next!==e&&(this.next=e)},isNextPrevShown:function(e){return e?e.next||e.prev:this.next||this.prev},prevTransitionEnd:function(e){if("opacity"===e.propertyName){var t=this.$props.getRef("container");this.scrollToActiveTab({target:t,currentTarget:t})}},scrollToActiveTab:function(e){var t=this.$props.getRef("activeTab"),n=this.$props.getRef("navWrap");if((!e||e.target===e.currentTarget)&&t){var i=this.isNextPrevShown()&&this.lastNextPrevShown;if(this.lastNextPrevShown=this.isNextPrevShown(),i){var r=this.getScrollWH(t),o=this.getOffsetWH(n),a=this.offset,s=this.getOffsetLT(n),c=this.getOffsetLT(t);s>c?(a+=s-c,this.setOffset(a)):s+o=0),n),E={props:l()({},t.props,{inkBarAnimated:b,extraContent:u,prevIcon:w,nextIcon:x}),style:r,on:t.listeners,class:S},M=void 0;return M=c?c(E,se):e(se,E),Object(O["a"])(M,E)}},le=ce,ue={TabPane:C,name:"ATabs",model:{prop:"activeKey",event:"change"},props:{prefixCls:m["a"].string.def("ant-tabs"),activeKey:m["a"].oneOfType([m["a"].string,m["a"].number]),defaultActiveKey:m["a"].oneOfType([m["a"].string,m["a"].number]),hideAdd:m["a"].bool.def(!1),tabBarStyle:m["a"].object,tabBarExtraContent:m["a"].oneOfType([m["a"].string,m["a"].number,m["a"].func]),destroyInactiveTabPane:m["a"].bool.def(!1),type:m["a"].oneOf(["line","card","editable-card"]),tabPosition:m["a"].oneOf(["top","right","bottom","left"]).def("top"),size:m["a"].oneOf(["default","small","large"]),animated:m["a"].oneOfType([m["a"].bool,m["a"].object]),tabBarGutter:m["a"].number,renderTabBar:m["a"].func},mounted:function(){var e=" no-flex",t=this.$el;t&&!U()&&-1===t.className.indexOf(e)&&(t.className+=e)},methods:{removeTab:function(e,t){t.stopPropagation(),e&&this.$emit("edit",e,"remove")},handleChange:function(e){this.$emit("change",e)},createNewTab:function(e){this.$emit("edit",e,"add")},onTabClick:function(e){this.$emit("tabClick",e)},onPrevClick:function(e){this.$emit("prevClick",e)},onNextClick:function(e){this.$emit("nextClick",e)}},render:function(){var e,t,n=this,i=arguments[0],r=Object(g["f"])(this),o=r.prefixCls,s=r.size,c=r.type,u=void 0===c?"line":c,h=r.tabPosition,d=r.animated,f=void 0===d||d,m=r.hideAdd,b=r.renderTabBar,y=Object(g["b"])(this.$slots["default"]),_=Object(g["d"])(this,"tabBarExtraContent"),C="object"===("undefined"===typeof f?"undefined":p()(f))?f.tabPane:f;"line"!==u&&(C="animated"in r&&C);var w=(e={},a()(e,o+"-vertical","left"===h||"right"===h),a()(e,o+"-"+s,!!s),a()(e,o+"-card",u.indexOf("card")>=0),a()(e,o+"-"+u,!0),a()(e,o+"-no-animation",!C),e),x=[];"editable-card"===u&&(x=[],y.forEach(function(e,t){var r=Object(g["f"])(e),a=r.closable;a="undefined"===typeof a||a;var s=a?i(v["a"],{attrs:{type:"close"},class:o+"-close-x",on:{click:function(t){return n.removeTab(e.key,t)}}}):null;x.push(Object(O["a"])(e,{props:{tab:i("div",{class:a?void 0:o+"-tab-unclosable"},[Object(g["d"])(e,"tab"),s])},key:e.key||t}))}),m||(_=i("span",[i(v["a"],{attrs:{type:"plus"},class:o+"-new-tab",on:{click:this.createNewTab}}),_]))),_=_?i("div",{class:o+"-extra-content"},[_]):null;var S=b||this.$scopedSlots.renderTabBar,E={props:l()({},this.$props,{tabBarExtraContent:_,renderTabBar:S}),on:this.$listeners},M=(t={},a()(t,o+"-"+h+"-content",!0),a()(t,o+"-card-content",u.indexOf("card")>=0),t),z={props:l()({},Object(g["f"])(this),{tabBarPosition:h,renderTabBar:function(){return i(le,E)},renderTabContent:function(){return i(W,{class:M,attrs:{animated:C,animatedWithMargin:!0}})},children:x.length>0?x:y,__propsSymbol__:Symbol()}),on:l()({},this.$listeners,{change:this.handleChange}),class:w};return i(T,z)}};ue.TabPane=l()({},C,{name:"ATabPane",__ANT_TAB_PANE:!0}),ue.TabContent=l()({},W,{name:"ATabContent"}),d["default"].use(h.a,{name:"ant-ref"}),ue.install=function(e){e.component(ue.name,ue),e.component(ue.TabPane.name,ue.TabPane),e.component(ue.TabContent.name,ue.TabContent)};var he=ue,de=null;if("undefined"!==typeof window){var fe=function(e){return{media:e,matches:!1,addListener:function(){},removeListener:function(){}}};window.matchMedia=window.matchMedia||fe,de=n("8e95")}var pe=m["a"].shape({xs:m["a"].number,sm:m["a"].number,md:m["a"].number,lg:m["a"].number,xl:m["a"].number,xxl:m["a"].number}).loose,ve={gutter:m["a"].oneOfType([m["a"].number,pe]),type:m["a"].oneOf(["flex"]),align:m["a"].oneOf(["top","middle","bottom"]),justify:m["a"].oneOf(["start","end","center","space-around","space-between"]),prefixCls:m["a"].string},me=["xxl","xl","lg","md","sm","xs"],ge={xs:"(max-width: 575px)",sm:"(min-width: 576px)",md:"(min-width: 768px)",lg:"(min-width: 992px)",xl:"(min-width: 1200px)",xxl:"(min-width: 1600px)"},be={name:"ARow",mixins:[w["a"]],props:l()({},ve,{gutter:m["a"].oneOfType([m["a"].number,pe]).def(0)}),provide:function(){return{rowContext:this}},data:function(){return{screens:{}}},mounted:function(){var e=this;this.$nextTick(function(){Object.keys(ge).map(function(t){return de.register(ge[t],{match:function(){"object"===p()(e.gutter)&&e.setState(function(e){return{screens:l()({},e.screens,a()({},t,!0))}})},unmatch:function(){"object"===p()(e.gutter)&&e.setState(function(e){return{screens:l()({},e.screens,a()({},t,!1))}})},destroy:function(){}})})})},beforeDestroy:function(){Object.keys(ge).map(function(e){return de.unregister(ge[e])})},methods:{getGutter:function(){var e=this.gutter;if("object"===("undefined"===typeof e?"undefined":p()(e)))for(var t=0;t0?{marginLeft:l/-2+"px",marginRight:l/-2+"px"}:{};return t("div",{class:u,style:h},[c["default"]])},install:function(e){e.component(be.name,be)}},ye=be,_e=m["a"].oneOfType([m["a"].string,m["a"].number]),Ce=m["a"].shape({span:_e,order:_e,offset:_e,push:_e,pull:_e}).loose,we=m["a"].oneOfType([m["a"].number,Ce]),xe={span:_e,order:_e,offset:_e,push:_e,pull:_e,xs:we,sm:we,md:we,lg:we,xl:we,xxl:we,prefixCls:m["a"].string},Se={name:"ACol",props:xe,inject:{rowContext:{default:function(){return null}}},render:function(){var e,t=this,n=arguments[0],i=this.span,r=this.order,o=this.offset,s=this.push,c=this.pull,u=this.prefixCls,h=void 0===u?"ant-col":u,d=this.$slots,f=this.$attrs,v=this.$listeners,m=this.rowContext,g={};["xs","sm","md","lg","xl","xxl"].forEach(function(e){var n,i={};"number"===typeof t[e]?i.span=t[e]:"object"===p()(t[e])&&(i=t[e]||{}),g=l()({},g,(n={},a()(n,h+"-"+e+"-"+i.span,void 0!==i.span),a()(n,h+"-"+e+"-order-"+i.order,i.order||0===i.order),a()(n,h+"-"+e+"-offset-"+i.offset,i.offset||0===i.offset),a()(n,h+"-"+e+"-push-"+i.push,i.push||0===i.push),a()(n,h+"-"+e+"-pull-"+i.pull,i.pull||0===i.pull),n))});var b=l()((e={},a()(e,h+"-"+i,void 0!==i),a()(e,h+"-order-"+r,r),a()(e,h+"-offset-"+o,o),a()(e,h+"-push-"+s,s),a()(e,h+"-pull-"+c,c),e),g),y={on:v,attrs:f,class:b,style:{}};if(m){var _=m.getGutter();_>0&&(y.style={paddingLeft:_/2+"px",paddingRight:_/2+"px"})}return n("div",y,[d["default"]])},install:function(e){e.component(Se.name,Se)}},Ee=Se,Oe=n("f194"),Me=n("9b57"),ze=n.n(Me);function ke(e){var t=void 0,n=function(n){return function(){t=null,e.apply(void 0,ze()(n))}},i=function(){for(var e=arguments.length,i=Array(e),r=0;r=n&&!this.widerPadding&&this.setState({widerPadding:!0},function(){e.updateWiderPaddingCalled=!0}),t.offsetWidth0&&void 0!==arguments[0]?arguments[0]:[],t=void 0;return e.forEach(function(e){e&&Object(g["h"])(e).__ANT_CARD_GRID&&(t=!0)}),t},getAction:function(e){var t=this.$createElement;if(!e||!e.length)return null;var n=e.map(function(n,i){return t("li",{style:{width:100/e.length+"%"},key:"action-"+i},[t("span",[n])])});return n}},render:function(){var e,t=arguments[0],n=this.$props,i=n.prefixCls,o=void 0===i?"ant-card":i,c=n.headStyle,l=void 0===c?{}:c,u=n.bodyStyle,h=void 0===u?{}:u,d=n.loading,f=n.bordered,p=void 0===f||f,v=n.type,m=n.tabList,b=n.hoverable,y=n.activeTabKey,_=n.defaultActiveTabKey,C=this.$slots,w=this.$scopedSlots,x=this.$listeners,S=(e={},a()(e,""+o,!0),a()(e,o+"-loading",d),a()(e,o+"-bordered",p),a()(e,o+"-hoverable",!!b),a()(e,o+"-wider-padding",this.widerPadding),a()(e,o+"-padding-transition",this.updateWiderPaddingCalled),a()(e,o+"-contain-grid",this.isContainGrid(C["default"])),a()(e,o+"-contain-tabs",m&&m.length),a()(e,o+"-type-"+v,!!v),e),E=0===h.padding||"0px"===h.padding?{padding:24}:void 0,O=t("div",{class:o+"-loading-content",style:E},[t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:22}},[t("div",{class:o+"-loading-block"})])]),t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:8}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:15}},[t("div",{class:o+"-loading-block"})])]),t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:6}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:18}},[t("div",{class:o+"-loading-block"})])]),t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:13}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:9}},[t("div",{class:o+"-loading-block"})])]),t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:4}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:3}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:16}},[t("div",{class:o+"-loading-block"})])]),t(ye,{attrs:{gutter:8}},[t(Ee,{attrs:{span:8}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:6}},[t("div",{class:o+"-loading-block"})]),t(Ee,{attrs:{span:8}},[t("div",{class:o+"-loading-block"})])])]),M=void 0!==y,z={props:a()({size:"large"},M?"activeKey":"defaultActiveKey",M?y:_),on:{change:this.onHandleTabChange},class:o+"-head-tabs"},k=void 0,T=m&&m.length?t(he,z,[m.map(function(e){var n=e.tab,i=e.scopedSlots,r=void 0===i?{}:i,o=r.tab,a=void 0!==n?n:w[o]?w[o](e):null;return t(Te,{attrs:{tab:a,disabled:e.disabled},key:e.key})})]):null,L=Object(g["d"])(this,"title"),A=Object(g["d"])(this,"extra");(L||A||T)&&(k=t("div",{class:o+"-head",style:l},[t("div",{class:o+"-head-wrapper"},[L&&t("div",{class:o+"-head-title"},[L]),A&&t("div",{class:o+"-extra"},[A])]),T]));var H=C["default"],V=Object(g["d"])(this,"cover"),N=V?t("div",{class:o+"-cover"},[V]):null,I=t("div",{class:o+"-body",style:h},[d?O:H]),D=Object(g["b"])(this.$slots.actions),P=D&&D.length?t("ul",{class:o+"-actions"},[this.getAction(D)]):null;return t("div",r()([{class:S,ref:"cardContainerRef"},{on:Object(s["a"])(x,["tabChange","tab-change"])}]),[k,N,H?I:null,P])}},Ae={name:"ACardMeta",props:{prefixCls:m["a"].string.def("ant-card"),title:m["a"].any,description:m["a"].any},render:function(){var e=arguments[0],t=this.$props.prefixCls,n=void 0===t?"ant-card":t,i=a()({},n+"-meta",!0),o=Object(g["d"])(this,"avatar"),s=Object(g["d"])(this,"title"),c=Object(g["d"])(this,"description"),l=o?e("div",{class:n+"-meta-avatar"},[o]):null,u=s?e("div",{class:n+"-meta-title"},[s]):null,h=c?e("div",{class:n+"-meta-description"},[c]):null,d=u||h?e("div",{class:n+"-meta-detail"},[u,h]):null;return e("div",r()([{on:this.$listeners},{class:i}]),[l,d])}},He={name:"ACardGrid",__ANT_CARD_GRID:!0,props:{prefixCls:m["a"].string.def("ant-card")},render:function(){var e=arguments[0],t=this.$props.prefixCls,n=void 0===t?"ant-card":t,i=a()({},n+"-grid",!0);return e("div",r()([{on:this.$listeners},{class:i}]),[this.$slots["default"]])}};Le.Meta=Ae,Le.Grid=He,Le.install=function(e){e.component(Le.name,Le),e.component(Ae.name,Ae),e.component(He.name,He)};t["a"]=Le},ce10:function(e,t,n){var i=n("69a8"),r=n("6821"),o=n("c366")(!1),a=n("613b")("IE_PROTO");e.exports=function(e,t){var n,s=r(e),c=0,l=[];for(n in s)n!=a&&i(s,n)&&l.push(n);while(t.length>c)i(s,n=t[c++])&&(~o(l,n)||l.push(n));return l}},ce7e:function(e,t,n){var i=n("63b6"),r=n("584a"),o=n("294c");e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),i(i.S+i.F*o(function(){n(1)}),"Object",a)}},ceaf:function(e,t,n){var i=n("37a7"),r=n("cb7c"),o=i.key,a=i.map,s=i.store;i.exp({deleteMetadata:function(e,t){var n=arguments.length<3?void 0:o(arguments[2]),i=a(r(t),n,!1);if(void 0===i||!i["delete"](e))return!1;if(i.size)return!0;var c=s.get(t);return c["delete"](n),!!c.size||s["delete"](t)}})},cebc:function(e,t,n){"use strict";n.d(t,"a",function(){return u});var i=n("268f"),r=n.n(i),o=n("e265"),a=n.n(o),s=n("a4bb"),c=n.n(s),l=n("bd86");function u(e){for(var t=1;t0?!0===a?i.scrollTop(t,y.top+_.top):!1===a?i.scrollTop(t,y.top+C.top):_.top<0?i.scrollTop(t,y.top+_.top):i.scrollTop(t,y.top+C.top):o||(a=void 0===a||!!a,a?i.scrollTop(t,y.top+_.top):i.scrollTop(t,y.top+C.top)),r&&(_.left<0||C.left>0?!0===s?i.scrollLeft(t,y.left+_.left):!1===s?i.scrollLeft(t,y.left+C.left):_.left<0?i.scrollLeft(t,y.left+_.left):i.scrollLeft(t,y.left+C.left):o||(s=void 0===s||!!s,s?i.scrollLeft(t,y.left+_.left):i.scrollLeft(t,y.left+C.left)))}e.exports=r},cee4:function(e,t,n){"use strict";var i=n("c532"),r=n("1d2b"),o=n("0a06"),a=n("4a7b"),s=n("2444");function c(e){var t=new o(e),n=r(o.prototype.request,t);return i.extend(n,o.prototype,t),i.extend(n,t),n}var l=c(s);l.Axios=o,l.create=function(e){return c(a(l.defaults,e))},l.Cancel=n("7a77"),l.CancelToken=n("8df4"),l.isCancel=n("2e67"),l.all=function(e){return Promise.all(e)},l.spread=n("0df6"),e.exports=l,e.exports.default=l},cf6a:function(e,t,n){var i=n("d3f4"),r=n("67ab").onFreeze;n("5eda")("seal",function(e){return function(t){return e&&i(t)?e(r(t)):t}})},cfc4:function(e,t,n){var i=n("f3e7"),r=n("3f54"),o=i(r,"Promise");e.exports=o},d010:function(e,t,n){"use strict";function i(e,t,n){this.$children.forEach(function(r){var o=r.$options.componentName;o===e?r.$emit.apply(r,[t].concat(n)):i.apply(r,[e,t].concat([n]))})}t.__esModule=!0,t.default={methods:{dispatch:function(e,t,n){var i=this.$parent||this.$root,r=i.$options.componentName;while(i&&(!r||r!==e))i=i.$parent,i&&(r=i.$options.componentName);i&&i.$emit.apply(i,[t].concat(n))},broadcast:function(e,t,n){i.call(this,e,t,n)}}}},d02c:function(e,t,n){var i=n("5e2e"),r=n("79bc"),o=n("7b83"),a=200;function s(e,t){var n=this.__data__;if(n instanceof i){var s=n.__data__;if(!r||s.length0?this.level++:this.level=0},e.prototype.end=function(){this.level--},e.prototype.isActive=function(){return this.level>0},e.prototype.isInlineBlock=function(e,t){for(var n=0,i=0,o=t;os)return!1;if(a.type===r["default"].OPEN_PAREN)i++;else if(a.type===r["default"].CLOSE_PAREN&&(i--,0===i))return!0;if(this.isForbiddenToken(a))return!1}return!1},e.prototype.isForbiddenToken=function(e){var t=e.type,n=e.value;return t===r["default"].RESERVED_TOPLEVEL||t===r["default"].RESERVED_NEWLINE||t===r["default"].COMMENT||t===r["default"].BLOCK_COMMENT||";"===n},e}();t["default"]=c,e.exports=t["default"]},d0b0:function(e,t,n){"use strict";n("386b")("italics",function(e){return function(){return e(this,"i","","")}})},d0ca:function(e,t,n){var i=n("5ca1"),r=n("abd7")(/[\\^$*+?.()|[\]{}]/g,"\\$&");i(i.S,"RegExp",{escape:function(e){return r(e)}})},d10f:function(e,t){function n(e,t){return e===t||e!==e&&t!==t}e.exports=n},d185:function(e,t,n){var i=n("11e9"),r=n("38fd"),o=n("69a8"),a=n("5ca1"),s=n("d3f4"),c=n("cb7c");function l(e,t){var n,a,u=arguments.length<3?e:arguments[2];return c(e)===u?e[t]:(n=i.f(e,t))?o(n,"value")?n.value:void 0!==n.get?n.get.call(u):void 0:s(a=r(e))?l(a,t,u):void 0}a(a.S,"Reflect",{get:l})},d25f:function(e,t,n){"use strict";var i=n("5ca1"),r=n("0a49")(2);i(i.P+i.F*!n("2f21")([].filter,!0),"Array",{filter:function(e){return r(this,e,arguments[1])}})},d263:function(e,t,n){"use strict";n("386b")("fixed",function(e){return function(){return e(this,"tt","","")}})},d2c8:function(e,t,n){var i=n("aae3"),r=n("be13");e.exports=function(e,t,n){if(i(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(r(e))}},d2c9:function(e,t,n){(function(e){var i=n("3f54"),r=n("2071"),o=t&&!t.nodeType&&t,a=o&&"object"==typeof e&&e&&!e.nodeType&&e,s=a&&a.exports===o,c=s?i.Buffer:void 0,l=c?c.isBuffer:void 0,u=l||r;e.exports=u}).call(this,n("62e4")(e))},d2d5:function(e,t,n){n("1654"),n("549b"),e.exports=n("584a").Array.from},d327:function(e,t){function n(){return[]}e.exports=n},d370:function(e,t,n){var i=n("253c"),r=n("1310"),o=Object.prototype,a=o.hasOwnProperty,s=o.propertyIsEnumerable,c=i(function(){return arguments}())?i:function(e){return r(e)&&a.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},d397:function(e,t,n){"use strict";function i(e){return void 0!==e&&null!==e}function r(e){var t=/([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi;return t.test(e)}t.__esModule=!0,t.isDef=i,t.isKorean=r},d3f4:function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},d41d:function(e,t,n){"use strict";var i=["moz","ms","webkit"];function r(){var e=0;return function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),r=window.setTimeout(function(){t(n+i)},i);return e=n+i,r}}function o(){if("undefined"===typeof window)return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var e=i.filter(function(e){return e+"RequestAnimationFrame"in window})[0];return e?window[e+"RequestAnimationFrame"]:r()}function a(e){if("undefined"===typeof window)return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(e);var t=i.filter(function(e){return e+"CancelAnimationFrame"in window||e+"CancelRequestAnimationFrame"in window})[0];return t?(window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]).call(this,e):clearTimeout(e)}n.d(t,"a",function(){return c}),n.d(t,"b",function(){return l});var s=o(),c=function(e){return a(e.id)},l=function(e,t){var n=Date.now();function i(){Date.now()-n>=t?e.call():r.id=s(i)}var r={id:s(i)};return r}},d47a:function(e,t,n){(function(e){var i=n("c254"),r=t&&!t.nodeType&&t,o=r&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===r,s=a&&i.process,c=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(t){}}();e.exports=c}).call(this,n("62e4")(e))},d4af:function(e,t,n){"use strict";var i=n("8eb7"),r=n("7b3e"),o=10,a=40,s=800;function c(e){var t=0,n=0,i=0,r=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),i=t*o,r=n*o,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(i=e.deltaX),(i||r)&&e.deltaMode&&(1==e.deltaMode?(i*=a,r*=a):(i*=s,r*=s)),i&&!t&&(t=i<1?-1:1),r&&!n&&(n=r<1?-1:1),{spinX:t,spinY:n,pixelX:i,pixelY:r}}c.getEventType=function(){return i.firefox()?"DOMMouseScroll":r("wheel")?"wheel":"mousewheel"},e.exports=c},d4c0:function(e,t,n){var i=n("0d58"),r=n("2621"),o=n("52a7");e.exports=function(e){var t=i(e),n=r.f;if(n){var a,s=n(e),c=o.f,l=0;while(s.length>l)c.call(e,a=s[l++])&&t.push(a)}return t}},d53b:function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},d6c6:function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},d752:function(e,t,n){var i=n("7726").parseFloat,r=n("aa77").trim;e.exports=1/i(n("fdef")+"-0")!==-1/0?function(e){var t=r(String(e),3),n=i(t);return 0===n&&"-"==t.charAt(0)?-0:n}:i},d7d1:function(e,t,n){"use strict";var i;(function(r){var o={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,s="\\d\\d?",c="\\d{3}",l="\\d{4}",u="[^\\s]+",h=/\[([^]*?)\]/gm,d=function(){};function f(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")}function p(e,t){for(var n=[],i=0,r=e.length;i3?0:(e-e%10!==10)*e%10]}};var C={D:function(e){return e.getDay()},DD:function(e){return m(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return m(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return m(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return m(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return m(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return m(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return m(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return m(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return m(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return m(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return m(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+m(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},w={d:[s,function(e,t){e.day=t}],Do:[s+u,function(e,t){e.day=parseInt(t,10)}],M:[s,function(e,t){e.month=t-1}],yy:[s,function(e,t){var n=new Date,i=+(""+n.getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:[s,function(e,t){e.hour=t}],m:[s,function(e,t){e.minute=t}],s:[s,function(e,t){e.second=t}],yyyy:[l,function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:[c,function(e,t){e.millisecond=t}],D:[s,d],ddd:[u,d],MMM:[u,v("monthNamesShort")],MMMM:[u,v("monthNames")],a:[u,function(e,t,n){var i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var n,i=(t+"").match(/([+-]|\d\d)/gi);i&&(n=60*i[1]+parseInt(i[2],10),e.timezoneOffset="+"===i[0]?n:-n)}]};w.dd=w.d,w.dddd=w.ddd,w.DD=w.D,w.mm=w.m,w.hh=w.H=w.HH=w.h,w.MM=w.M,w.ss=w.s,w.A=w.a,o.masks={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",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},o.format=function(e,t,n){var i=n||o.i18n;if("number"===typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=o.masks[t]||t||o.masks["default"];var r=[];return t=t.replace(h,function(e,t){return r.push(t),"@@@"}),t=t.replace(a,function(t){return t in C?C[t](e,i):t.slice(1,t.length-1)}),t.replace(/@@@/g,function(){return r.shift()})},o.parse=function(e,t,n){var i=n||o.i18n;if("string"!==typeof t)throw new Error("Invalid format in fecha.parse");if(t=o.masks[t]||t,e.length>1e3)return null;var r={},s=[],c=[];t=t.replace(h,function(e,t){return c.push(t),"@@@"});var l=f(t).replace(a,function(e){if(w[e]){var t=w[e];return s.push(t[1]),"("+t[0]+")"}return e});l=l.replace(/@@@/g,function(){return c.shift()});var u=e.match(new RegExp(l,"i"));if(!u)return null;for(var d=1;d1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()-t)});t.nextDate=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Date(e.getFullYear(),e.getMonth(),e.getDate()+t)},t.getStartDateOfMonth=function(e,t){var n=new Date(e,t,1),i=n.getDay();return v(n,0===i?7:i)},t.getWeekNumber=function(e){if(!d(e))return null;var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},t.getRangeHours=function(e){var t=[],n=[];if((e||[]).forEach(function(e){var t=e.map(function(e){return e.getHours()});n=n.concat(l(t[0],t[1]))}),n.length)for(var i=0;i<24;i++)t[i]=-1===n.indexOf(i);else for(var r=0;r<24;r++)t[r]=!1;return t},t.getPrevMonthLastDays=function(e,t){if(t<=0)return[];var n=new Date(e.getTime());n.setDate(0);var i=n.getDate();return g(t).map(function(e,n){return i-(t-n-1)})},t.getMonthDays=function(e){var t=new Date(e.getFullYear(),e.getMonth()+1,0),n=t.getDate();return g(n).map(function(e,t){return t+1})};function m(e,t,n,i){for(var r=t;r0?e.forEach(function(e){var i=e[0],r=e[1],o=i.getHours(),a=i.getMinutes(),s=r.getHours(),c=r.getMinutes();o===t&&s!==t?m(n,a,60,!0):o===t&&s===t?m(n,a,c+1,!0):o!==t&&s===t?m(n,0,c+1,!0):ot&&m(n,0,60,!0)}):m(n,0,60,!0),n};var g=t.range=function(e){return Array.apply(null,{length:e}).map(function(e,t){return t})},b=t.modifyDate=function(e,t,n,i){return new Date(t,n,i,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())},y=t.modifyTime=function(e,t,n,i){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),t,n,i,e.getMilliseconds())},_=(t.modifyWithTimeString=function(e,t){return null!=e&&t?(t=f(t,"HH:mm:ss"),y(e,t.getHours(),t.getMinutes(),t.getSeconds())):e},t.clearTime=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())},t.clearMilliseconds=function(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),0)},t.limitTimeRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"HH:mm:ss";if(0===t.length)return e;var i=function(e){return r.default.parse(r.default.format(e,n),n)},o=i(e),a=t.map(function(e){return e.map(i)});if(a.some(function(e){return o>=e[0]&&o<=e[1]}))return e;var s=a[0][0],c=a[0][0];a.forEach(function(e){s=new Date(Math.min(e[0],s)),c=new Date(Math.max(e[1],s))});var l=o1&&void 0!==arguments[1]?arguments[1]:1,n=e.getFullYear(),i=e.getMonth();return C(e,n-t,i)},t.nextYear=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=e.getFullYear(),i=e.getMonth();return C(e,n+t,i)},t.extractDateFormat=function(e){return e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim()},t.extractTimeFormat=function(e){return e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g,"").trim()},t.validateRangeInOneMonth=function(e,t){return e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}},d9ab:function(e,t,n){var i=n("5ca1"),r=Math.atanh;i(i.S+i.F*!(r&&1/r(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},d9f6:function(e,t,n){var i=n("e4ae"),r=n("794b"),o=n("1bc3"),a=Object.defineProperty;t.f=n("8e60")?Object.defineProperty:function(e,t,n){if(i(e),t=o(t,!0),i(n),r)try{return a(e,t,n)}catch(s){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},da03:function(e,t,n){var i=n("2b3e"),r=i["__core-js_shared__"];e.exports=r},daa3:function(e,t,n){"use strict";n.d(t,"e",function(){return x}),n.d(t,"c",function(){return S}),n.d(t,"i",function(){return E}),n.d(t,"b",function(){return M}),n.d(t,"m",function(){return k}),n.d(t,"j",function(){return g}),n.d(t,"f",function(){return _}),n.d(t,"d",function(){return C}),n.d(t,"h",function(){return y}),n.d(t,"g",function(){return w}),n.d(t,"n",function(){return m}),n.d(t,"k",function(){return z}),n.d(t,"l",function(){return T});var i=n("1098"),r=n.n(i),o=n("41b2"),a=n.n(o),s=n("b24f"),c=n.n(s),l=n("60ed"),u=n.n(l),h=n("4d26"),d=n.n(h);function f(e){var t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:""}var p=/-(\w)/g,v=function(e){return e.replace(p,function(e,t){return t?t.toUpperCase():""})},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments[1],n={},i=/;(?![^(]*\))/g,r=/:(.+)/;return e.split(i).forEach(function(e){if(e){var i=e.split(r);if(i.length>1){var o=t?v(i[0].trim()):i[0].trim();n[o]=i[1].trim()}}}),n},g=function(e,t){var n=e.$options||{},i=n.propsData||{};return t in i},b=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={};return Object.keys(e).forEach(function(i){(i in t||void 0!==e[i])&&(n[i]=e[i])}),n},y=function(e){if(e.fnOptions)return e.fnOptions;var t=e.componentOptions;return e.$vnode&&(t=e.$vnode.componentOptions),t&&t.Ctor.options||{}},_=function(e){if(e.componentOptions){var t=e.componentOptions,n=t.propsData,i=void 0===n?{}:n,r=t.Ctor,o=void 0===r?{}:r,s=(o.options||{}).props||{},l={},u=!0,h=!1,d=void 0;try{for(var p,v=Object.entries(s)[Symbol.iterator]();!(u=(p=v.next()).done);u=!0){var m=p.value,g=c()(m,2),y=g[0],_=g[1],C=_["default"];void 0!==C&&(l[y]="function"===typeof C&&"Function"!==f(_.type)?C.call(e):C)}}catch(O){h=!0,d=O}finally{try{!u&&v["return"]&&v["return"]()}finally{if(h)throw d}}return a()({},l,i)}var w=e.$options,x=void 0===w?{}:w,S=e.$props,E=void 0===S?{}:S;return b(E,x.propsData)},C=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(e.$createElement){var r=e.$createElement,o=e[t];return void 0!==o?"function"===typeof o&&i?o(r,n):o:e.$slots[t]||e.$scopedSlots[t]&&i&&e.$scopedSlots[t](n)||e.$scopedSlots[t]||void 0}var a=e.context.$createElement,s=w(e)[t];if(void 0!==s)return"function"===typeof s&&i?s(a,n):s;var c=[],l=e.componentOptions||{};return(l.children||[]).forEach(function(e){e.data&&e.data.slot===t&&("template"===e.tag?c.push(e.children):c.push(e))}),c.length?c:void 0},w=function(e){var t=e.componentOptions;return e.$vnode&&(t=e.$vnode.componentOptions),t&&t.propsData||{}};function x(e){var t={};return e.componentOptions&&e.componentOptions.listeners?t=e.componentOptions.listeners:e.data&&e.data.on&&(t=e.data.on),a()({},t)}function S(e){var t={};e.data?t=e.data:e.$vnode&&e.$vnode.data&&(t=e.$vnode.data);var n=t["class"]||{},i=t.staticClass,r={};return i&&i.split(" ").forEach(function(e){r[e.trim()]=!0}),"string"===typeof n?n.split(" ").forEach(function(e){r[e.trim()]=!0}):Array.isArray(n)?d()(n).split(" ").forEach(function(e){r[e.trim()]=!0}):r=a()({},r,n),r}function E(e,t){var n={};e.data?n=e.data:e.$vnode&&e.$vnode.data&&(n=e.$vnode.data);var i=n.style||n.staticStyle;if("string"===typeof i)i=m(i,t);else if(t&&i){var r={};return Object.keys(i).forEach(function(e){return r[v(e)]=i[e]}),r}return i}function O(e){return!(e.tag||e.text&&""!==e.text.trim())}function M(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.filter(function(e){return!O(e)})}var z=function(e,t){return Object.keys(t).forEach(function(n){if(!e[n])throw new Error("not have "+n+" prop");e[n].def&&(e[n]=e[n].def(t[n]))}),e};function k(){var e=[].slice.call(arguments,0),t={};return e.forEach(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=!0,i=!1,r=void 0;try{for(var o,s=Object.entries(e)[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=o.value,h=c()(l,2),d=h[0],f=h[1];t[d]=t[d]||{},u()(f)?a()(t[d],f):t[d]=f}}catch(p){i=!0,r=p}finally{try{!n&&s["return"]&&s["return"]()}finally{if(i)throw r}}}),t}function T(e){return e&&"object"===("undefined"===typeof e?"undefined":r()(e))&&"componentOptions"in e&&"context"in e&&void 0!==e.tag}t["a"]=g},db05:function(e,t,n){"use strict";t.__esModule=!0;var i=n("9493"),r=h(i),o=n("2e6f"),a=h(o),s=n("2673"),c=h(s),l=n("1847"),u=h(l);function h(e){return e&&e.__esModule?e:{default:e}}t["default"]={format:function(e,t){switch(t=t||{},t.language){case"db2":return new r["default"](t).format(e);case"n1ql":return new a["default"](t).format(e);case"pl/sql":return new c["default"](t).format(e);case"sql":case void 0:return new u["default"](t).format(e);default:throw Error("Unsupported SQL dialect: "+t.language)}}},e.exports=t["default"]},db36:function(e,t,n){var i=n("0fb2");function r(e){var t=i(e),n=t%1;return t===t?n?t-n:t:0}e.exports=r},db4d:function(e,t,n){"use strict";(function(e){if(n("66f9"),n("f3a2"),n("fd5a"),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;var t="defineProperty";function i(e,n,i){e[n]||Object[t](e,n,{writable:!0,configurable:!0,value:i})}i(String.prototype,"padLeft","".padStart),i(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(e){[][e]&&i(Array,e,Function.call.bind([][e]))})}).call(this,n("c8ba"))},db97:function(e,t,n){var i=n("5ca1");i(i.S,"Object",{is:n("83a1")})},db9a:function(e,t,n){var i=n("5ca1");i(i.P+i.R,"Set",{toJSON:n("44b8")("Set")})},dbad:function(e,t,n){"use strict";n("1b4c"),n("9599")},dbdb:function(e,t,n){var i=n("584a"),r=n("e53d"),o="__core-js_shared__",a=r[o]||(r[o]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:i.version,mode:n("b8e3")?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},dc57:function(e,t){var n=Function.prototype,i=n.toString;function r(e){if(null!=e){try{return i.call(e)}catch(t){}try{return e+""}catch(t){}}return""}e.exports=r},dcbc:function(e,t,n){var i=n("2aba");e.exports=function(e,t,n){for(var r in t)i(e,r,t[r],n);return e}},dcdc:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=102)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},102:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-checkbox",class:[e.border&&e.checkboxSize?"el-checkbox--"+e.checkboxSize:"",{"is-disabled":e.isDisabled},{"is-bordered":e.border},{"is-checked":e.isChecked}],attrs:{role:"checkbox","aria-checked":e.indeterminate?"mixed":e.isChecked,"aria-disabled":e.isDisabled,id:e.id}},[n("span",{staticClass:"el-checkbox__input",class:{"is-disabled":e.isDisabled,"is-checked":e.isChecked,"is-indeterminate":e.indeterminate,"is-focus":e.focus},attrs:{"aria-checked":"mixed"}},[n("span",{staticClass:"el-checkbox__inner"}),e.trueLabel||e.falseLabel?n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",name:e.name,disabled:e.isDisabled,"true-value":e.trueLabel,"false-value":e.falseLabel},domProps:{checked:Array.isArray(e.model)?e._i(e.model,null)>-1:e._q(e.model,e.trueLabel)},on:{change:[function(t){var n=e.model,i=t.target,r=i.checked?e.trueLabel:e.falseLabel;if(Array.isArray(n)){var o=null,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}}):n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],staticClass:"el-checkbox__original",attrs:{type:"checkbox","aria-hidden":"true",disabled:e.isDisabled,name:e.name},domProps:{value:e.label,checked:Array.isArray(e.model)?e._i(e.model,e.label)>-1:e.model},on:{change:[function(t){var n=e.model,i=t.target,r=!!i.checked;if(Array.isArray(n)){var o=e.label,a=e._i(n,o);i.checked?a<0&&(e.model=n.concat([o])):a>-1&&(e.model=n.slice(0,a).concat(n.slice(a+1)))}else e.model=r},e.handleChange],focus:function(t){e.focus=!0},blur:function(t){e.focus=!1}}})]),e.$slots.default||e.label?n("span",{staticClass:"el-checkbox__label"},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2):e._e()])},r=[];i._withStripped=!0;var o=n(4),a=n.n(o),s={name:"ElCheckbox",mixins:[a.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElCheckbox",data:function(){return{selfModel:!1,focus:!1,isLimitExceeded:!1}},computed:{model:{get:function(){return this.isGroup?this.store:void 0!==this.value?this.value:this.selfModel},set:function(e){this.isGroup?(this.isLimitExceeded=!1,void 0!==this._checkboxGroup.min&&e.lengththis._checkboxGroup.max&&(this.isLimitExceeded=!0),!1===this.isLimitExceeded&&this.dispatch("ElCheckboxGroup","input",[e])):(this.$emit("input",e),this.selfModel=e)}},isChecked:function(){return"[object Boolean]"==={}.toString.call(this.model)?this.model:Array.isArray(this.model)?this.model.indexOf(this.label)>-1:null!==this.model&&void 0!==this.model?this.model===this.trueLabel:void 0},isGroup:function(){var e=this.$parent;while(e){if("ElCheckboxGroup"===e.$options.componentName)return this._checkboxGroup=e,!0;e=e.$parent}return!1},store:function(){return this._checkboxGroup?this._checkboxGroup.value:this.value},isLimitDisabled:function(){var e=this._checkboxGroup,t=e.max,n=e.min;return!(!t&&!n)&&this.model.length>=t&&!this.isChecked||this.model.length<=n&&this.isChecked},isDisabled:function(){return this.isGroup?this._checkboxGroup.disabled||this.disabled||(this.elForm||{}).disabled||this.isLimitDisabled:this.disabled||(this.elForm||{}).disabled},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},checkboxSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._checkboxGroup.checkboxGroupSize||e}},props:{value:{},label:{},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:String,trueLabel:[String,Number],falseLabel:[String,Number],id:String,controls:String,border:Boolean,size:String},methods:{addToStore:function(){Array.isArray(this.model)&&-1===this.model.indexOf(this.label)?this.model.push(this.label):this.model=this.trueLabel||!0},handleChange:function(e){var t=this;if(!this.isLimitExceeded){var n=void 0;n=e.target.checked?void 0===this.trueLabel||this.trueLabel:void 0!==this.falseLabel&&this.falseLabel,this.$emit("change",n,e),this.$nextTick(function(){t.isGroup&&t.dispatch("ElCheckboxGroup","change",[t._checkboxGroup.value])})}}},created:function(){this.checked&&this.addToStore()},mounted:function(){this.indeterminate&&this.$el.setAttribute("aria-controls",this.controls)},watch:{value:function(e){this.dispatch("ElFormItem","el.form.change",e)}}},c=s,l=n(0),u=Object(l["a"])(c,i,r,!1,null,null,null);u.options.__file="packages/checkbox/src/checkbox.vue";var h=u.exports;h.install=function(e){e.component(h.name,h)};t["default"]=h},4:function(e,t){e.exports=n("d010")}})},dd8a:function(e,t,n){n("28e4")("Set")},df1b:function(e,t,n){var i=n("5ca1"),r=n("d8e8"),o=n("cb7c"),a=(n("7726").Reflect||{}).apply,s=Function.apply;i(i.S+i.F*!n("79e5")(function(){a(function(){})}),"Reflect",{apply:function(e,t,n){var i=r(e),c=o(n);return a?a(i,t,c):s.call(i,t,c)}})},e0b8:function(e,t,n){"use strict";var i=n("7726"),r=n("5ca1"),o=n("2aba"),a=n("dcbc"),s=n("67ab"),c=n("4a59"),l=n("f605"),u=n("d3f4"),h=n("79e5"),d=n("5cc5"),f=n("7f20"),p=n("5dbc");e.exports=function(e,t,n,v,m,g){var b=i[e],y=b,_=m?"set":"add",C=y&&y.prototype,w={},x=function(e){var t=C[e];o(C,e,"delete"==e?function(e){return!(g&&!u(e))&&t.call(this,0===e?0:e)}:"has"==e?function(e){return!(g&&!u(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return g&&!u(e)?void 0:t.call(this,0===e?0:e)}:"add"==e?function(e){return t.call(this,0===e?0:e),this}:function(e,n){return t.call(this,0===e?0:e,n),this})};if("function"==typeof y&&(g||C.forEach&&!h(function(){(new y).entries().next()}))){var S=new y,E=S[_](g?{}:-0,1)!=S,O=h(function(){S.has(1)}),M=d(function(e){new y(e)}),z=!g&&h(function(){var e=new y,t=5;while(t--)e[_](t,t);return!e.has(-0)});M||(y=t(function(t,n){l(t,y,e);var i=p(new b,t,y);return void 0!=n&&c(n,m,i[_],i),i}),y.prototype=C,C.constructor=y),(O||z)&&(x("delete"),x("has"),m&&x("get")),(z||E)&&x(_),g&&C.clear&&delete C.clear}else y=v.getConstructor(t,e,m,_),a(y.prototype,n),s.NEED=!0;return f(y,e),w[e]=y,r(r.G+r.W+r.F*(y!=b),w),g||v.setStrong(y,e,m),y}},e11e:function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},e24b:function(e,t,n){var i=n("49f4"),r=n("1efc"),o=n("bbc0"),a=n("7a48"),s=n("2524");function c(e){var t=-1,n=null==e?0:e.length;this.clear();while(++t=0&&e===parseInt(e,10)}}},data:function(){return{currentValue:0,userInput:null}},watch:{value:{immediate:!0,handler:function(e){var t=void 0===e?e:Number(e);if(void 0!==t){if(isNaN(t))return;if(this.stepStrictly){var n=this.getPrecision(this.step),i=Math.pow(10,n);t=Math.round(t/this.step)*i*this.step/i}void 0!==this.precision&&(t=this.toPrecision(t,this.precision))}t>=this.max&&(t=this.max),t<=this.min&&(t=this.min),this.currentValue=t,this.userInput=null,this.$emit("input",t)}}},computed:{minDisabled:function(){return this._decrease(this.value,this.step)this.max},numPrecision:function(){var e=this.value,t=this.step,n=this.getPrecision,i=this.precision,r=n(t);return void 0!==i?(r>i&&console.warn("[Element Warn][InputNumber]precision should not be less than the decimal places of step"),i):Math.max(n(e),r)},controlsAtRight:function(){return this.controls&&"right"===this.controlsPosition},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},inputNumberSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputNumberDisabled:function(){return this.disabled||(this.elForm||{}).disabled},displayValue:function(){if(null!==this.userInput)return this.userInput;var e=this.currentValue;if("number"===typeof e){if(this.stepStrictly){var t=this.getPrecision(this.step),n=Math.pow(10,t);e=Math.round(e/this.step)*n*this.step/n}void 0!==this.precision&&(e=e.toFixed(this.precision))}return e}},methods:{toPrecision:function(e,t){return void 0===t&&(t=this.numPrecision),parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t))},getPrecision:function(e){if(void 0===e)return 0;var t=e.toString(),n=t.indexOf("."),i=0;return-1!==n&&(i=t.length-n-1),i},_increase:function(e,t){if("number"!==typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e+n*t)/n)},_decrease:function(e,t){if("number"!==typeof e&&void 0!==e)return this.currentValue;var n=Math.pow(10,this.numPrecision);return this.toPrecision((n*e-n*t)/n)},increase:function(){if(!this.inputNumberDisabled&&!this.maxDisabled){var e=this.value||0,t=this._increase(e,this.step);this.setCurrentValue(t)}},decrease:function(){if(!this.inputNumberDisabled&&!this.minDisabled){var e=this.value||0,t=this._decrease(e,this.step);this.setCurrentValue(t)}},handleBlur:function(e){this.$emit("blur",e)},handleFocus:function(e){this.$emit("focus",e)},setCurrentValue:function(e){var t=this.currentValue;"number"===typeof e&&void 0!==this.precision&&(e=this.toPrecision(e,this.precision)),e>=this.max&&(e=this.max),e<=this.min&&(e=this.min),t!==e&&(this.userInput=null,this.$emit("input",e),this.$emit("change",e,t),this.currentValue=e)},handleInput:function(e){this.userInput=e},handleInputChange:function(e){var t=""===e?void 0:Number(e);isNaN(t)&&""!==e||this.setCurrentValue(t),this.userInput=null},select:function(){this.$refs.input.select()}},mounted:function(){var e=this.$refs.input.$refs.input;e.setAttribute("role","spinbutton"),e.setAttribute("aria-valuemax",this.max),e.setAttribute("aria-valuemin",this.min),e.setAttribute("aria-valuenow",this.currentValue),e.setAttribute("aria-disabled",this.inputNumberDisabled)},updated:function(){if(this.$refs&&this.$refs.input){var e=this.$refs.input.$refs.input;e.setAttribute("aria-valuenow",this.currentValue)}}},h=u,d=n(0),f=Object(d["a"])(h,i,r,!1,null,null,null);f.options.__file="packages/input-number/src/input-number.vue";var p=f.exports;p.install=function(e){e.component(p.name,p)};t["default"]=p}})},e452:function(e,t,n){"use strict";t.__esModule=!0;var i=i||{};i.Utils=i.Utils||{},i.Utils.focusFirstDescendant=function(e){for(var t=0;t=0;t--){var n=e.childNodes[t];if(i.Utils.attemptFocus(n)||i.Utils.focusLastDescendant(n))return!0}return!1},i.Utils.attemptFocus=function(e){if(!i.Utils.isFocusable(e))return!1;i.Utils.IgnoreUtilFocusChanges=!0;try{e.focus()}catch(t){}return i.Utils.IgnoreUtilFocusChanges=!1,document.activeElement===e},i.Utils.isFocusable=function(e){if(e.tabIndex>0||0===e.tabIndex&&null!==e.getAttribute("tabIndex"))return!0;if(e.disabled)return!1;switch(e.nodeName){case"A":return!!e.href&&"ignore"!==e.rel;case"INPUT":return"hidden"!==e.type&&"file"!==e.type;case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},i.Utils.triggerEvent=function(e,t){var n=void 0;n=/^mouse|click/.test(t)?"MouseEvents":/^key/.test(t)?"KeyboardEvent":"HTMLEvents";for(var i=document.createEvent(n),r=arguments.length,o=Array(r>2?r-2:0),a=2;ac)i(s,n=t[c++])&&(~o(l,n)||l.push(n));return l}},e70f:function(e,t,n){"use strict";n("1b4c"),n("b6e6")},e772:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=52)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},3:function(e,t){e.exports=n("8122")},33:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("li",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"el-select-dropdown__item",class:{selected:e.itemSelected,"is-disabled":e.disabled||e.groupDisabled||e.limitReached,hover:e.hover},on:{mouseenter:e.hoverItem,click:function(t){return t.stopPropagation(),e.selectOptionClick(t)}}},[e._t("default",[n("span",[e._v(e._s(e.currentLabel))])])],2)},r=[];i._withStripped=!0;var o=n(4),a=n.n(o),s=n(3),c="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},l={mixins:[a.a],name:"ElOption",componentName:"ElOption",inject:["select"],props:{value:{required:!0},label:[String,Number],created:Boolean,disabled:{type:Boolean,default:!1}},data:function(){return{index:-1,groupDisabled:!1,visible:!0,hitState:!1,hover:!1}},computed:{isObject:function(){return"[object object]"===Object.prototype.toString.call(this.value).toLowerCase()},currentLabel:function(){return this.label||(this.isObject?"":this.value)},currentValue:function(){return this.value||this.label||""},itemSelected:function(){return this.select.multiple?this.contains(this.select.value,this.value):this.isEqual(this.value,this.select.value)},limitReached:function(){return!!this.select.multiple&&(!this.itemSelected&&(this.select.value||[]).length>=this.select.multipleLimit&&this.select.multipleLimit>0)}},watch:{currentLabel:function(){this.created||this.select.remote||this.dispatch("ElSelect","setSelected")},value:function(e,t){var n=this.select,i=n.remote,r=n.valueKey;if(!this.created&&!i){if(r&&"object"===("undefined"===typeof e?"undefined":c(e))&&"object"===("undefined"===typeof t?"undefined":c(t))&&e[r]===t[r])return;this.dispatch("ElSelect","setSelected")}}},methods:{isEqual:function(e,t){if(this.isObject){var n=this.select.valueKey;return Object(s["getValueByPath"])(e,n)===Object(s["getValueByPath"])(t,n)}return e===t},contains:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments[1];if(this.isObject){var n=this.select.valueKey;return e&&e.some(function(e){return Object(s["getValueByPath"])(e,n)===Object(s["getValueByPath"])(t,n)})}return e&&e.indexOf(t)>-1},handleGroupDisabled:function(e){this.groupDisabled=e},hoverItem:function(){this.disabled||this.groupDisabled||(this.select.hoverIndex=this.select.options.indexOf(this))},selectOptionClick:function(){!0!==this.disabled&&!0!==this.groupDisabled&&this.dispatch("ElSelect","handleOptionClick",[this,!0])},queryChange:function(e){this.visible=new RegExp(Object(s["escapeRegexpString"])(e),"i").test(this.currentLabel)||this.created,this.visible||this.select.filteredOptionsCount--}},created:function(){this.select.options.push(this),this.select.cachedOptions.push(this),this.select.optionsCount++,this.select.filteredOptionsCount++,this.$on("queryChange",this.queryChange),this.$on("handleGroupDisabled",this.handleGroupDisabled)},beforeDestroy:function(){this.select.onOptionDestroy(this.select.options.indexOf(this))}},u=l,h=n(0),d=Object(h["a"])(u,i,r,!1,null,null,null);d.options.__file="packages/select/src/option.vue";t["a"]=d.exports},4:function(e,t){e.exports=n("d010")},52:function(e,t,n){"use strict";n.r(t);var i=n(33);i["a"].install=function(e){e.component(i["a"].name,i["a"])},t["default"]=i["a"]}})},e804:function(e,t,n){"use strict";var i=n("5ca1"),r=n("f1ae");i(i.S+i.F*n("79e5")(function(){function e(){}return!(Array.of.call(e)instanceof e)}),"Array",{of:function(){var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);while(t>e)r(n,e,arguments[e++]);return n.length=t,n}})},e834:function(e,t,n){"use strict";var i=function(){};e.exports=i},e853:function(e,t,n){var i=n("d3f4"),r=n("1169"),o=n("2b4c")("species");e.exports=function(e){var t;return r(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!r(t.prototype)||(t=void 0),i(t)&&(t=t[o],null===t&&(t=void 0))),void 0===t?Array:t}},e956:function(e,t,n){"use strict";var i=n("5ca1"),r=n("c45f"),o=n("4bf8"),a=n("9def"),s=n("d8e8"),c=n("cd1c");i(i.P,"Array",{flatMap:function(e){var t,n,i=o(this);return s(e),t=a(i.length),n=c(i,0),r(n,i,i,t,0,1,e,arguments[1]),n}}),n("9c6c")("flatMap")},e974:function(e,t,n){"use strict";t.__esModule=!0;var i=n("2b0e"),r=a(i),o=n("5128");function a(e){return e&&e.__esModule?e:{default:e}}var s=r.default.prototype.$isServer?function(){}:n("6167"),c=function(e){return e.stopPropagation()};t.default={props:{transformOrigin:{type:[Boolean,String],default:!0},placement:{type:String,default:"bottom"},boundariesPadding:{type:Number,default:5},reference:{},popper:{},offset:{default:0},value:Boolean,visibleArrow:Boolean,arrowOffset:{type:Number,default:35},appendToBody:{type:Boolean,default:!0},popperOptions:{type:Object,default:function(){return{gpuAcceleration:!1}}}},data:function(){return{showPopper:!1,currentPlacement:""}},watch:{value:{immediate:!0,handler:function(e){this.showPopper=e,this.$emit("input",e)}},showPopper:function(e){this.disabled||(e?this.updatePopper():this.destroyPopper(),this.$emit("input",e))}},methods:{createPopper:function(){var e=this;if(!this.$isServer&&(this.currentPlacement=this.currentPlacement||this.placement,/^(top|bottom|left|right)(-start|-end)?$/g.test(this.currentPlacement))){var t=this.popperOptions,n=this.popperElm=this.popperElm||this.popper||this.$refs.popper,i=this.referenceElm=this.referenceElm||this.reference||this.$refs.reference;!i&&this.$slots.reference&&this.$slots.reference[0]&&(i=this.referenceElm=this.$slots.reference[0].elm),n&&i&&(this.visibleArrow&&this.appendArrow(n),this.appendToBody&&document.body.appendChild(this.popperElm),this.popperJS&&this.popperJS.destroy&&this.popperJS.destroy(),t.placement=this.currentPlacement,t.offset=this.offset,t.arrowOffset=this.arrowOffset,this.popperJS=new s(i,n,t),this.popperJS.onCreate(function(t){e.$emit("created",e),e.resetTransformOrigin(),e.$nextTick(e.updatePopper)}),"function"===typeof t.onUpdate&&this.popperJS.onUpdate(t.onUpdate),this.popperJS._popper.style.zIndex=o.PopupManager.nextZIndex(),this.popperElm.addEventListener("click",c))}},updatePopper:function(){var e=this.popperJS;e?(e.update(),e._popper&&(e._popper.style.zIndex=o.PopupManager.nextZIndex())):this.createPopper()},doDestroy:function(e){!this.popperJS||this.showPopper&&!e||(this.popperJS.destroy(),this.popperJS=null)},destroyPopper:function(){this.popperJS&&this.resetTransformOrigin()},resetTransformOrigin:function(){if(this.transformOrigin){var e={top:"bottom",bottom:"top",left:"right",right:"left"},t=this.popperJS._popper.getAttribute("x-placement").split("-")[0],n=e[t];this.popperJS._popper.style.transformOrigin="string"===typeof this.transformOrigin?this.transformOrigin:["top","bottom"].indexOf(t)>-1?"center "+n:n+" center"}},appendArrow:function(e){var t=void 0;if(!this.appended){for(var n in this.appended=!0,e.attributes)if(/^_v-/.test(e.attributes[n].name)){t=e.attributes[n].name;break}var i=document.createElement("div");t&&i.setAttribute(t,""),i.setAttribute("x-arrow",""),i.className="popper__arrow",e.appendChild(i)}}},beforeDestroy:function(){this.doDestroy(!0),this.popperElm&&this.popperElm.parentNode===document.body&&(this.popperElm.removeEventListener("click",c),document.body.removeChild(this.popperElm))},deactivated:function(){this.$options.beforeDestroy[0].call(this)}}},e975:function(e,t,n){"use strict";n("1b4c"),n("abd1")},e9d2:function(e,t){e.exports=Math.scale||function(e,t,n,i,r){return 0===arguments.length||e!=e||t!=t||n!=n||i!=i||r!=r?NaN:e===1/0||e===-1/0?e:(e-t)*(r-i)/(n-t)+i}},eac5:function(e,t){var n=Object.prototype;function i(e){var t=e&&e.constructor,i="function"==typeof t&&t.prototype||n;return e===i}e.exports=i},ebd6:function(e,t,n){var i=n("cb7c"),r=n("d8e8"),o=n("2b4c")("species");e.exports=function(e,t){var n,a=i(e).constructor;return void 0===a||void 0==(n=i(a)[o])?t:r(n)}},ebde:function(e,t,n){var i=n("11e9"),r=n("5ca1"),o=n("cb7c");r(r.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return i.f(o(e),t)}})},ebfd:function(e,t,n){var i=n("62a0")("meta"),r=n("f772"),o=n("07e3"),a=n("d9f6").f,s=0,c=Object.isExtensible||function(){return!0},l=!n("294c")(function(){return c(Object.preventExtensions({}))}),u=function(e){a(e,i,{value:{i:"O"+ ++s,w:{}}})},h=function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,i)){if(!c(e))return"F";if(!t)return"E";u(e)}return e[i].i},d=function(e,t){if(!o(e,i)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[i].w},f=function(e){return l&&p.NEED&&c(e)&&!o(e,i)&&u(e),e},p=e.exports={KEY:i,NEED:!1,fastKey:h,getWeak:d,onFreeze:f}},ec30:function(e,t,n){"use strict";if(n("9e1e")){var i=n("2d00"),r=n("7726"),o=n("79e5"),a=n("5ca1"),s=n("0f88"),c=n("ed0b"),l=n("9b43"),u=n("f605"),h=n("4630"),d=n("32e9"),f=n("dcbc"),p=n("4588"),v=n("9def"),m=n("09fa"),g=n("77f1"),b=n("6a99"),y=n("69a8"),_=n("23c6"),C=n("d3f4"),w=n("4bf8"),x=n("33a4"),S=n("2aeb"),E=n("38fd"),O=n("9093").f,M=n("27ee"),z=n("ca5a"),k=n("2b4c"),T=n("0a49"),L=n("c366"),A=n("ebd6"),H=n("cadf"),V=n("84f2"),N=n("5cc5"),I=n("7a56"),D=n("36bd"),P=n("ba92"),$=n("86cc"),R=n("11e9"),j=$.f,F=R.f,B=r.RangeError,W=r.TypeError,U=r.Uint8Array,K="ArrayBuffer",q="Shared"+K,G="BYTES_PER_ELEMENT",Y="prototype",X=Array[Y],Q=c.ArrayBuffer,J=c.DataView,Z=T(0),ee=T(2),te=T(3),ne=T(4),ie=T(5),re=T(6),oe=L(!0),ae=L(!1),se=H.values,ce=H.keys,le=H.entries,ue=X.lastIndexOf,he=X.reduce,de=X.reduceRight,fe=X.join,pe=X.sort,ve=X.slice,me=X.toString,ge=X.toLocaleString,be=k("iterator"),ye=k("toStringTag"),_e=z("typed_constructor"),Ce=z("def_constructor"),we=s.CONSTR,xe=s.TYPED,Se=s.VIEW,Ee="Wrong length!",Oe=T(1,function(e,t){return Le(A(e,e[Ce]),t)}),Me=o(function(){return 1===new U(new Uint16Array([1]).buffer)[0]}),ze=!!U&&!!U[Y].set&&o(function(){new U(1).set({})}),ke=function(e,t){var n=p(e);if(n<0||n%t)throw B("Wrong offset!");return n},Te=function(e){if(C(e)&&xe in e)return e;throw W(e+" is not a typed array!")},Le=function(e,t){if(!(C(e)&&_e in e))throw W("It is not a typed array constructor!");return new e(t)},Ae=function(e,t){return He(A(e,e[Ce]),t)},He=function(e,t){var n=0,i=t.length,r=Le(e,i);while(i>n)r[n]=t[n++];return r},Ve=function(e,t,n){j(e,t,{get:function(){return this._d[n]}})},Ne=function(e){var t,n,i,r,o,a,s=w(e),c=arguments.length,u=c>1?arguments[1]:void 0,h=void 0!==u,d=M(s);if(void 0!=d&&!x(d)){for(a=d.call(s),i=[],t=0;!(o=a.next()).done;t++)i.push(o.value);s=i}for(h&&c>2&&(u=l(u,arguments[2],2)),t=0,n=v(s.length),r=Le(this,n);n>t;t++)r[t]=h?u(s[t],t):s[t];return r},Ie=function(){var e=0,t=arguments.length,n=Le(this,t);while(t>e)n[e]=arguments[e++];return n},De=!!U&&o(function(){ge.call(new U(1))}),Pe=function(){return ge.apply(De?ve.call(Te(this)):Te(this),arguments)},$e={copyWithin:function(e,t){return P.call(Te(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return ne(Te(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return D.apply(Te(this),arguments)},filter:function(e){return Ae(this,ee(Te(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return ie(Te(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return re(Te(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){Z(Te(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ae(Te(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return oe(Te(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return fe.apply(Te(this),arguments)},lastIndexOf:function(e){return ue.apply(Te(this),arguments)},map:function(e){return Oe(Te(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return he.apply(Te(this),arguments)},reduceRight:function(e){return de.apply(Te(this),arguments)},reverse:function(){var e,t=this,n=Te(t).length,i=Math.floor(n/2),r=0;while(r1?arguments[1]:void 0)},sort:function(e){return pe.call(Te(this),e)},subarray:function(e,t){var n=Te(this),i=n.length,r=g(e,i);return new(A(n,n[Ce]))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,v((void 0===t?i:g(t,i))-r))}},Re=function(e,t){return Ae(this,ve.call(Te(this),e,t))},je=function(e){Te(this);var t=ke(arguments[1],1),n=this.length,i=w(e),r=v(i.length),o=0;if(r+t>n)throw B(Ee);while(o255?255:255&i),r.v[f](n*t+r.o,i,Me)},k=function(e,t){j(e,t,{get:function(){return M(this,t)},set:function(e){return z(this,t,e)},enumerable:!0})};y?(p=n(function(e,n,i,r){u(e,p,l,"_d");var o,a,s,c,h=0,f=0;if(C(n)){if(!(n instanceof Q||(c=_(n))==K||c==q))return xe in n?He(p,n):Ne.call(p,n);o=n,f=ke(i,t);var g=n.byteLength;if(void 0===r){if(g%t)throw B(Ee);if(a=g-f,a<0)throw B(Ee)}else if(a=v(r)*t,a+f>g)throw B(Ee);s=a/t}else s=m(n),a=s*t,o=new Q(a);d(e,"_d",{b:o,o:f,l:a,e:s,v:new J(o)});while(h-1&&e%1==0&&e>1,u=23===t?T(2,-24)-T(2,-77):0,h=0,d=e<0||0===e&&1/e<0?1:0;for(e=k(e),e!=e||e===M?(r=e!=e?1:0,i=c):(i=L(A(e)/H),e*(o=T(2,-i))<1&&(i--,o*=2),e+=i+l>=1?u/o:u*T(2,1-l),e*o>=2&&(i++,o/=2),i+l>=c?(r=0,i=c):i+l>=1?(r=(e*o-1)*T(2,t),i+=l):(r=e*T(2,l-1)*T(2,t),i=0));t>=8;a[h++]=255&r,r/=256,t-=8);for(i=i<0;a[h++]=255&i,i/=256,s-=8);return a[--h]|=128*d,a}function j(e,t,n){var i,r=8*n-t-1,o=(1<>1,s=r-7,c=n-1,l=e[c--],u=127&l;for(l>>=7;s>0;u=256*u+e[c],c--,s-=8);for(i=u&(1<<-s)-1,u>>=-s,s+=t;s>0;i=256*i+e[c],c--,s-=8);if(0===u)u=1-a;else{if(u===o)return i?NaN:l?-M:M;i+=T(2,t),u-=a}return(l?-1:1)*i*T(2,u-t)}function F(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function B(e){return[255&e]}function W(e){return[255&e,e>>8&255]}function U(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function K(e){return R(e,52,8)}function q(e){return R(e,23,4)}function G(e,t,n){v(e[_],t,{get:function(){return this[n]}})}function Y(e,t,n,i){var r=+n,o=f(r);if(o+t>e[P])throw O(w);var a=e[D]._b,s=o+e[$],c=a.slice(s,s+t);return i?c:c.reverse()}function X(e,t,n,i,r,o){var a=+n,s=f(a);if(s+t>e[P])throw O(w);for(var c=e[D]._b,l=s+e[$],u=i(+r),h=0;hee;)(Q=Z[ee++])in x||s(x,Q,z[Q]);o||(J.constructor=x)}var te=new S(new x(2)),ne=S[_].setInt8;te.setInt8(0,2147483648),te.setInt8(1,2147483649),!te.getInt8(0)&&te.getInt8(1)||c(S[_],{setInt8:function(e,t){ne.call(this,e,t<<24>>24)},setUint8:function(e,t){ne.call(this,e,t<<24>>24)}},!0)}else x=function(e){u(this,x,b);var t=f(e);this._b=m.call(new Array(t),0),this[P]=t},S=function(e,t,n){u(this,S,y),u(e,x,y);var i=e[P],r=h(t);if(r<0||r>i)throw O("Wrong offset!");if(n=void 0===n?i-r:d(n),r+n>i)throw O(C);this[D]=e,this[$]=r,this[P]=n},r&&(G(x,N,"_l"),G(S,V,"_b"),G(S,N,"_l"),G(S,I,"_o")),c(S[_],{getInt8:function(e){return Y(this,1,e)[0]<<24>>24},getUint8:function(e){return Y(this,1,e)[0]},getInt16:function(e){var t=Y(this,2,e,arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=Y(this,2,e,arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return F(Y(this,4,e,arguments[1]))},getUint32:function(e){return F(Y(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return j(Y(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return j(Y(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){X(this,1,e,B,t)},setUint8:function(e,t){X(this,1,e,B,t)},setInt16:function(e,t){X(this,2,e,W,t,arguments[2])},setUint16:function(e,t){X(this,2,e,W,t,arguments[2])},setInt32:function(e,t){X(this,4,e,U,t,arguments[2])},setUint32:function(e,t){X(this,4,e,U,t,arguments[2])},setFloat32:function(e,t){X(this,4,e,q,t,arguments[2])},setFloat64:function(e,t){X(this,8,e,K,t,arguments[2])}});g(x,b),g(S,y),s(S[_],a.VIEW,!0),t[b]=x,t[y]=S},ed33:function(e,t,n){n("014b"),e.exports=n("584a").Object.getOwnPropertySymbols},ed50:function(e,t,n){"use strict";var i=n("5ca1"),r=n("2e08"),o=n("a25f"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*a,"String",{padEnd:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},ed7e:function(e,t,n){var i=n("5ca1");i(i.S,"Math",{signbit:function(e){return(e=+e)!=e?e:0==e?1/e==1/0:e>0}})},ee1d:function(e,t,n){var i=n("5ca1");i(i.S,"Number",{isNaN:function(e){return e!=e}})},eedf:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=100)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},100:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("button",{staticClass:"el-button",class:[e.type?"el-button--"+e.type:"",e.buttonSize?"el-button--"+e.buttonSize:"",{"is-disabled":e.buttonDisabled,"is-loading":e.loading,"is-plain":e.plain,"is-round":e.round,"is-circle":e.circle}],attrs:{disabled:e.buttonDisabled||e.loading,autofocus:e.autofocus,type:e.nativeType},on:{click:e.handleClick}},[e.loading?n("i",{staticClass:"el-icon-loading"}):e._e(),e.icon&&!e.loading?n("i",{class:e.icon}):e._e(),e.$slots.default?n("span",[e._t("default")],2):e._e()])},r=[];i._withStripped=!0;var o={name:"ElButton",inject:{elForm:{default:""},elFormItem:{default:""}},props:{type:{type:String,default:"default"},size:String,icon:{type:String,default:""},nativeType:{type:String,default:"button"},loading:Boolean,disabled:Boolean,plain:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},buttonSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},buttonDisabled:function(){return this.disabled||(this.elForm||{}).disabled}},methods:{handleClick:function(e){this.$emit("click",e)}}},a=o,s=n(0),c=Object(s["a"])(a,i,r,!1,null,null,null);c.options.__file="packages/button/src/button.vue";var l=c.exports;l.install=function(e){e.component(l.name,l)};t["default"]=l}})},efb6:function(e,t,n){var i=n("5e2e");function r(){this.__data__=new i,this.size=0}e.exports=r},f0c1:function(e,t,n){"use strict";var i=n("d8e8"),r=n("d3f4"),o=n("31f4"),a=[].slice,s={},c=function(e,t,n){if(!(t in s)){for(var i=[],r=0;r1)for(var n=1;n=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;T(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,i){return this.delegate={iterator:A(e),resultName:t,nextLoc:i},"next"===this.method&&(this.arg=n),v}}}function _(e,t,n,i){var r=t&&t.prototype instanceof w?t:w,o=Object.create(r.prototype),a=new L(i||[]);return o._invoke=M(e,n,a),o}function C(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(i){return{type:"throw",arg:i}}}function w(){}function x(){}function S(){}function E(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function O(e){function n(t,i,o,a){var s=C(e[t],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"===typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then(function(e){n("next",e,o,a)},function(e){n("throw",e,o,a)}):Promise.resolve(l).then(function(e){c.value=e,o(c)},a)}a(s.arg)}var i;function o(e,t){function r(){return new Promise(function(i,r){n(e,t,i,r)})}return i=i?i.then(r,r):r()}"object"===typeof t.process&&t.process.domain&&(n=t.process.domain.bind(n)),this._invoke=o}function M(e,t,n){var i=h;return function(r,o){if(i===f)throw new Error("Generator is already running");if(i===p){if("throw"===r)throw o;return H()}n.method=r,n.arg=o;while(1){var a=n.delegate;if(a){var s=z(a,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===h)throw i=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=f;var c=C(e,t,n);if("normal"===c.type){if(i=n.done?p:d,c.arg===v)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(i=p,n.method="throw",n.arg=c.arg)}}}function z(e,t){var i=e.iterator[t.method];if(i===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,z(e,t),"throw"===t.method))return v;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var r=C(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,v;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,v):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,v)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function L(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function A(e){if(e){var t=e[a];if(t)return t.call(e);if("function"===typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function t(){while(++i1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l));var i=d(e),r=i.paddingSize,o=i.borderSize,a=i.boxSizing,s=i.contextStyle;l.setAttribute("style",s+";"+u),l.value=e.value||e.placeholder||"";var c=l.scrollHeight,h={};"border-box"===a?c+=o:"content-box"===a&&(c-=r),l.value="";var f=l.scrollHeight-r;if(null!==t){var p=f*t;"border-box"===a&&(p=p+r+o),c=Math.max(p,c),h.minHeight=p+"px"}if(null!==n){var v=f*n;"border-box"===a&&(v=v+r+o),c=Math.min(v,c)}return h.height=c+"px",l.parentNode&&l.parentNode.removeChild(l),l=null,h}var p=n(9),v=n.n(p),m={name:"ElInput",componentName:"ElInput",mixins:[a.a,c.a],inheritAttrs:!1,inject:{elForm:{default:""},elFormItem:{default:""}},data:function(){return{textareaCalcStyle:{},hovering:!1,focused:!1,isComposing:!1,passwordVisible:!1}},props:{value:[String,Number],size:String,resize:String,form:String,disabled:Boolean,readonly:Boolean,type:{type:String,default:"text"},autosize:{type:[Boolean,Object],default:!1},autocomplete:{type:String,default:"off"},autoComplete:{type:String,validator:function(e){return!0}},validateEvent:{type:Boolean,default:!0},suffixIcon:String,prefixIcon:String,label:String,clearable:{type:Boolean,default:!1},showPassword:{type:Boolean,default:!1},showWordLimit:{type:Boolean,default:!1},tabindex:String},computed:{_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},validateState:function(){return this.elFormItem?this.elFormItem.validateState:""},needStatusIcon:function(){return!!this.elForm&&this.elForm.statusIcon},validateIcon:function(){return{validating:"el-icon-loading",success:"el-icon-circle-check",error:"el-icon-circle-close"}[this.validateState]},textareaStyle:function(){return v()({},this.textareaCalcStyle,{resize:this.resize})},inputSize:function(){return this.size||this._elFormItemSize||(this.$ELEMENT||{}).size},inputDisabled:function(){return this.disabled||(this.elForm||{}).disabled},nativeInputValue:function(){return null===this.value||void 0===this.value?"":String(this.value)},showClear:function(){return this.clearable&&!this.inputDisabled&&!this.readonly&&this.nativeInputValue&&(this.focused||this.hovering)},showPwdVisible:function(){return this.showPassword&&!this.inputDisabled&&!this.readonly&&(!!this.nativeInputValue||this.focused)},isWordLimitVisible:function(){return this.showWordLimit&&this.$attrs.maxlength&&("text"===this.type||"textarea"===this.type)&&!this.inputDisabled&&!this.readonly&&!this.showPassword},upperLimit:function(){return this.$attrs.maxlength},textLength:function(){return"number"===typeof this.value?String(this.value).length:(this.value||"").length},inputExceed:function(){return this.isWordLimitVisible&&this.textLength>this.upperLimit}},watch:{value:function(e){this.$nextTick(this.resizeTextarea),this.validateEvent&&this.dispatch("ElFormItem","el.form.change",[e])},nativeInputValue:function(){this.setNativeInputValue()},type:function(){var e=this;this.$nextTick(function(){e.setNativeInputValue(),e.resizeTextarea(),e.updateIconOffset()})}},methods:{focus:function(){this.getInput().focus()},blur:function(){this.getInput().blur()},getMigratingConfig:function(){return{props:{icon:"icon is removed, use suffix-icon / prefix-icon instead.","on-icon-click":"on-icon-click is removed."},events:{click:"click is removed."}}},handleBlur:function(e){this.focused=!1,this.$emit("blur",e),this.validateEvent&&this.dispatch("ElFormItem","el.form.blur",[this.value])},select:function(){this.getInput().select()},resizeTextarea:function(){if(!this.$isServer){var e=this.autosize,t=this.type;if("textarea"===t)if(e){var n=e.minRows,i=e.maxRows;this.textareaCalcStyle=f(this.$refs.textarea,n,i)}else this.textareaCalcStyle={minHeight:f(this.$refs.textarea).minHeight}}},setNativeInputValue:function(){var e=this.getInput();e&&e.value!==this.nativeInputValue&&(e.value=this.nativeInputValue)},handleFocus:function(e){this.focused=!0,this.$emit("focus",e)},handleCompositionStart:function(){this.isComposing=!0},handleCompositionEnd:function(e){this.isComposing=!1,this.handleInput(e)},handleInput:function(e){this.isComposing||e.target.value!==this.nativeInputValue&&(this.$emit("input",e.target.value),this.$nextTick(this.setNativeInputValue))},handleChange:function(e){this.$emit("change",e.target.value)},calcIconOffset:function(e){var t=[].slice.call(this.$el.querySelectorAll(".el-input__"+e)||[]);if(t.length){for(var n=null,i=0;i0?arguments[0]:void 0)}},{get:function(e){var t=i.getEntry(r(this,o),e);return t&&t.v},set:function(e,t){return i.def(r(this,o),0===e?0:e,t)}},i,!0)},f406:function(e,t,n){var i=n("f3e7"),r=n("3f54"),o=i(r,"DataView");e.exports=o},f410:function(e,t,n){n("1af6"),e.exports=n("584a").Array.isArray},f43a:function(e,t,n){"use strict";e.exports=n("cedf")},f494:function(e,t,n){e.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=93)}({0:function(e,t,n){"use strict";function i(e,t,n,i,r,o,a,s){var c,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),i&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),a?(c=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&&r.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(a)},l._ssrRegister=c):r&&(c=s?function(){r.call(this,this.$root.$options.shadowRoot)}:r),c)if(l.functional){l._injectStyles=c;var u=l.render;l.render=function(e,t){return c.call(t),u(e,t)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,c):[c]}return{exports:e,options:l}}n.d(t,"a",function(){return i})},4:function(e,t){e.exports=n("d010")},93:function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("label",{staticClass:"el-radio",class:[e.border&&e.radioSize?"el-radio--"+e.radioSize:"",{"is-disabled":e.isDisabled},{"is-focus":e.focus},{"is-bordered":e.border},{"is-checked":e.model===e.label}],attrs:{role:"radio","aria-checked":e.model===e.label,"aria-disabled":e.isDisabled,tabindex:e.tabIndex},on:{keydown:function(t){if(!("button"in t)&&e._k(t.keyCode,"space",32,t.key,[" ","Spacebar"]))return null;t.stopPropagation(),t.preventDefault(),e.model=e.isDisabled?e.model:e.label}}},[n("span",{staticClass:"el-radio__input",class:{"is-disabled":e.isDisabled,"is-checked":e.model===e.label}},[n("span",{staticClass:"el-radio__inner"}),n("input",{directives:[{name:"model",rawName:"v-model",value:e.model,expression:"model"}],ref:"radio",staticClass:"el-radio__original",attrs:{type:"radio","aria-hidden":"true",name:e.name,disabled:e.isDisabled,tabindex:"-1"},domProps:{value:e.label,checked:e._q(e.model,e.label)},on:{focus:function(t){e.focus=!0},blur:function(t){e.focus=!1},change:[function(t){e.model=e.label},e.handleChange]}})]),n("span",{staticClass:"el-radio__label",on:{keydown:function(e){e.stopPropagation()}}},[e._t("default"),e.$slots.default?e._e():[e._v(e._s(e.label))]],2)])},r=[];i._withStripped=!0;var o=n(4),a=n.n(o),s={name:"ElRadio",mixins:[a.a],inject:{elForm:{default:""},elFormItem:{default:""}},componentName:"ElRadio",props:{value:{},label:{},disabled:Boolean,name:String,border:Boolean,size:String},data:function(){return{focus:!1}},computed:{isGroup:function(){var e=this.$parent;while(e){if("ElRadioGroup"===e.$options.componentName)return this._radioGroup=e,!0;e=e.$parent}return!1},model:{get:function(){return this.isGroup?this._radioGroup.value:this.value},set:function(e){this.isGroup?this.dispatch("ElRadioGroup","input",[e]):this.$emit("input",e),this.$refs.radio&&(this.$refs.radio.checked=this.model===this.label)}},_elFormItemSize:function(){return(this.elFormItem||{}).elFormItemSize},radioSize:function(){var e=this.size||this._elFormItemSize||(this.$ELEMENT||{}).size;return this.isGroup&&this._radioGroup.radioGroupSize||e},isDisabled:function(){return this.isGroup?this._radioGroup.disabled||this.disabled||(this.elForm||{}).disabled:this.disabled||(this.elForm||{}).disabled},tabIndex:function(){return this.isDisabled||this.isGroup&&this.model!==this.label?-1:0}},methods:{handleChange:function(){var e=this;this.$nextTick(function(){e.$emit("change",e.model),e.isGroup&&e.dispatch("ElRadioGroup","handleChange",e.model)})}}},c=s,l=n(0),u=Object(l["a"])(c,i,r,!1,null,null,null);u.options.__file="packages/radio/src/radio.vue";var h=u.exports;h.install=function(e){e.component(h.name,h)};t["default"]=h}})},f4e4:function(e,t,n){},f4ff:function(e,t,n){var i=n("5ca1"),r=Math.imul;i(i.S+i.F*n("79e5")(function(){return-5!=r(4294967295,5)||2!=r.length}),"Math",{imul:function(e,t){var n=65535,i=+e,r=+t,o=n&i,a=n&r;return 0|o*a+((n&i>>>16)*a+o*(n&r>>>16)<<16>>>0)}})},f559:function(e,t,n){"use strict";var i=n("5ca1"),r=n("9def"),o=n("d2c8"),a="startsWith",s=""[a];i(i.P+i.F*n("5147")(a),"String",{startsWith:function(e){var t=o(this,e,a),n=r(Math.min(arguments.length>1?arguments[1]:void 0,t.length)),i=String(e);return s?s.call(t,i,n):t.slice(n,n+i.length)===i}})},f576:function(e,t,n){"use strict";var i=n("5ca1"),r=n("2e08"),o=n("a25f"),a=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);i(i.P+i.F*a,"String",{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0,!0)}})},f605:function(e,t){e.exports=function(e,t,n,i){if(!(e instanceof t)||void 0!==i&&i in e)throw TypeError(n+": incorrect invocation!");return e}},f6b3:function(e,t,n){var i=n("5ca1");i(i.S,"Reflect",{has:function(e,t){return t in e}})},f6b4:function(e,t,n){"use strict";var i=n("c532");function r(){this.handlers=[]}r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){i.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},f751:function(e,t,n){var i=n("5ca1");i(i.S+i.F,"Object",{assign:n("7333")})},f772:function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},f7a7:function(e,t,n){var i=n("b269"),r=n("22dc"),o=n("6398");function a(e,t,n){return t===t?o(e,t,n):i(e,r,n)}e.exports=a},f893:function(e,t,n){e.exports={default:n("f921"),__esModule:!0}},f8af:function(e,t,n){var i=n("2474");function r(e){var t=new e.constructor(e.byteLength);return new i(t).set(new i(e)),t}e.exports=r},f921:function(e,t,n){n("014b"),n("c207"),n("69d3"),n("765d"),e.exports=n("584a").Symbol},f942:function(e,t,n){},f9ab:function(e,t,n){var i=n("5ca1"),r=n("96fb");i(i.S,"Math",{cbrt:function(e){return r(e=+e)*Math.pow(Math.abs(e),1/3)}})},fa21:function(e,t,n){var i=n("7530"),r=n("2dcb"),o=n("eac5");function a(e){return"function"!=typeof e.constructor||o(e)?{}:i(r(e))}e.exports=a},fa5b:function(e,t,n){e.exports=n("5537")("native-function-to-string",Function.toString)},fa83:function(e,t,n){"use strict";n("386b")("blink",function(e){return function(){return e(this,"blink","","")}})},fab2:function(e,t,n){var i=n("7726").document;e.exports=i&&i.documentElement},fba5:function(e,t,n){var i=n("cb5a");function r(e){return i(this.__data__,e)>-1}e.exports=r},fc6d:function(e,t,n){var i=n("f406"),r=n("8c97"),o=n("cfc4"),a=n("628e"),s=n("6b7e"),c=n("658c"),l=n("7430"),u="[object Map]",h="[object Object]",d="[object Promise]",f="[object Set]",p="[object WeakMap]",v="[object DataView]",m=l(i),g=l(r),b=l(o),y=l(a),_=l(s),C=c;(i&&C(new i(new ArrayBuffer(1)))!=v||r&&C(new r)!=u||o&&C(o.resolve())!=d||a&&C(new a)!=f||s&&C(new s)!=p)&&(C=function(e){var t=c(e),n=t==h?e.constructor:void 0,i=n?l(n):"";if(i)switch(i){case m:return v;case g:return u;case b:return d;case y:return f;case _:return p}return t}),e.exports=C},fca0:function(e,t,n){var i=n("5ca1"),r=n("7726").isFinite;i(i.S,"Number",{isFinite:function(e){return"number"==typeof e&&r(e)}})},fd01:function(e,t,n){n("389a");var i=n("c9d5");e.exports=function(e,t){i.init(t),e.directive("waves",{inserted:function(e,t){var n=Object.keys(t.modifiers).map(function(e){return"waves-"+e});i.attach(e,n)}})}},fd24:function(e,t,n){var i=n("5ca1");i(i.S,"Object",{setPrototypeOf:n("8b97").set})},fd5a:function(e,t,n){n("d0ca"),e.exports=n("8378").RegExp.escape},fde4:function(e,t,n){n("bf90");var i=n("584a").Object;e.exports=function(e,t){return i.getOwnPropertyDescriptor(e,t)}},fdef:function(e,t){e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},fee7:function(e,t,n){"use strict";var i=n("5ca1"),r=n("4bf8"),o=n("d8e8"),a=n("86cc");n("9e1e")&&i(i.P+n("c5b4"),"Object",{__defineSetter__:function(e,t){a.f(r(this),e,{set:o(t),enumerable:!0,configurable:!0})}})},ffc1:function(e,t,n){var i=n("5ca1"),r=n("504c")(!0);i(i.S,"Object",{entries:function(e){return r(e)}})},ffd6:function(e,t,n){var i=n("3729"),r=n("1310"),o="[object Symbol]";function a(e){return"symbol"==typeof e||r(e)&&i(e)==o}e.exports=a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/json.worker.js b/apps/emqx_enterprise_dashboard/priv/www/static/json.worker.js new file mode 100644 index 000000000..6c650b0ef --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/json.worker.js @@ -0,0 +1,6 @@ +(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s="f19f")})({"30db":function(e,t,n){"use strict";(function(e,r){n.d(t,"c",function(){return m}),n.d(t,"b",function(){return g}),n.d(t,"a",function(){return y});var i="en",o=!1,a=!1,s=!1,u=!1,c=void 0,l=void 0,f="undefined"!==typeof e&&"undefined"!==typeof e.versions&&"undefined"!==typeof e.versions.electron&&"renderer"===e.type;if("object"!==typeof navigator||f){if("object"===typeof e){o="win32"===e.platform,a="darwin"===e.platform,s="linux"===e.platform,c=i,i;var h=Object({VUE_APP_BUILD_ENV:"emqx",NODE_ENV:"production",BASE_URL:"/"})["VSCODE_NLS_CONFIG"];if(h)try{var d=JSON.parse(h),p=d.availableLanguages["*"];c=d.locale,p||i,d._translationsConfigFile}catch(b){}!0}}else l=navigator.userAgent,o=l.indexOf("Windows")>=0,a=l.indexOf("Macintosh")>=0,s=l.indexOf("Linux")>=0,u=!0,c=navigator.language,c;var m=o,g=u,v="object"===typeof self?self:"object"===typeof r?r:{},y=v}).call(this,n("f28c"),n("c8ba"))},5110:function(e,t,n){(function(e){ +/*! +Copyright (c) 2014 Taylor Hakes +Copyright (c) 2014 Forbes Lindesay + */ +(function(e,t){t()})(0,function(){"use strict";function t(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){return t.reject(n)})})}var n=setTimeout;function r(){}function i(e,t){return function(){e.apply(t,arguments)}}function o(e){if(!(this instanceof o))throw new TypeError("Promises must be constructed via new");if("function"!==typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function a(e,t){while(3===e._state)e=e._value;0!==e._state?(e._handled=!0,o._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var r;try{r=n(e._value)}catch(i){return void u(t.promise,i)}s(t.promise,r)}else(1===e._state?s:u)(t.promise,e._value)})):e._deferreds.push(t)}function s(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"===typeof t||"function"===typeof t)){var n=t.then;if(t instanceof o)return e._state=3,e._value=t,void c(e);if("function"===typeof n)return void f(i(n,t),e)}e._state=1,e._value=t,c(e)}catch(r){u(e,r)}}function u(e,t){e._state=2,e._value=t,c(e)}function c(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t=0}var a=/^\w[\w\d+.-]*$/,s=/^\//,u=/^\/\//,c=!0;function l(e,t){if(!e.scheme&&(t||c))throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!a.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!s.test(e.path))throw new 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(u.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function f(e,t){return t||c?e||p:(e||(e="file"),e)}function h(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==m&&(t=m+t):t=m;break}return t}var d,p="",m="/",g=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,v=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"===typeof e?(this.scheme=e.scheme||p,this.authority=e.authority||p,this.path=e.path||p,this.query=e.query||p,this.fragment=e.fragment||p):(this.scheme=f(e,o),this.authority=t||p,this.path=h(this.scheme,n||p),this.query=r||p,this.fragment=i||p,l(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&("string"===typeof t.authority&&"string"===typeof t.fragment&&"string"===typeof t.path&&"string"===typeof t.query&&"string"===typeof t.scheme&&"function"===typeof t.fsPath&&"function"===typeof t.with&&"function"===typeof t.toString)},Object.defineProperty(e.prototype,"fsPath",{get:function(){return E(this)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=p),void 0===n?n=this.authority:null===n&&(n=p),void 0===r?r=this.path:null===r&&(r=p),void 0===i?i=this.query:null===i&&(i=p),void 0===o?o=this.fragment:null===o&&(o=p),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new b(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=g.exec(e);return n?new b(n[2]||p,decodeURIComponent(n[4]||p),decodeURIComponent(n[5]||p),decodeURIComponent(n[7]||p),decodeURIComponent(n[9]||p),t):new b(p,p,p,p,p)},e.file=function(e){var t=p;if(r&&(e=e.replace(/\\/g,m)),e[0]===m&&e[1]===m){var n=e.indexOf(m,2);-1===n?(t=e.substring(2),e=m):(t=e.substring(2,n),e=e.substring(n)||m)}return new b("file",t,e,p,p)},e.from=function(e){return new b(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),w(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new b(t);return n._formatted=t.external,n._fsPath=t._sep===y?t.fsPath:null,n}return t},e}(),y=r?1:void 0,b=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return i(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=E(this)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=y),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},t}(v),_=(d={},d[58]="%3A",d[47]="%2F",d[63]="%3F",d[35]="%23",d[91]="%5B",d[93]="%5D",d[64]="%40",d[33]="%21",d[36]="%24",d[38]="%26",d[39]="%27",d[40]="%28",d[41]="%29",d[42]="%2A",d[43]="%2B",d[44]="%2C",d[59]="%3B",d[61]="%3D",d[32]="%20",d);function C(e,t){for(var n=void 0,r=-1,i=0;i=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var a=_[o];void 0!==a?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=a):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function S(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?e.path[1].toLowerCase()+e.path.substr(2):e.path,r&&(t=t.replace(/\//g,"\\")),t}function w(e,t){var n=t?S:C,r="",i=e.scheme,o=e.authority,a=e.path,s=e.query,u=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=m,r+=m),o){var c=o.indexOf("@");if(-1!==c){var l=o.substr(0,c);o=o.substr(c+1),c=l.indexOf(":"),-1===c?r+=n(l,!1):(r+=n(l.substr(0,c),!1),r+=":",r+=n(l.substr(c+1),!1)),r+="@"}o=o.toLowerCase(),c=o.indexOf(":"),-1===c?r+=n(o,!1):(r+=n(o.substr(0,c),!1),r+=o.substr(c))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){var f=a.charCodeAt(1);f>=65&&f<=90&&(a="/"+String.fromCharCode(f+32)+":"+a.substr(3))}else if(a.length>=2&&58===a.charCodeAt(1)){f=a.charCodeAt(0);f>=65&&f<=90&&(a=String.fromCharCode(f+32)+":"+a.substr(2))}r+=n(a,!0)}return s&&(r+="?",r+=n(s,!1)),u&&(r+="#",r+=t?u:C(u,!1)),r}}).call(this,n("f28c"))},c8ba:function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}e.exports=n},f19f:function(e,t,n){"use strict";n.r(t);var r=function(){function e(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(function(){if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e},0)}}return e.prototype.emit=function(e){this.listeners.forEach(function(t){t(e)})},e.prototype.onUnexpectedError=function(e){this.unexpectedErrorHandler(e),this.emit(e)},e.prototype.onUnexpectedExternalError=function(e){this.unexpectedErrorHandler(e)},e}(),i=new r;function o(e){u(e)||i.onUnexpectedError(e)}function a(e){if(e instanceof Error){var t=e.name,n=e.message,r=e.stacktrace||e.stack;return{$isError:!0,name:t,message:n,stack:r}}return e}var s="Canceled";function u(e){return e instanceof Error&&e.name===s&&e.message===s}function c(e){return e?new Error("Illegal argument: "+e):new Error("Illegal argument")}var l=!1,f="__is_disposable_tracked__";function h(e){if(l&&e&&e!==y.None)try{e[f]=!0}catch(t){}}function d(e){if(!l)return e;var t=new Error("Potentially leaked disposable").stack;return setTimeout(function(){e[f]||console.log(t)},3e3),e}function p(e){return Array.isArray(e)?(e.forEach(function(e){e&&(h(e),e.dispose())}),[]):e?(h(e),e.dispose(),e):void 0}function m(){for(var e=[],t=0;tr?e[u]=o[s++]:s>i?e[u]=o[a++]:t(o[s],o[a])<0?e[u]=o[s++]:e[u]=o[a++]}function k(e,t,n,r,i){if(!(r<=n)){var o=n+(r-n)/2|0;k(e,t,n,o,i),k(e,t,o+1,r,i),t(e[o],e[o+1])<=0||L(e,t,n,o,r,i)}}var T=function(){function e(e,t,n,r){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=r}return e.prototype.getOriginalEnd=function(){return this.originalStart+this.originalLength},e.prototype.getModifiedEnd=function(){return this.modifiedStart+this.modifiedLength},e}();function O(e){return{getLength:function(){return e.length},getElementAtIndex:function(t){return e.charCodeAt(t)}}}function P(e,t,n){return new V(O(e),O(t)).ComputeDiff(n)}var I,M=function(){function e(){}return e.Assert=function(e,t){if(!e)throw new Error(t)},e}(),R=function(){function e(){}return e.Copy=function(e,t,n,r,i){for(var o=0;o0||this.m_modifiedCount>0)&&this.m_changes.push(new T(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=Number.MAX_VALUE,this.m_modifiedStart=Number.MAX_VALUE},e.prototype.AddOriginalElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++},e.prototype.AddModifiedElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++},e.prototype.getChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes},e.prototype.getReverseChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes},e}(),V=function(){function e(e,t,n){void 0===n&&(n=null),this.OriginalSequence=e,this.ModifiedSequence=t,this.ContinueProcessingPredicate=n,this.m_forwardHistory=[],this.m_reverseHistory=[]}return e.prototype.ElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.OriginalElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.OriginalSequence.getElementAtIndex(t)},e.prototype.ModifiedElementsAreEqual=function(e,t){return this.ModifiedSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.ComputeDiff=function(e){return this._ComputeDiff(0,this.OriginalSequence.getLength()-1,0,this.ModifiedSequence.getLength()-1,e)},e.prototype._ComputeDiff=function(e,t,n,r,i){var o=[!1],a=this.ComputeDiffRecursive(e,t,n,r,o);return i?this.PrettifyChanges(a):a},e.prototype.ComputeDiffRecursive=function(e,t,n,r,i){i[0]=!1;while(e<=t&&n<=r&&this.ElementsAreEqual(e,n))e++,n++;while(t>=e&&r>=n&&this.ElementsAreEqual(t,r))t--,r--;if(e>t||n>r){var o=void 0;return n<=r?(M.Assert(e===t+1,"originalStart should only be one more than originalEnd"),o=[new T(e,0,n,r-n+1)]):e<=t?(M.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),o=[new T(e,t-e+1,n,0)]):(M.Assert(e===t+1,"originalStart should only be one more than originalEnd"),M.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),o=[]),o}var a=[0],s=[0],u=this.ComputeRecursionPoint(e,t,n,r,a,s,i),c=a[0],l=s[0];if(null!==u)return u;if(!i[0]){var f=this.ComputeDiffRecursive(e,c,n,l,i),h=[];return h=i[0]?[new T(c+1,t-(c+1)+1,l+1,r-(l+1)+1)]:this.ComputeDiffRecursive(c+1,t,l+1,r,i),this.ConcatenateChanges(f,h)}return[new T(e,t-e+1,n,r-n+1)]},e.prototype.WALKTRACE=function(e,t,n,r,i,o,a,s,u,c,l,f,h,d,p,m,g,v){var y,b=null,_=null,C=new F,S=t,E=n,w=h[0]-m[0]-r,x=Number.MIN_VALUE,N=this.m_forwardHistory.length-1;do{y=w+e,y===S||y=0&&(u=this.m_forwardHistory[N],e=u[0],S=1,E=u.length-1)}while(--N>=-1);if(b=C.getReverseChanges(),v[0]){var A=h[0]+1,L=m[0]+1;if(null!==b&&b.length>0){var k=b[b.length-1];A=Math.max(A,k.getOriginalEnd()),L=Math.max(L,k.getModifiedEnd())}_=[new T(A,f-A+1,L,p-L+1)]}else{C=new F,S=o,E=a,w=h[0]-m[0]-s,x=Number.MAX_VALUE,N=g?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{y=w+i,y===S||y=c[y+1]?(l=c[y+1]-1,d=l-w-s,l>x&&C.MarkNextChange(),x=l+1,C.AddOriginalElement(l+1,d+1),w=y+1-i):(l=c[y-1],d=l-w-s,l>x&&C.MarkNextChange(),x=l,C.AddModifiedElement(l+1,d+1),w=y-1-i),N>=0&&(c=this.m_reverseHistory[N],i=c[0],S=1,E=c.length-1)}while(--N>=-1);_=C.getChanges()}return this.ConcatenateChanges(b,_)},e.prototype.ComputeRecursionPoint=function(e,t,n,r,i,o,a){var s,u=0,c=0,l=0,f=0,h=0,d=0;e--,n--,i[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];var p,m,g=t-e+(r-n),v=g+1,y=new Array(v),b=new Array(v),_=r-n,C=t-e,S=e-n,E=t-r,w=C-_,x=w%2===0;for(y[_]=e,b[C]=t,a[0]=!1,s=1;s<=g/2+1;s++){var N=0,A=0;for(l=this.ClipDiagonalBound(_-s,s,_,v),f=this.ClipDiagonalBound(_+s,s,_,v),p=l;p<=f;p+=2){u=p===l||pN+A&&(N=u,A=c),!x&&Math.abs(p-C)<=s-1&&u>=b[p])return i[0]=u,o[0]=c,m<=b[p]&&j>0&&s<=j+1?this.WALKTRACE(_,l,f,S,C,h,d,E,y,b,u,t,i,c,r,o,x,a):null}var L=(N-e+(A-n)-s)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(N,this.OriginalSequence,L))return a[0]=!0,i[0]=N,o[0]=A,L>0&&j>0&&s<=j+1?this.WALKTRACE(_,l,f,S,C,h,d,E,y,b,u,t,i,c,r,o,x,a):(e++,n++,[new T(e,t-e+1,n,r-n+1)]);for(h=this.ClipDiagonalBound(C-s,s,C,v),d=this.ClipDiagonalBound(C+s,s,C,v),p=h;p<=d;p+=2){u=p===h||p=b[p+1]?b[p+1]-1:b[p-1],c=u-(p-C)-E,m=u;while(u>e&&c>n&&this.ElementsAreEqual(u,c))u--,c--;if(b[p]=u,x&&Math.abs(p-_)<=s&&u<=y[p])return i[0]=u,o[0]=c,m>=y[p]&&j>0&&s<=j+1?this.WALKTRACE(_,l,f,S,C,h,d,E,y,b,u,t,i,c,r,o,x,a):null}if(s<=j){var k=new Array(f-l+2);k[0]=_-l+1,R.Copy(y,l,k,1,f-l+1),this.m_forwardHistory.push(k),k=new Array(d-h+2),k[0]=C-h+1,R.Copy(b,h,k,1,d-h+1),this.m_reverseHistory.push(k)}}return this.WALKTRACE(_,l,f,S,C,h,d,E,y,b,u,t,i,c,r,o,x,a)},e.prototype.PrettifyChanges=function(e){for(var t=0;t0,a=n.modifiedLength>0;while(n.originalStart+n.originalLength=0;t--){n=e[t],r=0,i=0;if(t>0){var u=e[t-1];u.originalLength>0&&(r=u.originalStart+u.originalLength),u.modifiedLength>0&&(i=u.modifiedStart+u.modifiedLength)}o=n.originalLength>0,a=n.modifiedLength>0;for(var c=0,l=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength),f=1;;f++){var h=n.originalStart-f,d=n.modifiedStart-f;if(hl&&(l=p,c=f)}n.originalStart-=c,n.modifiedStart-=c}return e},e.prototype._OriginalIsBoundary=function(e){if(e<=0||e>=this.OriginalSequence.getLength()-1)return!0;var t=this.OriginalSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._OriginalRegionIsBoundary=function(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1},e.prototype._ModifiedIsBoundary=function(e){if(e<=0||e>=this.ModifiedSequence.getLength()-1)return!0;var t=this.ModifiedSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._ModifiedRegionIsBoundary=function(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1},e.prototype._boundaryScore=function(e,t,n,r){var i=this._OriginalRegionIsBoundary(e,t)?1:0,o=this._ModifiedRegionIsBoundary(n,r)?1:0;return i+o},e.prototype.ConcatenateChanges=function(e,t){var n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){var r=new Array(e.length+t.length-1);return R.Copy(e,0,r,0,e.length-1),r[e.length-1]=n[0],R.Copy(t,1,r,e.length,t.length-1),r}r=new Array(e.length+t.length);return R.Copy(e,0,r,0,e.length),R.Copy(t,0,r,e.length,t.length),r},e.prototype.ChangesOverlap=function(e,t,n){if(M.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),M.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){var r=e.originalStart,i=e.originalLength,o=e.modifiedStart,a=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(i=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(a=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new T(r,i,o,a),!0}return n[0]=null,!1},e.prototype.ClipDiagonalBound=function(e,t,n,r){if(e>=0&&e=n?U:{done:!1,value:e[t++]}}}}function o(t){return t?Array.isArray(t)?e.fromArray(t):t:e.empty()}function a(e,t){return{next:function(){var n=e.next();return n.done?U:{done:!1,value:t(n.value)}}}}function s(e,t){return{next:function(){while(1){var n=e.next();if(n.done)return U;if(t(n.value))return{done:!1,value:n.value}}}}}function u(e,t){for(var n=e.next();!n.done;n=e.next())t(n.value)}function c(e,t){void 0===t&&(t=Number.POSITIVE_INFINITY);var n=[];if(0===t)return n;for(var r=0,i=e.next();!i.done;i=e.next())if(n.push(i.value),++r>=t)break;return n}function l(){for(var e=[],t=0;t=e.length)return U;var t=e[n],r=t.next();return r.done?(n++,this.next()):r}}}e.empty=n,e.single=r,e.fromArray=i,e.from=o,e.map=a,e.filter=s,e.forEach=u,e.collect=c,e.concat=l})(I||(I={}));var q,K=function(){function e(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=e.length),void 0===r&&(r=t-1),this.items=e,this.start=t,this.end=n,this.index=r}return e.prototype.first=function(){return this.index=this.start,this.current()},e.prototype.next=function(){return this.index=Math.min(this.index+1,this.end),this.current()},e.prototype.current=function(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]},e}(),W=(function(e){function t(t,n,r,i){return void 0===n&&(n=0),void 0===r&&(r=t.length),void 0===i&&(i=n-1),e.call(this,t,n,r,i)||this}D(t,e),t.prototype.current=function(){return e.prototype.current.call(this)},t.prototype.previous=function(){return this.index=Math.max(this.index-1,this.start-1),this.current()},t.prototype.first=function(){return this.index=this.start,this.current()},t.prototype.last=function(){return this.index=this.end-1,this.current()},t.prototype.parent=function(){return null}}(K),function(){function e(e,t){this.iterator=e,this.fn=t}e.prototype.next=function(){return this.fn(this.iterator.next())}}(),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),B=/^\w[\w\d+.-]*$/,$=/^\//,Y=/^\/\//,H=!0;function z(e,t){if(!e.scheme){if(t||H)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');console.warn('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}')}if(e.scheme&&!B.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!$.test(e.path))throw new 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(Y.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function G(e,t){return t||H?e||Q:(e||(console.trace("BAD uri lacks scheme, falling back to file-scheme."),e="file"),e)}function J(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==X&&(t=X+t):t=X;break}return t}var Q="",X="/",Z=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,ee=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"===typeof e?(this.scheme=e.scheme||Q,this.authority=e.authority||Q,this.path=e.path||Q,this.query=e.query||Q,this.fragment=e.fragment||Q):(this.scheme=G(e,o),this.authority=t||Q,this.path=J(this.scheme,n||Q),this.query=r||Q,this.fragment=i||Q,z(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&("string"===typeof t.authority&&"string"===typeof t.fragment&&"string"===typeof t.path&&"string"===typeof t.query&&"string"===typeof t.scheme&&"function"===typeof t.fsPath&&"function"===typeof t.with&&"function"===typeof t.toString)},Object.defineProperty(e.prototype,"fsPath",{get:function(){return ae(this)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=Q),void 0===n?n=this.authority:null===n&&(n=Q),void 0===r?r=this.path:null===r&&(r=Q),void 0===i?i=this.query:null===i&&(i=Q),void 0===o?o=this.fragment:null===o&&(o=Q),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new ne(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=Z.exec(e);return n?new ne(n[2]||Q,decodeURIComponent(n[4]||Q),decodeURIComponent(n[5]||Q),decodeURIComponent(n[7]||Q),decodeURIComponent(n[9]||Q),t):new ne(Q,Q,Q,Q,Q)},e.file=function(e){var t=Q;if(b["c"]&&(e=e.replace(/\\/g,X)),e[0]===X&&e[1]===X){var n=e.indexOf(X,2);-1===n?(t=e.substring(2),e=X):(t=e.substring(2,n),e=e.substring(n)||X)}return new ne("file",t,e,Q,Q)},e.from=function(e){return new ne(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),se(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new ne(t);return n._formatted=t.external,n._fsPath=t._sep===te?t.fsPath:null,n}return t},e}(),te=b["c"]?1:void 0,ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return W(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=ae(this)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?se(this,!0):(this._formatted||(this._formatted=se(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=te),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},t}(ee),re=(q={},q[58]="%3A",q[47]="%2F",q[63]="%3F",q[35]="%23",q[91]="%5B",q[93]="%5D",q[64]="%40",q[33]="%21",q[36]="%24",q[38]="%26",q[39]="%27",q[40]="%28",q[41]="%29",q[42]="%2A",q[43]="%2B",q[44]="%2C",q[59]="%3B",q[61]="%3D",q[32]="%20",q);function ie(e,t){for(var n=void 0,r=-1,i=0;i=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var a=re[o];void 0!==a?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=a):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function oe(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?e.path[1].toLowerCase()+e.path.substr(2):e.path,b["c"]&&(t=t.replace(/\//g,"\\")),t}function se(e,t){var n=t?oe:ie,r="",i=e.scheme,o=e.authority,a=e.path,s=e.query,u=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=X,r+=X),o){var c=o.indexOf("@");if(-1!==c){var l=o.substr(0,c);o=o.substr(c+1),c=l.indexOf(":"),-1===c?r+=n(l,!1):(r+=n(l.substr(0,c),!1),r+=":",r+=n(l.substr(c+1),!1)),r+="@"}o=o.toLowerCase(),c=o.indexOf(":"),-1===c?r+=n(o,!1):(r+=n(o.substr(0,c),!1),r+=o.substr(c))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){var f=a.charCodeAt(1);f>=65&&f<=90&&(a="/"+String.fromCharCode(f+32)+":"+a.substr(3))}else if(a.length>=2&&58===a.charCodeAt(1)){f=a.charCodeAt(0);f>=65&&f<=90&&(a=String.fromCharCode(f+32)+":"+a.substr(2))}r+=n(a,!0)}return s&&(r+="?",r+=n(s,!1)),u&&(r+="#",r+=t?u:ie(u,!1)),r}var ue=function(){function e(e,t){this.lineNumber=e,this.column=t}return e.prototype.with=function(t,n){return void 0===t&&(t=this.lineNumber),void 0===n&&(n=this.column),t===this.lineNumber&&n===this.column?this:new e(t,n)},e.prototype.delta=function(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),this.with(this.lineNumber+e,this.column+t)},e.prototype.equals=function(t){return e.equals(this,t)},e.equals=function(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column},e.prototype.isBefore=function(t){return e.isBefore(this,t)},e.isBefore=function(e,t){return e.lineNumbern||e===n&&t>r?(this.startLineNumber=n,this.startColumn=r,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=r)}return e.prototype.isEmpty=function(){return e.isEmpty(this)},e.isEmpty=function(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn},e.prototype.containsPosition=function(t){return e.containsPosition(this,t)},e.containsPosition=function(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.columne.endColumn))},e.prototype.containsRange=function(t){return e.containsRange(this,t)},e.containsRange=function(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn)))},e.prototype.strictContainsRange=function(t){return e.strictContainsRange(this,t)},e.strictContainsRange=function(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)))},e.prototype.plusRange=function(t){return e.plusRange(this,t)},e.plusRange=function(t,n){var r,i,o,a;return n.startLineNumbert.endLineNumber?(o=n.endLineNumber,a=n.endColumn):n.endLineNumber===t.endLineNumber?(o=n.endLineNumber,a=Math.max(n.endColumn,t.endColumn)):(o=t.endLineNumber,a=t.endColumn),new e(r,i,o,a)},e.prototype.intersectRanges=function(t){return e.intersectRanges(this,t)},e.intersectRanges=function(t,n){var r=t.startLineNumber,i=t.startColumn,o=t.endLineNumber,a=t.endColumn,s=n.startLineNumber,u=n.startColumn,c=n.endLineNumber,l=n.endColumn;return rc?(o=c,a=l):o===c&&(a=Math.min(a,l)),r>o?null:r===o&&i>a?null:new e(r,i,o,a)},e.prototype.equalsRange=function(t){return e.equalsRange(this,t)},e.equalsRange=function(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn},e.prototype.getEndPosition=function(){return new ue(this.endLineNumber,this.endColumn)},e.prototype.getStartPosition=function(){return new ue(this.startLineNumber,this.startColumn)},e.prototype.toString=function(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"},e.prototype.setEndPosition=function(t,n){return new e(this.startLineNumber,this.startColumn,t,n)},e.prototype.setStartPosition=function(t,n){return new e(t,n,this.endLineNumber,this.endColumn)},e.prototype.collapseToStart=function(){return e.collapseToStart(this)},e.collapseToStart=function(t){return new e(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)},e.fromPositions=function(t,n){return void 0===n&&(n=t),new e(t.lineNumber,t.column,n.lineNumber,n.column)},e.lift=function(t){return t?new e(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null},e.isIRange=function(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn},e.areIntersectingOrTouching=function(e,t){return!(e.endLineNumbere.startLineNumber},e}();function le(e){for(var t=0,n=e.length;t=0;n--){var r=e.charCodeAt(n);if(32!==r&&9!==r)return n}return-1}String.fromCharCode(65279);var he=5e3,de=3;function pe(e,t,n,r){var i=new V(e,t,n);return i.ComputeDiff(r)}var me=function(){function e(t){for(var n=[],r=[],i=0,o=t.length;i1&&p>1){var m=f.charCodeAt(d-2),g=h.charCodeAt(p-2);if(m!==g)break;d--,p--}(d>1||p>1)&&this._pushTrimWhitespaceCharChange(i,o+1,1,d,a+1,1,p);var v=me._getLastNonBlankColumn(f,1),y=me._getLastNonBlankColumn(h,1),b=f.length+1,_=h.length+1;while(v255?255:0|e}function Ee(e){return e<0?0:e>4294967295?4294967295:0|e}var we=function(){function e(e,t){this.index=e,this.remainder=t}return e}(),xe=function(){function e(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}return e.prototype.getCount=function(){return this.values.length},e.prototype.insertValues=function(e,t){e=Ee(e);var n=this.values,r=this.prefixSum,i=t.length;return 0!==i&&(this.values=new Uint32Array(n.length+i),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+i),this.values.set(t,e),e-1=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.changeValue=function(e,t){return e=Ee(e),t=Ee(t),this.values[e]!==t&&(this.values[e]=t,e-1=n.length)return!1;var i=n.length-e;return t>=i&&(t=i),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.getTotalValue=function(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)},e.prototype.getAccumulatedValue=function(e){return e<0?0:(e=Ee(e),this._getAccumulatedValue(e))},e.prototype._getAccumulatedValue=function(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];var t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(var n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]},e.prototype.getIndexOf=function(e){e=Math.floor(e),this.getTotalValue();var t=0,n=this.values.length-1,r=0,i=0,o=0;while(t<=n)if(r=t+(n-t)/2|0,i=this.prefixSum[r],o=i-this.values[r],e=i))break;t=r+1}return new we(r,e-o)},e}(),Ne=(function(){function e(e){this._cacheAccumulatedValueStart=0,this._cache=null,this._actual=new xe(e),this._bustCache()}e.prototype._bustCache=function(){this._cacheAccumulatedValueStart=0,this._cache=null},e.prototype.insertValues=function(e,t){this._actual.insertValues(e,t)&&this._bustCache()},e.prototype.changeValue=function(e,t){this._actual.changeValue(e,t)&&this._bustCache()},e.prototype.removeValues=function(e,t){this._actual.removeValues(e,t)&&this._bustCache()},e.prototype.getTotalValue=function(){return this._actual.getTotalValue()},e.prototype.getAccumulatedValue=function(e){return this._actual.getAccumulatedValue(e)},e.prototype.getIndexOf=function(e){if(e=Math.floor(e),null!==this._cache){var t=e-this._cacheAccumulatedValueStart;if(t>=0&&t/?";function Le(e){void 0===e&&(e="");for(var t="(-?\\d*\\.\\d\\w*)|([^",n=0,r=Ae;n=0||(t+="\\"+i)}return t+="\\s]+)",new RegExp(t,"g")}var ke=Le();function Te(e){var t=ke;if(e&&e instanceof RegExp)if(e.global)t=e;else{var n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}function Oe(e,t,n,r){var i,o=e-1-r,a=n.lastIndexOf(" ",o-1)+1;t.lastIndex=a;while(i=t.exec(n)){var s=i.index||0;if(s<=o&&t.lastIndex>=o)return{word:i[0],startColumn:r+1+s,endColumn:r+1+t.lastIndex}}return null}function Pe(e,t,n,r){var i,o=e-1-r;t.lastIndex=0;while(i=t.exec(n)){var a=i.index||0;if(a>o)return null;if(t.lastIndex>=o)return{word:i[0],startColumn:r+1+a,endColumn:r+1+t.lastIndex}}return null}function Ie(e,t,n,r){t.lastIndex=0;var i=t.exec(n);if(!i)return null;var o=i[0].indexOf(" ")>=0?Pe(e,t,n,r):Oe(e,t,n,r);return t.lastIndex=0,o}var Me=function(){function e(t){var n=Se(t);this._defaultValue=n,this._asciiMap=e._createAsciiMap(n),this._map=new Map}return e._createAsciiMap=function(e){for(var t=new Uint8Array(256),n=0;n<256;n++)t[n]=e;return t},e.prototype.set=function(e,t){var n=Se(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)},e.prototype.get=function(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue},e}(),Re=(function(){function e(){this._actual=new Me(0)}e.prototype.add=function(e){this._actual.set(e,1)},e.prototype.has=function(e){return 1===this._actual.get(e)}}(),function(){function e(e){for(var t=0,n=0,r=0,i=e.length;rt&&(t=s),a>n&&(n=a),u>n&&(n=u)}t++,n++;var c=new Ce(n,t,0);for(r=0,i=e.length;r=this._maxCharCode?0:this._states.get(e,t)},e}()),je=null;function Fe(){return null===je&&(je=new Re([[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]])),je}var Ve=null;function De(){if(null===Ve){Ve=new Me(0);for(var e=" \t<>'\"、。。、,.:;?!@#$%&*‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…",t=0;tr);if(r>0){var u=t.charCodeAt(r-1),c=t.charCodeAt(o);(40===u&&41===c||91===u&&93===c||123===u&&125===c)&&o--}return{range:{startLineNumber:n,startColumn:r+1,endLineNumber:n,endColumn:o+2},url:t.substring(r,o+1)}},e.computeLinks=function(t,n){void 0===n&&(n=Fe());for(var r=De(),i=[],o=1,a=t.getLineCount();o<=a;o++){var s=t.getLineContent(o),u=s.length,c=0,l=0,f=0,h=1,d=!1,p=!1,m=!1;while(c=0?(r+=n?1:-1,r<0?r=e.length-1:r%=e.length,e[r]):null},e.INSTANCE=new e,e}();n("5110");function We(e){var t,n=this,r=!1;return function(){return r?t:(r=!0,t=e.apply(n,arguments),t)}}var Be,$e=function(){function e(t){this.element=t,this.next=e.Undefined,this.prev=e.Undefined}return e.Undefined=new e(void 0),e}(),Ye=function(){function e(){this._first=$e.Undefined,this._last=$e.Undefined,this._size=0}return Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),e.prototype.isEmpty=function(){return this._first===$e.Undefined},e.prototype.clear=function(){this._first=$e.Undefined,this._last=$e.Undefined,this._size=0},e.prototype.unshift=function(e){return this._insert(e,!1)},e.prototype.push=function(e){return this._insert(e,!0)},e.prototype._insert=function(e,t){var n=this,r=new $e(e);if(this._first===$e.Undefined)this._first=r,this._last=r;else if(t){var i=this._last;this._last=r,r.prev=i,i.next=r}else{var o=this._first;this._first=r,r.next=o,o.prev=r}this._size+=1;var a=!1;return function(){a||(a=!0,n._remove(r))}},e.prototype.shift=function(){if(this._first!==$e.Undefined){var e=this._first.element;return this._remove(this._first),e}},e.prototype.pop=function(){if(this._last!==$e.Undefined){var e=this._last.element;return this._remove(this._last),e}},e.prototype._remove=function(e){if(e.prev!==$e.Undefined&&e.next!==$e.Undefined){var t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===$e.Undefined&&e.next===$e.Undefined?(this._first=$e.Undefined,this._last=$e.Undefined):e.next===$e.Undefined?(this._last=this._last.prev,this._last.next=$e.Undefined):e.prev===$e.Undefined&&(this._first=this._first.next,this._first.prev=$e.Undefined);this._size-=1},e.prototype.iterator=function(){var e,t=this._first;return{next:function(){return t===$e.Undefined?U:(e?e.value=t.element:e={done:!1,value:t.element},t=t.next,e)}}},e.prototype.toArray=function(){for(var e=[],t=this._first;t!==$e.Undefined;t=t.next)e.push(t.element);return e},e}(),He=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();(function(e){function t(e){return function(t,n,r){void 0===n&&(n=null);var i,o=!1;return i=e(function(e){if(!o)return i?i.dispose():o=!0,t.call(n,e)},null,r),o&&i.dispose(),i}}function n(e,t){return u(function(n,r,i){return void 0===r&&(r=null),e(function(e){return n.call(r,t(e))},null,i)})}function r(e,t){return u(function(n,r,i){return void 0===r&&(r=null),e(function(e){t(e),n.call(r,e)},null,i)})}function i(e,t){return u(function(n,r,i){return void 0===r&&(r=null),e(function(e){return t(e)&&n.call(r,e)},null,i)})}function o(e){return e}function a(){for(var e=[],t=0;t1)&&c.fire(e),u=0},n)})},onLastListenerRemove:function(){o.dispose()}});return c.event}function l(e){var r=(new Date).getTime();return n(t(e),function(e){return(new Date).getTime()-r})}function f(e){var t,n=!0;return i(e,function(e){var r=n||e!==t;return n=!1,t=e,r})}function h(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=[]);var r=n.slice(),i=e(function(e){r?r.push(e):a.fire(e)}),o=function(){r&&r.forEach(function(e){return a.fire(e)}),r=null},a=new Qe({onFirstListenerAdd:function(){i||(i=e(function(e){return a.fire(e)}))},onFirstListenerDidAdd:function(){r&&(t?setTimeout(o):o())},onLastListenerRemove:function(){i&&i.dispose(),i=null}});return a.event}e.None=function(){return y.None},e.once=t,e.map=n,e.forEach=r,e.filter=i,e.signal=o,e.any=a,e.reduce=s,e.snapshot=u,e.debounce=c,e.stopwatch=l,e.latch=f,e.buffer=h;var d=function(){function e(e){this.event=e}return e.prototype.map=function(t){return new e(n(this.event,t))},e.prototype.forEach=function(t){return new e(r(this.event,t))},e.prototype.filter=function(t){return new e(i(this.event,t))},e.prototype.reduce=function(t,n){return new e(s(this.event,t,n))},e.prototype.latch=function(){return new e(f(this.event))},e.prototype.on=function(e,t,n){return this.event(e,t,n)},e.prototype.once=function(e,n,r){return t(this.event)(e,n,r)},e}();function p(e){return new d(e)}function g(e,t,n){void 0===n&&(n=function(e){return e});var r=function(){for(var e=[],t=0;t0?new Je(this._options&&this._options.leakWarningThreshold):void 0}return Object.defineProperty(e.prototype,"event",{get:function(){var t=this;return this._event||(this._event=function(n,r,i){t._listeners||(t._listeners=new Ye);var o=t._listeners.isEmpty();o&&t._options&&t._options.onFirstListenerAdd&&t._options.onFirstListenerAdd(t);var a,s,u=t._listeners.push(r?[n,r]:n);return o&&t._options&&t._options.onFirstListenerDidAdd&&t._options.onFirstListenerDidAdd(t),t._options&&t._options.onListenerDidAdd&&t._options.onListenerDidAdd(t,n,r),t._leakageMon&&(a=t._leakageMon.check(t._listeners.size)),s={dispose:function(){if(a&&a(),s.dispose=e._noop,!t._disposed&&(u(),t._options&&t._options.onLastListenerRemove)){var n=t._listeners&&!t._listeners.isEmpty();n||t._options.onLastListenerRemove(t)}}},i instanceof v?i.add(s):Array.isArray(i)&&i.push(s),s}),this._event},enumerable:!0,configurable:!0}),e.prototype.fire=function(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new Ye);for(var t=this._listeners.iterator(),n=t.next();!n.done;n=t.next())this._deliveryQueue.push([n.value,e]);while(this._deliveryQueue.size>0){var r=this._deliveryQueue.shift(),i=r[0],a=r[1];try{"function"===typeof i?i.call(void 0,a):i[0].call(i[1],a)}catch(n){o(n)}}}},e.prototype.dispose=function(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0},e._noop=function(){},e}(),Xe=(function(e){function t(t){var n=e.call(this,t)||this;return n._isPaused=0,n._eventQueue=new Ye,n._mergeFn=t&&t.merge,n}He(t,e),t.prototype.pause=function(){this._isPaused++},t.prototype.resume=function(){if(0!==this._isPaused&&0===--this._isPaused)if(this._mergeFn){var t=this._eventQueue.toArray();this._eventQueue.clear(),e.prototype.fire.call(this,this._mergeFn(t))}else while(!this._isPaused&&0!==this._eventQueue.size)e.prototype.fire.call(this,this._eventQueue.shift())},t.prototype.fire=function(t){this._listeners&&(0!==this._isPaused?this._eventQueue.push(t):e.prototype.fire.call(this,t))}}(Qe),function(){function e(){var e=this;this.hasListeners=!1,this.events=[],this.emitter=new Qe({onFirstListenerAdd:function(){return e.onFirstListenerAdd()},onLastListenerRemove:function(){return e.onLastListenerRemove()}})}Object.defineProperty(e.prototype,"event",{get:function(){return this.emitter.event},enumerable:!0,configurable:!0}),e.prototype.add=function(e){var t=this,n={event:e,listener:null};this.events.push(n),this.hasListeners&&this.hook(n);var r=function(){t.hasListeners&&t.unhook(n);var e=t.events.indexOf(n);t.events.splice(e,1)};return g(We(r))},e.prototype.onFirstListenerAdd=function(){var e=this;this.hasListeners=!0,this.events.forEach(function(t){return e.hook(t)})},e.prototype.onLastListenerRemove=function(){var e=this;this.hasListeners=!1,this.events.forEach(function(t){return e.unhook(t)})},e.prototype.hook=function(e){var t=this;e.listener=e.event(function(e){return t.emitter.fire(e)})},e.prototype.unhook=function(e){e.listener&&e.listener.dispose(),e.listener=null},e.prototype.dispose=function(){this.emitter.dispose()}}(),function(){function e(){this.buffers=[]}e.prototype.wrapEvent=function(e){var t=this;return function(n,r,i){return e(function(e){var i=t.buffers[t.buffers.length-1];i?i.push(function(){return n.call(r,e)}):n.call(r,e)},void 0,i)}},e.prototype.bufferEvents=function(e){var t=[];this.buffers.push(t);var n=e();return this.buffers.pop(),t.forEach(function(e){return e()}),n}}(),function(){function e(){var e=this;this.listening=!1,this.inputEvent=Be.None,this.inputEventListener=y.None,this.emitter=new Qe({onFirstListenerDidAdd:function(){e.listening=!0,e.inputEventListener=e.inputEvent(e.emitter.fire,e.emitter)},onLastListenerRemove:function(){e.listening=!1,e.inputEventListener.dispose()}}),this.event=this.emitter.event}Object.defineProperty(e.prototype,"input",{set:function(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this.inputEventListener.dispose(),this.emitter.dispose()}}(),Object.freeze(function(e,t){var n=setTimeout(e.bind(t),0);return{dispose:function(){clearTimeout(n)}}}));(function(e){function t(t){return t===e.None||t===e.Cancelled||(t instanceof et||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Be.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Xe})})(ze||(ze={}));var Ze,et=function(){function e(){this._isCancelled=!1,this._emitter=null}return e.prototype.cancel=function(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))},Object.defineProperty(e.prototype,"isCancellationRequested",{get:function(){return this._isCancelled},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCancellationRequested",{get:function(){return this._isCancelled?Xe:(this._emitter||(this._emitter=new Qe),this._emitter.event)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._emitter&&(this._emitter.dispose(),this._emitter=null)},e}(),tt=function(){function e(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token||(this._token=new et),this._token},enumerable:!0,configurable:!0}),e.prototype.cancel=function(){this._token?this._token instanceof et&&this._token.cancel():this._token=ze.Cancelled},e.prototype.dispose=function(){this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof et&&this._token.dispose():this._token=ze.None},e}(),nt=function(){function e(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}return e.prototype.define=function(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e},e.prototype.keyCodeToStr=function(e){return this._keyCodeToStr[e]},e.prototype.strToKeyCode=function(e){return this._strToKeyCode[e.toLowerCase()]||0},e}(),rt=new nt,it=new nt,ot=new nt;function at(e,t){var n=(65535&t)<<16>>>0;return(e|n)>>>0}(function(){function e(e,t,n,r){void 0===n&&(n=t),void 0===r&&(r=n),rt.define(e,t),it.define(e,n),ot.define(e,r)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")})(),function(e){function t(e){return rt.keyCodeToStr(e)}function n(e){return rt.strToKeyCode(e)}function r(e){return it.keyCodeToStr(e)}function i(e){return ot.keyCodeToStr(e)}function o(e){return it.strToKeyCode(e)||ot.strToKeyCode(e)}e.toString=t,e.fromString=n,e.toUserSettingsUS=r,e.toUserSettingsGeneral=i,e.fromUserSettings=o}(Ze||(Ze={}));(function(){function e(e,t,n,r,i){this.ctrlKey=e,this.shiftKey=t,this.altKey=n,this.metaKey=r,this.keyCode=i}e.prototype.equals=function(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode},e.prototype.isModifierKey=function(){return 0===this.keyCode||5===this.keyCode||57===this.keyCode||6===this.keyCode||4===this.keyCode},e.prototype.toChord=function(){return new Ft([this])},e.prototype.isDuplicateModifierCase=function(){return this.ctrlKey&&5===this.keyCode||this.shiftKey&&4===this.keyCode||this.altKey&&6===this.keyCode||this.metaKey&&57===this.keyCode}})();var st,ut,ct,lt,ft,ht,dt,pt,mt,gt,vt,yt,bt,_t,Ct,St,Et,wt,xt,Nt,At,Lt,kt,Tt,Ot,Pt,It,Mt,Rt,jt,Ft=function(){function e(e){if(0===e.length)throw c("parts");this.parts=e}return e.prototype.equals=function(e){if(null===e)return!1;if(this.parts.length!==e.parts.length)return!1;for(var t=0;t "+this.positionLineNumber+","+this.positionColumn+"]"},t.prototype.equalsSelection=function(e){return t.selectionsEqual(this,e)},t.selectionsEqual=function(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn},t.prototype.getDirection=function(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1},t.prototype.setEndPosition=function(e,n){return 0===this.getDirection()?new t(this.startLineNumber,this.startColumn,e,n):new t(e,n,this.startLineNumber,this.startColumn)},t.prototype.getPosition=function(){return new ue(this.positionLineNumber,this.positionColumn)},t.prototype.setStartPosition=function(e,n){return 0===this.getDirection()?new t(e,n,this.endLineNumber,this.endColumn):new t(this.endLineNumber,this.endColumn,e,n)},t.fromPositions=function(e,n){return void 0===n&&(n=e),new t(e.lineNumber,e.column,n.lineNumber,n.column)},t.liftSelection=function(e){return new t(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)},t.selectionsArrEqual=function(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(var n=0,r=e.length;n=r._lines.length?U:(n=r._lines[i],a=r._wordenize(n,e),o=0,i+=1,s())};return{next:s}},t.prototype.getLineWords=function(e,t){for(var n=this._lines[e-1],r=this._wordenize(n,t),i=[],o=0,a=r;othis._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,r=!0;else{var i=this._lines[t-1].length+1;n<1?(n=1,r=!0):n>i&&(n=i,r=!0)}return r?{lineNumber:t,column:n}:e},t}(Ne),$t=function(){function e(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}return e.prototype.dispose=function(){this._models=Object.create(null)},e.prototype._getModel=function(e){return this._models[e]},e.prototype._getModels=function(){var e=this,t=[];return Object.keys(this._models).forEach(function(n){return t.push(e._models[n])}),t},e.prototype.acceptNewModel=function(e){this._models[e.url]=new Bt(ee.parse(e.url),e.lines,e.EOL,e.versionId)},e.prototype.acceptModelChanged=function(e,t){if(this._models[e]){var n=this._models[e];n.onEvents(t)}},e.prototype.acceptRemovedModel=function(e){this._models[e]&&delete this._models[e]},e.prototype.computeDiff=function(e,t,n){var r=this._getModel(e),i=this._getModel(t);if(!r||!i)return Promise.resolve(null);var o=r.getLinesContent(),a=i.getLinesContent(),s=new _e(o,a,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0}),u=s.computeDiff(),c=!(u.length>0)&&this._modelsAreIdentical(r,i);return Promise.resolve({identical:c,changes:u})},e.prototype._modelsAreIdentical=function(e,t){var n=e.getLineCount(),r=t.getLineCount();if(n!==r)return!1;for(var i=1;i<=n;i++){var o=e.getLineContent(i),a=t.getLineContent(i);if(o!==a)return!1}return!0},e.prototype.computeMoreMinimalEdits=function(t,n){var r=this._getModel(t);if(!r)return Promise.resolve(n);var i=[],o=void 0;n=A(n,function(e,t){if(e.range&&t.range)return ce.compareRangesUsingStarts(e.range,t.range);var n=e.range?0:1,r=t.range?0:1;return n-r});for(var a=0,s=n;ae._diffLimit)i.push({range:c,text:l});else for(var d=P(h,l,!1),p=r.offsetAt(ce.lift(c).getStartPosition()),m=0,g=d;m0&&(i.arguments=n),i}function n(e){var t=e;return Wn.defined(t)&&Wn.string(t.title)&&Wn.string(t.command)}e.create=t,e.is=n}(an||(an={})),function(e){function t(e,t){return{range:e,newText:t}}function n(e,t){return{range:{start:e,end:e},newText:t}}function r(e){return{range:e,newText:""}}function i(e){var t=e;return Wn.objectLiteral(t)&&Wn.string(t.newText)&&Ht.is(t.range)}e.replace=t,e.insert=n,e.del=r,e.is=i}(sn||(sn={})),function(e){function t(e,t){return{textDocument:e,edits:t}}function n(e){var t=e;return Wn.defined(t)&&gn.is(t.textDocument)&&Array.isArray(t.edits)}e.create=t,e.is=n}(un||(un={})),function(e){function t(e,t){var n={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(n.options=t),n}function n(e){var t=e;return t&&"create"===t.kind&&Wn.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Wn.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Wn.boolean(t.options.ignoreIfExists)))}e.create=t,e.is=n}(cn||(cn={})),function(e){function t(e,t,n){var r={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(r.options=n),r}function n(e){var t=e;return t&&"rename"===t.kind&&Wn.string(t.oldUri)&&Wn.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Wn.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Wn.boolean(t.options.ignoreIfExists)))}e.create=t,e.is=n}(ln||(ln={})),function(e){function t(e,t){var n={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(n.options=t),n}function n(e){var t=e;return t&&"delete"===t.kind&&Wn.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Wn.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Wn.boolean(t.options.ignoreIfNotExists)))}e.create=t,e.is=n}(fn||(fn={})),function(e){function t(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(function(e){return Wn.string(e.kind)?cn.is(e)||ln.is(e)||fn.is(e):un.is(e)}))}e.is=t}(hn||(hn={}));var mn,gn,vn,yn,bn,_n,Cn,Sn,En,wn,xn,Nn,An,Ln,kn,Tn,On,Pn=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,t){this.edits.push(sn.insert(e,t))},e.prototype.replace=function(e,t){this.edits.push(sn.replace(e,t))},e.prototype.delete=function(e){this.edits.push(sn.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();(function(){function e(e){var t=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach(function(e){if(un.is(e)){var n=new Pn(e.edits);t._textEditChanges[e.textDocument.uri]=n}}):e.changes&&Object.keys(e.changes).forEach(function(n){var r=new Pn(e.changes[n]);t._textEditChanges[n]=r}))}Object.defineProperty(e.prototype,"edit",{get:function(){return this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(gn.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t=e,n=this._textEditChanges[t.uri];if(!n){var r=[],i={textDocument:t,edits:r};this._workspaceEdit.documentChanges.push(i),n=new Pn(r),this._textEditChanges[t.uri]=n}return n}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");n=this._textEditChanges[e];if(!n){r=[];this._workspaceEdit.changes[e]=r,n=new Pn(r),this._textEditChanges[e]=n}return n},e.prototype.createFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(cn.create(e,t))},e.prototype.renameFile=function(e,t,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(ln.create(e,t,n))},e.prototype.deleteFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(fn.create(e,t))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}})();(function(e){function t(e){return{uri:e}}function n(e){var t=e;return Wn.defined(t)&&Wn.string(t.uri)}e.create=t,e.is=n})(mn||(mn={})),function(e){function t(e,t){return{uri:e,version:t}}function n(e){var t=e;return Wn.defined(t)&&Wn.string(t.uri)&&(null===t.version||Wn.number(t.version))}e.create=t,e.is=n}(gn||(gn={})),function(e){function t(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}}function n(e){var t=e;return Wn.defined(t)&&Wn.string(t.uri)&&Wn.string(t.languageId)&&Wn.number(t.version)&&Wn.string(t.text)}e.create=t,e.is=n}(vn||(vn={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(yn||(yn={})),function(e){function t(t){var n=t;return n===e.PlainText||n===e.Markdown}e.is=t}(yn||(yn={})),function(e){function t(e){var t=e;return Wn.objectLiteral(e)&&yn.is(t.kind)&&Wn.string(t.value)}e.is=t}(bn||(bn={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(_n||(_n={})),function(e){e.PlainText=1,e.Snippet=2}(Cn||(Cn={})),function(e){function t(e){return{label:e}}e.create=t}(Sn||(Sn={})),function(e){function t(e,t){return{items:e||[],isIncomplete:!!t}}e.create=t}(En||(En={})),function(e){function t(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}function n(e){var t=e;return Wn.string(t)||Wn.objectLiteral(t)&&Wn.string(t.language)&&Wn.string(t.value)}e.fromPlainText=t,e.is=n}(wn||(wn={})),function(e){function t(e){var t=e;return!!t&&Wn.objectLiteral(t)&&(bn.is(t.contents)||wn.is(t.contents)||Wn.typedArray(t.contents,wn.is))&&(void 0===e.range||Ht.is(e.range))}e.is=t}(xn||(xn={})),function(e){function t(e,t){return t?{label:e,documentation:t}:{label:e}}e.create=t}(Nn||(Nn={})),function(e){function t(e,t){for(var n=[],r=2;r=0;a--){var s=r[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");n=n.substring(0,u)+s.newText+n.substring(c,n.length),o=u}return n}function i(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),o=e.slice(n);i(r,t),i(o,t);var a=0,s=0,u=0;while(a0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return Yt.create(0,e);while(ne?r=i:n=i+1}var o=n-1;return Yt.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1=48&&a<=57)o=16*o+a-48;else if(a>=65&&a<=70)o=16*o+a-65+10;else{if(!(a>=97&&a<=102))break;o=16*o+a-97+10}n++,i++}return i=r){t+=e.substring(i,n),f=2;break}var o=e.charCodeAt(n);if(34===o){t+=e.substring(i,n),n++;break}if(92!==o){if(o>=0&&o<=31){if(zn(o)){t+=e.substring(i,n),f=2;break}f=6}n++}else{if(t+=e.substring(i,n),n++,n>=r){f=2;break}switch(o=e.charCodeAt(n++),o){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var a=h(4,!0);a>=0?t+=String.fromCharCode(a):f=4;break;default:f=5}i=n}}return t}function g(){if(i="",f=0,o=n,u=s,l=c,n>=r)return o=r,a=17;var t=e.charCodeAt(n);if(Hn(t)){do{n++,i+=String.fromCharCode(t),t=e.charCodeAt(n)}while(Hn(t));return a=15}if(zn(t))return n++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,i+="\n"),s++,c=n,a=14;switch(t){case 123:return n++,a=1;case 125:return n++,a=2;case 91:return n++,a=3;case 93:return n++,a=4;case 58:return n++,a=6;case 44:return n++,a=5;case 34:return n++,i=m(),a=10;case 47:var h=n-1;if(47===e.charCodeAt(n+1)){n+=2;while(n=12&&e<=15);return e}return{setPosition:d,getPosition:function(){return n},scan:t?y:g,getToken:function(){return a},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return n-o},getTokenStartLine:function(){return u},getTokenStartCharacter:function(){return o-l},getTokenError:function(){return f}}}function Hn(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function zn(e){return 10===e||13===e||8232===e||8233===e}function Gn(e){return e>=48&&e<=57}function Jn(e,t,n){var r,i,o,a,s;if(t){a=t.offset,s=a+t.length,o=a;while(o>0&&!er(e,o-1))o--;var u=s;while(ua&&e.substring(n,r)!==t&&v.push({offset:n,length:r-n,content:t})}var b=g();if(17!==b){var _=d.getTokenOffset()+o,C=Qn(c,r);y(C,o,_)}while(17!==b){var S=d.getTokenOffset()+d.getTokenLength()+o,E=g(),w="";while(!f&&(12===E||13===E)){var x=d.getTokenOffset()+o;y(" ",S,x),S=d.getTokenOffset()+d.getTokenLength()+o,w=12===E?m():"",E=g()}if(2===E)1!==b&&(h--,w=m());else if(4===E)3!==b&&(h--,w=m());else{switch(b){case 3:case 1:h++,w=m();break;case 5:case 12:w=m();break;case 13:w=f?m():" ";break;case 6:w=" ";break;case 10:if(6===E){w="";break}case 7:case 8:case 9:case 11:case 2:case 4:12===E||13===E?w=" ":5!==E&&17!==E&&(p=!0);break;case 16:p=!0;break}!f||12!==E&&13!==E||(w=m())}var N=d.getTokenOffset()+o;y(w,S,N),b=E}return v}function Qn(e,t){for(var n="",r=0;r=e.offset&&t0){var i=r.getToken();while(17!==i){if(-1!==t.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}}function b(e){var t=r.getTokenValue();return e?f(t):s(t),v(),!0}function _(){switch(r.getToken()){case 11:var e=0;try{e=JSON.parse(r.getTokenValue()),"number"!==typeof e&&(y(2),e=0)}catch(t){y(2)}f(e);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return v(),!0}function C(){return 10!==r.getToken()?(y(3,[],[2,5]),!1):(b(!1),6===r.getToken()?(h(":"),v(),w()||y(4,[],[2,5])):y(5,[],[2,5]),!0)}function S(){a(),v();var e=!1;while(2!==r.getToken()&&17!==r.getToken()){if(5===r.getToken()){if(e||y(4,[],[]),h(","),v(),2===r.getToken()&&g)break}else e&&y(6,[],[]);C()||y(4,[],[2,5]),e=!0}return u(),2!==r.getToken()?y(7,[2],[]):v(),!0}function E(){c(),v();var e=!1;while(4!==r.getToken()&&17!==r.getToken()){if(5===r.getToken()){if(e||y(4,[],[]),h(","),v(),4===r.getToken()&&g)break}else e&&y(6,[],[]);w()||y(4,[],[4,5]),e=!0}return l(),4!==r.getToken()?y(8,[4],[]):v(),!0}function w(){switch(r.getToken()){case 3:return E();case 1:return S();case 10:return b(!0);default:return _()}}return v(),17===r.getToken()||(w()?(17!==r.getToken()&&y(9,[],[]),!0):(y(4,[],[]),!1))}(function(e){var t=Object.prototype.toString;function n(e){return"undefined"!==typeof e}function r(e){return"undefined"===typeof e}function i(e){return!0===e||!1===e}function o(e){return"[object String]"===t.call(e)}function a(e){return"[object Number]"===t.call(e)}function s(e){return"[object Function]"===t.call(e)}function u(e){return null!==e&&"object"===typeof e}function c(e,t){return Array.isArray(e)&&e.every(t)}e.defined=n,e.undefined=r,e.boolean=i,e.string=o,e.number=a,e.func=s,e.objectLiteral=u,e.typedArray=c})(Wn||(Wn={})),function(e){e.DEFAULT={allowTrailingComma:!1}}(Bn||(Bn={}));var sr,ur,cr=Yn,lr=tr,fr=or,hr=nr,dr=rr;function pr(e,t,n){return Jn(e,t,n)}function mr(e,t){if(e===t)return!0;if(null===e||void 0===e||null===t||void 0===t)return!1;if(typeof e!==typeof t)return!1;if("object"!==typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;var n,r;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;n()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/}},Ar=function(){function e(e,t,n){this.offset=t,this.length=n,this.parent=e}return Object.defineProperty(e.prototype,"children",{get:function(){return[]},enumerable:!0,configurable:!0}),e.prototype.toString=function(){return"type: "+this.type+" ("+this.offset+"/"+this.length+")"+(this.parent?" parent: {"+this.parent.toString()+"}":"")},e}(),Lr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="null",r.value=null,r}return wr(t,e),t}(Ar),kr=function(e){function t(t,n,r){var i=e.call(this,t,r)||this;return i.type="boolean",i.value=n,i}return wr(t,e),t}(Ar),Tr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="array",r.items=[],r}return wr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.items},enumerable:!0,configurable:!0}),t}(Ar),Or=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="number",r.isInteger=!0,r.value=Number.NaN,r}return wr(t,e),t}(Ar),Pr=function(e){function t(t,n,r){var i=e.call(this,t,n,r)||this;return i.type="string",i.value="",i}return wr(t,e),t}(Ar),Ir=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="property",r.colonOffset=-1,r}return wr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!0,configurable:!0}),t}(Ar),Mr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="object",r.properties=[],r}return wr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.properties},enumerable:!0,configurable:!0}),t}(Ar);function Rr(e){return yr(e)?e?{}:{not:{}}:e}(function(e){e[e["Key"]=0]="Key",e[e["Enum"]=1]="Enum"})(Er||(Er={}));var jr=function(){function e(e,t){void 0===e&&(e=-1),void 0===t&&(t=null),this.focusOffset=e,this.exclude=t,this.schemas=[]}return e.prototype.add=function(e){this.schemas.push(e)},e.prototype.merge=function(e){var t;(t=this.schemas).push.apply(t,e.schemas)},e.prototype.include=function(e){return(-1===this.focusOffset||Kr(e,this.focusOffset))&&e!==this.exclude},e.prototype.newSub=function(){return new e(-1,this.exclude)},e}(),Fr=function(){function e(){}return Object.defineProperty(e.prototype,"schemas",{get:function(){return[]},enumerable:!0,configurable:!0}),e.prototype.add=function(e){},e.prototype.merge=function(e){},e.prototype.include=function(e){return!0},e.prototype.newSub=function(){return this},e.instance=new e,e}(),Vr=function(){function e(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=null}return e.prototype.hasProblems=function(){return!!this.problems.length},e.prototype.mergeAll=function(e){for(var t=0,n=e;t=e.offset&&t0?a={schema:l,validationResult:f,matchingSchemas:h}:0===d&&(a.matchingSchemas.merge(h),a.validationResult.mergeEnumValues(f))}else a.matchingSchemas.merge(h),a.validationResult.propertiesMatches+=f.propertiesMatches,a.validationResult.propertiesValueMatches+=f.propertiesValueMatches;else a={schema:l,validationResult:f,matchingSchemas:h}}return o.length>1&&i&&n.problems.push({location:{offset:e.offset,length:1},severity:nn.Warning,message:xr("oneOfWarning","Matches multiple schemas when only one must validate.")}),null!==a&&(n.merge(a.validationResult),n.propertiesMatches+=a.validationResult.propertiesMatches,n.propertiesValueMatches+=a.validationResult.propertiesValueMatches,r.merge(a.matchingSchemas)),o.length};Array.isArray(t.anyOf)&&p(t.anyOf,!1),Array.isArray(t.oneOf)&&p(t.oneOf,!0);var m=function(t){var i=new Vr,o=r.newSub();Br(e,Rr(t),i,o),n.merge(i),n.propertiesMatches+=i.propertiesMatches,n.propertiesValueMatches+=i.propertiesValueMatches,r.merge(o)},g=function(t,n,i){var o=Rr(t),a=new Vr,s=r.newSub();Br(e,o,a,s),r.merge(s),a.hasProblems()?i&&m(i):n&&m(n)},v=Rr(t.if);if(v&&g(v,Rr(t.then),Rr(t.else)),Array.isArray(t.enum)){for(var y=Ur(e),b=!1,_=0,C=t.enum;_=u&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("exclusiveMaximumWarning","Value is above the exclusive maximum of {0}.",u)});var c=a(t.minimum,t.exclusiveMinimum);gr(c)&&il&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("maximumWarning","Value is above the maximum of {0}.",l)})}function a(e,t,n,r){if(gr(t.minLength)&&e.value.lengtht.maxLength&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("maxLengthWarning","String is longer than the maximum length of {0}.",t.maxLength)}),br(t.pattern)){var i=new RegExp(t.pattern);i.test(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:t.patternErrorMessage||t.errorMessage||xr("patternWarning",'String does not match the pattern of "{0}".',t.pattern)})}if(t.format)switch(t.format){case"uri":case"uri-reference":var o=void 0;if(e.value){var a=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(e.value);a?a[2]||"uri"!==t.format||(o=xr("uriSchemeMissing","URI with a scheme is expected.")):o=xr("uriMissing","URI is expected.")}else o=xr("uriEmpty","URI expected.");o&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:t.patternErrorMessage||t.errorMessage||xr("uriFormatWarning","String is not a URI: {0}",o)});break;case"color-hex":case"date-time":case"date":case"time":case"email":var s=Nr[t.format];e.value&&s.pattern.exec(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:t.patternErrorMessage||t.errorMessage||s.errorMessage});default:}}function s(e,t,n,r){if(Array.isArray(t.items)){for(var i=t.items,o=0;o=i.length&&n.propertiesValueMatches++}if(e.items.length>i.length)if("object"===typeof t.additionalItems)for(var l=i.length;lt.maxItems&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("maxItemsWarning","Array has too many items. Expected {0} or fewer.",t.maxItems)}),!0===t.uniqueItems){var g=Ur(e),v=g.some(function(e,t){return t!==g.lastIndexOf(e)});v&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("uniqueItemsWarning","Array has duplicate items.")})}}function u(e,t,n,r){for(var i=Object.create(null),o=[],a=0,s=e.properties;a=0)o.splice(t,1),t=o.indexOf(e)};if(t.properties)for(var g=0,v=Object.keys(t.properties);g0)for(var k=0,T=o;kt.maxProperties&&n.problems.push({location:{offset:e.offset,length:e.length},severity:nn.Warning,message:xr("MaxPropWarning","Object has more properties than limit of {0}.",t.maxProperties)}),gr(t.minProperties)&&e.properties.length0){c--;while(c>0&&/\s/.test(i.charAt(c)))c--;l=c+1}if(u(e,t,c,l),n&&f(n,!1),r.length+a.length>0){var h=o.getToken();while(17!==h){if(-1!==r.indexOf(h)){s();break}if(-1!==a.indexOf(h))break;h=s()}}return n}function l(){switch(o.getTokenError()){case 4:return c(xr("InvalidUnicode","Invalid unicode sequence in string."),sr.InvalidUnicode),!0;case 5:return c(xr("InvalidEscapeCharacter","Invalid escape character in string."),sr.InvalidEscapeCharacter),!0;case 3:return c(xr("UnexpectedEndOfNumber","Unexpected end of number."),sr.UnexpectedEndOfNumber),!0;case 1:return c(xr("UnexpectedEndOfComment","Unexpected end of comment."),sr.UnexpectedEndOfComment),!0;case 2:return c(xr("UnexpectedEndOfString","Unexpected end of string."),sr.UnexpectedEndOfString),!0;case 6:return c(xr("InvalidCharacter","Invalid characters in string. Control characters must be escaped."),sr.InvalidCharacter),!0}return!1}function f(e,t){return e.length=o.getTokenOffset()+o.getTokenLength()-e.offset,t&&s(),e}function h(e){if(3!==o.getToken())return null;var t=new Tr(e,o.getTokenOffset());s();var n=0,r=!1;while(4!==o.getToken()&&17!==o.getToken()){if(5===o.getToken()){r||c(xr("ValueExpected","Value expected"),sr.ValueExpected);var i=o.getTokenOffset();if(s(),4===o.getToken()){r&&u(xr("TrailingComma","Trailing comma"),sr.TrailingComma,i,i+1);continue}}else r&&c(xr("ExpectedComma","Expected comma"),sr.CommaExpected);var a=y(t,n++);a?t.items.push(a):c(xr("PropertyExpected","Value expected"),sr.ValueExpected,null,[],[4,5]),r=!0}return 4!==o.getToken()?c(xr("ExpectedCloseBracket","Expected comma or closing bracket"),sr.CommaOrCloseBacketExpected,t):f(t,!0)}function d(t,n){var r=new Ir(t,o.getTokenOffset()),i=m(r);if(!i){if(16!==o.getToken())return null;c(xr("DoubleQuotesExpected","Property keys must be doublequoted"),sr.Undefined);var a=new Pr(r,o.getTokenOffset(),o.getTokenLength());a.value=o.getTokenValue(),i=a,s()}r.keyNode=i;var l=n[i.value];if(l?(u(xr("DuplicateKeyWarning","Duplicate object key"),sr.DuplicateKey,r.keyNode.offset,r.keyNode.offset+r.keyNode.length,nn.Warning),"object"===typeof l&&u(xr("DuplicateKeyWarning","Duplicate object key"),sr.DuplicateKey,l.keyNode.offset,l.keyNode.offset+l.keyNode.length,nn.Warning),n[i.value]=!0):n[i.value]=r,6===o.getToken())r.colonOffset=o.getTokenOffset(),s();else if(c(xr("ColonExpected","Colon expected"),sr.ColonExpected),10===o.getToken()&&e.positionAt(i.offset+i.length).line0?e.lastIndexOf(t)===n:0===n&&e===t}function Gr(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}var Jr=Sr(),Qr=function(){function e(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=Promise),void 0===r&&(r={}),this.schemaService=e,this.contributions=t,this.promiseConstructor=n,this.clientCapabilities=r,this.templateVarIdCounter=0}return e.prototype.doResolve=function(e){for(var t=this.contributions.length-1;t>=0;t--)if(this.contributions[t].resolveCompletion){var n=this.contributions[t].resolveCompletion(e);if(n)return n}return this.promiseConstructor.resolve(e)},e.prototype.doComplete=function(e,t,n){var r=this,i={items:[],isIncomplete:!1},o=e.offsetAt(t),a=n.getNodeFromOffset(o,!0);if(this.isInComment(e,a?a.offset:0,o))return Promise.resolve(i);var s=this.getCurrentWord(e,o),u=null;if(!a||"string"!==a.type&&"number"!==a.type&&"boolean"!==a.type&&"null"!==a.type){var c=o-s.length;c>0&&'"'===e.getText()[c-1]&&c--,u=Ht.create(e.positionAt(c),t)}else u=Ht.create(e.positionAt(a.offset),e.positionAt(a.offset+a.length));var l={},f={add:function(e){var t=l[e.label];t?t.documentation||(t.documentation=e.documentation):(l[e.label]=e,u&&(e.textEdit=sn.replace(u,e.insertText)),i.items.push(e))},setAsIncomplete:function(){i.isIncomplete=!0},error:function(e){console.error(e)},log:function(e){console.log(e)},getNumberOfProposals:function(){return i.items.length}};return this.schemaService.getSchemaForResource(e.uri,n).then(function(t){var c=[],h=!0,d="",p=null;if(a&&"string"===a.type){var m=a.parent;m&&"property"===m.type&&m.keyNode===a&&(h=!m.valueNode,p=m,d=e.getText().substr(a.offset+1,a.length-2),m&&(a=m.parent))}if(a&&"object"===a.type){if(a.offset===o)return i;var g=a.properties;g.forEach(function(e){p&&p===e||(l[e.keyNode.value]=Sn.create("__"))});var v="";h&&(v=r.evaluateSeparatorAfter(e,e.offsetAt(u.end))),t?r.getPropertyCompletions(t,n,a,h,v,f):r.getSchemaLessPropertyCompletions(n,a,d,f);var y=qr(a);r.contributions.forEach(function(t){var n=t.collectPropertyCompletions(e.uri,y,s,h,""===v,f);n&&c.push(n)}),!t&&s.length>0&&'"'!==e.getText().charAt(o-s.length-1)&&(f.add({kind:_n.Property,label:r.getLabelForValue(s),insertText:r.getInsertTextForProperty(s,null,!1,v),insertTextFormat:Cn.Snippet,documentation:""}),f.setAsIncomplete())}var b={};return t?r.getValueCompletions(t,n,a,o,e,f,b):r.getSchemaLessValueCompletions(n,a,o,e,f),r.contributions.length>0&&r.getContributedValueCompletions(n,a,o,e,f,c),r.promiseConstructor.all(c).then(function(){if(0===f.getNumberOfProposals()){var t=o;!a||"string"!==a.type&&"number"!==a.type&&"boolean"!==a.type&&"null"!==a.type||(t=a.offset+a.length);var n=r.evaluateSeparatorAfter(e,t);r.addFillerValueCompletions(b,n,f)}return i})})},e.prototype.getPropertyCompletions=function(e,t,n,r,i,o){var a=this,s=t.getMatchingSchemas(e.schema,n.offset);s.forEach(function(e){if(e.node===n&&!e.inverted){var t=e.schema.properties;t&&Object.keys(t).forEach(function(e){var n=t[e];if("object"===typeof n&&!n.deprecationMessage&&!n.doNotSuggest){var s={kind:_n.Property,label:a.sanitizeLabel(e),insertText:a.getInsertTextForProperty(e,n,r,i),insertTextFormat:Cn.Snippet,filterText:a.getFilterTextForValue(e),documentation:a.fromMarkup(n.markdownDescription)||n.description||""};zr(s.insertText,"$1"+i)&&(s.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(s)}})}})},e.prototype.getSchemaLessPropertyCompletions=function(e,t,n,r){var i=this,o=function(e){e.properties.forEach(function(e){var t=e.keyNode.value;r.add({kind:_n.Property,label:i.sanitizeLabel(t),insertText:i.getInsertTextForValue(t,""),insertTextFormat:Cn.Snippet,filterText:i.getFilterTextForValue(t),documentation:""})})};if(t.parent)if("property"===t.parent.type){var a=t.parent.keyNode.value;e.visit(function(e){return"property"===e.type&&e!==t.parent&&e.keyNode.value===a&&e.valueNode&&"object"===e.valueNode.type&&o(e.valueNode),!0})}else"array"===t.parent.type&&t.parent.items.forEach(function(e){"object"===e.type&&e!==t&&o(e)});else"object"===t.type&&r.add({kind:_n.Property,label:"$schema",insertText:this.getInsertTextForProperty("$schema",null,!0,""),insertTextFormat:Cn.Snippet,documentation:"",filterText:this.getFilterTextForValue("$schema")})},e.prototype.getSchemaLessValueCompletions=function(e,t,n,r,i){var o=this,a=n;if(!t||"string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(a=t.offset+t.length,t=t.parent),!t)return i.add({kind:this.getSuggestionKind("object"),label:"Empty object",insertText:this.getInsertTextForValue({},""),insertTextFormat:Cn.Snippet,documentation:""}),void i.add({kind:this.getSuggestionKind("array"),label:"Empty array",insertText:this.getInsertTextForValue([],""),insertTextFormat:Cn.Snippet,documentation:""});var s=this.evaluateSeparatorAfter(r,a),u=function(e){Kr(e.parent,n,!0)||i.add({kind:o.getSuggestionKind(e.type),label:o.getLabelTextForMatchingNode(e,r),insertText:o.getInsertTextForMatchingNode(e,r,s),insertTextFormat:Cn.Snippet,documentation:""}),"boolean"===e.type&&o.addBooleanValueCompletion(!e.value,s,i)};if("property"===t.type&&n>t.colonOffset){var c=t.valueNode;if(c&&(n>c.offset+c.length||"object"===c.type||"array"===c.type))return;var l=t.keyNode.value;e.visit(function(e){return"property"===e.type&&e.keyNode.value===l&&e.valueNode&&u(e.valueNode),!0}),"$schema"===l&&t.parent&&!t.parent.parent&&this.addDollarSchemaCompletions(s,i)}if("array"===t.type)if(t.parent&&"property"===t.parent.type){var f=t.parent.keyNode.value;e.visit(function(e){return"property"===e.type&&e.keyNode.value===f&&e.valueNode&&"array"===e.valueNode.type&&e.valueNode.items.forEach(u),!0})}else t.items.forEach(u)},e.prototype.getValueCompletions=function(e,t,n,r,i,o,a){var s=this,u=r,c=null,l=null;if(!n||"string"!==n.type&&"number"!==n.type&&"boolean"!==n.type&&"null"!==n.type||(u=n.offset+n.length,l=n,n=n.parent),n){if("property"===n.type&&r>n.colonOffset){var f=n.valueNode;if(f&&r>f.offset+f.length)return;c=n.keyNode.value,n=n.parent}if(n&&(null!==c||"array"===n.type)){var h=this.evaluateSeparatorAfter(i,u),d=t.getMatchingSchemas(e.schema,n.offset,l);d.forEach(function(e){if(e.node===n&&!e.inverted&&e.schema){if("array"===n.type&&e.schema.items)if(Array.isArray(e.schema.items)){var t=s.findItemAtOffset(n,i,r);tt.colonOffset){var a=t.keyNode.value,s=t.valueNode;if(!s||n<=s.offset+s.length){var u=qr(t.parent);this.contributions.forEach(function(e){var t=e.collectValueCompletions(r.uri,u,a,i);t&&o.push(t)})}}}else this.contributions.forEach(function(e){var t=e.collectDefaultCompletions(r.uri,i);t&&o.push(t)})},e.prototype.addSchemaValueCompletions=function(e,t,n,r){var i=this;"object"===typeof e&&(this.addEnumValueCompletions(e,t,n),this.addDefaultValueCompletions(e,t,n),this.collectTypes(e,r),Array.isArray(e.allOf)&&e.allOf.forEach(function(e){return i.addSchemaValueCompletions(e,t,n,r)}),Array.isArray(e.anyOf)&&e.anyOf.forEach(function(e){return i.addSchemaValueCompletions(e,t,n,r)}),Array.isArray(e.oneOf)&&e.oneOf.forEach(function(e){return i.addSchemaValueCompletions(e,t,n,r)}))},e.prototype.addDefaultValueCompletions=function(e,t,n,r){var i=this;void 0===r&&(r=0);var o=!1;if(vr(e.default)){for(var a=e.type,s=e.default,u=r;u>0;u--)s=[s],a="array";n.add({kind:this.getSuggestionKind(a),label:this.getLabelForValue(s),insertText:this.getInsertTextForValue(s,t),insertTextFormat:Cn.Snippet,detail:Jr("json.suggest.default","Default value")}),o=!0}Array.isArray(e.examples)&&e.examples.forEach(function(a){for(var s=e.type,u=a,c=r;c>0;c--)u=[u],s="array";n.add({kind:i.getSuggestionKind(s),label:i.getLabelForValue(u),insertText:i.getInsertTextForValue(u,t),insertTextFormat:Cn.Snippet}),o=!0}),Array.isArray(e.defaultSnippets)&&e.defaultSnippets.forEach(function(a){var s,u,c=e.type,l=a.body,f=a.label;if(vr(l)){e.type;for(var h=r;h>0;h--)l=[l],"array";s=i.getInsertTextForSnippetValue(l,t),u=i.getFilterTextForSnippetValue(l),f=f||i.getLabelForSnippetValue(l)}else if("string"===typeof a.bodyText){var d="",p="",m="";for(h=r;h>0;h--)d=d+m+"[\n",p=p+"\n"+m+"]",m+="\t",c="array";s=d+m+a.bodyText.split("\n").join("\n"+m)+p+t,f=f||i.sanitizeLabel(s),u=s.replace(/[\n]/g,"")}n.add({kind:i.getSuggestionKind(c),label:f,documentation:i.fromMarkup(a.markdownDescription)||a.description,insertText:s,insertTextFormat:Cn.Snippet,filterText:u}),o=!0}),o||"object"!==typeof e.items||Array.isArray(e.items)||this.addDefaultValueCompletions(e.items,t,n,r+1)},e.prototype.addEnumValueCompletions=function(e,t,n){if(vr(e.const)&&n.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(e.const),insertText:this.getInsertTextForValue(e.const,t),insertTextFormat:Cn.Snippet,documentation:this.fromMarkup(e.markdownDescription)||e.description}),Array.isArray(e.enum))for(var r=0,i=e.enum.length;r57&&(e=e.substr(0,57).trim()+"..."),e},e.prototype.getLabelForValue=function(e){return this.sanitizeLabel(JSON.stringify(e))},e.prototype.getFilterTextForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getLabelForSnippetValue=function(e){var t=JSON.stringify(e);return t=t.replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1"),this.sanitizeLabel(t)},e.prototype.getInsertTextForPlainText=function(e){return e.replace(/[\\\$\}]/g,"\\$&")},e.prototype.getInsertTextForValue=function(e,t){var n=JSON.stringify(e,null,"\t");return"{}"===n?"{$1}"+t:"[]"===n?"[$1]"+t:this.getInsertTextForPlainText(n+t)},e.prototype.getInsertTextForSnippetValue=function(e,t){var n=function(e){return"string"===typeof e&&"^"===e[0]?e.substr(1):JSON.stringify(e)};return Yr(e,"",n)+t},e.prototype.getInsertTextForGuessedValue=function(e,t){switch(typeof e){case"object":return null===e?"${1:null}"+t:this.getInsertTextForValue(e,t);case"string":var n=JSON.stringify(e);return n=n.substr(1,n.length-2),n=this.getInsertTextForPlainText(n),'"${1:'+n+'}"'+t;case"number":case"boolean":return"${1:"+JSON.stringify(e)+"}"+t}return this.getInsertTextForValue(e,t)},e.prototype.getSuggestionKind=function(e){if(Array.isArray(e)){var t=e;e=t.length>0?t[0]:null}if(!e)return _n.Value;switch(e){case"string":return _n.Value;case"object":return _n.Module;case"property":return _n.Property;default:return _n.Value}},e.prototype.getLabelTextForMatchingNode=function(e,t){switch(e.type){case"array":return"[]";case"object":return"{}";default:var n=t.getText().substr(e.offset,e.length);return n}},e.prototype.getInsertTextForMatchingNode=function(e,t,n){switch(e.type){case"array":return this.getInsertTextForValue([],n);case"object":return this.getInsertTextForValue({},n);default:var r=t.getText().substr(e.offset,e.length)+n;return this.getInsertTextForPlainText(r)}},e.prototype.getInsertTextForProperty=function(e,t,n,r){var i=this.getInsertTextForValue(e,"");if(!n)return i;var o,a=i+": ",s=0;if(t){if(Array.isArray(t.defaultSnippets)){if(1===t.defaultSnippets.length){var u=t.defaultSnippets[0].body;vr(u)&&(o=this.getInsertTextForSnippetValue(u,""))}s+=t.defaultSnippets.length}if(t.enum&&(o||1!==t.enum.length||(o=this.getInsertTextForGuessedValue(t.enum[0],"")),s+=t.enum.length),vr(t.default)&&(o||(o=this.getInsertTextForGuessedValue(t.default,"")),s++),0===s){var c=Array.isArray(t.type)?t.type[0]:t.type;switch(c||(t.properties?c="object":t.items&&(c="array")),c){case"boolean":o="$1";break;case"string":o='"$1"';break;case"object":o="{$1}";break;case"array":o="[$1]";break;case"number":case"integer":o="${1:0}";break;case"null":o="${1:null}";break;default:return i}}}return(!o||s>1)&&(o="$1"),a+o+r},e.prototype.getCurrentWord=function(e,t){var n=t-1,r=e.getText();while(n>=0&&-1===' \t\n\r\v":{[,]}'.indexOf(r.charAt(n)))n--;return r.substring(n+1,t)},e.prototype.evaluateSeparatorAfter=function(e,t){var n=cr(e.getText(),!0);n.setPosition(t);var r=n.scan();switch(r){case 5:case 2:case 4:case 17:return"";default:return","}},e.prototype.findItemAtOffset=function(e,t,n){for(var r=cr(t.getText(),!0),i=e.items,o=i.length-1;o>=0;o--){var a=i[o];if(n>a.offset+a.length){r.setPosition(a.offset+a.length);var s=r.scan();return 5===s&&n>=r.getTokenOffset()+r.getTokenLength()?o+1:o}if(n>=a.offset)return o}return 0},e.prototype.isInComment=function(e,t,n){var r=cr(e.getText(),!1);r.setPosition(t);var i=r.scan();while(17!==i&&r.getTokenOffset()+r.getTokenLength()i.offset+1&&r=0;l--){var f=this.contributions[l],h=f.getInfoContribution(e.uri,c);if(h)return h.then(function(e){return u(e)})}return this.schemaService.getSchemaForResource(e.uri,n).then(function(e){if(e){var t=n.getMatchingSchemas(e.schema,i.offset),r=null,o=null,a=null,s=null;t.every(function(e){if(e.node===i&&!e.inverted&&e.schema&&(r=r||e.schema.title,o=o||e.schema.markdownDescription||Zr(e.schema.description),e.schema.enum)){var t=e.schema.enum.indexOf(Ur(i));e.schema.markdownEnumDescriptions?a=e.schema.markdownEnumDescriptions[t]:e.schema.enumDescriptions&&(a=Zr(e.schema.enumDescriptions[t])),a&&(s=e.schema.enum[t],"string"!==typeof s&&(s=JSON.stringify(s)))}return!0});var c="";return r&&(c=Zr(r)),o&&(c.length>0&&(c+="\n\n"),c+=o),a&&(c.length>0&&(c+="\n\n"),c+="`"+ei(s)+"`: "+a),u([c])}return null})},e}();function Zr(e){if(e){var t=e.replace(/([^\n\r])(\r?\n)([^\n\r])/gm,"$1\n\n$3");return t.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}}function ei(e){return-1!==e.indexOf("`")?"`` "+e+" ``":e}var ti=n("c623"),ni=Sr(),ri=function(){function e(e){try{this.patternRegExp=new RegExp(Gr(e)+"$")}catch(t){this.patternRegExp=null}this.schemas=[]}return e.prototype.addSchema=function(e){this.schemas.push(e)},e.prototype.matchesPattern=function(e){return this.patternRegExp&&this.patternRegExp.test(e)},e.prototype.getSchemas=function(){return this.schemas},e}(),ii=function(){function e(e,t,n){this.service=e,this.url=t,this.dependencies={},n&&(this.unresolvedSchema=this.service.promise.resolve(new oi(n)))}return e.prototype.getUnresolvedSchema=function(){return this.unresolvedSchema||(this.unresolvedSchema=this.service.loadSchema(this.url)),this.unresolvedSchema},e.prototype.getResolvedSchema=function(){var e=this;return this.resolvedSchema||(this.resolvedSchema=this.getUnresolvedSchema().then(function(t){return e.service.resolveSchemaContent(t,e.url,e.dependencies)})),this.resolvedSchema},e.prototype.clearSchema=function(){this.resolvedSchema=null,this.unresolvedSchema=null,this.dependencies={}},e}(),oi=function(){function e(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t}return e}(),ai=function(){function e(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t}return e.prototype.getSection=function(e){return Rr(this.getSectionRecursive(e,this.schema))},e.prototype.getSectionRecursive=function(e,t){if(!t||"boolean"===typeof t||0===e.length)return t;var n=e.shift();if(t.properties&&(t.properties[n],1))return this.getSectionRecursive(e,t.properties[n]);if(t.patternProperties)for(var r=0,i=Object.keys(t.patternProperties);r0)this.callOnDispose.pop()()},e.prototype.onResourceChange=function(e){var t=this,n=!1;e=this.normalizeId(e);var r=[e],i=Object.keys(this.schemasById).map(function(e){return t.schemasById[e]});while(r.length)for(var o=r.pop(),a=0;a1&&(t=n[1]),new oi({},[t])})},e.prototype.resolveSchemaContent=function(e,t,n){var r=this,i=e.errors.slice(0),o=e.schema,a=this.contextService,s=function(e,t){if(!t)return e;var n=e;return"/"===t[0]&&(t=t.substr(1)),t.split("/").some(function(e){return n=n[e],!n}),n},u=function(e,t,n,r){var o=s(t,r);if(o)for(var a in o)o.hasOwnProperty(a)&&!e.hasOwnProperty(a)&&(e[a]=o[a]);else i.push(ni("json.schema.invalidref","$ref '{0}' in '{1}' can not be resolved.",r,n))},c=function(e,t,n,o,s){a&&!/^\w+:\/\/.*/.test(t)&&(t=a.resolveRelativePath(t,o)),t=r.normalizeId(t);var c=r.getOrAddSchemaHandle(t);return c.getUnresolvedSchema().then(function(r){if(s[t]=!0,r.errors.length){var o=n?t+"#"+n:t;i.push(ni("json.schema.problemloadingref","Problems loading reference '{0}': {1}",o,r.errors[0]))}return u(e,r.schema,t,n),l(e,r.schema,t,c.dependencies)})},l=function(e,t,n,i){if(!e||"object"!==typeof e)return Promise.resolve(null);var o=[e],a=[],s=[],l=function(){for(var e=[],t=0;t0)return void s.push(c(e,a[0],a[1],n,i));-1===r.indexOf(o)&&(u(e,t,n,a[1]),r.push(o))}l(e.items,e.additionalProperties,e.not,e.contains,e.propertyNames,e.if,e.then,e.else),f(e.definitions,e.properties,e.patternProperties,e.dependencies),h(e.anyOf,e.allOf,e.oneOf,e.items)};while(o.length){var p=o.pop();a.indexOf(p)>=0||(a.push(p),d(p))}return r.promise.all(s)};return l(o,o,t,n).then(function(e){return new ai(o,i)})},e.prototype.getSchemaForResource=function(e,t){if(t&&t.root&&"object"===t.root.type){var n=t.root.properties.filter(function(e){return"$schema"===e.keyNode.value&&e.valueNode&&"string"===e.valueNode.type});if(n.length>0){var r=Ur(n[0].valueNode);if(r&&Hr(r,".")&&this.contextService&&(r=this.contextService.resolveRelativePath(r,e)),r){var i=this.normalizeId(r);return this.getOrAddSchemaHandle(i).getResolvedSchema()}}}for(var o=Object.create(null),a=[],s=0,u=this.filePatternAssociations;s0?this.createCombinedSchema(e,a).getResolvedSchema():this.promise.resolve(null)},e.prototype.createCombinedSchema=function(e,t){if(1===t.length)return this.getOrAddSchemaHandle(t[0]);var n="schemaservice://combinedSchema/"+encodeURIComponent(e),r={allOf:t.map(function(e){return{$ref:e}})};return this.addSchemaHandle(n,r)},e}();function ui(e){try{var t=ti["a"].parse(e);if("file"===t.scheme)return t.fsPath}catch(n){}return e}var ci=Sr(),li=function(){function e(e,t){this.jsonSchemaService=e,this.promise=t,this.validationEnabled=!0}return e.prototype.configure=function(e){e&&(this.validationEnabled=e.validate,this.commentSeverity=e.allowComments?void 0:nn.Error)},e.prototype.doValidation=function(e,t,n,r){var i=this;if(!this.validationEnabled)return this.promise.resolve([]);var o=[],a={},s=function(e){var t=e.range.start.line+" "+e.range.start.character+" "+e.message;a[t]||(a[t]=!0,o.push(e))},u=function(r){var a=n?pi(n.trailingCommas):nn.Error,u=n?pi(n.comments):i.commentSeverity;if(r){if(r.errors.length&&t.root){var c=t.root,l="object"===c.type?c.properties[0]:null;if(l&&"$schema"===l.keyNode.value){var f=l.valueNode||l,h=Ht.create(e.positionAt(f.offset),e.positionAt(f.offset+f.length));s(on.create(h,r.errors[0],nn.Warning,sr.SchemaResolveError))}else{h=Ht.create(e.positionAt(c.offset),e.positionAt(c.offset+1));s(on.create(h,r.errors[0],nn.Warning,sr.SchemaResolveError))}}else{var d=t.validate(e,r.schema);d&&d.forEach(s)}hi(r.schema)&&(u=void 0),di(r.schema)&&(a=void 0)}for(var p=0,m=t.syntaxErrors;p=yi&&e<=bi?e-yi+10:0)}function Ci(e){if("#"!==e[0])return null;switch(e.length){case 4:return{red:17*_i(e.charCodeAt(1))/255,green:17*_i(e.charCodeAt(2))/255,blue:17*_i(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*_i(e.charCodeAt(1))/255,green:17*_i(e.charCodeAt(2))/255,blue:17*_i(e.charCodeAt(3))/255,alpha:17*_i(e.charCodeAt(4))/255};case 7:return{red:(16*_i(e.charCodeAt(1))+_i(e.charCodeAt(2)))/255,green:(16*_i(e.charCodeAt(3))+_i(e.charCodeAt(4)))/255,blue:(16*_i(e.charCodeAt(5))+_i(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*_i(e.charCodeAt(1))+_i(e.charCodeAt(2)))/255,green:(16*_i(e.charCodeAt(3))+_i(e.charCodeAt(4)))/255,blue:(16*_i(e.charCodeAt(5))+_i(e.charCodeAt(6)))/255,alpha:(16*_i(e.charCodeAt(7))+_i(e.charCodeAt(8)))/255}}return null}var Si=function(){function e(e){this.schemaService=e}return e.prototype.findDocumentSymbols=function(e,t){var n=this,r=t.root;if(!r)return null;var i=e.uri;if(("vscode://defaultsettings/keybindings.json"===i||zr(i.toLowerCase(),"/user/keybindings.json"))&&"array"===r.type){var o=[];return r.items.forEach(function(t){if("object"===t.type)for(var n=0,r=t.properties;n0&&i[i.length-1].kind===f){l=i.pop();var h=e.positionAt(a.getTokenOffset()).line;l&&h>l.startLine+1&&o!==l.startLine&&(l.endLine=h-1,u(l),o=l.startLine)}break;case 13:c=e.positionAt(a.getTokenOffset()).line;var d=e.positionAt(a.getTokenOffset()+a.getTokenLength()).line;1===a.getTokenError()&&c+1=0&&i[g].kind!==Zt.Region)g--;if(g>=0){l=i[g];i.length=g,h>l.startLine&&o!==l.startLine&&(l.endLine=h,u(l),o=l.startLine)}}}break}s=a.scan()}var v=t&&t.rangeLimit;if("number"!==typeof v||n.length<=v)return n;for(var y=[],b=0,_=r;b<_.length;b++){var C=_[b];C<30&&(y[C]=(y[C]||0)+1)}var S=0,E=0;for(g=0;gv){E=g;break}S+=w}}var x=[];for(g=0;g=u&&r<=c&&s.push(i(u,c)),s.push(i(o.offset,o.offset+o.length));break;case"number":case"boolean":case"null":case"property":s.push(i(o.offset,o.offset+o.length));break}if("property"===o.type||o.parent&&"array"===o.parent.type){var l=a(o.offset+o.length,5);-1!==l&&s.push(i(o.offset,l))}o=o.parent}for(var f=void 0,h=s.length-1;h>=0;h--)f=Dn.create(s[h],f);return f||(f=Dn.create(Ht.create(t,t))),f}function i(t,n){return Ht.create(e.positionAt(t),e.positionAt(n))}var o=cr(e.getText(),!0);function a(e,t){o.setPosition(e);var n=o.scan();return n===t?o.getTokenOffset()+o.getTokenLength():-1}return t.map(r)}function Zi(e){var t=e.promiseConstructor||Promise,n=new si(e.schemaRequestService,e.workspaceContext,t);n.setSchemaContributions(Bi);var r=new Qr(n,e.contributions,t,e.clientCapabilities),i=new Xr(n,e.contributions,t),o=new Si(n),a=new li(n,t);return{configure:function(e){n.clearExternalSchemas(),e.schemas&&e.schemas.forEach(function(e){n.registerExternalSchema(e.uri,e.fileMatch,e.schema)}),a.configure(e)},resetSchema:function(e){return n.onResourceChange(e)},doValidation:a.doValidation.bind(a),parseJSONDocument:function(e){return $r(e,{collectComments:!0})},newJSONDocument:function(e,t){return Dr(e,t)},doResolve:r.doResolve.bind(r),doComplete:r.doComplete.bind(r),findDocumentSymbols:o.findDocumentSymbols.bind(o),findDocumentSymbols2:o.findDocumentSymbols2.bind(o),findColorSymbols:function(e,t){return o.findDocumentColors(e,t).then(function(e){return e.map(function(e){return e.range})})},findDocumentColors:o.findDocumentColors.bind(o),getColorPresentations:o.getColorPresentations.bind(o),doHover:i.doHover.bind(i),getFoldingRanges:Qi,getSelectionRanges:Xi,format:function(e,t,n){var r=void 0;if(t){var i=e.offsetAt(t.start),o=e.offsetAt(t.end)-i;r={offset:i,length:o}}var a={tabSize:n?n.tabSize:4,insertSpaces:!n||n.insertSpaces,eol:"\n"};return pr(e.getText(),r,a).map(function(t){return sn.replace(Ht.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length)),t.content)})}}}(function(e){function t(e,t){return{line:e,character:t}}function n(e){var t=e;return Lo.objectLiteral(t)&&Lo.number(t.line)&&Lo.number(t.character)}e.create=t,e.is=n})(wi||(wi={})),function(e){function t(e,t,n,r){if(Lo.number(e)&&Lo.number(t)&&Lo.number(n)&&Lo.number(r))return{start:wi.create(e,t),end:wi.create(n,r)};if(wi.is(e)&&wi.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")}function n(e){var t=e;return Lo.objectLiteral(t)&&wi.is(t.start)&&wi.is(t.end)}e.create=t,e.is=n}(xi||(xi={})),function(e){function t(e,t){return{uri:e,range:t}}function n(e){var t=e;return Lo.defined(t)&&xi.is(t.range)&&(Lo.string(t.uri)||Lo.undefined(t.uri))}e.create=t,e.is=n}(Ni||(Ni={})),function(e){function t(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}}function n(e){var t=e;return Lo.defined(t)&&xi.is(t.targetRange)&&Lo.string(t.targetUri)&&(xi.is(t.targetSelectionRange)||Lo.undefined(t.targetSelectionRange))&&(xi.is(t.originSelectionRange)||Lo.undefined(t.originSelectionRange))}e.create=t,e.is=n}(Ai||(Ai={})),function(e){function t(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}}function n(e){var t=e;return Lo.number(t.red)&&Lo.number(t.green)&&Lo.number(t.blue)&&Lo.number(t.alpha)}e.create=t,e.is=n}(Li||(Li={})),function(e){function t(e,t){return{range:e,color:t}}function n(e){var t=e;return xi.is(t.range)&&Li.is(t.color)}e.create=t,e.is=n}(ki||(ki={})),function(e){function t(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}}function n(e){var t=e;return Lo.string(t.label)&&(Lo.undefined(t.textEdit)||Fi.is(t))&&(Lo.undefined(t.additionalTextEdits)||Lo.typedArray(t.additionalTextEdits,Fi.is))}e.create=t,e.is=n}(Ti||(Ti={})),function(e){e["Comment"]="comment",e["Imports"]="imports",e["Region"]="region"}(Oi||(Oi={})),function(e){function t(e,t,n,r,i){var o={startLine:e,endLine:t};return Lo.defined(n)&&(o.startCharacter=n),Lo.defined(r)&&(o.endCharacter=r),Lo.defined(i)&&(o.kind=i),o}function n(e){var t=e;return Lo.number(t.startLine)&&Lo.number(t.startLine)&&(Lo.undefined(t.startCharacter)||Lo.number(t.startCharacter))&&(Lo.undefined(t.endCharacter)||Lo.number(t.endCharacter))&&(Lo.undefined(t.kind)||Lo.string(t.kind))}e.create=t,e.is=n}(Pi||(Pi={})),function(e){function t(e,t){return{location:e,message:t}}function n(e){var t=e;return Lo.defined(t)&&Ni.is(t.location)&&Lo.string(t.message)}e.create=t,e.is=n}(Ii||(Ii={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(Mi||(Mi={})),function(e){function t(e,t,n,r,i,o){var a={range:e,message:t};return Lo.defined(n)&&(a.severity=n),Lo.defined(r)&&(a.code=r),Lo.defined(i)&&(a.source=i),Lo.defined(o)&&(a.relatedInformation=o),a}function n(e){var t=e;return Lo.defined(t)&&xi.is(t.range)&&Lo.string(t.message)&&(Lo.number(t.severity)||Lo.undefined(t.severity))&&(Lo.number(t.code)||Lo.string(t.code)||Lo.undefined(t.code))&&(Lo.string(t.source)||Lo.undefined(t.source))&&(Lo.undefined(t.relatedInformation)||Lo.typedArray(t.relatedInformation,Ii.is))}e.create=t,e.is=n}(Ri||(Ri={})),function(e){function t(e,t){for(var n=[],r=2;r0&&(i.arguments=n),i}function n(e){var t=e;return Lo.defined(t)&&Lo.string(t.title)&&Lo.string(t.command)}e.create=t,e.is=n}(ji||(ji={})),function(e){function t(e,t){return{range:e,newText:t}}function n(e,t){return{range:{start:e,end:e},newText:t}}function r(e){return{range:e,newText:""}}function i(e){var t=e;return Lo.objectLiteral(t)&&Lo.string(t.newText)&&xi.is(t.range)}e.replace=t,e.insert=n,e.del=r,e.is=i}(Fi||(Fi={})),function(e){function t(e,t){return{textDocument:e,edits:t}}function n(e){var t=e;return Lo.defined(t)&&to.is(t.textDocument)&&Array.isArray(t.edits)}e.create=t,e.is=n}(Vi||(Vi={})),function(e){function t(e,t){var n={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(n.options=t),n}function n(e){var t=e;return t&&"create"===t.kind&&Lo.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Lo.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Lo.boolean(t.options.ignoreIfExists)))}e.create=t,e.is=n}(Di||(Di={})),function(e){function t(e,t,n){var r={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(r.options=n),r}function n(e){var t=e;return t&&"rename"===t.kind&&Lo.string(t.oldUri)&&Lo.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Lo.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Lo.boolean(t.options.ignoreIfExists)))}e.create=t,e.is=n}(Ui||(Ui={})),function(e){function t(e,t){var n={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(n.options=t),n}function n(e){var t=e;return t&&"delete"===t.kind&&Lo.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Lo.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Lo.boolean(t.options.ignoreIfNotExists)))}e.create=t,e.is=n}(qi||(qi={})),function(e){function t(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every(function(e){return Lo.string(e.kind)?Di.is(e)||Ui.is(e)||qi.is(e):Vi.is(e)}))}e.is=t}(Ki||(Ki={}));var eo,to,no,ro,io,oo,ao,so,uo,co,lo,fo,ho,po,mo,go,vo,yo=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,t){this.edits.push(Fi.insert(e,t))},e.prototype.replace=function(e,t){this.edits.push(Fi.replace(e,t))},e.prototype.delete=function(e){this.edits.push(Fi.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();(function(){function e(e){var t=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach(function(e){if(Vi.is(e)){var n=new yo(e.edits);t._textEditChanges[e.textDocument.uri]=n}}):e.changes&&Object.keys(e.changes).forEach(function(n){var r=new yo(e.changes[n]);t._textEditChanges[n]=r}))}Object.defineProperty(e.prototype,"edit",{get:function(){return this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(to.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t=e,n=this._textEditChanges[t.uri];if(!n){var r=[],i={textDocument:t,edits:r};this._workspaceEdit.documentChanges.push(i),n=new yo(r),this._textEditChanges[t.uri]=n}return n}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");n=this._textEditChanges[e];if(!n){r=[];this._workspaceEdit.changes[e]=r,n=new yo(r),this._textEditChanges[e]=n}return n},e.prototype.createFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(Di.create(e,t))},e.prototype.renameFile=function(e,t,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(Ui.create(e,t,n))},e.prototype.deleteFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(qi.create(e,t))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}})();(function(e){function t(e){return{uri:e}}function n(e){var t=e;return Lo.defined(t)&&Lo.string(t.uri)}e.create=t,e.is=n})(eo||(eo={})),function(e){function t(e,t){return{uri:e,version:t}}function n(e){var t=e;return Lo.defined(t)&&Lo.string(t.uri)&&(null===t.version||Lo.number(t.version))}e.create=t,e.is=n}(to||(to={})),function(e){function t(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}}function n(e){var t=e;return Lo.defined(t)&&Lo.string(t.uri)&&Lo.string(t.languageId)&&Lo.number(t.version)&&Lo.string(t.text)}e.create=t,e.is=n}(no||(no={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(ro||(ro={})),function(e){function t(t){var n=t;return n===e.PlainText||n===e.Markdown}e.is=t}(ro||(ro={})),function(e){function t(e){var t=e;return Lo.objectLiteral(e)&&ro.is(t.kind)&&Lo.string(t.value)}e.is=t}(io||(io={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(oo||(oo={})),function(e){e.PlainText=1,e.Snippet=2}(ao||(ao={})),function(e){function t(e){return{label:e}}e.create=t}(so||(so={})),function(e){function t(e,t){return{items:e||[],isIncomplete:!!t}}e.create=t}(uo||(uo={})),function(e){function t(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}function n(e){var t=e;return Lo.string(t)||Lo.objectLiteral(t)&&Lo.string(t.language)&&Lo.string(t.value)}e.fromPlainText=t,e.is=n}(co||(co={})),function(e){function t(e){var t=e;return!!t&&Lo.objectLiteral(t)&&(io.is(t.contents)||co.is(t.contents)||Lo.typedArray(t.contents,co.is))&&(void 0===e.range||xi.is(e.range))}e.is=t}(lo||(lo={})),function(e){function t(e,t){return t?{label:e,documentation:t}:{label:e}}e.create=t}(fo||(fo={})),function(e){function t(e,t){for(var n=[],r=2;r=0;a--){var s=r[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");n=n.substring(0,u)+s.newText+n.substring(c,n.length),o=u}return n}function i(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),o=e.slice(n);i(r,t),i(o,t);var a=0,s=0,u=0;while(a0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return wi.create(0,e);while(ne?r=i:n=i+1}var o=n-1;return wi.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+11)for(var n=1;n Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src new file mode 100644 index 000000000..440f90436 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src @@ -0,0 +1,7 @@ +{application,emqx_dashboard, + [{description,"EMQ X Web Dashboard"}, + {vsn,"git"}, + {modules,[]}, + {registered,[emqx_dashboard_sup]}, + {applications,[kernel,stdlib,mnesia,minirest]}, + {mod,{emqx_dashboard_app,[]}}]}. diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src.script b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard.appup.src b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.appup.src new file mode 100644 index 000000000..1f2c254a0 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.appup.src @@ -0,0 +1,28 @@ +Up = [ + {apply, {emqx_modules, load_providers, []}}, + {apply, {emqx_modules, refresh_module, [lwm2m_protocol]}}, + {apply, {emqx_modules, refresh_module, [exhook]}}, + {apply, {emqx_modules, refresh_module, [exproto]}}, + {apply, {emqx_rule_engine, load_providers, []}}, + {apply, {emqx_rule_engine, refresh_resource, [backend_mysql]}}, + {apply, {emqx_rule_engine, refresh_rules, []}}, + {restart_application, emqx_dashboard}, + {apply, {emqx_plugins, load, []}} +], + +Down = [ + {apply, {emqx_modules, load_providers, []}}, + {apply, {emqx_modules, refresh_modules, []}}, + {apply, {emqx_rule_engine, load_providers, []}}, + {apply, {emqx_rule_engine, refresh_resources, []}}, + {apply, {emqx_rule_engine, refresh_rules, []}}, + {restart_application, emqx_dashboard}, + {apply, {emqx_plugins, load, []}} +], + +{VSN, + [ {<<".*">>, Up} + ], + [ {<<".*">>, Down} + ] +}. diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.erl new file mode 100644 index 000000000..0e40f6614 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard.erl @@ -0,0 +1,102 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-import(proplists, [get_value/3]). + +-export([ start_listeners/0 + , stop_listeners/0 + ]). + +%% callback for minirest +-export([is_authorized/1]). + +-define(APP, ?MODULE). + +%%-------------------------------------------------------------------- +%% Start/Stop listeners. +%%-------------------------------------------------------------------- + +start_listeners() -> + lists:foreach(fun(Listener) -> start_listener(Listener) end, listeners()). + +%% Start HTTP Listener +start_listener({Proto, Port, Options}) when Proto == http -> + Dispatch = [{"/", cowboy_static, {priv_file, emqx_dashboard, "www/index.html"}}, + {"/static/[...]", cowboy_static, {priv_dir, emqx_dashboard, "www/static"}}, + {"/api/v4/[...]", minirest, http_handlers()}], + minirest:start_http(listener_name(Proto), ranch_opts(Port, Options), Dispatch); + +start_listener({Proto, Port, Options}) when Proto == https -> + Dispatch = [{"/", cowboy_static, {priv_file, emqx_dashboard, "www/index.html"}}, + {"/static/[...]", cowboy_static, {priv_dir, emqx_dashboard, "www/static"}}, + {"/api/v4/[...]", minirest, http_handlers()}], + minirest:start_https(listener_name(Proto), ranch_opts(Port, Options), Dispatch). + +ranch_opts(Port, Options0) -> + NumAcceptors = get_value(num_acceptors, Options0, 4), + MaxConnections = get_value(max_connections, Options0, 512), + Options = lists:foldl(fun({K, _V}, Acc) when K =:= max_connections orelse K =:= num_acceptors-> + Acc; + ({K, V}, Acc)-> + [{K, V} | Acc] + end, [], Options0), + #{num_acceptors => NumAcceptors, + max_connections => MaxConnections, + socket_opts => [{port, Port} | Options]}. + +stop_listeners() -> + lists:foreach(fun(Listener) -> stop_listener(Listener) end, listeners()). + +stop_listener({Proto, Port, _}) -> + io:format("Stop http:dashboard listener on ~s successfully.~n",[format(Port)]), + minirest:stop_http(listener_name(Proto)). + +listeners() -> + application:get_env(?APP, listeners, []). + +listener_name(Proto) -> + list_to_atom(atom_to_list(Proto) ++ ":dashboard"). + +%%-------------------------------------------------------------------- +%% HTTP Handlers and Dispatcher +%%-------------------------------------------------------------------- + +http_handlers() -> + Plugins = lists:map(fun(Plugin) -> Plugin#plugin.name end, emqx_plugins:list()), + [{"/api/v4/", minirest:handler(#{apps => Plugins}),[{authorization, fun ?MODULE:is_authorized/1}]}]. + +%%-------------------------------------------------------------------- +%% Basic Authorization +%%-------------------------------------------------------------------- + +is_authorized(Req) -> + is_authorized(binary_to_list(cowboy_req:path(Req)), Req). + +is_authorized("/api/v4/auth", _Req) -> + true; +is_authorized(_Path, Req) -> + case cowboy_req:parse_header(<<"authorization">>, Req) of + {basic, Username, Password} -> + case emqx_dashboard_admin:check(iolist_to_binary(Username), + iolist_to_binary(Password)) of + ok -> true; + {error, Reason} -> + ?LOG(error, "[Dashboard] Authorization Failure: username=~s, reason=~p", + [Username, Reason]), + false + end; + _ -> false + end. + +format(Port) when is_integer(Port) -> + io_lib:format("0.0.0.0:~w", [Port]); +format({Addr, Port}) when is_list(Addr) -> + io_lib:format("~s:~w", [Addr, Port]); +format({Addr, Port}) when is_tuple(Addr) -> + io_lib:format("~s:~w", [inet:ntoa(Addr), Port]). \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_admin.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_admin.erl new file mode 100644 index 000000000..8da306c46 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_admin.erl @@ -0,0 +1,216 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% @doc Web dashboard admin authentication with username and password. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_admin). + +-behaviour(gen_server). + +-include("emqx_dashboard.hrl"). + +-boot_mnesia({mnesia, [boot]}). +-copy_mnesia({mnesia, [copy]}). + +%% Mnesia bootstrap +-export([mnesia/1]). + +%% API Function Exports +-export([start_link/0]). + +%% mqtt_admin api +-export([ add_user/3 + , force_add_user/3 + , remove_user/1 + , update_user/2 + , lookup_user/1 + , change_password/2 + , change_password/3 + , all_users/0 + , check/2 + ]). + +%% gen_server Function Exports +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +%%-------------------------------------------------------------------- +%% Mnesia bootstrap +%%-------------------------------------------------------------------- + +mnesia(boot) -> + ok = ekka_mnesia:create_table(mqtt_admin, [ + {type, set}, + {disc_copies, [node()]}, + {record_name, mqtt_admin}, + {attributes, record_info(fields, mqtt_admin)}, + {storage_properties, [{ets, [{read_concurrency, true}, + {write_concurrency, true}]}]}]); +mnesia(copy) -> + ok = ekka_mnesia:copy_table(mqtt_admin). + +%%-------------------------------------------------------------------- +%% API +%%-------------------------------------------------------------------- + +-spec(start_link() -> {ok, pid()} | ignore | {error, any()}). +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +-spec(add_user(binary(), binary(), binary()) -> ok | {error, any()}). +add_user(Username, Password, Tags) when is_binary(Username), is_binary(Password) -> + Admin = #mqtt_admin{username = Username, password = hash(Password), tags = Tags}, + return(mnesia:transaction(fun add_user_/1, [Admin])). + +%% @private +add_user_(Admin = #mqtt_admin{username = Username}) -> + case mnesia:wread({mqtt_admin, Username}) of + [] -> mnesia:write(Admin); + [_] -> mnesia:abort(<<"Username Already Exist">>) + end. + +force_add_user(Username, Password, Tags) -> + AddFun = fun() -> + mnesia:write(#mqtt_admin{username = Username, + password = Password, + tags = Tags}) + end, + case mnesia:transaction(AddFun) of + {atomic, ok} -> ok; + {aborted, Reason} -> {error, Reason} + end. + +-spec(remove_user(binary()) -> ok | {error, any()}). +remove_user(Username) when is_binary(Username) -> + Trans = fun() -> + case lookup_user(Username) of + [] -> + mnesia:abort(<<"Username Not Found">>); + _ -> ok + end, + mnesia:delete({mqtt_admin, Username}) + end, + return(mnesia:transaction(Trans)). + +-spec(update_user(binary(), binary()) -> ok | {error, term()}). +update_user(Username, Tags) when is_binary(Username) -> + return(mnesia:transaction(fun update_user_/2, [Username, Tags])). + +%% @private +update_user_(Username, Tags) -> + case mnesia:wread({mqtt_admin, Username}) of + [] -> mnesia:abort(<<"Username Not Found">>); + [Admin] -> mnesia:write(Admin#mqtt_admin{tags = Tags}) + end. + +change_password(Username, OldPasswd, NewPasswd) when is_binary(Username) -> + case check(Username, OldPasswd) of + ok -> change_password(Username, NewPasswd); + Error -> Error + end. + +change_password(Username, Password) when is_binary(Username), is_binary(Password) -> + change_password_hash(Username, hash(Password)). + +change_password_hash(Username, PasswordHash) -> + update_pwd(Username, fun(User) -> + User#mqtt_admin{password = PasswordHash} + end). + +update_pwd(Username, Fun) -> + Trans = fun() -> + User = + case lookup_user(Username) of + [Admin] -> Admin; + [] -> + mnesia:abort(<<"Username Not Found">>) + end, + mnesia:write(Fun(User)) + end, + return(mnesia:transaction(Trans)). + + +-spec(lookup_user(binary()) -> [mqtt_admin()]). +lookup_user(Username) when is_binary(Username) -> mnesia:dirty_read(mqtt_admin, Username). + +-spec(all_users() -> [#mqtt_admin{}]). +all_users() -> ets:tab2list(mqtt_admin). + +return({atomic, _}) -> + ok; +return({aborted, Reason}) -> + {error, Reason}. + +check(undefined, _) -> + {error, <<"Username undefined">>}; +check(_, undefined) -> + {error, <<"Password undefined">>}; +check(Username, Password) -> + case lookup_user(Username) of + [#mqtt_admin{password = <>}] -> + case Hash =:= md5_hash(Salt, Password) of + true -> ok; + false -> {error, <<"Password Error">>} + end; + [] -> + {error, <<"Username Not Found">>} + end. + +%%-------------------------------------------------------------------- +%% gen_server callbacks +%%-------------------------------------------------------------------- + +init([]) -> + %% Add default admin user + add_default_user(binenv(default_user_username), binenv(default_user_passwd)), + {ok, state}. + +handle_call(_Req, _From, State) -> + {reply, error, State}. + +handle_cast(_Msg, State) -> + {noreply, State}. + +handle_info(_Msg, State) -> + {noreply, State}. + +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +hash(Password) -> + SaltBin = salt(), + <>. + +md5_hash(SaltBin, Password) -> + erlang:md5(<>). + +salt() -> + emqx_misc:rand_seed(), + Salt = rand:uniform(16#ffffffff), + <>. + +binenv(Key) -> + iolist_to_binary(application:get_env(emqx_dashboard, Key, "")). + +add_default_user(Username, Password) when ?EMPTY_KEY(Username) orelse ?EMPTY_KEY(Password) -> + igonre; + +add_default_user(Username, Password) -> + case lookup_user(Username) of + [] -> add_user(Username, Password, <<"administrator">>); + _ -> ok + end. + diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_api.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_api.erl new file mode 100644 index 000000000..88fd977b0 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_api.erl @@ -0,0 +1,97 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_api). + +-include("emqx_dashboard.hrl"). + +-import(minirest, [return/1]). + +-rest_api(#{ name => auth_user + , method => 'POST' + , path => "/auth" + , func => auth + , descr => "Authenticate an user" + }). + +-rest_api(#{ name => create_user + , method => 'POST' + , path => "/users/" + , func => create + , descr => "Create an user" + }). + +-rest_api(#{ name => list_users + , method => 'GET' + , path => "/users/" + , func => list + , descr => "List users" + }). + +-rest_api(#{ name => update_user + , method => 'PUT' + , path => "/users/:bin:name" + , func => update + , descr => "Update an user" + }). + +-rest_api(#{ name => delete_user + , method => 'DELETE' + , path => "/users/:bin:name" + , func => delete + , descr => "Delete an user" + }). + +-rest_api(#{ name => change_pwd + , method => 'PUT' + , path => "/change_pwd/:bin:username" + , func => change_pwd + , descr => "Change password for an user" + }). + +-export([ list/2 + , create/2 + , update/2 + , delete/2 + , auth/2 + , change_pwd/2 + ]). + +-define(EMPTY(V), (V == undefined orelse V == <<>>)). + +auth(_Bindings, Params) -> + Username = proplists:get_value(<<"username">>, Params), + Password = proplists:get_value(<<"password">>, Params), + return(emqx_dashboard_admin:check(Username, Password)). + +change_pwd(#{username := Username}, Params) -> + OldPwd = proplists:get_value(<<"old_pwd">>, Params), + NewPwd = proplists:get_value(<<"new_pwd">>, Params), + return(emqx_dashboard_admin:change_password(Username, OldPwd, NewPwd)). + +create(_Bindings, Params) -> + Username = proplists:get_value(<<"username">>, Params), + Password = proplists:get_value(<<"password">>, Params), + Tags = proplists:get_value(<<"tags">>, Params), + return(case ?EMPTY(Username) orelse ?EMPTY(Password) of + true -> {error, <<"Username or password undefined">>}; + false -> emqx_dashboard_admin:add_user(Username, Password, Tags) + end). + +list(_Bindings, _Params) -> + return({ok, [row(User) || User <- emqx_dashboard_admin:all_users()]}). + +update(#{name := Username}, Params) -> + Tags = proplists:get_value(<<"tags">>, Params), + return(emqx_dashboard_admin:update_user(Username, Tags)). + +delete(#{name := <<"admin">>}, _Params) -> + return({error, <<"Cannot delete admin">>}); + +delete(#{name := Username}, _Params) -> + return(emqx_dashboard_admin:remove_user(Username)). + +row(#mqtt_admin{username = Username, tags = Tags}) -> + [{username, Username}, {tags, Tags}]. + diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_app.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_app.erl new file mode 100644 index 000000000..8b0954b30 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_app.erl @@ -0,0 +1,23 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_app). + +-behaviour(application). + +-emqx_plugin(?MODULE). + +-export([ start/2 + , stop/1 + ]). + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_dashboard_sup:start_link(), + emqx_dashboard:start_listeners(), + emqx_dashboard_cli:load(), + {ok, Sup}. + +stop(_State) -> + emqx_dashboard_cli:unload(), + emqx_dashboard:stop_listeners(). diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cli.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cli.erl new file mode 100644 index 000000000..afa710fbc --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cli.erl @@ -0,0 +1,48 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_cli). + +-export([ load/0 + , admins/1 + , unload/0 + ]). + +-define(PRINT_MSG(Msg), io:format(Msg)). + +-define(PRINT(Format, Args), io:format(Format, Args)). + +load() -> + emqx_ctl:register_command(admins, {?MODULE, admins}, []). + +admins(["add", Username, Password]) -> + admins(["add", Username, Password, ""]); + +admins(["add", Username, Password, Tag]) -> + case emqx_dashboard_admin:add_user(bin(Username), bin(Password), bin(Tag)) of + ok -> + ?PRINT_MSG("ok~n"); + {error, already_existed} -> + ?PRINT_MSG("Error: already existed~n"); + {error, Reason} -> + ?PRINT("Error: ~p~n", [Reason]) + end; + +admins(["passwd", Username, Password]) -> + Status = emqx_dashboard_admin:change_password(bin(Username), bin(Password)), + ?PRINT("~p~n", [Status]); + +admins(["del", Username]) -> + Status = emqx_dashboard_admin:remove_user(bin(Username)), + ?PRINT("~p~n", [Status]); + +admins(_) -> + emqx_ctl:usage([{"admins add ", "Add dashboard user"}, + {"admins passwd ", "Reset dashboard user password"}, + {"admins del ", "Delete dashboard user" }]). + +unload() -> + emqx_ctl:unregister_command(admins). + +bin(S) -> iolist_to_binary(S). diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cluster_api.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cluster_api.erl new file mode 100644 index 000000000..95074b541 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_cluster_api.erl @@ -0,0 +1,77 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_cluster_api). + +-include("emqx_dashboard.hrl"). + +-import(minirest, [return/1]). + +-rest_api(#{ name => cluster_info + , method => 'GET' + , path => "/cluster" + , func => cluster_info + , descr => "Get a Cluster info" + }). + +-rest_api(#{ name => invite_node + , method => 'POST' + , path => "/cluster/invite_node" + , func => invite_node + , descr => "Invite a node to join the cluster" + }). + +-rest_api(#{ name => force_leave + , method => 'DELETE' + , path => "/cluster/force_leave/:bin:node" + , func => force_leave + , descr => "Force a node to leave the cluster" + }). + +-export([ cluster_info/2 + , invite_node/2 + , force_leave/2 + ]). + +cluster_info(_Bindings, _Params) -> + ClusterName = application:get_env(ekka, cluster_name, emqxcl), + {Type, ClusterConf} = application:get_env(ekka, cluster_discovery, {manual,[]}), + Info = [{name, ClusterName}, + {type, Type}, + {config, format(ClusterConf)}], + return({ok, Info}). + +invite_node(_Bindings, Params) -> + Node = proplists:get_value(<<"node">>, Params), + case rpc:call(ekka_node:parse_name(binary_to_list(Node)), ekka, join, [node()]) of + ok -> return(ok); + ignore -> return({error, <<"Not invite self">>}); + {badrpc, Error} -> return({error, Error}); + {error, Error} -> return({error, iolist_to_binary(io_lib:format("~0p", [Error]))}) + end. + +force_leave(#{node := Node}, _Params) -> + case ekka:force_leave(ekka_node:parse_name(binary_to_list(Node))) of + ok -> return(ok); + ignore -> return({error, <<"Not force leave self">>}); + {error, Error} -> return({error, iolist_to_binary(io_lib:format("~0p", [Error]))}) + end. + + +format(ClusterConf) -> + lists:reverse(format(ClusterConf, [])). + +format([], Acc)-> + Acc; +format([{ssl_options, Val} | Conf], Acc)-> + format(Conf, [{ssl_options, format(Val, [])}| Acc]); +format([{Key, Val} | Conf], Acc) when Key =:= seeds orelse Key =:= ports -> + format(Conf, [{Key, Val}| Acc]); +format([{Key, Val} | Conf], Acc) when Key =:= addr orelse Key =:= iface -> + format(Conf, [{Key, list_to_binary(esockd_net:ntoa(Val))}| Acc]); +format([{Key, Val} | Conf], Acc) when is_list(Val) -> + format(Conf, [{Key, list_to_binary(Val)}| Acc]); +format([{Key, Val} | Conf], Acc) -> + format(Conf, [{Key, Val}| Acc]). + \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_collection.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_collection.erl new file mode 100644 index 000000000..d80e01715 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_collection.erl @@ -0,0 +1,164 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_collection). + +-behaviour(gen_server). + +-include("emqx_dashboard.hrl"). +-include_lib("stdlib/include/ms_transform.hrl"). + +-export([ start_link/1 + ]). + +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-export([get_collect/0]). + +-export([get_local_time/0]). + +-boot_mnesia({mnesia, [boot]}). +-copy_mnesia({mnesia, [copy]}). + +%% Mnesia bootstrap +-export([mnesia/1]). + +-define(DEFAULT_INTERVAL, 10). %% seconds + +-define(DEFAULT_COUNT, 6). %% seconds + +-define(COLLECT, {[],[],[]}). + +-define(CLEAR_INTERVAL, 86400000). + +-define(EXPIRE_INTERVAL, 86400000 * 7). + +mnesia(boot) -> + ok = ekka_mnesia:create_table(emqx_collect, [ + {type, set}, + {local_content, true}, + {disc_only_copies, [node()]}, + {record_name, mqtt_collect}, + {attributes, record_info(fields, mqtt_collect)}]); +mnesia(copy) -> + mnesia:add_table_copy(emqx_collect, node(), disc_only_copies). + +start_link(Opts) -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [Opts], []). + +get_collect() -> gen_server:call(whereis(?MODULE), get_collect). + +init([Opts]) -> + timer(timer:seconds(?DEFAULT_INTERVAL), collect), + timer(get_today_remaining_seconds(), clear_expire_data), + ExpireInterval = application:get_env(emqx_dashboard, expire_interval, ?EXPIRE_INTERVAL), + {ok, #{count => maps:get(count, Opts, ?DEFAULT_COUNT), + collect => ?COLLECT, + temp_collect => {0, 0, 0, 0}, + expire_interval => ExpireInterval, + last_collects => {0, 0, 0}}}. + +handle_call(get_collect, _From, State = #{temp_collect := {Received, Sent, _, _}}) -> + {reply, {Received, Sent, collect(subscriptions), collect(connections)}, State, hibernate}; +handle_call(_Req, _From, State) -> + {reply, ok, State}. +handle_cast(_Req, State) -> + {noreply, State}. + +handle_info(collect, State = #{collect := Collect, count := 1, temp_collect := TempCollect, last_collects := LastCollect}) -> + NewLastCollect = flush(collect_all(Collect), LastCollect), + TempCollect1 = temp_collect(TempCollect), + timer(timer:seconds(?DEFAULT_INTERVAL), collect), + {noreply, State#{count => ?DEFAULT_COUNT, + collect => ?COLLECT, + temp_collect => TempCollect1, + last_collects => NewLastCollect}}; + +handle_info(collect, State = #{count := Count, collect := Collect, temp_collect := TempCollect}) -> + TempCollect1 = temp_collect(TempCollect), + timer(timer:seconds(?DEFAULT_INTERVAL), collect), + {noreply, State#{count => Count - 1, + collect => collect_all(Collect), + temp_collect => TempCollect1}, hibernate}; + +handle_info(clear_expire_data, State = #{expire_interval := ExpireInterval}) -> + timer(?CLEAR_INTERVAL, clear_expire_data), + T1 = get_local_time(), + Spec = ets:fun2ms(fun({_, T, _C} = Data) when (T1 - T) > ExpireInterval -> Data end), + Collects = dets:select(emqx_collect, Spec), + lists:foreach(fun(Collect) -> + dets:delete_object(emqx_collect, Collect) + end, Collects), + {noreply, State, hibernate}; + +handle_info(_Info, State) -> + {noreply, State}. + +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +temp_collect({_, _, Received, Sent}) -> + Received1 = collect(received), + Sent1 = collect(sent), + {(Received1 - Received) div ?DEFAULT_INTERVAL, + (Sent1 - Sent) div ?DEFAULT_INTERVAL, + Received1, + Sent1}. + +collect_all({Connection, Route, Subscription}) -> + {[collect(connections)| Connection], + [collect(routes)| Route], + [collect(subscriptions)| Subscription]}. + +collect(connections) -> + emqx_stats:getstat('connections.count'); +collect(routes) -> + emqx_stats:getstat('routes.count'); +collect(subscriptions) -> + emqx_stats:getstat('subscriptions.count'); +collect(received) -> + emqx_metrics:val('messages.received'); +collect(sent) -> + emqx_metrics:val('messages.sent'); +collect(dropped) -> + emqx_metrics:val('messages.dropped'). + +flush({Connection, Route, Subscription}, {Received0, Sent0, Dropped0}) -> + Received = collect(received), + Sent = collect(sent), + Dropped = collect(dropped), + Collect = {avg(Connection), + avg(Route), + avg(Subscription), + diff(Received, Received0), + diff(Sent, Sent0), + diff(Dropped, Dropped0)}, + Ts = get_local_time(), + mnesia:dirty_write(emqx_collect, #mqtt_collect{timestamp = Ts, collect = Collect}), + {Received, Sent, Dropped}. + +avg(Items) -> + lists:sum(Items) div ?DEFAULT_COUNT. + +diff(Item0, Item1) -> + Item0 - Item1. + +timer(Secs, Msg) -> + erlang:send_after(Secs, self(), Msg). + +get_today_remaining_seconds() -> + ?CLEAR_INTERVAL - (get_local_time() rem ?CLEAR_INTERVAL). + +get_local_time() -> + (calendar:datetime_to_gregorian_seconds(calendar:local_time()) - + calendar:datetime_to_gregorian_seconds({{1970,1,1}, {0,0,0}})) * 1000. diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_license_api.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_license_api.erl new file mode 100644 index 000000000..1ffefb44a --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_license_api.erl @@ -0,0 +1,32 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_license_api). + +-include("emqx_dashboard.hrl"). + +-import(minirest, [return/1]). + +-rest_api(#{ name => license_info + , method => 'GET' + , path => "/license_info" + , func => license_info + , descr => "Get a license info" + }). + +-export([license_info/2]). + +license_info(_Bindings, _Params) -> + Info = emqx_license_mgr:info(), + return({ok, info_list_to_binary(Info)}). + +info_list_to_binary(Info) -> + list_to_binary(Info, []). +list_to_binary([], Acc) -> + lists:reverse(Acc); +list_to_binary([{Key, Val}|Info], Acc) when is_list(Val) -> + list_to_binary(Info, [{Key, list_to_binary(Val)}|Acc]); +list_to_binary([{Key, Val}|Info], Acc) -> + list_to_binary(Info, [{Key, Val}|Acc]). + diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_monitor_api.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_monitor_api.erl new file mode 100644 index 000000000..75b6dcaa2 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_monitor_api.erl @@ -0,0 +1,142 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_monitor_api). + +-include("emqx_dashboard.hrl"). + +-import(minirest, [return/1]). + +-rest_api(#{ name => current_metrics + , method => 'GET' + , path => "monitor/current_metrics" + , func => current_metrics + , descr => "Get a current metric" + }). + +-rest_api(#{ name => node_metrics + , method => 'GET' + , path => "nodes/:atom:node/monitor/metrics" + , func => metrics + , descr => "Get History metrics" + }). + +-rest_api(#{ name => lookup_node_metrics + , method => 'GET' + , path => "nodes/:atom:node/monitor/metrics/:atom:type" + , func => lookup_metrics + , descr => "Get a History metrics" + }). + +-rest_api(#{ name => metrics + , method => 'GET' + , path => "monitor/metrics" + , func => metrics + , descr => "Get History metrics" + }). + +-rest_api(#{ name => lookup_metrics + , method => 'GET' + , path => "monitor/metrics/:atom:type" + , func => lookup_metrics + , descr => "Get a History metrics" + }). + +-export([ current_metrics/2 + , metrics/2 + , lookup_metrics/2 + ]). + +-export([ sampling/1 + , sampling/2 + , get_collect/1 + ]). + +current_metrics(_Bindings, _Params) -> + Data = [get_collect(Node) || Node <- ekka_mnesia:running_nodes()], + NodeSize = length(ekka_mnesia:running_nodes()), + {Received, Sent, Sub, Conn} = format_current_metrics(Data), + Info = [{node, NodeSize}, + {received, Received}, + {sent, Sent}, + {subscription, Sub}, + {connection, Conn}], + return({ok, Info}). + +metrics(#{node := Node}, _Params) -> + return({ok, sampling(Node)}); + +metrics(_Bindings, _Params) -> + Data = [{Node, sampling(Node)} || Node <- ekka_mnesia:running_nodes()], + return({ok, Data}). + +lookup_metrics(#{node := Node, type := Type}, _Params) -> + return({ok, sampling(Node, Type)}); + +lookup_metrics(#{type := Type}, _Params) -> + Data = [{Node, sampling(Node, Type)} || Node <- ekka_mnesia:running_nodes()], + return({ok, Data}). + +format_current_metrics(Collects) -> + format_current_metrics(Collects, {0,0,0,0}). +format_current_metrics([], Acc) -> + Acc; +format_current_metrics([{Received, Sent, Sub, Conn} | Collects], {Received1, Sent1, Sub1, Conn1}) -> + format_current_metrics(Collects, {Received1 + Received, Sent1 + Sent, Sub1 + Sub, Conn1 + Conn}). + +get_collect(Node) when Node =:= node() -> + emqx_dashboard_collection:get_collect(); +get_collect(Node) -> + case rpc:call(Node, emqx_dashboard_collection, get_collect, []) of + {badrpc, _Reason} -> {0, 0, 0, 0}; + Res -> Res + end. + +sampling(Node) when Node =:= node() -> + Time = emqx_dashboard_collection:get_local_time() - 7200000, + All = dets:select(emqx_collect, [{{mqtt_collect,'$1','$2'}, [{'>', '$1', Time}], ['$_']}]), + format(lists:sort(All)); +sampling(Node) -> + rpc:call(Node, ?MODULE, sampling, [Node]). + +sampling(Node, Type) when Node =:= node() -> + Time = emqx_dashboard_collection:get_local_time() - 7200000, + All = dets:select(emqx_collect, [{{mqtt_collect,'$1','$2'}, [{'>', '$1', Time}], ['$_']}]), + format_single(lists:sort(All), Type); +sampling(Node, Type) -> + rpc:call(Node, ?MODULE, sampling, [Node, Type]). + +format(Collects) -> + format(Collects, {[],[],[],[],[],[]}). +format([], {Connection, Route, Subscription, Received, Sent, Dropped}) -> + [{connection, lists:reverse(Connection)}, + {route, lists:reverse(Route)}, + {subscriptions, lists:reverse(Subscription)}, + {received, lists:reverse(Received)}, + {sent, lists:reverse(Sent)}, + {dropped, lists:reverse(Dropped)}]; + + +format([#mqtt_collect{timestamp = Ts, collect = {C, R, S, Re, S1, D}} | Collects], + {Connection, Route, Subscription, Received, Sent, Dropped}) -> + format(Collects, {[[Ts, C] | Connection], + [[Ts, R] | Route], + [[Ts, S] | Subscription], + [[Ts, Re] | Received], + [[Ts, S1] | Sent], + [[Ts, D] | Dropped]}). + +format_single(Collects, Type) -> + format_single(Collects, Type, []). +format_single([], _Type, Acc) -> + lists:reverse(Acc); +format_single([#mqtt_collect{timestamp = Ts, collect = Collect} | Collects], Type, Acc) -> + format_single(Collects, Type, [[Ts, erlang:element(type(Type), Collect)] | Acc]). + +type(connection) -> 1; +type(route) -> 2; +type(subscriptions) -> 3; +type(received) -> 4; +type(sent) -> 5; +type(dropped) -> 6. diff --git a/apps/emqx_enterprise_dashboard/src/emqx_dashboard_sup.erl b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_sup.erl new file mode 100644 index 000000000..45316f402 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/src/emqx_dashboard_sup.erl @@ -0,0 +1,21 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. +%%-------------------------------------------------------------------- + +-module(emqx_dashboard_sup). + +-behaviour(supervisor). + +-export([start_link/0]). + +-export([init/1]). + +-define(CHILD(I, P), {I, {I, start_link, P}, permanent, 5000, worker, [I]}). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + {ok, { {one_for_all, 10, 100}, [?CHILD(emqx_dashboard_admin, []), + ?CHILD(emqx_dashboard_collection, [#{}])] } }. + diff --git a/apps/emqx_enterprise_dashboard/test/emqx_dashboard_SUITE.erl b/apps/emqx_enterprise_dashboard/test/emqx_dashboard_SUITE.erl new file mode 100644 index 000000000..c981f160e --- /dev/null +++ b/apps/emqx_enterprise_dashboard/test/emqx_dashboard_SUITE.erl @@ -0,0 +1,146 @@ +-module(emqx_dashboard_SUITE). + +-compile(export_all). + +-import(emqx_ct_http, [ request_api/3 + , request_api/5 + , get_http_data/1 + ]). + +-include_lib("eunit/include/eunit.hrl"). + +-include_lib("emqx/include/emqx.hrl"). + +-define(CONTENT_TYPE, "application/x-www-form-urlencoded"). + +-define(HOST, "http://127.0.0.1:18083/"). + +-define(API_VERSION, "v4"). + +-define(BASE_PATH, "api"). + +-define(OVERVIEWS, ['alarms/activated', 'alarms/deactivated', banned, brokers, stats, metrics, listeners, clients, subscriptions, routes, plugins]). + +all() -> + [{group, overview}, + {group, admins}, + {group, rest}, + {group, cli} + ]. + +groups() -> + [{overview, [sequence], [t_overview]}, + {admins, [sequence], [t_admins_add_delete]}, + {rest, [sequence], [t_rest_api]}, + {cli, [sequence], [t_cli]} + ]. + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx, emqx_management, emqx_dashboard]), + Config. + +end_per_suite(_Config) -> + emqx_ct_helpers:stop_apps([emqx_dashboard, emqx_management, emqx]), + ekka_mnesia:ensure_stopped(). + +t_overview(_) -> + [?assert(request_dashbaord(get, api_path(erlang:atom_to_list(Overview)), auth_header_()))|| Overview <- ?OVERVIEWS]. + +t_admins_add_delete(_) -> + ok = emqx_dashboard_admin:add_user(<<"username">>, <<"password">>, <<"tag">>), + ok = emqx_dashboard_admin:add_user(<<"username1">>, <<"password1">>, <<"tag1">>), + Admins = emqx_dashboard_admin:all_users(), + ?assertEqual(3, length(Admins)), + ok = emqx_dashboard_admin:remove_user(<<"username1">>), + Users = emqx_dashboard_admin:all_users(), + ?assertEqual(2, length(Users)), + ok = emqx_dashboard_admin:change_password(<<"username">>, <<"password">>, <<"pwd">>), + timer:sleep(10), + ?assert(request_dashbaord(get, api_path("brokers"), auth_header_("username", "pwd"))), + + ok = emqx_dashboard_admin:remove_user(<<"username">>), + ?assertNotEqual(true, request_dashbaord(get, api_path("brokers"), auth_header_("username", "pwd"))). + +t_rest_api(_Config) -> + {ok, Res0} = http_get("users"), + + ?assertEqual([[{<<"username">>,<<"admin">>}, + {<<"tags">>,<<"administrator">>}]], get_http_data(Res0)), + + AssertSuccess = fun({ok, Res}) -> + ?assertEqual(#{<<"code">> => 0}, json(Res)) + end, + [AssertSuccess(R) + || R <- [ http_put("users/admin", [{<<"tags">>, <<"a_new_tag">>}]) + , http_post("users", [{<<"username">>, <<"usera">>}, {<<"password">>, <<"passwd">>}]) + , http_post("auth", [{<<"username">>, <<"usera">>}, {<<"password">>, <<"passwd">>}]) + , http_delete("users/usera") + , http_put("change_pwd/admin", [{<<"old_pwd">>, <<"public">>}, {<<"new_pwd">>, <<"newpwd">>}]) + , http_post("auth", [{<<"username">>, <<"admin">>}, {<<"password">>, <<"newpwd">>}]) + ]], + ok. + +t_cli(_Config) -> + [mnesia:dirty_delete({mqtt_admin, Admin}) || Admin <- mnesia:dirty_all_keys(mqtt_admin)], + emqx_dashboard_cli:admins(["add", "username", "password"]), + [{mqtt_admin, <<"username">>, <>, _}] = + emqx_dashboard_admin:lookup_user(<<"username">>), + ?assertEqual(Hash, erlang:md5(<>/binary>>)), + emqx_dashboard_cli:admins(["passwd", "username", "newpassword"]), + [{mqtt_admin, <<"username">>, <>, _}] = + emqx_dashboard_admin:lookup_user(<<"username">>), + ?assertEqual(Hash1, erlang:md5(<>/binary>>)), + emqx_dashboard_cli:admins(["del", "username"]), + [] = emqx_dashboard_admin:lookup_user(<<"username">>), + emqx_dashboard_cli:admins(["add", "admin1", "pass1"]), + emqx_dashboard_cli:admins(["add", "admin2", "passw2"]), + AdminList = emqx_dashboard_admin:all_users(), + ?assertEqual(2, length(AdminList)). + +%%------------------------------------------------------------------------------ +%% Internal functions +%%------------------------------------------------------------------------------ + +http_get(Path) -> + request_api(get, api_path(Path), auth_header_()). + +http_delete(Path) -> + request_api(delete, api_path(Path), auth_header_()). + +http_post(Path, Body) -> + request_api(post, api_path(Path), [], auth_header_(), Body). + +http_put(Path, Body) -> + request_api(put, api_path(Path), [], auth_header_(), Body). + +request_dashbaord(Method, Url, Auth) -> + Request = {Url, [Auth]}, + do_request_dashbaord(Method, Request). +request_dashbaord(Method, Url, QueryParams, Auth) -> + Request = {Url ++ "?" ++ QueryParams, [Auth]}, + do_request_dashbaord(Method, Request). +do_request_dashbaord(Method, Request)-> + ct:pal("Method: ~p, Request: ~p", [Method, Request]), + case httpc:request(Method, Request, [], []) of + {error, socket_closed_remotely} -> + {error, socket_closed_remotely}; + {ok, {{"HTTP/1.1", 200, _}, _, _Return} } -> + true; + {ok, {Reason, _, _}} -> + {error, Reason} + end. + +auth_header_() -> + auth_header_("admin", "public"). + +auth_header_(User, Pass) -> + Encoded = base64:encode_to_string(lists:append([User,":",Pass])), + {"Authorization","Basic " ++ Encoded}. + +api_path(Path) -> + ?HOST ++ filename:join([?BASE_PATH, ?API_VERSION, Path]). + +json(Data) -> + {ok, Jsx} = emqx_json:safe_decode(Data, [return_maps]), Jsx. + + diff --git a/apps/emqx_exhook/.github/workflows/run_test_cases.yaml b/apps/emqx_exhook/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..9970ed321 --- /dev/null +++ b/apps/emqx_exhook/.github/workflows/run_test_cases.yaml @@ -0,0 +1,28 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: Code dialyzer + run: | + make xref + make dialyzer + - name: Run test cases + run: | + make eunit + make proper + make ct + make cover + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs + path: _build/test/logs diff --git a/apps/emqx_exhook/.gitignore b/apps/emqx_exhook/.gitignore new file mode 100644 index 000000000..da1f0db23 --- /dev/null +++ b/apps/emqx_exhook/.gitignore @@ -0,0 +1,29 @@ +.rebar3 +_* +.eunit +*.o +*.beam +*.plt +*.swp +*.swo +.erlang.cookie +ebin +log +erl_crash.dump +.rebar +logs +_build +.idea +*.iml +rebar3.crashdump +*~ +rebar.lock +data/ +*.conf.rendered +*.pyc +.DS_Store +*.class +Mnesia.nonode@nohost/ +src/emqx_exhook_pb.erl +src/emqx_exhook_v_1_hook_provider_client.erl +src/emqx_exhook_v_1_hook_provider_bhvr.erl diff --git a/apps/emqx_exhook/LICENSE b/apps/emqx_exhook/LICENSE new file mode 100644 index 000000000..ca8b52ced --- /dev/null +++ b/apps/emqx_exhook/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2020, JianBo He . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/apps/emqx_exhook/Makefile b/apps/emqx_exhook/Makefile new file mode 100644 index 000000000..0d6981ec2 --- /dev/null +++ b/apps/emqx_exhook/Makefile @@ -0,0 +1,44 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +proper: + $(REBAR) proper -d test/props + +ct: + $(REBAR) as test ct -v --name emqx_exhook_ct@127.0.0.1 + +eunit: + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +dialyzer: + $(REBAR) dialyzer + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_exhook.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_exhook.conf -i priv/emqx_exhook.schema -d data + diff --git a/apps/emqx_exhook/README.md b/apps/emqx_exhook/README.md new file mode 100644 index 000000000..216c39275 --- /dev/null +++ b/apps/emqx_exhook/README.md @@ -0,0 +1,39 @@ +# emqx_exhook + +The `emqx_exhook` extremly enhance the extensibility for EMQ X. It allow using an others programming language to mount the hooks intead of erlang. + +## Feature + +- [x] Based on gRPC, it brings a very wide range of applicability +- [x] Allows you to use the return value to extend emqx behavior. + +## Architecture + +``` +EMQ X Third-party Runtime ++========================+ +========+==========+ +| ExHook | | | | +| +----------------+ | gRPC | gRPC | User's | +| | gPRC Client | ------------------> | Server | Codes | +| +----------------+ | (HTTP/2) | | | +| | | | | ++========================+ +========+==========+ +``` + +## Usage + +### gRPC service + +See: `priv/protos/exhook.proto` + +### CLI + +## Example + +## Recommended gRPC Framework + +See: https://github.com/grpc-ecosystem/awesome-grpc + +## Thanks + +- [grpcbox](https://github.com/tsloughter/grpcbox) diff --git a/apps/emqx_exhook/docs/design.md b/apps/emqx_exhook/docs/design.md new file mode 100644 index 000000000..671e240cc --- /dev/null +++ b/apps/emqx_exhook/docs/design.md @@ -0,0 +1,116 @@ +# 设计 + +## 动机 + +在 EMQ X Broker v4.1-v4.2 中,我们发布了 2 个插件来扩展 emqx 的编程能力: + +1. `emqx-extension-hook` 提供了使用 Java, Python 向 Broker 挂载钩子的功能 +2. `emqx-exproto` 提供了使用 Java,Python 编写用户自定义协议接入插件的功能 + +但在后续的支持中发现许多难以处理的问题: + +1. 有大量的编程语言需要支持,需要编写和维护如 Go, JavaScript, Lua.. 等语言的驱动。 +2. `erlport` 使用的操作系统的管道进行通信,这让用户代码只能部署在和 emqx 同一个操作系统上。部署方式受到了极大的限制。 +3. 用户程序的启动参数直接打包到 Broker 中,导致用户开发无法实时的进行调试,单步跟踪等。 +4. `erlport` 会占用 `stdin` `stdout`。 + +因此,我们计划重构这部分的实现,其中主要的内容是: +1. 使用 `gRPC` 替换 `erlport`。 +2. 将 `emqx-extension-hook` 重命名为 `emqx-exhook` + + +旧版本的设计参考:[emqx-extension-hook design in v4.2.0](https://github.com/emqx/emqx-exhook/blob/v4.2.0/docs/design.md) + +## 设计 + +架构如下: + +``` + EMQ X ++========================+ +========+==========+ +| ExHook | | | | +| +----------------+ | gRPC | gRPC | User's | +| | gRPC Client | ------------------> | Server | Codes | +| +----------------+ | (HTTP/2) | | | +| | | | | ++========================+ +========+==========+ +``` + +`emqx-exhook` 通过 gRPC 的方式向用户部署的 gRPC 服务发送钩子的请求,并处理其返回的值。 + + +和 emqx 原生的钩子一致,emqx-exhook 也支持链式的方式计算和返回: + + + +### gRPC 服务示例 + +用户需要实现的方法,和数据类型的定义在 `priv/protos/exhook.proto` 文件中。例如,其支持的接口有: + +```protobuff +syntax = "proto3"; + +package emqx.exhook.v1; + +service HookProvider { + + rpc OnProviderLoaded(ProviderLoadedRequest) returns (LoadedResponse) {}; + + rpc OnProviderUnloaded(ProviderUnloadedRequest) returns (EmptySuccess) {}; + + rpc OnClientConnect(ClientConnectRequest) returns (EmptySuccess) {}; + + rpc OnClientConnack(ClientConnackRequest) returns (EmptySuccess) {}; + + rpc OnClientConnected(ClientConnectedRequest) returns (EmptySuccess) {}; + + rpc OnClientDisconnected(ClientDisconnectedRequest) returns (EmptySuccess) {}; + + rpc OnClientAuthenticate(ClientAuthenticateRequest) returns (ValuedResponse) {}; + + rpc OnClientCheckAcl(ClientCheckAclRequest) returns (ValuedResponse) {}; + + rpc OnClientSubscribe(ClientSubscribeRequest) returns (EmptySuccess) {}; + + rpc OnClientUnsubscribe(ClientUnsubscribeRequest) returns (EmptySuccess) {}; + + rpc OnSessionCreated(SessionCreatedRequest) returns (EmptySuccess) {}; + + rpc OnSessionSubscribed(SessionSubscribedRequest) returns (EmptySuccess) {}; + + rpc OnSessionUnsubscribed(SessionUnsubscribedRequest) returns (EmptySuccess) {}; + + rpc OnSessionResumed(SessionResumedRequest) returns (EmptySuccess) {}; + + rpc OnSessionDiscarded(SessionDiscardedRequest) returns (EmptySuccess) {}; + + rpc OnSessionTakeovered(SessionTakeoveredRequest) returns (EmptySuccess) {}; + + rpc OnSessionTerminated(SessionTerminatedRequest) returns (EmptySuccess) {}; + + rpc OnMessagePublish(MessagePublishRequest) returns (ValuedResponse) {}; + + rpc OnMessageDelivered(MessageDeliveredRequest) returns (EmptySuccess) {}; + + rpc OnMessageDropped(MessageDroppedRequest) returns (EmptySuccess) {}; + + rpc OnMessageAcked(MessageAckedRequest) returns (EmptySuccess) {}; +} +``` + +### 配置文件示例 + +``` +## 配置 gRPC 服务地址 (HTTP) +## +## s1 为服务器的名称 +exhook.server.s1.url = http://127.0.0.1:9001 + +## 配置 gRPC 服务地址 (HTTPS) +## +## s2 为服务器名称 +exhook.server.s2.url = https://127.0.0.1:9002 +exhook.server.s2.cacertfile = ca.pem +exhook.server.s2.certfile = cert.pem +exhook.server.s2.keyfile = key.pem +``` diff --git a/apps/emqx_exhook/etc/emqx_exhook.conf b/apps/emqx_exhook/etc/emqx_exhook.conf new file mode 100644 index 000000000..f6f5213f7 --- /dev/null +++ b/apps/emqx_exhook/etc/emqx_exhook.conf @@ -0,0 +1,15 @@ +##==================================================================== +## EMQ X Hooks +##==================================================================== + +##-------------------------------------------------------------------- +## Server Address + +## The gRPC server url +## +## exhook.server.$name.url = url() +exhook.server.default.url = http://127.0.0.1:9000 + +#exhook.server.default.ssl.cacertfile = {{ platform_etc_dir }}/certs/cacert.pem +#exhook.server.default.ssl.certfile = {{ platform_etc_dir }}/certs/cert.pem +#exhook.server.default.ssl.keyfile = {{ platform_etc_dir }}/certs/key.pem diff --git a/apps/emqx_exhook/include/emqx_exhook.hrl b/apps/emqx_exhook/include/emqx_exhook.hrl new file mode 100644 index 000000000..8a404ca39 --- /dev/null +++ b/apps/emqx_exhook/include/emqx_exhook.hrl @@ -0,0 +1,22 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-ifndef(EMQX_EXHOOK_HRL). +-define(EMQX_EXHOOK_HRL, true). + +-define(APP, emqx_exhook). + +-endif. diff --git a/apps/emqx_exhook/priv/emqx_exhook.schema b/apps/emqx_exhook/priv/emqx_exhook.schema new file mode 100644 index 000000000..2a926b968 --- /dev/null +++ b/apps/emqx_exhook/priv/emqx_exhook.schema @@ -0,0 +1,38 @@ +%%-*- mode: erlang -*- + +{mapping, "exhook.server.$name.url", "emqx_exhook.servers", [ + {datatype, string} +]}. + +{mapping, "exhook.server.$name.ssl.cacertfile", "emqx_exhook.servers", [ + {datatype, string} +]}. + +{mapping, "exhook.server.$name.ssl.certfile", "emqx_exhook.servers", [ + {datatype, string} +]}. + +{mapping, "exhook.server.$name.ssl.keyfile", "emqx_exhook.servers", [ + {datatype, string} +]}. + +{translation, "emqx_exhook.servers", fun(Conf) -> + Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end, + ServerOptions = fun(Prefix) -> + case http_uri:parse(cuttlefish:conf_get(Prefix ++ ".url", Conf)) of + {ok, {http, _, Host, Port, _, _}} -> + [{scheme, http}, {host, Host}, {port, Port}]; + {ok, {https, _, Host, Port, _, _}} -> + [{scheme, https}, {host, Host}, {port, Port}, + {ssl_options, + Filter([{ssl, true}, + {certfile, cuttlefish:conf_get(Prefix ++ ".ssl.certfile", Conf)}, + {keyfile, cuttlefish:conf_get(Prefix ++ ".ssl.keyfile", Conf)}, + {cacertfile, cuttlefish:conf_get(Prefix ++ ".ssl.cacertfile", Conf)} + ])}]; + _ -> error(invalid_server_options) + end + end, + [{list_to_atom(Name), ServerOptions("exhook.server." ++ Name)} + || {["exhook", "server", Name, "url"], _} <- cuttlefish_variable:filter_by_prefix("exhook.server", Conf)] +end}. diff --git a/apps/emqx_exhook/priv/protos/exhook.proto b/apps/emqx_exhook/priv/protos/exhook.proto new file mode 100644 index 000000000..8dc9641b9 --- /dev/null +++ b/apps/emqx_exhook/priv/protos/exhook.proto @@ -0,0 +1,395 @@ +//------------------------------------------------------------------------------ +// Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//------------------------------------------------------------------------------ + +syntax = "proto3"; + +package emqx.exhook.v1; + +service HookProvider { + + rpc OnProviderLoaded(ProviderLoadedRequest) returns (LoadedResponse) {}; + + rpc OnProviderUnloaded(ProviderUnloadedRequest) returns (EmptySuccess) {}; + + rpc OnClientConnect(ClientConnectRequest) returns (EmptySuccess) {}; + + rpc OnClientConnack(ClientConnackRequest) returns (EmptySuccess) {}; + + rpc OnClientConnected(ClientConnectedRequest) returns (EmptySuccess) {}; + + rpc OnClientDisconnected(ClientDisconnectedRequest) returns (EmptySuccess) {}; + + rpc OnClientAuthenticate(ClientAuthenticateRequest) returns (ValuedResponse) {}; + + rpc OnClientCheckAcl(ClientCheckAclRequest) returns (ValuedResponse) {}; + + rpc OnClientSubscribe(ClientSubscribeRequest) returns (EmptySuccess) {}; + + rpc OnClientUnsubscribe(ClientUnsubscribeRequest) returns (EmptySuccess) {}; + + rpc OnSessionCreated(SessionCreatedRequest) returns (EmptySuccess) {}; + + rpc OnSessionSubscribed(SessionSubscribedRequest) returns (EmptySuccess) {}; + + rpc OnSessionUnsubscribed(SessionUnsubscribedRequest) returns (EmptySuccess) {}; + + rpc OnSessionResumed(SessionResumedRequest) returns (EmptySuccess) {}; + + rpc OnSessionDiscarded(SessionDiscardedRequest) returns (EmptySuccess) {}; + + rpc OnSessionTakeovered(SessionTakeoveredRequest) returns (EmptySuccess) {}; + + rpc OnSessionTerminated(SessionTerminatedRequest) returns (EmptySuccess) {}; + + rpc OnMessagePublish(MessagePublishRequest) returns (ValuedResponse) {}; + + rpc OnMessageDelivered(MessageDeliveredRequest) returns (EmptySuccess) {}; + + rpc OnMessageDropped(MessageDroppedRequest) returns (EmptySuccess) {}; + + rpc OnMessageAcked(MessageAckedRequest) returns (EmptySuccess) {}; +} + +//------------------------------------------------------------------------------ +// Request & Response +//------------------------------------------------------------------------------ + +message ProviderLoadedRequest { + + BrokerInfo broker = 1; +} + +message LoadedResponse { + + repeated HookSpec hooks = 1; +} + +message ProviderUnloadedRequest { } + +message ClientConnectRequest { + + ConnInfo conninfo = 1; + + // MQTT CONNECT packet's properties (MQTT v5.0) + // + // It should be empty on MQTT v3.1.1/v3.1 or others protocol + repeated Property props = 2; +} + +message ClientConnackRequest { + + ConnInfo conninfo = 1; + + string result_code = 2; + + repeated Property props = 3; +} + +message ClientConnectedRequest { + + ClientInfo clientinfo = 1; +} + +message ClientDisconnectedRequest { + + ClientInfo clientinfo = 1; + + string reason = 2; +} + +message ClientAuthenticateRequest { + + ClientInfo clientinfo = 1; + + bool result = 2; +} + +message ClientCheckAclRequest { + + ClientInfo clientinfo = 1; + + enum AclReqType { + + PUBLISH = 0; + + SUBSCRIBE = 1; + } + + AclReqType type = 2; + + string topic = 3; + + bool result = 4; +} + +message ClientSubscribeRequest { + + ClientInfo clientinfo = 1; + + repeated Property props = 2; + + repeated TopicFilter topic_filters = 3; +} + +message ClientUnsubscribeRequest { + + ClientInfo clientinfo = 1; + + repeated Property props = 2; + + repeated TopicFilter topic_filters = 3; +} + +message SessionCreatedRequest { + + ClientInfo clientinfo = 1; +} + +message SessionSubscribedRequest { + + ClientInfo clientinfo = 1; + + string topic = 2; + + SubOpts subopts = 3; +} + +message SessionUnsubscribedRequest { + + ClientInfo clientinfo = 1; + + string topic = 2; +} + +message SessionResumedRequest { + + ClientInfo clientinfo = 1; +} + +message SessionDiscardedRequest { + + ClientInfo clientinfo = 1; +} + +message SessionTakeoveredRequest { + + ClientInfo clientinfo = 1; +} + +message SessionTerminatedRequest { + + ClientInfo clientinfo = 1; + + string reason = 2; +} + +message MessagePublishRequest { + + Message message = 1; +} + +message MessageDeliveredRequest { + + ClientInfo clientinfo = 1; + + Message message = 2; +} + +message MessageDroppedRequest { + + Message message = 1; + + string reason = 2; +} + +message MessageAckedRequest { + + ClientInfo clientinfo = 1; + + Message message = 2; +} + +//------------------------------------------------------------------------------ +// Basic data types +//------------------------------------------------------------------------------ + +message EmptySuccess { } + +message ValuedResponse { + + // The responsed value type + // - ignore: Ignore the responsed value + // - contiune: Use the responsed value and execute the next hook + // - stop_and_return: Use the responsed value and stop the chain executing + enum ResponsedType { + + IGNORE = 0; + + CONTINUE = 1; + + STOP_AND_RETURN = 2; + } + + ResponsedType type = 1; + + oneof value { + + // Boolean result, used on the 'client.authenticate', 'client.check_acl' hooks + bool bool_result = 3; + + // Message result, used on the 'message.*' hooks + Message message = 4; + } +} + +message BrokerInfo { + + string version = 1; + + string sysdescr = 2; + + string uptime = 3; + + string datetime = 4; +} + +message HookSpec { + + // The registered hooks name + // + // Available value: + // "client.connect", "client.connack" + // "client.connected", "client.disconnected" + // "client.authenticate", "client.check_acl" + // "client.subscribe", "client.unsubscribe" + // + // "session.created", "session.subscribed" + // "session.unsubscribed", "session.resumed" + // "session.discarded", "session.takeovered" + // "session.terminated" + // + // "message.publish", "message.delivered" + // "message.acked", "message.dropped" + string name = 1; + + // The topic filters for message hooks + repeated string topics = 2; +} + +message ConnInfo { + + string node = 1; + + string clientid = 2; + + string username = 3; + + string peerhost = 4; + + uint32 sockport = 5; + + string proto_name = 6; + + string proto_ver = 7; + + uint32 keepalive = 8; +} + +message ClientInfo { + + string node = 1; + + string clientid = 2; + + string username = 3; + + string password = 4; + + string peerhost = 5; + + uint32 sockport = 6; + + string protocol = 7; + + string mountpoint = 8; + + bool is_superuser = 9; + + bool anonymous = 10; +} + +message Message { + + string node = 1; + + string id = 2; + + uint32 qos = 3; + + string from = 4; + + string topic = 5; + + bytes payload = 6; + + uint64 timestamp = 7; +} + +message Property { + + string name = 1; + + string value = 2; +} + +message TopicFilter { + + string name = 1; + + uint32 qos = 2; +} + +message SubOpts { + + // The QoS level + uint32 qos = 1; + + // The group name for shared subscription + string share = 2; + + // The Retain Handling option (MQTT v5.0) + // + // 0 = Send retained messages at the time of the subscribe + // 1 = Send retained messages at subscribe only if the subscription does + // not currently exist + // 2 = Do not send retained messages at the time of the subscribe + uint32 rh = 3; + + // The Retain as Published option (MQTT v5.0) + // + // If 1, Application Messages forwarded using this subscription keep the + // RETAIN flag they were published with. + // If 0, Application Messages forwarded using this subscription have the + // RETAIN flag set to 0. + // Retained messages sent when the subscription is established have the RETAIN flag set to 1. + uint32 rap = 4; + + // The No Local option (MQTT v5.0) + // + // If the value is 1, Application Messages MUST NOT be forwarded to a + // connection with a ClientID equal to the ClientID of the publishing + uint32 nl = 5; +} diff --git a/apps/emqx_exhook/rebar.config b/apps/emqx_exhook/rebar.config new file mode 100644 index 000000000..9f15f77dc --- /dev/null +++ b/apps/emqx_exhook/rebar.config @@ -0,0 +1,47 @@ +%%-*- mode: erlang -*- +{plugins, + [rebar3_proper, + {grpc_plugin, {git, "https://github.com/HJianBo/grpcbox_plugin", {branch, "v0.9.0"}}} +]}. + +{deps, + [{grpc, {git, "https://github.com/emqx/grpc", {tag, "0.5.0"}}} +]}. + +{grpc, + [{protos, ["priv/protos"]}, + {gpb_opts, [{module_name_prefix, "emqx_"}, + {module_name_suffix, "_pb"}]} +]}. + +{provider_hooks, + [{pre, [{compile, {grpc, gen}}]}]}. + +{edoc_opts, [{preprocess, true}]}. + +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{xref_ignores, [emqx_exhook_pb]}. + +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. +{cover_excl_mods, [emqx_exhook_pb, + emqx_exhook_v_1_hook_provider_bhvr, + emqx_exhook_v_1_hook_provider_client]}. + +{profiles, + [{test, + [{deps, + [{emqx_ct_helper, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "v1.3.1"}}} + ]} + ]} +]}. diff --git a/apps/emqx_exhook/rebar.config.script b/apps/emqx_exhook/rebar.config.script new file mode 100644 index 000000000..0d99bd0c0 --- /dev/null +++ b/apps/emqx_exhook/rebar.config.script @@ -0,0 +1,53 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, + +NewDeps = [EMQX_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_exhook/src/emqx_exhook.app.src b/apps/emqx_exhook/src/emqx_exhook.app.src new file mode 100644 index 000000000..fd8bc98ae --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook.app.src @@ -0,0 +1,12 @@ +{application, emqx_exhook, + [{description, "EMQ X Extension for Hook"}, + {vsn, "git"}, + {modules, []}, + {registered, []}, + {mod, {emqx_exhook_app, []}}, + {applications, [kernel,stdlib,grpc]}, + {env,[]}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}]} + ]}. diff --git a/apps/emqx_exhook/src/emqx_exhook.app.src.script b/apps/emqx_exhook/src/emqx_exhook.app.src.script new file mode 100644 index 000000000..b549f9e39 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_exhook/src/emqx_exhook.appup.src b/apps/emqx_exhook/src/emqx_exhook.appup.src new file mode 100644 index 000000000..0ad1428f7 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook.appup.src @@ -0,0 +1,21 @@ +%% -*-: erlang -*- +{VSN, + [ + {"e4.2.0", [ + {restart_application, emqx_exhook} + ]}, + {"e4.2.1", [ + {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ], + [ + {"e4.2.0", [ + {restart_application, emqx_exhook} + ]}, + {"e4.2.1", [ + {load_module, emqx_exhook_server, brutal_purge, soft_purge, []} + ]}, + {<<".*">>, []} + ] +}. diff --git a/apps/emqx_exhook/src/emqx_exhook.erl b/apps/emqx_exhook/src/emqx_exhook.erl new file mode 100644 index 000000000..c464f31b5 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook.erl @@ -0,0 +1,134 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook). + +-include("emqx_exhook.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[ExHook]"). + +%% Mgmt APIs +-export([ enable/2 + , disable/1 + , disable_all/0 + , list/0 + ]). + +-export([ cast/2 + , call_fold/3 + ]). + +%%-------------------------------------------------------------------- +%% Mgmt APIs +%%-------------------------------------------------------------------- + +-spec list() -> [emqx_exhook_server:server()]. +list() -> + [server(Name) || Name <- running()]. + +-spec enable(atom()|string(), list()) -> ok | {error, term()}. +enable(Name, Opts) -> + case lists:member(Name, running()) of + true -> + {error, already_started}; + _ -> + case emqx_exhook_server:load(Name, Opts) of + {ok, ServiceState} -> + save(Name, ServiceState); + {error, Reason} -> + ?LOG(error, "Load server ~p failed: ~p", [Name, Reason]), + {error, Reason} + end + end. + +-spec disable(atom()|string()) -> ok | {error, term()}. +disable(Name) -> + case server(Name) of + undefined -> {error, not_running}; + Service -> + ok = emqx_exhook_server:unload(Service), + unsave(Name) + end. + +-spec disable_all() -> [term()]. +disable_all() -> + [begin disable(Name), Name end || Name <- running()]. + +%%---------------------------------------------------------- +%% Dispatch APIs +%%---------------------------------------------------------- + +-spec cast(atom(), map()) -> ok. +cast(Hookpoint, Req) -> + cast(Hookpoint, Req, running()). + +cast(_, _, []) -> + ok; +cast(Hookpoint, Req, [ServiceName|More]) -> + %% XXX: Need a real asynchronous running + _ = emqx_exhook_server:call(Hookpoint, Req, server(ServiceName)), + cast(Hookpoint, Req, More). + +-spec call_fold(atom(), term(), function()) + -> {ok, term()} + | {stop, term()}. +call_fold(Hookpoint, Req, AccFun) -> + call_fold(Hookpoint, Req, AccFun, running()). + +call_fold(_, Req, _, []) -> + {ok, Req}; +call_fold(Hookpoint, Req, AccFun, [ServiceName|More]) -> + case emqx_exhook_server:call(Hookpoint, Req, server(ServiceName)) of + {ok, Resp} -> + case AccFun(Req, Resp) of + {stop, NReq} -> {stop, NReq}; + {ok, NReq} -> call_fold(Hookpoint, NReq, AccFun, More) + end; + _ -> + call_fold(Hookpoint, Req, AccFun, More) + end. + +%%---------------------------------------------------------- +%% Storage + +-compile({inline, [save/2]}). +save(Name, ServiceState) -> + Saved = persistent_term:get(?APP, []), + persistent_term:put(?APP, lists:reverse([Name | Saved])), + persistent_term:put({?APP, Name}, ServiceState). + +-compile({inline, [unsave/1]}). +unsave(Name) -> + case persistent_term:get(?APP, []) of + [] -> + persistent_term:erase(?APP); + Saved -> + persistent_term:put(?APP, lists:delete(Name, Saved)) + end, + persistent_term:erase({?APP, Name}), + ok. + +-compile({inline, [running/0]}). +running() -> + persistent_term:get(?APP, []). + +-compile({inline, [server/1]}). +server(Name) -> + case catch persistent_term:get({?APP, Name}) of + {'EXIT', {badarg,_}} -> undefined; + Service -> Service + end. diff --git a/apps/emqx_exhook/src/emqx_exhook_app.erl b/apps/emqx_exhook/src/emqx_exhook_app.erl new file mode 100644 index 000000000..1411b618d --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook_app.erl @@ -0,0 +1,117 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_app). + +-behaviour(application). + +-include("emqx_exhook.hrl"). + +-emqx_plugin(extension). + +-export([ start/2 + , stop/1 + , prep_stop/1 + ]). + +%% Internal export +-export([ load_server/2 + , unload_server/1 + , load_exhooks/0 + , unload_exhooks/0 + ]). + +%%-------------------------------------------------------------------- +%% Application callbacks +%%-------------------------------------------------------------------- + +start(_StartType, _StartArgs) -> + {ok, Sup} = emqx_exhook_sup:start_link(), + + %% Load all dirvers + load_all_servers(), + + %% Register all hooks + load_exhooks(), + + %% Register CLI + emqx_ctl:register_command(exhook, {emqx_exhook_cli, cli}, []), + {ok, Sup}. + +prep_stop(State) -> + emqx_ctl:unregister_command(exhook), + unload_exhooks(), + unload_all_servers(), + State. + +stop(_State) -> + ok. + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +load_all_servers() -> + lists:foreach(fun({Name, Options}) -> + load_server(Name, Options) + end, application:get_env(?APP, servers, [])). + +unload_all_servers() -> + emqx_exhook:disable_all(). + +load_server(Name, Options) -> + emqx_exhook:enable(Name, Options). + +unload_server(Name) -> + emqx_exhook:disable(Name). + +%%-------------------------------------------------------------------- +%% Exhooks + +load_exhooks() -> + [emqx:hook(Name, {M, F, A}) || {Name, {M, F, A}} <- search_exhooks()]. + +unload_exhooks() -> + [emqx:unhook(Name, {M, F}) || {Name, {M, F, _A}} <- search_exhooks()]. + +search_exhooks() -> + search_exhooks(ignore_lib_apps(application:loaded_applications())). +search_exhooks(Apps) -> + lists:flatten([ExHooks || App <- Apps, {_App, _Mod, ExHooks} <- find_attrs(App, exhooks)]). + +ignore_lib_apps(Apps) -> + LibApps = [kernel, stdlib, sasl, appmon, eldap, erts, + syntax_tools, ssl, crypto, mnesia, os_mon, + inets, goldrush, gproc, runtime_tools, + snmp, otp_mibs, public_key, asn1, ssh, hipe, + common_test, observer, webtool, xmerl, tools, + test_server, compiler, debugger, eunit, et, + wx], + [AppName || {AppName, _, _} <- Apps, not lists:member(AppName, LibApps)]. + +find_attrs(App, Def) -> + [{App, Mod, Attr} || {ok, Modules} <- [application:get_key(App, modules)], + Mod <- Modules, + {Name, Attrs} <- module_attributes(Mod), Name =:= Def, + Attr <- Attrs]. + +module_attributes(Module) -> + try Module:module_info(attributes) + catch + error:undef -> []; + error:Reason -> error(Reason) + end. + diff --git a/apps/emqx_exhook/src/emqx_exhook_cli.erl b/apps/emqx_exhook/src/emqx_exhook_cli.erl new file mode 100644 index 000000000..8bab9ced5 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook_cli.erl @@ -0,0 +1,80 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_cli). + +-include("emqx_exhook.hrl"). + +-export([cli/1]). + +cli(["server", "list"]) -> + if_enabled(fun() -> + Services = emqx_exhook:list(), + [emqx_ctl:print("HookServer(~s)~n", [emqx_exhook_server:format(Service)]) || Service <- Services] + end); + +cli(["server", "enable", Name0]) -> + if_enabled(fun() -> + Name = list_to_atom(Name0), + case proplists:get_value(Name, application:get_env(?APP, servers, [])) of + undefined -> + emqx_ctl:print("not_found~n"); + Opts -> + print(emqx_exhook:enable(Name, Opts)) + end + end); + +cli(["server", "disable", Name]) -> + if_enabled(fun() -> + print(emqx_exhook:disable(list_to_atom(Name))) + end); + +cli(["server", "stats"]) -> + if_enabled(fun() -> + [emqx_ctl:print("~-35s:~w~n", [Name, N]) || {Name, N} <- stats()] + end); + +cli(_) -> + emqx_ctl:usage([{"exhook server list", "List all running exhook server"}, + {"exhook server enable ", "Enable a exhook server in the configuration"}, + {"exhook server disable ", "Disable a exhook server"}, + {"exhook server stats", "Print exhook server statistic"}]). + +print(ok) -> + emqx_ctl:print("ok~n"); +print({error, Reason}) -> + emqx_ctl:print("~p~n", [Reason]). + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +if_enabled(Fun) -> + case lists:keymember(?APP, 1, application:which_applications()) of + true -> Fun(); + _ -> hint() + end. + +hint() -> + emqx_ctl:print("Please './bin/emqx_ctl plugins load emqx_exhook' first.~n"). + +stats() -> + lists:usort(lists:foldr(fun({K, N}, Acc) -> + case atom_to_list(K) of + "exhook." ++ Key -> [{Key, N}|Acc]; + _ -> Acc + end + end, [], emqx_metrics:all())). diff --git a/apps/emqx_exhook/src/emqx_exhook_handler.erl b/apps/emqx_exhook/src/emqx_exhook_handler.erl new file mode 100644 index 000000000..3a35073ca --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook_handler.erl @@ -0,0 +1,288 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_handler). + +-include("emqx_exhook.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[ExHook]"). + +-export([ on_client_connect/2 + , on_client_connack/3 + , on_client_connected/2 + , on_client_disconnected/3 + , on_client_authenticate/2 + , on_client_check_acl/4 + , on_client_subscribe/3 + , on_client_unsubscribe/3 + ]). + +%% Session Lifecircle Hooks +-export([ on_session_created/2 + , on_session_subscribed/3 + , on_session_unsubscribed/3 + , on_session_resumed/2 + , on_session_discarded/2 + , on_session_takeovered/2 + , on_session_terminated/3 + ]). + +%% Utils +-export([ message/1 + , stringfy/1 + , merge_responsed_bool/2 + , merge_responsed_message/2 + , assign_to_message/2 + , clientinfo/1 + ]). + +-import(emqx_exhook, + [ cast/2 + , call_fold/3 + ]). + +-exhooks([ {'client.connect', {?MODULE, on_client_connect, []}} + , {'client.connack', {?MODULE, on_client_connack, []}} + , {'client.connected', {?MODULE, on_client_connected, []}} + , {'client.disconnected', {?MODULE, on_client_disconnected, []}} + , {'client.authenticate', {?MODULE, on_client_authenticate, []}} + , {'client.check_acl', {?MODULE, on_client_check_acl, []}} + , {'client.subscribe', {?MODULE, on_client_subscribe, []}} + , {'client.unsubscribe', {?MODULE, on_client_unsubscribe, []}} + , {'session.created', {?MODULE, on_session_created, []}} + , {'session.subscribed', {?MODULE, on_session_subscribed, []}} + , {'session.unsubscribed',{?MODULE, on_session_unsubscribed, []}} + , {'session.resumed', {?MODULE, on_session_resumed, []}} + , {'session.discarded', {?MODULE, on_session_discarded, []}} + , {'session.takeovered', {?MODULE, on_session_takeovered, []}} + , {'session.terminated', {?MODULE, on_session_terminated, []}} + ]). + +%%-------------------------------------------------------------------- +%% Clients +%%-------------------------------------------------------------------- + +on_client_connect(ConnInfo, Props) -> + Req = #{conninfo => conninfo(ConnInfo), + props => properties(Props) + }, + cast('client.connect', Req). + +on_client_connack(ConnInfo, Rc, Props) -> + Req = #{conninfo => conninfo(ConnInfo), + result_code => stringfy(Rc), + props => properties(Props)}, + cast('client.connack', Req). + +on_client_connected(ClientInfo, _ConnInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo)}, + cast('client.connected', Req). + +on_client_disconnected(ClientInfo, Reason, _ConnInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo), + reason => stringfy(Reason) + }, + cast('client.disconnected', Req). + +on_client_authenticate(ClientInfo, AuthResult) -> + Bool = maps:get(auth_result, AuthResult, undefined) == success, + Req = #{clientinfo => clientinfo(ClientInfo), + result => Bool + }, + + case call_fold('client.authenticate', Req, + fun merge_responsed_bool/2) of + {StopOrOk, #{result := Bool}} when is_boolean(Bool) -> + Result = case Bool of true -> success; _ -> not_authorized end, + {StopOrOk, AuthResult#{auth_result => Result, anonymous => false}}; + _ -> + {ok, AuthResult} + end. + +on_client_check_acl(ClientInfo, PubSub, Topic, Result) -> + Bool = Result == allow, + Type = case PubSub of + publish -> 'PUBLISH'; + subscribe -> 'SUBSCRIBE' + end, + Req = #{clientinfo => clientinfo(ClientInfo), + type => Type, + topic => Topic, + result => Bool + }, + case call_fold('client.check_acl', Req, + fun merge_responsed_bool/2) of + {StopOrOk, #{result := Bool}} when is_boolean(Bool) -> + NResult = case Bool of true -> allow; _ -> deny end, + {StopOrOk, NResult}; + _ -> {ok, Result} + end. + +on_client_subscribe(ClientInfo, Props, TopicFilters) -> + Req = #{clientinfo => clientinfo(ClientInfo), + props => properties(Props), + topic_filters => topicfilters(TopicFilters) + }, + cast('client.subscribe', Req). + +on_client_unsubscribe(ClientInfo, Props, TopicFilters) -> + Req = #{clientinfo => clientinfo(ClientInfo), + props => properties(Props), + topic_filters => topicfilters(TopicFilters) + }, + cast('client.unsubscribe', Req). + +%%-------------------------------------------------------------------- +%% Session +%%-------------------------------------------------------------------- + +on_session_created(ClientInfo, _SessInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo)}, + cast('session.created', Req). + +on_session_subscribed(ClientInfo, Topic, SubOpts) -> + Req = #{clientinfo => clientinfo(ClientInfo), + topic => Topic, + subopts => maps:with([qos, share, rh, rap, nl], SubOpts) + }, + cast('session.subscribed', Req). + +on_session_unsubscribed(ClientInfo, Topic, _SubOpts) -> + Req = #{clientinfo => clientinfo(ClientInfo), + topic => Topic + }, + cast('session.unsubscribed', Req). + +on_session_resumed(ClientInfo, _SessInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo)}, + cast('session.resumed', Req). + +on_session_discarded(ClientInfo, _SessInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo)}, + cast('session.discarded', Req). + +on_session_takeovered(ClientInfo, _SessInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo)}, + cast('session.takeovered', Req). + +on_session_terminated(ClientInfo, Reason, _SessInfo) -> + Req = #{clientinfo => clientinfo(ClientInfo), + reason => stringfy(Reason)}, + cast('session.terminated', Req). + +%%-------------------------------------------------------------------- +%% Types + +properties(undefined) -> []; +properties(M) when is_map(M) -> + maps:fold(fun(K, V, Acc) -> + [#{name => stringfy(K), + value => stringfy(V)} | Acc] + end, [], M). + +conninfo(_ConnInfo = + #{clientid := ClientId, username := Username, peername := {Peerhost, _}, + sockname := {_, SockPort}, proto_name := ProtoName, proto_ver := ProtoVer, + keepalive := Keepalive}) -> + #{node => stringfy(node()), + clientid => ClientId, + username => maybe(Username), + peerhost => ntoa(Peerhost), + sockport => SockPort, + proto_name => ProtoName, + proto_ver => stringfy(ProtoVer), + keepalive => Keepalive}. + +clientinfo(ClientInfo = + #{clientid := ClientId, username := Username, peerhost := PeerHost, + sockport := SockPort, protocol := Protocol, mountpoint := Mountpoiont}) -> + #{node => stringfy(node()), + clientid => ClientId, + username => maybe(Username), + password => maybe(maps:get(password, ClientInfo, undefined)), + peerhost => ntoa(PeerHost), + sockport => SockPort, + protocol => stringfy(Protocol), + mountpoint => maybe(Mountpoiont), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true)}. + +message(#message{id = Id, qos = Qos, from = From, topic = Topic, payload = Payload, timestamp = Ts}) -> + #{node => stringfy(node()), + id => hexstr(Id), + qos => Qos, + from => stringfy(From), + topic => Topic, + payload => Payload, + timestamp => Ts}. + +assign_to_message(#{qos := Qos, topic := Topic, payload := Payload}, Message) -> + Message#message{qos = Qos, topic = Topic, payload = Payload}. + +topicfilters(Tfs) when is_list(Tfs) -> + [#{name => Topic, qos => Qos} || {Topic, #{qos := Qos}} <- Tfs]. + +ntoa({0,0,0,0,0,16#ffff,AB,CD}) -> + list_to_binary(inet_parse:ntoa({AB bsr 8, AB rem 256, CD bsr 8, CD rem 256})); +ntoa(IP) -> + list_to_binary(inet_parse:ntoa(IP)). + +maybe(undefined) -> <<>>; +maybe(B) -> B. + +%% @private +stringfy(Term) when is_binary(Term) -> + Term; +stringfy(Term) when is_integer(Term) -> + integer_to_binary(Term); +stringfy(Term) when is_atom(Term) -> + atom_to_binary(Term, utf8); +stringfy(Term) -> + unicode:characters_to_binary((io_lib:format("~0p", [Term]))). + +hexstr(B) -> + iolist_to_binary([io_lib:format("~2.16.0B", [X]) || X <- binary_to_list(B)]). + +%%-------------------------------------------------------------------- +%% Acc funcs + +%% see exhook.proto +merge_responsed_bool(Req, #{type := 'IGNORE'}) -> + {ok, Req}; +merge_responsed_bool(Req, #{type := Type, value := {bool_result, NewBool}}) + when is_boolean(NewBool) -> + NReq = Req#{result => NewBool}, + case Type of + 'CONTINUE' -> {ok, NReq}; + 'STOP_AND_RETURN' -> {stop, NReq} + end; +merge_responsed_bool(Req, Resp) -> + ?LOG(warning, "Unknown responsed value ~0p to merge to callback chain", [Resp]), + {ok, Req}. + +merge_responsed_message(Req, #{type := 'IGNORE'}) -> + {ok, Req}; +merge_responsed_message(Req, #{type := Type, value := {message, NMessage}}) -> + NReq = Req#{message => NMessage}, + case Type of + 'CONTINUE' -> {ok, NReq}; + 'STOP_AND_RETURN' -> {stop, NReq} + end; +merge_responsed_message(Req, Resp) -> + ?LOG(warning, "Unknown responsed value ~0p to merge to callback chain", [Resp]), + {ok, Req}. diff --git a/apps/emqx_exhook/src/emqx_exhook_server.erl b/apps/emqx_exhook/src/emqx_exhook_server.erl new file mode 100644 index 000000000..451983437 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook_server.erl @@ -0,0 +1,286 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_server). + +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[ExHook Svr]"). + +-define(PB_CLIENT_MOD, emqx_exhook_v_1_hook_provider_client). + +%% Load/Unload +-export([ load/2 + , unload/1 + ]). + +%% APIs +-export([call/3]). + +%% Infos +-export([ name/1 + , format/1 + ]). + +-record(server, { + %% Server name (equal to grpc client channel name) + name :: server_name(), + %% The server started options + options :: list(), + %% gRPC channel pid + channel :: pid(), + %% Registered hook names and options + hookspec :: #{hookpoint() => map()}, + %% Metrcis name prefix + prefix :: list() + }). + +-type server_name() :: string(). +-type server() :: #server{}. + +-type hookpoint() :: 'client.connect' + | 'client.connack' + | 'client.connected' + | 'client.disconnected' + | 'client.authenticate' + | 'client.check_acl' + | 'client.subscribe' + | 'client.unsubscribe' + | 'session.created' + | 'session.subscribed' + | 'session.unsubscribed' + | 'session.resumed' + | 'session.discarded' + | 'session.takeovered' + | 'session.terminated' + | 'message.publish' + | 'message.delivered' + | 'message.acked' + | 'message.dropped'. + +-export_type([server/0]). + +-dialyzer({nowarn_function, [inc_metrics/2]}). + +%%-------------------------------------------------------------------- +%% Load/Unload APIs +%%-------------------------------------------------------------------- + +-spec load(atom(), list()) -> {ok, server()} | {error, term()} . +load(Name0, Opts0) -> + Name = prefix(Name0), + {SvrAddr, ClientOpts} = channel_opts(Opts0), + case emqx_exhook_sup:start_grpc_client_channel(Name, SvrAddr, ClientOpts) of + {ok, _ChannPoolPid} -> + case do_init(Name) of + {ok, HookSpecs} -> + %% Reigster metrics + Prefix = lists:flatten(io_lib:format("exhook.~s.", [Name])), + ensure_metrics(Prefix, HookSpecs), + {ok, #server{name = Name, + options = Opts0, + channel = _ChannPoolPid, + hookspec = HookSpecs, + prefix = Prefix }}; + {error, _} = E -> + emqx_exhook_sup:stop_grpc_client_channel(Name), E + end; + {error, _} = E -> E + end. + +%% @private +prefix(Name) when is_atom(Name) -> + "exhook:" ++ atom_to_list(Name); +prefix(Name) when is_binary(Name) -> + "exhook:" ++ binary_to_list(Name); +prefix(Name) when is_list(Name) -> + "exhook:" ++ Name. + +%% @private +channel_opts(Opts) -> + Scheme = proplists:get_value(scheme, Opts), + Host = proplists:get_value(host, Opts), + Port = proplists:get_value(port, Opts), + SvrAddr = lists:flatten(io_lib:format("~s://~s:~w", [Scheme, Host, Port])), + ClientOpts = case Scheme of + https -> + SslOpts = lists:keydelete(ssl, 1, proplists:get_value(ssl_options, Opts, [])), + #{gun_opts => + #{transport => ssl, + transport_opts => SslOpts}}; + _ -> #{} + end, + {SvrAddr, ClientOpts}. + +-spec unload(server()) -> ok. +unload(#server{name = Name}) -> + _ = do_deinit(Name), + _ = emqx_exhook_sup:stop_grpc_client_channel(Name), + ok. + +do_deinit(Name) -> + _ = do_call(Name, 'on_provider_unloaded', #{}), + ok. + +do_init(ChannName) -> + Req = #{broker => maps:from_list(emqx_sys:info())}, + case do_call(ChannName, 'on_provider_loaded', Req) of + {ok, InitialResp} -> + try + {ok, resovle_hookspec(maps:get(hooks, InitialResp, []))} + catch _:Reason:Stk -> + ?LOG(error, "try to init ~p failed, reason: ~p, stacktrace: ~0p", + [ChannName, Reason, Stk]), + {error, Reason} + end; + {error, Reason} -> + {error, Reason} + end. + +%% @private +resovle_hookspec(HookSpecs) when is_list(HookSpecs) -> + MessageHooks = message_hooks(), + AvailableHooks = available_hooks(), + lists:foldr(fun(HookSpec, Acc) -> + case maps:get(name, HookSpec, undefined) of + undefined -> Acc; + Name0 -> + Name = try binary_to_existing_atom(Name0, utf8) catch T:R:_ -> {T,R} end, + case lists:member(Name, AvailableHooks) of + true -> + case lists:member(Name, MessageHooks) of + true -> + Acc#{Name => #{topics => maps:get(topics, HookSpec, [])}}; + _ -> + Acc#{Name => #{}} + end; + _ -> error({unknown_hookpoint, Name}) + end + end + end, #{}, HookSpecs). + +ensure_metrics(Prefix, HookSpecs) -> + Keys = [list_to_atom(Prefix ++ atom_to_list(Hookpoint)) + || Hookpoint <- maps:keys(HookSpecs)], + lists:foreach(fun emqx_metrics:ensure/1, Keys). + +format(#server{name = Name, hookspec = Hooks}) -> + io_lib:format("name=~p, hooks=~0p", [Name, Hooks]). + +%%-------------------------------------------------------------------- +%% APIs +%%-------------------------------------------------------------------- + +name(#server{name = Name}) -> + Name. + +-spec call(hookpoint(), map(), server()) + -> ignore + | {ok, Resp :: term()} + | {error, term()}. +call(Hookpoint, Req, #server{name = ChannName, hookspec = Hooks, prefix = Prefix}) -> + GrpcFunc = hk2func(Hookpoint), + case maps:get(Hookpoint, Hooks, undefined) of + undefined -> ignore; + Opts -> + NeedCall = case lists:member(Hookpoint, message_hooks()) of + false -> true; + _ -> + #{message := #{topic := Topic}} = Req, + match_topic_filter(Topic, maps:get(topics, Opts, [])) + end, + case NeedCall of + false -> ignore; + _ -> + inc_metrics(Prefix, Hookpoint), + do_call(ChannName, GrpcFunc, Req) + end + end. + +%% @private +inc_metrics(IncFun, Name) when is_function(IncFun) -> + %% BACKW: e4.2.0-e4.2.2 + {env, [Prefix|_]} = erlang:fun_info(IncFun, env), + inc_metrics(Prefix, Name); +inc_metrics(Prefix, Name) when is_list(Prefix) -> + emqx_metrics:inc(list_to_atom(Prefix ++ atom_to_list(Name))). + +-compile({inline, [match_topic_filter/2]}). +match_topic_filter(_, []) -> + true; +match_topic_filter(TopicName, TopicFilter) -> + lists:any(fun(F) -> emqx_topic:match(TopicName, F) end, TopicFilter). + +-spec do_call(string(), atom(), map()) -> {ok, map()} | {error, term()}. +do_call(ChannName, Fun, Req) -> + Options = #{channel => ChannName}, + ?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, Req, Options]), + case catch apply(?PB_CLIENT_MOD, Fun, [Req, Options]) of + {ok, Resp, _Metadata} -> + ?LOG(debug, "Response {ok, ~0p, ~0p}", [Resp, _Metadata]), + {ok, Resp}; + {error, {Code, Msg}, _Metadata} -> + ?LOG(error, "CALL ~0p:~0p(~0p, ~0p) response errcode: ~0p, errmsg: ~0p", + [?PB_CLIENT_MOD, Fun, Req, Options, Code, Msg]), + {error, {Code, Msg}}; + {error, Reason} -> + ?LOG(error, "CALL ~0p:~0p(~0p, ~0p) error: ~0p", + [?PB_CLIENT_MOD, Fun, Req, Options, Reason]), + {error, Reason}; + {'EXIT', {Reason, Stk}} -> + ?LOG(error, "CALL ~0p:~0p(~0p, ~0p) throw an exception: ~0p, stacktrace: ~0p", + [?PB_CLIENT_MOD, Fun, Req, Options, Reason, Stk]), + {error, Reason} + end. + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +-compile({inline, [hk2func/1]}). +hk2func('client.connect') -> 'on_client_connect'; +hk2func('client.connack') -> 'on_client_connack'; +hk2func('client.connected') -> 'on_client_connected'; +hk2func('client.disconnected') -> 'on_client_disconnected'; +hk2func('client.authenticate') -> 'on_client_authenticate'; +hk2func('client.check_acl') -> 'on_client_check_acl'; +hk2func('client.subscribe') -> 'on_client_subscribe'; +hk2func('client.unsubscribe') -> 'on_client_unsubscribe'; +hk2func('session.created') -> 'on_session_created'; +hk2func('session.subscribed') -> 'on_session_subscribed'; +hk2func('session.unsubscribed') -> 'on_session_unsubscribed'; +hk2func('session.resumed') -> 'on_session_resumed'; +hk2func('session.discarded') -> 'on_session_discarded'; +hk2func('session.takeovered') -> 'on_session_takeovered'; +hk2func('session.terminated') -> 'on_session_terminated'; +hk2func('message.publish') -> 'on_message_publish'; +hk2func('message.delivered') ->'on_message_delivered'; +hk2func('message.acked') -> 'on_message_acked'; +hk2func('message.dropped') ->'on_message_dropped'. + +-compile({inline, [message_hooks/0]}). +message_hooks() -> + ['message.publish', 'message.delivered', + 'message.acked', 'message.dropped']. + +-compile({inline, [available_hooks/0]}). +available_hooks() -> + ['client.connect', 'client.connack', 'client.connected', + 'client.disconnected', 'client.authenticate', 'client.check_acl', + 'client.subscribe', 'client.unsubscribe', + 'session.created', 'session.subscribed', 'session.unsubscribed', + 'session.resumed', 'session.discarded', 'session.takeovered', + 'session.terminated' | message_hooks()]. diff --git a/apps/emqx_exhook/src/emqx_exhook_sup.erl b/apps/emqx_exhook/src/emqx_exhook_sup.erl new file mode 100644 index 000000000..c8d2ecf35 --- /dev/null +++ b/apps/emqx_exhook/src/emqx_exhook_sup.erl @@ -0,0 +1,59 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_sup). + +-behaviour(supervisor). + +-export([ start_link/0 + , init/1 + ]). + +-export([ start_grpc_client_channel/3 + , stop_grpc_client_channel/1 + ]). + +%%-------------------------------------------------------------------- +%% Supervisor APIs & Callbacks +%%-------------------------------------------------------------------- + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init([]) -> + {ok, {{one_for_one, 10, 100}, []}}. + +%%-------------------------------------------------------------------- +%% APIs +%%-------------------------------------------------------------------- + +-spec start_grpc_client_channel( + string(), + uri_string:uri_string(), + grpc_client:options()) -> {ok, pid()} | {error, term()}. +start_grpc_client_channel(Name, SvrAddr, Options) -> + grpc_client_sup:create_channel_pool(Name, SvrAddr, Options). + +-spec stop_grpc_client_channel(string()) -> ok. +stop_grpc_client_channel(Name) -> + %% Avoid crash due to hot-upgrade had unloaded + %% grpc application + try + grpc_client_sup:stop_channel_pool(Name) + catch + _:_:_ -> + ok + end. diff --git a/apps/emqx_exhook/test/emqx_exhook_SUITE.erl b/apps/emqx_exhook/test/emqx_exhook_SUITE.erl new file mode 100644 index 000000000..b66950215 --- /dev/null +++ b/apps/emqx_exhook/test/emqx_exhook_SUITE.erl @@ -0,0 +1,53 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("eunit/include/eunit.hrl"). +-include_lib("common_test/include/ct.hrl"). + +%%-------------------------------------------------------------------- +%% Setups +%%-------------------------------------------------------------------- + +all() -> emqx_ct:all(?MODULE). + +init_per_suite(Cfg) -> + _ = emqx_exhook_demo_svr:start(), + emqx_ct_helpers:start_apps([emqx_exhook], fun set_special_cfgs/1), + Cfg. + +end_per_suite(_Cfg) -> + emqx_ct_helpers:stop_apps([emqx_exhook]), + emqx_exhook_demo_svr:stop(). + +set_special_cfgs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); +set_special_cfgs(emqx_exhook) -> + ok. + +%%-------------------------------------------------------------------- +%% Test cases +%%-------------------------------------------------------------------- + +t_hooks(_Cfg) -> + ok. diff --git a/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl b/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl new file mode 100644 index 000000000..05fa07465 --- /dev/null +++ b/apps/emqx_exhook/test/emqx_exhook_demo_svr.erl @@ -0,0 +1,297 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_exhook_demo_svr). + +-behavior(emqx_exhook_v_1_hook_provider_bhvr). + +%% +-export([ start/0 + , stop/0 + , take/0 + , in/1 + ]). + +%% gRPC server HookProvider callbacks +-export([ on_provider_loaded/2 + , on_provider_unloaded/2 + , on_client_connect/2 + , on_client_connack/2 + , on_client_connected/2 + , on_client_disconnected/2 + , on_client_authenticate/2 + , on_client_check_acl/2 + , on_client_subscribe/2 + , on_client_unsubscribe/2 + , on_session_created/2 + , on_session_subscribed/2 + , on_session_unsubscribed/2 + , on_session_resumed/2 + , on_session_discarded/2 + , on_session_takeovered/2 + , on_session_terminated/2 + , on_message_publish/2 + , on_message_delivered/2 + , on_message_dropped/2 + , on_message_acked/2 + ]). + +-define(PORT, 9000). +-define(NAME, ?MODULE). + +%%-------------------------------------------------------------------- +%% Server APIs +%%-------------------------------------------------------------------- + +start() -> + Pid = spawn(fun mngr_main/0), + register(?MODULE, Pid), + {ok, Pid}. + +stop() -> + grpc:stop_server(?NAME), + ?MODULE ! stop. + +take() -> + ?MODULE ! {take, self()}, + receive {value, V} -> V + after 5000 -> error(timeout) end. + +in({FunName, Req}) -> + ?MODULE ! {in, FunName, Req}. + +mngr_main() -> + application:ensure_all_started(grpc), + Services = #{protos => [emqx_exhook_pb], + services => #{'emqx.exhook.v1.HookProvider' => emqx_exhook_demo_svr} + }, + Options = [], + Svr = grpc:start_server(?NAME, ?PORT, Services, Options), + mngr_loop([Svr, queue:new(), queue:new()]). + +mngr_loop([Svr, Q, Takes]) -> + receive + {in, FunName, Req} -> + {NQ1, NQ2} = reply(queue:in({FunName, Req}, Q), Takes), + mngr_loop([Svr, NQ1, NQ2]); + {take, From} -> + {NQ1, NQ2} = reply(Q, queue:in(From, Takes)), + mngr_loop([Svr, NQ1, NQ2]); + stop -> + exit(normal) + end. + +reply(Q1, Q2) -> + case queue:len(Q1) =:= 0 orelse + queue:len(Q2) =:= 0 of + true -> {Q1, Q2}; + _ -> + {{value, {Name, V}}, NQ1} = queue:out(Q1), + {{value, From}, NQ2} = queue:out(Q2), + From ! {value, {Name, V}}, + {NQ1, NQ2} + end. + +%%-------------------------------------------------------------------- +%% callbacks +%%-------------------------------------------------------------------- + +-spec on_provider_loaded(emqx_exhook_pb:provider_loaded_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:loaded_response(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. + +on_provider_loaded(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{hooks => [ + #{name => <<"client.connect">>}, + #{name => <<"client.connack">>}, + #{name => <<"client.connected">>}, + #{name => <<"client.disconnected">>}, + #{name => <<"client.authenticate">>}, + #{name => <<"client.check_acl">>}, + #{name => <<"client.subscribe">>}, + #{name => <<"client.unsubscribe">>}, + #{name => <<"session.created">>}, + #{name => <<"session.subscribed">>}, + #{name => <<"session.unsubscribed">>}, + #{name => <<"session.resumed">>}, + #{name => <<"session.discarded">>}, + #{name => <<"session.takeovered">>}, + #{name => <<"session.terminated">>}, + #{name => <<"message.publish">>}, + #{name => <<"message.delivered">>}, + #{name => <<"message.acked">>}, + #{name => <<"message.dropped">>}]}, Md}. +-spec on_provider_unloaded(emqx_exhook_pb:provider_unloaded_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_provider_unloaded(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_connect(emqx_exhook_pb:client_connect_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_connect(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_connack(emqx_exhook_pb:client_connack_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_connack(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_connected(emqx_exhook_pb:client_connected_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_connected(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_disconnected(emqx_exhook_pb:client_disconnected_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_disconnected(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_authenticate(emqx_exhook_pb:client_authenticate_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_authenticate(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{type => 'IGNORE'}, Md}. + +-spec on_client_check_acl(emqx_exhook_pb:client_check_acl_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_check_acl(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{type => 'STOP_AND_RETURN', value => {bool_result, true}}, Md}. + +-spec on_client_subscribe(emqx_exhook_pb:client_subscribe_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_subscribe(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_client_unsubscribe(emqx_exhook_pb:client_unsubscribe_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_client_unsubscribe(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_created(emqx_exhook_pb:session_created_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_created(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_subscribed(emqx_exhook_pb:session_subscribed_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_subscribed(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_unsubscribed(emqx_exhook_pb:session_unsubscribed_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_unsubscribed(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_resumed(emqx_exhook_pb:session_resumed_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_resumed(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_discarded(emqx_exhook_pb:session_discarded_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_discarded(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_takeovered(emqx_exhook_pb:session_takeovered_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_takeovered(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_session_terminated(emqx_exhook_pb:session_terminated_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_session_terminated(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_message_publish(emqx_exhook_pb:message_publish_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:valued_response(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_message_publish(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_message_delivered(emqx_exhook_pb:message_delivered_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_message_delivered(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_message_dropped(emqx_exhook_pb:message_dropped_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_message_dropped(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. + +-spec on_message_acked(emqx_exhook_pb:message_acked_request(), grpc:metadata()) + -> {ok, emqx_exhook_pb:empty_success(), grpc:metadata()} + | {error, grpc_cowboy_h:error_response()}. +on_message_acked(Req, Md) -> + ?MODULE:in({?FUNCTION_NAME, Req}), + %io:format("fun: ~p, req: ~0p~n", [?FUNCTION_NAME, Req]), + {ok, #{}, Md}. diff --git a/apps/emqx_exhook/test/props/prop_exhook_hooks.erl b/apps/emqx_exhook/test/props/prop_exhook_hooks.erl new file mode 100644 index 000000000..e4c11dd3d --- /dev/null +++ b/apps/emqx_exhook/test/props/prop_exhook_hooks.erl @@ -0,0 +1,537 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(prop_exhook_hooks). + +-include_lib("proper/include/proper.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-import(emqx_ct_proper_types, + [ conninfo/0 + , clientinfo/0 + , sessioninfo/0 + , message/0 + , connack_return_code/0 + , topictab/0 + , topic/0 + , subopts/0 + ]). + +-define(ALL(Vars, Types, Exprs), + ?SETUP(fun() -> + State = do_setup(), + fun() -> do_teardown(State) end + end, ?FORALL(Vars, Types, Exprs))). + +%%-------------------------------------------------------------------- +%% Properties +%%-------------------------------------------------------------------- + +prop_client_connect() -> + ?ALL({ConnInfo, ConnProps}, + {conninfo(), conn_properties()}, + begin + _OutConnProps = emqx_hooks:run_fold('client.connect', [ConnInfo], ConnProps), + {'on_client_connect', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{props => properties(ConnProps), + conninfo => + #{node => nodestr(), + clientid => maps:get(clientid, ConnInfo), + username => maybe(maps:get(username, ConnInfo, <<>>)), + peerhost => peerhost(ConnInfo), + sockport => sockport(ConnInfo), + proto_name => maps:get(proto_name, ConnInfo), + proto_ver => stringfy(maps:get(proto_ver, ConnInfo)), + keepalive => maps:get(keepalive, ConnInfo) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_connack() -> + ?ALL({ConnInfo, Rc, AckProps}, + {conninfo(), connack_return_code(), ack_properties()}, + begin + _OutAckProps = emqx_hooks:run_fold('client.connack', [ConnInfo, Rc], AckProps), + {'on_client_connack', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{props => properties(AckProps), + result_code => atom_to_binary(Rc, utf8), + conninfo => + #{node => nodestr(), + clientid => maps:get(clientid, ConnInfo), + username => maybe(maps:get(username, ConnInfo, <<>>)), + peerhost => peerhost(ConnInfo), + sockport => sockport(ConnInfo), + proto_name => maps:get(proto_name, ConnInfo), + proto_ver => stringfy(maps:get(proto_ver, ConnInfo)), + keepalive => maps:get(keepalive, ConnInfo) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_authenticate() -> + ?ALL({ClientInfo, AuthResult}, {clientinfo(), authresult()}, + begin + _OutAuthResult = emqx_hooks:run_fold('client.authenticate', [ClientInfo], AuthResult), + {'on_client_authenticate', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{result => authresult_to_bool(AuthResult), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_check_acl() -> + ?ALL({ClientInfo, PubSub, Topic, Result}, + {clientinfo(), oneof([publish, subscribe]), topic(), oneof([allow, deny])}, + begin + _OutResult = emqx_hooks:run_fold('client.check_acl', [ClientInfo, PubSub, Topic], Result), + {'on_client_check_acl', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{result => aclresult_to_bool(Result), + type => pubsub_to_enum(PubSub), + topic => Topic, + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + + +prop_client_connected() -> + ?ALL({ClientInfo, ConnInfo}, + {clientinfo(), conninfo()}, + begin + ok = emqx_hooks:run('client.connected', [ClientInfo, ConnInfo]), + {'on_client_connected', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_disconnected() -> + ?ALL({ClientInfo, Reason, ConnInfo}, + {clientinfo(), shutdown_reason(), conninfo()}, + begin + ok = emqx_hooks:run('client.disconnected', [ClientInfo, Reason, ConnInfo]), + {'on_client_disconnected', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{reason => stringfy(Reason), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_subscribe() -> + ?ALL({ClientInfo, SubProps, TopicTab}, + {clientinfo(), sub_properties(), topictab()}, + begin + _OutTopicTab = emqx_hooks:run_fold('client.subscribe', [ClientInfo, SubProps], TopicTab), + {'on_client_subscribe', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{props => properties(SubProps), + topic_filters => topicfilters(TopicTab), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_client_unsubscribe() -> + ?ALL({ClientInfo, UnSubProps, TopicTab}, + {clientinfo(), unsub_properties(), topictab()}, + begin + _OutTopicTab = emqx_hooks:run_fold('client.unsubscribe', [ClientInfo, UnSubProps], TopicTab), + {'on_client_unsubscribe', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{props => properties(UnSubProps), + topic_filters => topicfilters(TopicTab), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_created() -> + ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, + begin + ok = emqx_hooks:run('session.created', [ClientInfo, SessInfo]), + {'on_session_created', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_subscribed() -> + ?ALL({ClientInfo, Topic, SubOpts}, + {clientinfo(), topic(), subopts()}, + begin + ok = emqx_hooks:run('session.subscribed', [ClientInfo, Topic, SubOpts]), + {'on_session_subscribed', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{topic => Topic, + subopts => subopts(SubOpts), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_unsubscribed() -> + ?ALL({ClientInfo, Topic, SubOpts}, + {clientinfo(), topic(), subopts()}, + begin + ok = emqx_hooks:run('session.unsubscribed', [ClientInfo, Topic, SubOpts]), + {'on_session_unsubscribed', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{topic => Topic, + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_resumed() -> + ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, + begin + ok = emqx_hooks:run('session.resumed', [ClientInfo, SessInfo]), + {'on_session_resumed', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_discared() -> + ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, + begin + ok = emqx_hooks:run('session.discarded', [ClientInfo, SessInfo]), + {'on_session_discarded', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_takeovered() -> + ?ALL({ClientInfo, SessInfo}, {clientinfo(), sessioninfo()}, + begin + ok = emqx_hooks:run('session.takeovered', [ClientInfo, SessInfo]), + {'on_session_takeovered', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + true + end). + +prop_session_terminated() -> + ?ALL({ClientInfo, Reason, SessInfo}, + {clientinfo(), shutdown_reason(), sessioninfo()}, + begin + ok = emqx_hooks:run('session.terminated', [ClientInfo, Reason, SessInfo]), + {'on_session_terminated', Resp} = emqx_exhook_demo_svr:take(), + Expected = + #{reason => stringfy(Reason), + clientinfo => + #{node => nodestr(), + clientid => maps:get(clientid, ClientInfo), + username => maybe(maps:get(username, ClientInfo, <<>>)), + password => maybe(maps:get(password, ClientInfo, <<>>)), + peerhost => ntoa(maps:get(peerhost, ClientInfo)), + sockport => maps:get(sockport, ClientInfo), + protocol => stringfy(maps:get(protocol, ClientInfo)), + mountpoint => maybe(maps:get(mountpoint, ClientInfo, <<>>)), + is_superuser => maps:get(is_superuser, ClientInfo, false), + anonymous => maps:get(anonymous, ClientInfo, true) + } + }, + ?assertEqual(Expected, Resp), + + true + end). + +nodestr() -> + stringfy(node()). + +peerhost(#{peername := {Host, _}}) -> + ntoa(Host). + +sockport(#{sockname := {_, Port}}) -> + Port. + +%% copied from emqx_exhook + +ntoa({0,0,0,0,0,16#ffff,AB,CD}) -> + list_to_binary(inet_parse:ntoa({AB bsr 8, AB rem 256, CD bsr 8, CD rem 256})); +ntoa(IP) -> + list_to_binary(inet_parse:ntoa(IP)). + +maybe(undefined) -> <<>>; +maybe(B) -> B. + +properties(undefined) -> []; +properties(M) when is_map(M) -> + maps:fold(fun(K, V, Acc) -> + [#{name => stringfy(K), + value => stringfy(V)} | Acc] + end, [], M). + +topicfilters(Tfs) when is_list(Tfs) -> + [#{name => Topic, qos => Qos} || {Topic, #{qos := Qos}} <- Tfs]. + +%% @private +stringfy(Term) when is_binary(Term) -> + Term; +stringfy(Term) when is_integer(Term) -> + integer_to_binary(Term); +stringfy(Term) when is_atom(Term) -> + atom_to_binary(Term, utf8); +stringfy(Term) -> + unicode:characters_to_binary((io_lib:format("~0p", [Term]))). + +subopts(SubOpts) -> + #{qos => maps:get(qos, SubOpts, 0), + rh => maps:get(rh, SubOpts, 0), + rap => maps:get(rap, SubOpts, 0), + nl => maps:get(nl, SubOpts, 0), + share => maps:get(share, SubOpts, <<>>) + }. + +authresult_to_bool(AuthResult) -> + maps:get(auth_result, AuthResult, undefined) == success. + +aclresult_to_bool(Result) -> + Result == allow. + +pubsub_to_enum(publish) -> 'PUBLISH'; +pubsub_to_enum(subscribe) -> 'SUBSCRIBE'. + +%prop_message_publish() -> +% ?ALL({Msg, Env, Encode}, {message(), topic_filter_env()}, +% begin +% true +% end). +% +%prop_message_delivered() -> +% ?ALL({ClientInfo, Msg, Env, Encode}, {clientinfo(), message(), topic_filter_env()}, +% begin +% true +% end). +% +%prop_message_acked() -> +% ?ALL({ClientInfo, Msg, Env, Encode}, {clientinfo(), message()}, +% begin +% true +% end). + +%%-------------------------------------------------------------------- +%% Helper +%%-------------------------------------------------------------------- + +do_setup() -> + _ = emqx_exhook_demo_svr:start(), + emqx_ct_helpers:start_apps([emqx_exhook], fun set_special_cfgs/1), + emqx_logger:set_log_level(warning), + %% waiting first loaded event + {'on_provider_loaded', _} = emqx_exhook_demo_svr:take(), + ok. + +do_teardown(_) -> + emqx_ct_helpers:stop_apps([emqx_exhook]), + %% waiting last unloaded event + {'on_provider_unloaded', _} = emqx_exhook_demo_svr:take(), + _ = emqx_exhook_demo_svr:stop(), + timer:sleep(2000), + ok. + +set_special_cfgs(emqx) -> + application:set_env(emqx, allow_anonymous, false), + application:set_env(emqx, enable_acl_cache, false), + application:set_env(emqx, plugins_loaded_file, + emqx_ct_helpers:deps_path(emqx, "test/emqx_SUITE_data/loaded_plugins")); +set_special_cfgs(emqx_exhook) -> + ok. + +%%-------------------------------------------------------------------- +%% Generators +%%-------------------------------------------------------------------- + +conn_properties() -> + #{}. + +ack_properties() -> + #{}. + +sub_properties() -> + #{}. + +unsub_properties() -> + #{}. + +shutdown_reason() -> + oneof([utf8(), {shutdown, atom()}]). + +authresult() -> + #{auth_result => connack_return_code()}. + +%topic_filter_env() -> +% oneof([{<<"#">>}, {undefined}, {topic()}]). diff --git a/apps/emqx_exproto/.github/workflows/run_test_case.yaml b/apps/emqx_exproto/.github/workflows/run_test_case.yaml new file mode 100644 index 000000000..7b7aeb627 --- /dev/null +++ b/apps/emqx_exproto/.github/workflows/run_test_case.yaml @@ -0,0 +1,38 @@ +name: Run test case + +on: [push, pull_request] + +jobs: + + run_test_case: + + runs-on: ubuntu-latest + + container: + image: erlang:22.3 + + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-java@v1 + with: + java-version: '8.0.x' + java-package: jdk + - name: Code dialyzer + run: | + make xref + make dialyzer + - name: Run tests + run: | + make eunit + make ct + make cover + #- name: Coveralls + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: | + # make coveralls + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs diff --git a/apps/emqx_exproto/.gitignore b/apps/emqx_exproto/.gitignore new file mode 100644 index 000000000..384f2255a --- /dev/null +++ b/apps/emqx_exproto/.gitignore @@ -0,0 +1,48 @@ +.eunit +deps +!deps/.placeholder +*.o +*.beam +*.plt +erl_crash.dump +ebin +!ebin/.placeholder +.concrete/DEV_MODE +.rebar +test/ebin/*.beam +.exrc +plugins/*/ebin +log/ +*.swp +*.so +.erlang.mk/ +cover/ +emqx.d +eunit.coverdata +test/ct.cover.spec +logs +ct.coverdata +.idea/ +emqx.iml +_rel/ +data/ +_build +.rebar3 +rebar3.crashdump +.DS_Store +emqx.iml +bbmustache/ +etc/gen.emqx.conf +compile_commands.json +cuttlefish +rebar.lock +xrefr +erlang.mk +*.coverdata +etc/emqx_exproto.conf.rendered +Mnesia.*/ +src/emqx_exproto_pb.erl +src/emqx_exproto_v_1_connection_adapter_bhvr.erl +src/emqx_exproto_v_1_connection_adapter_client.erl +src/emqx_exproto_v_1_connection_handler_bhvr.erl +src/emqx_exproto_v_1_connection_handler_client.erl diff --git a/apps/emqx_exproto/LICENSE b/apps/emqx_exproto/LICENSE new file mode 100644 index 000000000..ca8b52ced --- /dev/null +++ b/apps/emqx_exproto/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2020, JianBo He . + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/apps/emqx_exproto/Makefile b/apps/emqx_exproto/Makefile new file mode 100644 index 000000000..ae289091b --- /dev/null +++ b/apps/emqx_exproto/Makefile @@ -0,0 +1,41 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v --name emqx_exproto_ct@127.0.0.1 + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +dialyzer: + $(REBAR) dialyzer + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + +CUTTLEFISH_SCRIPT = _build/default/lib/cuttlefish/cuttlefish + +$(CUTTLEFISH_SCRIPT): + @${REBAR} get-deps + @if [ ! -f cuttlefish ]; then make -C _build/default/lib/cuttlefish; fi + +app.config: $(CUTTLEFISH_SCRIPT) etc/emqx_exproto.conf + $(verbose) $(CUTTLEFISH_SCRIPT) -l info -e etc/ -c etc/emqx_exproto.conf -i priv/emqx_exproto.schema -d data + diff --git a/apps/emqx_exproto/README.md b/apps/emqx_exproto/README.md new file mode 100644 index 000000000..4b59dcae3 --- /dev/null +++ b/apps/emqx_exproto/README.md @@ -0,0 +1,28 @@ +# emqx-exproto + +The `emqx_exproto` extremly enhance the extensibility for EMQ X. It allow using an others programming language to **replace the protocol handling layer in EMQ X Broker**. + +## Feature + +- [x] Based on gRPC, it brings a very wide range of applicability +- [x] Allows you to use the return value to extend emqx behavior. + +## Architecture + +![EMQ X ExProto Arch](./docs/images/exproto-arch.jpg) + +## Usage + +### gRPC service + +See: `priv/protos/exproto.proto` + +## Example + +## Recommended gRPC Framework + +See: https://github.com/grpc-ecosystem/awesome-grpc + +## Thanks + +- [grpcbox](https://github.com/tsloughter/grpcbox) diff --git a/apps/emqx_exproto/docs/design.md b/apps/emqx_exproto/docs/design.md new file mode 100644 index 000000000..0a6a082e2 --- /dev/null +++ b/apps/emqx_exproto/docs/design.md @@ -0,0 +1,127 @@ +# 多语言 - 协议接入 + +`emqx-exproto` 插件用于协议解析的多语言支持。它能够允许其他编程语言(例如:Python,Java 等)直接处理数据流实现协议的解析,并提供 Pub/Sub 接口以实现与系统其它组件的通信。 + +该插件给 EMQ X 带来的扩展性十分的强大,它能以你熟悉语言处理任何的私有协议,并享受由 EMQ X 系统带来的高连接,和高并发的优点。 + +## 特性 + +- 极强的扩展能力。使用 gRPC 作为 RPC 通信框架,支持各个主流编程语言 +- 高吞吐。连接层以完全的异步非阻塞式 I/O 的方式实现 +- 连接层透明。完全的支持 TCP\TLS UDP\DTLS 类型的连接管理,并对上层提供统一个 API +- 连接层的管理能力。例如,最大连接数,连接和吞吐的速率限制,IP 黑名单 等 + +## 架构 + +![Extension-Protocol Arch](images/exproto-arch.jpg) + +该插件主要需要处理的内容包括: + +1. **连接层:** 该部分主要**维持 Socket 的生命周期,和数据的收发**。它的功能要求包括: + - 监听某个端口。当有新的 TCP/UDP 连接到达后,启动一个连接进程,来维持连接的状态。 + - 调用 `OnSocketCreated` 回调。用于通知外部模块**已新建立了一个连接**。 + - 调用 `OnScoektClosed` 回调。用于通知外部模块连接**已关闭**。 + - 调用 `OnReceivedBytes` 回调。用于通知外部模块**该连接新收到的数据包**。 + - 提供 `Send` 接口。供外部模块调用,**用于发送数据包**。 + - 提供 `Close` 接口。供外部模块调用,**用于主动关闭连接**。 + +2. **协议/会话层:**该部分主要**提供 PUB/SUB 接口**,以实现与 EMQ X Broker 系统的消息互通。包括: + + - 提供 `Authenticate` 接口。供外部模块调用,用于向集群注册客户端。 + - 提供 `StartTimer` 接口。供外部模块调用,用于为该连接进程启动心跳等定时器。 + - 提供 `Publish` 接口。供外部模块调用,用于发布消息 EMQ X Broker 中。 + - 提供 `Subscribe` 接口。供外部模块调用,用于订阅某主题,以实现从 EMQ X Broker 中接收某些下行消息。 + - 提供 `Unsubscribe` 接口。供外部模块调用,用于取消订阅某主题。 + - 调用 `OnTimerTimeout` 回调。用于处理定时器超时的事件。 + - 调用 `OnReceivedMessages` 回调。用于接收下行消息(在订阅主题成功后,如果主题上有消息,便会回调该方法) + +## 接口设计 + +从 gRPC 上的逻辑来说,emqx-exproto 会作为客户端向用户的 `ProtocolHandler` 服务发送回调请求。同时,它也会作为服务端向用户提供 `ConnectionAdapter` 服务,以提供 emqx-exproto 各个接口的访问。如图: + +![Extension Protocol gRPC Arch](images/exproto-grpc-arch.jpg) + + +详情参见:`priv/protos/exproto.proto`,例如接口的定义有: + +```protobuff +syntax = "proto3"; + +package emqx.exproto.v1; + +// The Broker side serivce. It provides a set of APIs to +// handle a protcol access +service ConnectionAdapter { + + // -- socket layer + + rpc Send(SendBytesRequest) returns (CodeResponse) {}; + + rpc Close(CloseSocketRequest) returns (CodeResponse) {}; + + // -- protocol layer + + rpc Authenticate(AuthenticateRequest) returns (CodeResponse) {}; + + rpc StartTimer(TimerRequest) returns (CodeResponse) {}; + + // -- pub/sub layer + + rpc Publish(PublishRequest) returns (CodeResponse) {}; + + rpc Subscribe(SubscribeRequest) returns (CodeResponse) {}; + + rpc Unsubscribe(UnsubscribeRequest) returns (CodeResponse) {}; +} + +service ConnectionHandler { + + // -- socket layer + + rpc OnSocketCreated(SocketCreatedRequest) returns (EmptySuccess) {}; + + rpc OnSocketClosed(SocketClosedRequest) returns (EmptySuccess) {}; + + rpc OnReceivedBytes(ReceivedBytesRequest) returns (EmptySuccess) {}; + + // -- pub/sub layer + + rpc OnTimerTimeout(TimerTimeoutRequest) returns (EmptySuccess) {}; + + rpc OnReceivedMessages(ReceivedMessagesRequest) returns (EmptySuccess) {}; +} +``` + +## 配置项设计 + +1. 以 **监听器( Listener)** 为基础,提供 TCP/UDP 的监听。 + - Listener 目前仅支持:TCP、TLS、UDP、DTLS。(ws、wss、quic 暂不支持) +2. 每个监听器,会指定一个 `ProtocolHandler` 的服务地址,用于调用外部模块的接口。 +3. emqx-exproto 还会监听一个 gRPC 端口用于提供对 `ConnectionAdapter` 服务的访问。 + +例如: + +``` properties +## gRPC 服务监听地址 (HTTP) +## +exproto.server.http.url = http://127.0.0.1:9002 + +## gRPC 服务监听地址 (HTTPS) +## +exproto.server.https.url = https://127.0.0.1:9002 +exproto.server.https.cacertfile = ca.pem +exproto.server.https.certfile = cert.pem +exproto.server.https.keyfile = key.pem + +## Listener 配置 +## 例如,名称为 protoname 协议的 TCP 监听器配置 +exproto.listener.protoname = tcp://0.0.0.0:7993 + +## ProtocolHandler 服务地址及 https 的证书配置 +exproto.listener.protoname.proto_handler_url = http://127.0.0.1:9001 +#exproto.listener.protoname.proto_handler_certfile = +#exproto.listener.protoname.proto_handler_cacertfile = +#exproto.listener.protoname.proto_handler_keyfile = + +# ... +``` diff --git a/apps/emqx_exproto/docs/images/exproto-arch.jpg b/apps/emqx_exproto/docs/images/exproto-arch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dddf7996b98c61bf55f911a35e0f51e76c8e8728 GIT binary patch literal 72633 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

    U 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 z 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_coap/docs/rfc7228.pdf b/apps/emqx_coap/docs/rfc7228.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c9dc1b59fa26ceccf588b86789f0a3f50233e6b7 GIT binary patch literal 53076 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

    ^^B>cOQI&ZqEH^1~Wf9?TdakhJL#JlhF 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

    S-NSodduv^QKN4zep< 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%0A_+H|K@;JU^(u?bM=2bIN7{ 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 AIRF3v literal 0 HcmV?d00001 diff --git a/apps/emqx_coap/etc/emqx_coap.conf b/apps/emqx_coap/etc/emqx_coap.conf new file mode 100644 index 000000000..0590a348e --- /dev/null +++ b/apps/emqx_coap/etc/emqx_coap.conf @@ -0,0 +1,82 @@ +##-------------------------------------------------------------------- +## CoAP Gateway +##-------------------------------------------------------------------- + +## The IP and UDP port that CoAP bind with. +## +## Default: 0.0.0.0:5683 +## +## Examples: +## coap.bind.udp.x = 0.0.0.0:5683 | :::5683 | 127.0.0.1:5683 | ::1:5683 +## +coap.bind.udp.1 = 0.0.0.0:5683 +##coap.bind.udp.2 = 0.0.0.0:6683 + +## Whether to enable statistics for CoAP clients. +## +## Value: on | off +coap.enable_stats = off + + +##------------------------------------------------------------------------------ +## DTLS options + +## The DTLS port that CoAP is listening on. +## +## Default: 0.0.0.0:5684 +## +## Examples: +## coap.bind.dtls.x = 0.0.0.0:5684 | :::5684 | 127.0.0.1:5684 | ::1:5684 +## +coap.bind.dtls.1 = 0.0.0.0:5684 +##coap.bind.dtls.2 = 0.0.0.0:6684 + +## A server only does x509-path validation in mode verify_peer, +## as it then sends a certificate request to the client (this +## message is not sent if the verify option is verify_none). +## You can then also want to specify option fail_if_no_peer_cert. +## More information at: http://erlang.org/doc/man/ssl.html +## +## Value: verify_peer | verify_none +## coap.dtls.verify = verify_peer + +## Private key file for DTLS +## +## Value: File +coap.dtls.keyfile = {{ platform_etc_dir }}/certs/key.pem + +## Server certificate for DTLS. +## +## Value: File +coap.dtls.certfile = {{ platform_etc_dir }}/certs/cert.pem + +## PEM-encoded CA certificates for DTLS +## +## Value: File +## coap.dtls.cacertfile = {{ platform_etc_dir }}/certs/cacert.pem + +## Used together with {verify, verify_peer} by an SSL server. If set to true, +## the server fails if the client does not have a certificate to send, that is, +## sends an empty certificate. +## +## Value: true | false +## coap.dtls.fail_if_no_peer_cert = false + +## This is the single most important configuration option of an Erlang SSL +## application. Ciphers (and their ordering) define the way the client and +## server encrypt information over the wire, from the initial Diffie-Helman +## key exchange, the session key encryption ## algorithm and the message +## digest algorithm. Selecting a good cipher suite is critical for the +## application’s data security, confidentiality and performance. +## +## The cipher list above offers: +## +## A good balance between compatibility with older browsers. +## It can get stricter for Machine-To-Machine scenarios. +## Perfect Forward Secrecy. +## No old/insecure encryption and HMAC algorithms +## +## Most of it was copied from Mozilla’s Server Side TLS article +## +## Value: Ciphers +coap.dtls.ciphers = ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-DES-CBC3-SHA,ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,ECDH-RSA-AES256-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-DSS-AES256-SHA256,AES256-GCM-SHA384,AES256-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-GCM-SHA256,ECDH-RSA-AES128-GCM-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,DHE-DSS-AES128-GCM-SHA256,DHE-DSS-AES128-SHA256,AES128-GCM-SHA256,AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,ECDH-ECDSA-AES256-SHA,ECDH-RSA-AES256-SHA,AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,AES128-SHA diff --git a/apps/emqx_coap/include/emqx_coap.hrl b/apps/emqx_coap/include/emqx_coap.hrl new file mode 100644 index 000000000..8204dc98c --- /dev/null +++ b/apps/emqx_coap/include/emqx_coap.hrl @@ -0,0 +1,20 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-define(APP, emqx_coap). + +-record(coap_mqtt_auth, {clientid, username, password}). + diff --git a/apps/emqx_coap/intergration_test/Makefile b/apps/emqx_coap/intergration_test/Makefile new file mode 100644 index 000000000..12a2081dd --- /dev/null +++ b/apps/emqx_coap/intergration_test/Makefile @@ -0,0 +1,129 @@ +.PHONY: clean, clean_result, start_broker stop_broker case1 case2 case3 + +RELX_CONF = emqx-rel/relx.config +LIBCOAP_GIT = libcoap/README.md + +all: clean_result $(RELX_CONF) $(LIBCOAP_GIT) start_broker clean_result case1 case2 case3 case4 stop_broker + @echo " " + @echo " test complete" + @echo " " + +clean_result: + -rm -f case*.txt + + +start_broker: + -rm -f emqx-rel/_rel/emqx/log/* + -emqx-rel/_rel/emqx/bin/emqx stop + sleep 1 + emqx-rel/_rel/emqx/bin/emqx start + sleep 1 + emqx-rel/_rel/emqx/bin/emqx_ctl plugins load emqx_coap + +stop_broker: + -emqx-rel/_rel/emqx/bin/emqx stop + +case1: + libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" > case1_output.txt & + sleep 1 + libcoap/examples/coap-client -m put -e w123G45 "coap://127.0.0.1/mqtt/topic1?c=client2&u=mike&p=pw12" + sleep 6 + python check_result.py case1 case1_output.txt==w123G45 + +case2: + # subscribe to topic="x/y" + libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/x%2Fy?c=client3&u=tom&p=secret" > case2_output1.txt & + # subscribe to topic="+/z" + libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/%2B%2Fz?c=client4&u=mike&p=pw12" > case2_output2.txt & + sleep 1 + # publish to topic="x/y" + libcoap/examples/coap-client -m put -e big9wolf "coap://127.0.0.1/mqtt/x%2Fy?c=client5&u=sun&p=pw3" + # publish to topic="p/z" + libcoap/examples/coap-client -m put -e black2ant "coap://127.0.0.1/mqtt/p%2Fz?c=client5&u=sun&p=pw3" + sleep 6 + python check_result.py case2 case2_output1.txt==big9wolf case2_output1.txt!=black2ant case2_output2.txt!=big9wolf case2_output2.txt==black2ant + +case3: + libcoap/examples/coap-client -m get -T tk12 -s 5 "coap://127.0.0.1/mqtt/a%2Fb?c=client3&u=tom&p=secret" > case3_output1.txt & + libcoap/examples/coap-client -m get -T tk34 -s 5 "coap://127.0.0.1/mqtt/c%2Fd?c=client3&u=tom&p=secret" > case3_output2.txt & + sleep 1 + libcoap/examples/coap-client -m put -e big9wolf "coap://127.0.0.1/mqtt/c%2Fd?c=client5&u=sun&p=pw3" + libcoap/examples/coap-client -m put -e black2ant "coap://127.0.0.1/mqtt/a%2Fb?c=client5&u=sun&p=pw3" + sleep 6 + python check_result.py case3 case3_output1.txt==black2ant case3_output2.txt==big9wolf case3_output2.txt!=black2ant + + + +case4: + # reload emqx_coap, does it work as expected? + sleep 1 + emqx-rel/_rel/emqx/bin/emqx_ctl plugins unload emqx_coap + sleep 1 + emqx-rel/_rel/emqx/bin/emqx_ctl plugins load emqx_coap + sleep 1 + libcoap/examples/coap-client -m get -s 5 "coap://127.0.0.1/mqtt/topic1?c=client1&u=tom&p=secret" > case4_output.txt & + sleep 1 + libcoap/examples/coap-client -m put -e w6J3G45 "coap://127.0.0.1/mqtt/topic1?c=client2&u=mike&p=pw12" + sleep 6 + python check_result.py case4 case4_output.txt==w6J3G45 + + + + +$(RELX_CONF): + git clone https://github.com/emqx/emqx-rel.git + git clone https://github.com/emqx/emq-coap.git + @echo "update emq-coap with this development code" + mv emq-coap emqx_coap + -rm -rf emqx_coap/etc + -rm -rf emqx_coap/include + -rm -rf emqx_coap/priv + -rm -rf emqx_coap/src + -rm -rf emqx_coap/Makefile + cp -rf ../etc emqx_coap/ + cp -rf ../include emqx_coap/ + cp -rf ../priv emqx_coap/ + cp -rf ../src emqx_coap/ + cp -rf ../Makefile emqx_coap/Makefile + -mkdir emqx-rel/deps + mv emqx_coap emqx-rel/deps/ + @echo "start building ..." + make -C emqx-rel -f Makefile + + +coap: $(LIBCOAP_GIT) + @echo "make coap" + +$(LIBCOAP_GIT): + git clone -b v4.1.2 http://github.com/obgm/libcoap + cd libcoap && ./autogen.sh && ./configure --enable-documentation=no --enable-tests=no + make -C libcoap -f Makefile + +r: rebuild_emq + # r short for rebuild_emq + @echo " rebuild complete " + +rebuild_emq: + -emqx-rel/_rel/emqx/bin/emqx stop + -rm -rf emqx-rel/deps/emqx_coap/etc + -rm -rf emqx-rel/deps/emqx_coap/include + -rm -rf emqx-rel/deps/emqx_coap/priv + -rm -rf emqx-rel/deps/emqx_coap/src + -rm -rf emqx-rel/deps/emqx_coap/Makefile + cp -rf ../etc emqx-rel/deps/emqx_coap/ + cp -rf ../include emqx-rel/deps/emqx_coap/ + cp -rf ../priv emqx-rel/deps/emqx_coap/ + cp -rf ../src emqx-rel/deps/emqx_coap/ + cp -rf ../Makefile emqx-rel/deps/emqx_coap/Makefile + make -C emqx-rel -f Makefile + +clean: clean_result + -rm -f client/*.exe + -rm -f client/*.o + -rm -rf emqx-rel + -rm -rf libcoap + +lazy: clean_result start_broker case2 stop_broker + # custom your command here + @echo "you are so lazy" + diff --git a/apps/emqx_coap/intergration_test/README.md b/apps/emqx_coap/intergration_test/README.md new file mode 100644 index 000000000..eb3507923 --- /dev/null +++ b/apps/emqx_coap/intergration_test/README.md @@ -0,0 +1,8 @@ +Integration test for emq-coap +====== + +execute following command +``` +make +``` + diff --git a/apps/emqx_coap/intergration_test/check_result.py b/apps/emqx_coap/intergration_test/check_result.py new file mode 100644 index 000000000..f9baaefae --- /dev/null +++ b/apps/emqx_coap/intergration_test/check_result.py @@ -0,0 +1,52 @@ +import sys + + +def have_string(filename, text): + data = open(filename, "rb").read() + if data.find(text) > 0: + return True + else: + return False + + +def mark(case_number, result, description): + if result: + f = open(case_number+"_PASS.txt", "wb") + f.close() + print("\n\n"+case_number+" PASS\n\n") + else: + f = open(case_number+"_FAIL.txt", "wb") + f.write(description) + f.close() + print("\n\n"+case_number+" FAIL\n\n") + +def parse_condition(condition): + if condition.find("==") > 0: + r = condition.split("==") + return r[0], r[1], True + elif condition.find("!=") > 0: + r = condition.split("!=") + return r[0], r[1], False + else: + print("\ncondition syntax error\n\n\n") + sys.exit("condition syntax error") + + +def main(): + case_number = sys.argv[1] + description = "" + conclustion = True + for condition in sys.argv[2:]: + filename, text, result = parse_condition(condition) + if have_string(filename, text) == result: + pass + else: + conclustion = False + description = description + "\n" + condition + " failed\n" + + mark(case_number, conclustion, description) + + +if __name__ == "__main__": + main() + diff --git a/apps/emqx_coap/priv/emqx_coap.schema b/apps/emqx_coap/priv/emqx_coap.schema new file mode 100644 index 000000000..465979964 --- /dev/null +++ b/apps/emqx_coap/priv/emqx_coap.schema @@ -0,0 +1,93 @@ +%%-*- mode: erlang -*- +%% emqx_coap config mapping +{mapping, "coap.bind.udp.$number", "emqx_coap.bind_udp", [ + {datatype, ip}, + {default, "0.0.0.0:5683"} +]}. + +{mapping, "coap.enable_stats", "emqx_coap.enable_stats", [ + {datatype, flag} +]}. + +{mapping, "coap.bind.dtls.$number", "emqx_coap.bind_dtls", [ + {datatype, ip}, + {default, "0.0.0.0:5684"} +]}. + +{mapping, "coap.dtls.keyfile", "emqx_coap.dtls_opts", [ + {datatype, string} +]}. + +{mapping, "coap.dtls.certfile", "emqx_coap.dtls_opts", [ + {datatype, string} +]}. + +{mapping, "coap.dtls.verify", "emqx_coap.dtls_opts", [ + {default, verify_none}, + {datatype, {enum, [verify_none, verify_peer]}} +]}. + +{mapping, "coap.dtls.cacertfile", "emqx_coap.dtls_opts", [ + {datatype, string} +]}. + +{mapping, "coap.dtls.fail_if_no_peer_cert", "emqx_coap.dtls_opts", [ + {datatype, {enum, [true, false]}} +]}. + +{mapping, "coap.dtls.ciphers", "emqx_coap.dtls_opts", [ + {datatype, string} +]}. + +{translation, "emqx_coap.bind_udp", fun(Conf) -> + Options = cuttlefish_variable:filter_by_prefix("coap.bind.udp", Conf), + lists:map(fun({_, Bind}) -> + {Ip, Port} = cuttlefish_datatypes:from_string(Bind, ip), + Opts = case inet:parse_address(Ip) of + {ok, {_,_,_,_} = Address} -> + [inet, {ip, Address}]; + {ok, {_,_,_,_,_,_,_,_} = Address} -> + [inet6, {ip, Address}] + end, + {Port, Opts} + end, Options) +end}. + +{translation, "emqx_coap.bind_dtls", fun(Conf) -> + Options = cuttlefish_variable:filter_by_prefix("coap.bind.dtls", Conf), + lists:map(fun({_, Bind}) -> + {Ip, Port} = cuttlefish_datatypes:from_string(Bind, ip), + Opts = case inet:parse_address(Ip) of + {ok, {_,_,_,_} = Address} -> + [inet, {ip, Address}]; + {ok, {_,_,_,_,_,_,_,_} = Address} -> + [inet6, {ip, Address}] + end, + {Port, Opts} + end, Options) +end}. + +{translation, "emqx_coap.dtls_opts", fun(Conf) -> + Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end, + + %% Ciphers + SplitFun = fun(undefined) -> undefined; (S) -> string:tokens(S, ",") end, + Ciphers = + case cuttlefish:conf_get("coap.dtls.ciphers", Conf, undefined) of + undefined -> + lists:foldl( + fun(TlsVer, Ciphers) -> + Ciphers ++ ssl:cipher_suites(all, TlsVer) + end, [], ['dtlsv1', 'dtlsv1.2']); + C -> + SplitFun(C) + end, + + Filter([{verify, cuttlefish:conf_get("coap.dtls.verify", Conf, undefined)}, + {keyfile, cuttlefish:conf_get("coap.dtls.keyfile", Conf, undefined)}, + {certfile, cuttlefish:conf_get("coap.dtls.certfile", Conf, undefined)}, + {cacertfile, cuttlefish:conf_get("coap.dtls.cacertfile", Conf, undefined)}, + {fail_if_no_peer_cert, cuttlefish:conf_get("coap.dtls.fail_if_no_peer_cert", Conf, undefined)}, + {ciphers, Ciphers}]) +end}. + diff --git a/apps/emqx_coap/rebar.config b/apps/emqx_coap/rebar.config new file mode 100644 index 000000000..dd1ad613e --- /dev/null +++ b/apps/emqx_coap/rebar.config @@ -0,0 +1,28 @@ +{deps, + [ + {gen_coap, {git, "https://github.com/emqx/gen_coap", {tag, "v0.3.0"}}} + ]}. + +{edoc_opts, [{preprocess, true}]}. +{erl_opts, [warn_unused_vars, + warn_shadow_vars, + warn_unused_import, + warn_obsolete_guard, + debug_info, + {parse_transform}]}. + +{xref_checks, [undefined_function_calls, undefined_functions, + locals_not_used, deprecated_function_calls, + warnings_as_errors, deprecated_functions]}. +{cover_enabled, true}. +{cover_opts, [verbose]}. +{cover_export_enabled, true}. + +{profiles, + [{test, + [{deps, + [{er_coap_client, {git, "https://github.com/emqx/er_coap_client", {tag, "v1.0"}}}, + {emqx_ct_helpers, {git, "https://github.com/emqx/emqx-ct-helpers", {tag, "1.2.2"}}} + ]} + ]} + ]}. diff --git a/apps/emqx_coap/rebar.config.script b/apps/emqx_coap/rebar.config.script new file mode 100644 index 000000000..e0a704a55 --- /dev/null +++ b/apps/emqx_coap/rebar.config.script @@ -0,0 +1,54 @@ +%%-*- mode: erlang -*- + +DEPS = case lists:keyfind(deps, 1, CONFIG) of + {_, Deps} -> Deps; + _ -> [] + end, + +ComparingFun = fun + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_list(C2); + is_integer(C1), is_integer(C2) -> C1 < C2 orelse _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_integer(C1), is_list(C2) -> _Fun(R1, R2); + _Fun([C1|R1], [C2|R2]) when is_list(C1), is_integer(C2) -> true; + _Fun(_, _) -> false + end, + +SortFun = fun(T1, T2) -> + C = fun(T) -> + [case catch list_to_integer(E) of + I when is_integer(I) -> I; + _ -> E + end || E <- re:split(string:sub_string(T, 2), "[.-]", [{return, list}])] + end, + ComparingFun(C(T1), C(T2)) + end, + +VTags = string:tokens(os:cmd("git tag -l \"v*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"), + +Tags = case VTags of + [] -> string:tokens(os:cmd("git tag -l \"e*\" --points-at $(git rev-parse $(git describe --abbrev=0 --tags))"), "\n"); + _ -> VTags + end, + +LatestTag = lists:last(lists:sort(SortFun, Tags)), + +Branch = case os:getenv("GITHUB_RUN_ID") of + false -> os:cmd("git branch | grep -e '^*' | cut -d' ' -f 2") -- "\n"; + _ -> re:replace(os:getenv("GITHUB_REF"), "^refs/heads/|^refs/tags/", "", [global, {return ,list}]) + end, + +GitDescribe = case re:run(Branch, "master|^dev/|^hotfix/", [{capture, none}]) of + match -> {branch, Branch}; + _ -> {tag, LatestTag} + end, + +UrlPrefix = "https://github.com/emqx/", + +EMQX_DEP = {emqx, {git, UrlPrefix ++ "emqx", GitDescribe}}, +EMQX_MGMT_DEP = {emqx_management, {git, UrlPrefix ++ "emqx-management", GitDescribe}}, + +NewDeps = [EMQX_DEP, EMQX_MGMT_DEP | DEPS], + +CONFIG1 = lists:keystore(deps, 1, CONFIG, {deps, NewDeps}), + +CONFIG1. diff --git a/apps/emqx_coap/src/emqx_coap.app.src b/apps/emqx_coap/src/emqx_coap.app.src new file mode 100644 index 000000000..edbd3223c --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap.app.src @@ -0,0 +1,14 @@ +{application, emqx_coap, + [{description, "EMQ X CoAP Gateway"}, + {vsn, "git"}, + {modules, []}, + {registered, []}, + {applications, [kernel,stdlib,gen_coap]}, + {mod, {emqx_coap_app, []}}, + {env, []}, + {licenses, ["Apache-2.0"]}, + {maintainers, ["EMQ X Team "]}, + {links, [{"Homepage", "https://emqx.io/"}, + {"Github", "https://github.com/emqx/emqx-coap"} + ]} + ]}. diff --git a/apps/emqx_coap/src/emqx_coap.app.src.script b/apps/emqx_coap/src/emqx_coap.app.src.script new file mode 100644 index 000000000..0e14ff23f --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap.app.src.script @@ -0,0 +1,24 @@ +%%-*- mode: erlang -*- +%% .app.src.script + +RemoveLeadingV = + fun(Tag) -> + case re:run(Tag, "^[v|e]?[0-9]\.[0-9]\.([0-9]|(rc|beta|alpha)\.[0-9])", [{capture, none}]) of + nomatch -> + re:replace(Tag, "/", "-", [{return ,list}]); + _ -> + %% if it is a version number prefixed by 'v' or 'e', then remove it + re:replace(Tag, "[v|e]", "", [{return ,list}]) + end + end, + +case os:getenv("EMQX_DEPS_DEFAULT_VSN") of + false -> CONFIG; % env var not defined + [] -> CONFIG; % env var set to empty string + Tag -> + [begin + AppConf0 = lists:keystore(vsn, 1, AppConf, {vsn, RemoveLeadingV(Tag)}), + {application, App, AppConf0} + end || Conf = {application, App, AppConf} <- CONFIG] +end. + diff --git a/apps/emqx_coap/src/emqx_coap_app.erl b/apps/emqx_coap/src/emqx_coap_app.erl new file mode 100644 index 000000000..eaabd356b --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_app.erl @@ -0,0 +1,40 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_app). + +-behaviour(application). + +-emqx_plugin(protocol). + +-include("emqx_coap.hrl"). + +-export([ start/2 + , stop/1 + ]). + +start(_Type, _Args) -> + {ok, Sup} = emqx_coap_sup:start_link(), + coap_server_registry:add_handler([<<"mqtt">>], emqx_coap_resource, undefined), + coap_server_registry:add_handler([<<"ps">>], emqx_coap_ps_resource, undefined), + emqx_coap_ps_topics:start_link(), + emqx_coap_server:start(application:get_all_env(?APP)), + {ok,Sup}. + +stop(_State) -> + coap_server_registry:remove_handler([<<"mqtt">>], emqx_coap_resource, undefined), + coap_server_registry:remove_handler([<<"ps">>], emqx_coap_ps_resource, undefined), + emqx_coap_server:stop(application:get_all_env(?APP)). diff --git a/apps/emqx_coap/src/emqx_coap_mqtt_adapter.erl b/apps/emqx_coap/src/emqx_coap_mqtt_adapter.erl new file mode 100644 index 000000000..4c508c272 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_mqtt_adapter.erl @@ -0,0 +1,357 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_mqtt_adapter). + +-behaviour(gen_server). + +-include("emqx_coap.hrl"). + +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). + +-logger_header("[CoAP-Adpter]"). + +%% API. +-export([ subscribe/2 + , unsubscribe/2 + , publish/3 + ]). + +-export([ client_pid/4 + , stop/1 + ]). + +-export([call/2]). + +%% gen_server. +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-record(state, {peername, clientid, username, password, sub_topics = [], connected_at}). + +-define(ALIVE_INTERVAL, 20000). + +-define(CONN_STATS, [recv_pkt, recv_msg, send_pkt, send_msg]). + +-define(SUBOPTS, #{rh => 0, rap => 0, nl => 0, qos => ?QOS_0, is_new => false}). + +%%-------------------------------------------------------------------- +%% API +%%-------------------------------------------------------------------- + +client_pid(undefined, _Username, _Password, _Channel) -> + {error, bad_request}; +client_pid(ClientId, Username, Password, Channel) -> + % check authority + case start(ClientId, Username, Password, Channel) of + {ok, Pid1} -> {ok, Pid1}; + {error, {already_started, Pid2}} -> {ok, Pid2}; + {error, auth_failure} -> {error, auth_failure}; + Other -> {error, Other} + end. + +start(ClientId, Username, Password, Channel) -> + % DO NOT use start_link, since multiple coap_reponsder may have relation with one mqtt adapter, + % one coap_responder crashes should not make mqtt adapter crash too + % And coap_responder is not a system process, it is dangerous to link mqtt adapter to coap_responder + gen_server:start({via, emqx_coap_registry, {ClientId, Username, Password}}, ?MODULE, {ClientId, Username, Password, Channel}, []). + +stop(Pid) -> + gen_server:stop(Pid). + +subscribe(Pid, Topic) -> + gen_server:call(Pid, {subscribe, Topic, self()}). + +unsubscribe(Pid, Topic) -> + gen_server:call(Pid, {unsubscribe, Topic, self()}). + +publish(Pid, Topic, Payload) -> + gen_server:call(Pid, {publish, Topic, Payload}). + +%% For emqx_management plugin +call(Pid, Msg) -> + Pid ! Msg, ok. + +%%-------------------------------------------------------------------- +%% gen_server Callbacks +%%-------------------------------------------------------------------- + +init({ClientId, Username, Password, Channel}) -> + ?LOG(debug, "try to start adapter ClientId=~p, Username=~p, Password=~p, Channel=~p", + [ClientId, Username, Password, Channel]), + State0 = #state{peername = Channel, + clientid = ClientId, + username = Username, + password = Password}, + _ = run_hooks('client.connect', [conninfo(State0)], undefined), + case emqx_access_control:authenticate(clientinfo(State0)) of + {ok, _AuthResult} -> + _ = run_hooks('client.connack', [conninfo(State0), success], undefined), + + State = State0#state{connected_at = erlang:system_time(millisecond)}, + + %% TODO: Evict same clientid on other node?? + + run_hooks('client.connected', [clientinfo(State), conninfo(State)]), + + erlang:send_after(?ALIVE_INTERVAL, self(), check_alive), + emqx_cm:register_channel(ClientId, info(State), stats(State)), + {ok, State}; + {error, Reason} -> + ?LOG(debug, "authentication faild: ~p", [Reason]), + _ = run_hooks('client.connack', [conninfo(State0), not_authorized], undefined), + {stop, {shutdown, Reason}} + end. + +handle_call({subscribe, Topic, CoapPid}, _From, State=#state{sub_topics = TopicList}) -> + NewTopics = proplists:delete(Topic, TopicList), + IsWild = emqx_topic:wildcard(Topic), + chann_subscribe(Topic, State), + {reply, ok, State#state{sub_topics = [{Topic, {IsWild, CoapPid}}|NewTopics]}, hibernate}; + +handle_call({unsubscribe, Topic, _CoapPid}, _From, State=#state{sub_topics = TopicList}) -> + NewTopics = proplists:delete(Topic, TopicList), + chann_unsubscribe(Topic, State), + {reply, ok, State#state{sub_topics = NewTopics}, hibernate}; + +handle_call({publish, Topic, Payload}, _From, State) -> + chann_publish(Topic, Payload, State), + {reply, ok, State}; + +handle_call(info, _From, State) -> + {reply, info(State), State}; + +handle_call(stats, _From, State) -> + {reply, stats(State), State, hibernate}; + +handle_call(kick, _From, State) -> + {stop, {shutdown, kick}, ok, State}; + +handle_call({set_rate_limit, _Rl}, _From, State) -> + ?LOG(error, "set_rate_limit is not support", []), + {reply, ok, State}; + +handle_call(get_rate_limit, _From, State) -> + ?LOG(error, "get_rate_limit is not support", []), + {reply, ok, State}; + +handle_call(Request, _From, State) -> + ?LOG(error, "adapter unexpected call ~p", [Request]), + {reply, ignored, State, hibernate}. + +handle_cast(Msg, State) -> + ?LOG(error, "broker_api unexpected cast ~p", [Msg]), + {noreply, State, hibernate}. + +handle_info({deliver, _Topic, #message{topic = Topic, payload = Payload}}, State = #state{sub_topics = Subscribers}) -> + deliver([{Topic, Payload}], Subscribers), + {noreply, State, hibernate}; + +handle_info(check_alive, State = #state{sub_topics = []}) -> + {stop, {shutdown, check_alive}, State}; +handle_info(check_alive, State) -> + erlang:send_after(?ALIVE_INTERVAL, self(), check_alive), + {noreply, State, hibernate}; + +handle_info({shutdown, Error}, State) -> + {stop, {shutdown, Error}, State}; + +handle_info({shutdown, conflict, {ClientId, NewPid}}, State) -> + ?LOG(warning, "clientid '~s' conflict with ~p", [ClientId, NewPid]), + {stop, {shutdown, conflict}, State}; + +handle_info(kick, State) -> + ?LOG(info, "Kicked", []), + {stop, {shutdown, kick}, State}; + +handle_info(Info, State) -> + ?LOG(error, "adapter unexpected info ~p", [Info]), + {noreply, State, hibernate}. + +terminate(Reason, State = #state{clientid = ClientId, sub_topics = SubTopics}) -> + ?LOG(debug, "unsubscribe ~p while exiting for ~p", [SubTopics, Reason]), + [chann_unsubscribe(Topic, State) || {Topic, _} <- SubTopics], + emqx_cm:unregister_channel(ClientId), + + ConnInfo0 = conninfo(State), + ConnInfo = ConnInfo0#{disconnected_at => erlang:system_time(millisecond)}, + run_hooks('client.disconnected', [clientinfo(State), Reason, ConnInfo]). + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%-------------------------------------------------------------------- +%% Channel adapter functions + +chann_subscribe(Topic, State = #state{clientid = ClientId}) -> + ?LOG(debug, "subscribe Topic=~p", [Topic]), + emqx_broker:subscribe(Topic, ClientId, ?SUBOPTS), + emqx_hooks:run('session.subscribed', [clientinfo(State), Topic, ?SUBOPTS]). + +chann_unsubscribe(Topic, State) -> + ?LOG(debug, "unsubscribe Topic=~p", [Topic]), + Opts = #{rh => 0, rap => 0, nl => 0, qos => 0}, + emqx_broker:unsubscribe(Topic), + emqx_hooks:run('session.unsubscribed', [clientinfo(State), Topic, Opts]). + +chann_publish(Topic, Payload, #state{clientid = ClientId}) -> + ?LOG(debug, "publish Topic=~p, Payload=~p", [Topic, Payload]), + emqx_broker:publish( + emqx_message:set_flag(retain, false, + emqx_message:make(ClientId, ?QOS_0, Topic, Payload))). + +%%-------------------------------------------------------------------- +%% Deliver + +deliver([], _) -> ok; +deliver([Pub | More], Subscribers) -> + ok = do_deliver(Pub, Subscribers), + deliver(More, Subscribers). + +do_deliver({Topic, Payload}, Subscribers) -> + %% handle PUBLISH packet from broker + ?LOG(debug, "deliver message from broker Topic=~p, Payload=~p", [Topic, Payload]), + deliver_to_coap(Topic, Payload, Subscribers), + ok; + +do_deliver(Pkt, _Subscribers) -> + ?LOG(warning, "unknown packet type to deliver, pkt=~p,", [Pkt]), + ok. + +deliver_to_coap(_TopicName, _Payload, []) -> + ok; +deliver_to_coap(TopicName, Payload, [{TopicFilter, {IsWild, CoapPid}}|T]) -> + Matched = case IsWild of + true -> emqx_topic:match(TopicName, TopicFilter); + false -> TopicName =:= TopicFilter + end, + %?LOG(debug, "deliver_to_coap Matched=~p, CoapPid=~p, TopicName=~p, Payload=~p, T=~p", [Matched, CoapPid, TopicName, Payload, T]), + Matched andalso (CoapPid ! {dispatch, TopicName, Payload}), + deliver_to_coap(TopicName, Payload, T). + +%%-------------------------------------------------------------------- +%% Helper funcs + +-compile({inline, [run_hooks/2, run_hooks/3]}). +run_hooks(Name, Args) -> + ok = emqx_metrics:inc(Name), emqx_hooks:run(Name, Args). + +run_hooks(Name, Args, Acc) -> + ok = emqx_metrics:inc(Name), emqx_hooks:run_fold(Name, Args, Acc). + +%%-------------------------------------------------------------------- +%% Info & Stats + +info(State) -> + ChannInfo = chann_info(State), + ChannInfo#{sockinfo => sockinfo(State)}. + +%% copies from emqx_connection:info/1 +sockinfo(#state{peername = Peername}) -> + #{socktype => udp, + peername => Peername, + sockname => {{127,0,0,1}, 5683}, %% FIXME: Sock? + sockstate => running, + active_n => 1 + }. + +%% copies from emqx_channel:info/1 +chann_info(State) -> + #{conninfo => conninfo(State), + conn_state => connected, + clientinfo => clientinfo(State), + session => maps:from_list(session_info(State)), + will_msg => undefined + }. + +conninfo(#state{peername = Peername, + clientid = ClientId, + connected_at = ConnectedAt}) -> + #{socktype => udp, + sockname => {{127,0,0,1}, 5683}, + peername => Peername, + peercert => nossl, %% TODO: dtls + conn_mod => ?MODULE, + proto_name => <<"CoAP">>, + proto_ver => 1, + clean_start => true, + clientid => ClientId, + username => undefined, + conn_props => undefined, + connected => true, + connected_at => ConnectedAt, + keepalive => 0, + receive_maximum => 0, + expiry_interval => 0 + }. + +%% copies from emqx_session:info/1 +session_info(#state{sub_topics = SubTopics, connected_at = ConnectedAt}) -> + Subs = lists:foldl( + fun({Topic, _}, Acc) -> + Acc#{Topic => ?SUBOPTS} + end, #{}, SubTopics), + [{subscriptions, Subs}, + {upgrade_qos, false}, + {retry_interval, 0}, + {await_rel_timeout, 0}, + {created_at, ConnectedAt} + ]. + +%% The stats keys copied from emqx_connection:stats/1 +stats(#state{sub_topics = SubTopics}) -> + SockStats = [{recv_oct,0}, {recv_cnt,0}, {send_oct,0}, {send_cnt,0}, {send_pend,0}], + ConnStats = emqx_pd:get_counters(?CONN_STATS), + ChanStats = [{subscriptions_cnt, length(SubTopics)}, + {subscriptions_max, length(SubTopics)}, + {inflight_cnt, 0}, + {inflight_max, 0}, + {mqueue_len, 0}, + {mqueue_max, 0}, + {mqueue_dropped, 0}, + {next_pkt_id, 0}, + {awaiting_rel_cnt, 0}, + {awaiting_rel_max, 0} + ], + ProcStats = emqx_misc:proc_stats(), + lists:append([SockStats, ConnStats, ChanStats, ProcStats]). + +clientinfo(#state{peername = {PeerHost, _}, + clientid = ClientId, + username = Username, + password = Password}) -> + #{zone => undefined, + protocol => coap, + peerhost => PeerHost, + sockport => 5683, %% FIXME: + clientid => ClientId, + username => Username, + password => Password, + peercert => nossl, + is_bridge => false, + is_superuser => false, + mountpoint => undefined, + ws_cookie => undefined + }. + diff --git a/apps/emqx_coap/src/emqx_coap_ps_resource.erl b/apps/emqx_coap/src/emqx_coap_ps_resource.erl new file mode 100644 index 000000000..09d291bf5 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_ps_resource.erl @@ -0,0 +1,318 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_ps_resource). + +-behaviour(coap_resource). + +-include("emqx_coap.hrl"). +-include_lib("gen_coap/include/coap.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[CoAP-PS-RES]"). + +-export([ coap_discover/2 + , coap_get/5 + , coap_post/4 + , coap_put/4 + , coap_delete/3 + , coap_observe/5 + , coap_unobserve/1 + , handle_info/2 + , coap_ack/2 + ]). + +-ifdef(TEST). +-export([topic/1]). +-endif. + +-define(PS_PREFIX, [<<"ps">>]). + +%%-------------------------------------------------------------------- +%% Resource Callbacks +%%-------------------------------------------------------------------- +coap_discover(_Prefix, _Args) -> + [{absolute, [<<"ps">>], []}]. + +coap_get(ChId, ?PS_PREFIX, TopicPath, Query, Content=#coap_content{format = Format}) when TopicPath =/= [] -> + Topic = topic(TopicPath), + ?LOG(debug, "coap_get() Topic=~p, Query=~p~n", [Topic, Query]), + #coap_mqtt_auth{clientid = Clientid, username = Usr, password = Passwd} = get_auth(Query), + case emqx_coap_mqtt_adapter:client_pid(Clientid, Usr, Passwd, ChId) of + {ok, Pid} -> + put(mqtt_client_pid, Pid), + case Format of + <<"application/link-format">> -> + Content; + _Other -> + %% READ the topic info + read_last_publish_message(emqx_topic:wildcard(Topic), Topic, Content) + end; + {error, auth_failure} -> + put(mqtt_client_pid, undefined), + {error, uauthorized}; + {error, bad_request} -> + put(mqtt_client_pid, undefined), + {error, bad_request}; + {error, _Other} -> + put(mqtt_client_pid, undefined), + {error, internal_server_error} + end; +coap_get(ChId, Prefix, TopicPath, Query, _Content) -> + ?LOG(error, "ignore bad get request ChId=~p, Prefix=~p, TopicPath=~p, Query=~p", [ChId, Prefix, TopicPath, Query]), + {error, bad_request}. + +coap_post(_ChId, ?PS_PREFIX, TopicPath, #coap_content{format = Format, payload = Payload, max_age = MaxAge}) when TopicPath =/= [] -> + Topic = topic(TopicPath), + ?LOG(debug, "coap_post() Topic=~p, MaxAge=~p, Format=~p~n", [Topic, MaxAge, Format]), + case Format of + %% We treat ct of "application/link-format" as CREATE message + <<"application/link-format">> -> + handle_received_create(Topic, MaxAge, Payload); + %% We treat ct of other values as PUBLISH message + Other -> + ?LOG(debug, "coap_post() receive payload format=~p, will process as PUBLISH~n", [Format]), + handle_received_publish(Topic, MaxAge, Other, Payload) + end; + +coap_post(_ChId, _Prefix, _TopicPath, _Content) -> + {error, method_not_allowed}. + +coap_put(_ChId, ?PS_PREFIX, TopicPath, #coap_content{max_age = MaxAge, format = Format, payload = Payload}) when TopicPath =/= [] -> + Topic = topic(TopicPath), + ?LOG(debug, "put message, Topic=~p, Payload=~p~n", [Topic, Payload]), + handle_received_publish(Topic, MaxAge, Format, Payload); + +coap_put(_ChId, Prefix, TopicPath, Content) -> + ?LOG(error, "put has error, Prefix=~p, TopicPath=~p, Content=~p", [Prefix, TopicPath, Content]), + {error, bad_request}. + +coap_delete(_ChId, ?PS_PREFIX, TopicPath) -> + delete_topic_info(topic(TopicPath)); + +coap_delete(_ChId, _Prefix, _TopicPath) -> + {error, method_not_allowed}. + +coap_observe(ChId, ?PS_PREFIX, TopicPath, Ack, Content) when TopicPath =/= [] -> + Topic = topic(TopicPath), + ?LOG(debug, "observe Topic=~p, Ack=~p,Content=~p", [Topic, Ack, Content]), + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:subscribe(Pid, Topic), + Code = case emqx_coap_ps_topics:is_topic_timeout(Topic) of + true -> + nocontent; + false-> + content + end, + {ok, {state, ChId, ?PS_PREFIX, [Topic]}, Code, Content}; + +coap_observe(ChId, Prefix, TopicPath, Ack, _Content) -> + ?LOG(error, "unknown observe request ChId=~p, Prefix=~p, TopicPath=~p, Ack=~p", [ChId, Prefix, TopicPath, Ack]), + {error, bad_request}. + +coap_unobserve({state, _ChId, ?PS_PREFIX, TopicPath}) when TopicPath =/= [] -> + Topic = topic(TopicPath), + ?LOG(debug, "unobserve ~p", [Topic]), + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:unsubscribe(Pid, Topic), + ok; +coap_unobserve({state, ChId, Prefix, TopicPath}) -> + ?LOG(error, "ignore unknown unobserve request ChId=~p, Prefix=~p, TopicPath=~p", [ChId, Prefix, TopicPath]), + ok. + +handle_info({dispatch, Topic, Payload}, State) -> + ?LOG(debug, "dispatch Topic=~p, Payload=~p", [Topic, Payload]), + {ok, Ret} = emqx_coap_ps_topics:reset_topic_info(Topic, Payload), + ?LOG(debug, "Updated publish info of topic=~p, the Ret is ~p", [Topic, Ret]), + {notify, [], #coap_content{format = <<"application/octet-stream">>, payload = Payload}, State}; +handle_info(Message, State) -> + ?LOG(error, "Unknown Message ~p", [Message]), + {noreply, State}. + +coap_ack(_Ref, State) -> {ok, State}. + + +%%-------------------------------------------------------------------- +%% Internal Functions +%%-------------------------------------------------------------------- +get_auth(Query) -> + get_auth(Query, #coap_mqtt_auth{}). + +get_auth([], Auth=#coap_mqtt_auth{}) -> + Auth; +get_auth([<<$c, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{clientid = Rest}); +get_auth([<<$u, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{username = Rest}); +get_auth([<<$p, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{password = Rest}); +get_auth([Param|T], Auth=#coap_mqtt_auth{}) -> + ?LOG(error, "ignore unknown parameter ~p", [Param]), + get_auth(T, Auth). + +add_topic_info(publish, Topic, MaxAge, Format, Payload) when is_binary(Topic), Topic =/= <<>> -> + case emqx_coap_ps_topics:lookup_topic_info(Topic) of + [{_, StoredMaxAge, StoredCT, _, _}] -> + ?LOG(debug, "publish topic=~p already exists, need reset the topic info", [Topic]), + %% check whether the ct value stored matches the ct option in this POST message + case Format =:= StoredCT of + true -> + {ok, Ret} = + case StoredMaxAge =:= MaxAge of + true -> + emqx_coap_ps_topics:reset_topic_info(Topic, Payload); + false -> + emqx_coap_ps_topics:reset_topic_info(Topic, MaxAge, Payload) + end, + {changed, Ret}; + false -> + ?LOG(debug, "ct values of topic=~p do not match, stored ct=~p, new ct=~p, ignore the PUBLISH", [Topic, StoredCT, Format]), + {changed, false} + end; + [] -> + ?LOG(debug, "publish topic=~p will be created", [Topic]), + {ok, Ret} = emqx_coap_ps_topics:add_topic_info(Topic, MaxAge, Format, Payload), + {created, Ret} + end; + +add_topic_info(create, Topic, MaxAge, Format, _Payload) when is_binary(Topic), Topic =/= <<>> -> + case emqx_coap_ps_topics:is_topic_existed(Topic) of + true -> + %% Whether we should support CREATE to an existed topic is TBD!! + ?LOG(debug, "create topic=~p already exists, need reset the topic info", [Topic]), + {ok, Ret} = emqx_coap_ps_topics:reset_topic_info(Topic, MaxAge, Format, <<>>); + false -> + ?LOG(debug, "create topic=~p will be created", [Topic]), + {ok, Ret} = emqx_coap_ps_topics:add_topic_info(Topic, MaxAge, Format, <<>>) + end, + {created, Ret}; + +add_topic_info(_, Topic, _MaxAge, _Format, _Payload) -> + ?LOG(debug, "create topic=~p info failed", [Topic]), + {badarg, false}. + +concatenate_location_path(List = [TopicPart1, TopicPart2, TopicPart3]) when is_binary(TopicPart1), is_binary(TopicPart2), is_binary(TopicPart3) -> + list_to_binary(lists:foldl( fun (Element, AccIn) when Element =/= <<>> -> + AccIn ++ "/" ++ binary_to_list(Element); + (_Element, AccIn) -> + AccIn + end, [], List)). + +format_string_to_int(<<"application/octet-stream">>) -> + <<"42">>; +format_string_to_int(<<"application/exi">>) -> + <<"47">>; +format_string_to_int(<<"application/json">>) -> + <<"50">>. + +handle_received_publish(Topic, MaxAge, Format, Payload) -> + case add_topic_info(publish, Topic, MaxAge, format_string_to_int(Format), Payload) of + {Ret ,true} -> + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:publish(Pid, topic(Topic), Payload), + Content = case Ret of + changed -> + #coap_content{}; + created -> + LocPath = concatenate_location_path([<<"ps">>, Topic, <<>>]), + #coap_content{location_path = [LocPath]} + end, + {ok, Ret, Content}; + {_, false} -> + ?LOG(debug, "add_topic_info failed, will return bad_request", []), + {error, bad_request} + end. + +handle_received_create(TopicPrefix, MaxAge, Payload) -> + case core_link:decode(Payload) of + [{rootless, [Topic], [{ct, CT}]}] when is_binary(Topic), Topic =/= <<>> -> + TrueTopic = http_uri:decode(Topic), + ?LOG(debug, "decoded link-format payload, the Topic=~p, CT=~p~n", [TrueTopic, CT]), + LocPath = concatenate_location_path([<<"ps">>, TopicPrefix, TrueTopic]), + FullTopic = binary:part(LocPath, 4, byte_size(LocPath)-4), + ?LOG(debug, "the location path is ~p, the full topic is ~p~n", [LocPath, FullTopic]), + case add_topic_info(create, FullTopic, MaxAge, CT, <<>>) of + {_, true} -> + ?LOG(debug, "create topic info successfully, will return LocPath=~p", [LocPath]), + {ok, created, #coap_content{location_path = [LocPath]}}; + {_, false} -> + ?LOG(debug, "create topic info failed, will return bad_request", []), + {error, bad_request} + end; + Other -> + ?LOG(debug, "post with bad payload of link-format ~p, will return bad_request", [Other]), + {error, bad_request} + end. + +%% When topic is timeout, server should return nocontent here, +%% but gen_coap only receive return value of #coap_content from coap_get, so temporarily we can't give the Code 2.07 {ok, nocontent} out.TBC!!! +return_resource(Topic, Payload, MaxAge, TimeStamp, Content) -> + TimeElapsed = trunc((erlang:system_time(millisecond) - TimeStamp) / 1000), + case TimeElapsed < MaxAge of + true -> + LeftTime = (MaxAge - TimeElapsed), + ?LOG(debug, "topic=~p has max age left time is ~p", [Topic, LeftTime]), + Content#coap_content{max_age = LeftTime, payload = Payload}; + false -> + ?LOG(debug, "topic=~p has been timeout, will return empty content", [Topic]), + #coap_content{} + end. + +read_last_publish_message(false, Topic, Content=#coap_content{format = QueryFormat}) when is_binary(QueryFormat)-> + ?LOG(debug, "the QueryFormat=~p", [QueryFormat]), + case emqx_coap_ps_topics:lookup_topic_info(Topic) of + [] -> + {error, not_found}; + [{_, MaxAge, CT, Payload, TimeStamp}] -> + case CT =:= format_string_to_int(QueryFormat) of + true -> + return_resource(Topic, Payload, MaxAge, TimeStamp, Content); + false -> + ?LOG(debug, "format value does not match, the queried format=~p, the stored format=~p", [QueryFormat, CT]), + {error, bad_request} + end + end; + +read_last_publish_message(false, Topic, Content) -> + case emqx_coap_ps_topics:lookup_topic_info(Topic) of + [] -> + {error, not_found}; + [{_, MaxAge, _, Payload, TimeStamp}] -> + return_resource(Topic, Payload, MaxAge, TimeStamp, Content) + end; + +read_last_publish_message(true, Topic, _Content) -> + ?LOG(debug, "the topic=~p is illegal wildcard topic", [Topic]), + {error, bad_request}. + +delete_topic_info(Topic) -> + case emqx_coap_ps_topics:lookup_topic_info(Topic) of + [] -> + {error, not_found}; + [{_, _, _, _, _}] -> + emqx_coap_ps_topics:delete_sub_topics(Topic) + end. + +topic(Topic) when is_binary(Topic) -> Topic; +topic([]) -> <<>>; +topic([Path | TopicPath]) -> + case topic(TopicPath) of + <<>> -> Path; + RemTopic -> + <> + end. diff --git a/apps/emqx_coap/src/emqx_coap_ps_topics.erl b/apps/emqx_coap/src/emqx_coap_ps_topics.erl new file mode 100644 index 000000000..30e9d2623 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_ps_topics.erl @@ -0,0 +1,185 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_ps_topics). + +-behaviour(gen_server). + +-include("emqx_coap.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[CoAP-PS-TOPICS]"). + +-export([ start_link/0 + , stop/1 + ]). + +-export([ add_topic_info/4 + , delete_topic_info/1 + , delete_sub_topics/1 + , is_topic_existed/1 + , is_topic_timeout/1 + , reset_topic_info/2 + , reset_topic_info/3 + , reset_topic_info/4 + , lookup_topic_info/1 + , lookup_topic_payload/1 + ]). + +%% gen_server. +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-record(state, {}). + +-define(COAP_TOPIC_TABLE, coap_topic). + +%%-------------------------------------------------------------------- +%% API +%%-------------------------------------------------------------------- + +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +stop(Pid) -> + gen_server:stop(Pid). + +add_topic_info(Topic, MaxAge, CT, Payload) when is_binary(Topic), is_integer(MaxAge), is_binary(CT), is_binary(Payload) -> + gen_server:call(?MODULE, {add_topic, {Topic, MaxAge, CT, Payload}}). + +delete_topic_info(Topic) when is_binary(Topic) -> + gen_server:call(?MODULE, {remove_topic, Topic}). + +delete_sub_topics(Topic) when is_binary(Topic) -> + gen_server:cast(?MODULE, {remove_sub_topics, Topic}). + +reset_topic_info(Topic, Payload) -> + gen_server:call(?MODULE, {reset_topic, {Topic, Payload}}). + +reset_topic_info(Topic, MaxAge, Payload) -> + gen_server:call(?MODULE, {reset_topic, {Topic, MaxAge, Payload}}). + +reset_topic_info(Topic, MaxAge, CT, Payload) -> + gen_server:call(?MODULE, {reset_topic, {Topic, MaxAge, CT, Payload}}). + +is_topic_existed(Topic) -> + ets:member(?COAP_TOPIC_TABLE, Topic). + +is_topic_timeout(Topic) when is_binary(Topic) -> + [{Topic, MaxAge, _, _, TimeStamp}] = ets:lookup(?COAP_TOPIC_TABLE, Topic), + %% MaxAge: x seconds + MaxAge < ((erlang:system_time(millisecond) - TimeStamp) / 1000). + +lookup_topic_info(Topic) -> + ets:lookup(?COAP_TOPIC_TABLE, Topic). + +lookup_topic_payload(Topic) -> + try ets:lookup_element(?COAP_TOPIC_TABLE, Topic, 4) + catch + error:badarg -> undefined + end. + +%%-------------------------------------------------------------------- +%% gen_server callbacks +%%-------------------------------------------------------------------- + +init([]) -> + ets:new(?COAP_TOPIC_TABLE, [set, named_table, protected]), + ?LOG(debug, "Create the coap_topic table", []), + {ok, #state{}}. + +handle_call({add_topic, {Topic, MaxAge, CT, Payload}}, _From, State) -> + Ret = create_table_element(Topic, MaxAge, CT, Payload), + {reply, {ok, Ret}, State, hibernate}; + +handle_call({reset_topic, {Topic, Payload}}, _From, State) -> + Ret = update_table_element(Topic, Payload), + {reply, {ok, Ret}, State, hibernate}; + +handle_call({reset_topic, {Topic, MaxAge, Payload}}, _From, State) -> + Ret = update_table_element(Topic, MaxAge, Payload), + {reply, {ok, Ret}, State, hibernate}; + +handle_call({reset_topic, {Topic, MaxAge, CT, Payload}}, _From, State) -> + Ret = update_table_element(Topic, MaxAge, CT, Payload), + {reply, {ok, Ret}, State, hibernate}; + +handle_call({remove_topic, {Topic, _Content}}, _From, State) -> + ets:delete(?COAP_TOPIC_TABLE, Topic), + ?LOG(debug, "Remove topic ~p in the coap_topic table", [Topic]), + {reply, ok, State, hibernate}; + +handle_call(Request, _From, State) -> + ?LOG(error, "adapter unexpected call ~p", [Request]), + {reply, ignored, State, hibernate}. + +handle_cast({remove_sub_topics, TopicPrefix}, State) -> + DeletedTopicNum = ets:foldl(fun ({Topic, _, _, _, _}, AccIn) -> + case binary:match(Topic, TopicPrefix) =/= nomatch of + true -> + ?LOG(debug, "Remove topic ~p in the coap_topic table", [Topic]), + ets:delete(?COAP_TOPIC_TABLE, Topic), + AccIn + 1; + false -> + AccIn + end + end, 0, ?COAP_TOPIC_TABLE), + ?LOG(debug, "Remove number of ~p topics with prefix=~p in the coap_topic table", [DeletedTopicNum, TopicPrefix]), + {noreply, State, hibernate}; + +handle_cast(Msg, State) -> + ?LOG(error, "broker_api unexpected cast ~p", [Msg]), + {noreply, State, hibernate}. + +handle_info(Info, State) -> + ?LOG(error, "adapter unexpected info ~p", [Info]), + {noreply, State, hibernate}. + +terminate(Reason, #state{}) -> + ets:delete(?COAP_TOPIC_TABLE), + ?LOG(error, "the ~p terminate for reason ~p", [?MODULE, Reason]), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + + +%%-------------------------------------------------------------------- +%% Internal Functions +%%-------------------------------------------------------------------- +create_table_element(Topic, MaxAge, CT, Payload) -> + TopicInfo = {Topic, MaxAge, CT, Payload, erlang:system_time(millisecond)}, + ?LOG(debug, "Insert ~p in the coap_topic table", [TopicInfo]), + ets:insert_new(?COAP_TOPIC_TABLE, TopicInfo). + +update_table_element(Topic, Payload) -> + ?LOG(debug, "Update the topic=~p only with Payload", [Topic]), + ets:update_element(?COAP_TOPIC_TABLE, Topic, [{4, Payload}, {5, erlang:system_time(millisecond)}]). + +update_table_element(Topic, MaxAge, Payload) -> + ?LOG(debug, "Update the topic=~p info of MaxAge=~p and Payload", [Topic, MaxAge]), + ets:update_element(?COAP_TOPIC_TABLE, Topic, [{2, MaxAge}, {4, Payload}, {5, erlang:system_time(millisecond)}]). + +update_table_element(Topic, MaxAge, CT, <<>>) -> + ?LOG(debug, "Update the topic=~p info of MaxAge=~p, CT=~p, payload=<<>>", [Topic, MaxAge, CT]), + ets:update_element(?COAP_TOPIC_TABLE, Topic, [{2, MaxAge}, {3, CT}, {5, erlang:system_time(millisecond)}]). diff --git a/apps/emqx_coap/src/emqx_coap_registry.erl b/apps/emqx_coap/src/emqx_coap_registry.erl new file mode 100644 index 000000000..369bf2787 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_registry.erl @@ -0,0 +1,154 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_registry). + +-author("Feng Lee "). + +-include("emqx_coap.hrl"). +-include_lib("emqx/include/logger.hrl"). + +-logger_header("[CoAP-Registry]"). + +-behaviour(gen_server). + +%% API. +-export([ start_link/0 + , register_name/2 + , unregister_name/1 + , whereis_name/1 + , send/2 + , stop/0 + ]). + +%% gen_server. +-export([ init/1 + , handle_call/3 + , handle_cast/2 + , handle_info/2 + , terminate/2 + , code_change/3 + ]). + +-record(state, {}). + +-define(RESPONSE_TAB, coap_response_process). +-define(RESPONSE_REF_TAB, coap_response_process_ref). + +%% ------------------------------------------------------------------ +%% API Function Definitions +%% ------------------------------------------------------------------ + + +start_link() -> + gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). + +register_name(Name, Pid) -> + gen_server:call(?MODULE, {register_name, Name, Pid}). + +unregister_name(Name) -> + gen_server:call(?MODULE, {unregister_name, Name}). + +whereis_name(Name) -> + case ets:lookup(?RESPONSE_TAB, Name) of + [] -> undefined; + [{Name, Pid, _MRef}] -> Pid + end. + +send(Name, Msg) -> + case whereis_name(Name) of + undefined -> + exit({badarg, {Name, Msg}}); + Pid when is_pid(Pid) -> + Pid ! Msg, + Pid + end. + +stop() -> + gen_server:stop(?MODULE). + + +%% ------------------------------------------------------------------ +%% gen_server Function Definitions +%% ------------------------------------------------------------------ + +init([]) -> + ets:new(?RESPONSE_TAB, [set, named_table, protected]), + ets:new(?RESPONSE_REF_TAB, [set, named_table, protected]), + {ok, #state{}}. + +handle_call({register_name, Name, Pid}, _From, State) -> + case ets:member(?RESPONSE_TAB, Name) of + false -> + MRef = monitor_client(Pid), + ets:insert(?RESPONSE_TAB, {Name, Pid, MRef}), + ets:insert(?RESPONSE_REF_TAB, {MRef, Name, Pid}), + {reply, yes, State}; + true -> {reply, no, State} + end; + +handle_call({unregister_name, Name}, _From, State) -> + case ets:lookup(?RESPONSE_TAB, Name) of + [] -> + ok; + [{Name, _Pid, MRef}] -> + erase_monitor(MRef), + ets:delete(?RESPONSE_TAB, Name), + ets:delete(?RESPONSE_REF_TAB, MRef) + end, + {reply, ok, State}; + +handle_call(_Request, _From, State) -> + {reply, ignored, State}. + +handle_cast(_Msg, State) -> + {noreply, State}. + + +handle_info({'DOWN', MRef, process, DownPid, _Reason}, State) -> + case ets:lookup(?RESPONSE_REF_TAB, MRef) of + [{MRef, Name, _Pid}] -> + ets:delete(?RESPONSE_TAB, Name), + ets:delete(?RESPONSE_REF_TAB, MRef), + erase_monitor(MRef); + [] -> + ?LOG(error, "MRef of client ~p not found", [DownPid]) + end, + {noreply, State}; + + +handle_info(_Info, State) -> + {noreply, State}. + +terminate(_Reason, _State) -> + ets:delete(?RESPONSE_TAB), + ets:delete(?RESPONSE_REF_TAB), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + + + +%%-------------------------------------------------------------------- +%% Internal functions +%%-------------------------------------------------------------------- + +monitor_client(Pid) -> + erlang:monitor(process, Pid). + +erase_monitor(MRef) -> + catch erlang:demonitor(MRef, [flush]). diff --git a/apps/emqx_coap/src/emqx_coap_resource.erl b/apps/emqx_coap/src/emqx_coap_resource.erl new file mode 100644 index 000000000..e11788a04 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_resource.erl @@ -0,0 +1,136 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_resource). + +-behaviour(coap_resource). + +-include("emqx_coap.hrl"). +-include_lib("emqx/include/emqx.hrl"). +-include_lib("emqx/include/logger.hrl"). +-include_lib("emqx/include/emqx_mqtt.hrl"). +-include_lib("gen_coap/include/coap.hrl"). + +-logger_header("[CoAP-RES]"). + +-export([ coap_discover/2 + , coap_get/5 + , coap_post/4 + , coap_put/4 + , coap_delete/3 + , coap_observe/5 + , coap_unobserve/1 + , handle_info/2 + , coap_ack/2 + ]). + +-ifdef(TEST). +-export([topic/1]). +-endif. + +-define(MQTT_PREFIX, [<<"mqtt">>]). + +% resource operations +coap_discover(_Prefix, _Args) -> + [{absolute, [<<"mqtt">>], []}]. + +coap_get(ChId, ?MQTT_PREFIX, Path, Query, _Content) -> + ?LOG(debug, "coap_get() Path=~p, Query=~p~n", [Path, Query]), + #coap_mqtt_auth{clientid = Clientid, username = Usr, password = Passwd} = get_auth(Query), + case emqx_coap_mqtt_adapter:client_pid(Clientid, Usr, Passwd, ChId) of + {ok, Pid} -> + put(mqtt_client_pid, Pid), + #coap_content{}; + {error, auth_failure} -> + put(mqtt_client_pid, undefined), + {error, unauthorized}; + {error, bad_request} -> + put(mqtt_client_pid, undefined), + {error, bad_request}; + {error, _Other} -> + put(mqtt_client_pid, undefined), + {error, internal_server_error} + end; +coap_get(ChId, Prefix, Path, Query, _Content) -> + ?LOG(error, "ignore bad get request ChId=~p, Prefix=~p, Path=~p, Query=~p", [ChId, Prefix, Path, Query]), + {error, bad_request}. + +coap_post(_ChId, _Prefix, _Topic, _Content) -> + {error, method_not_allowed}. + +coap_put(_ChId, ?MQTT_PREFIX, Topic, #coap_content{payload = Payload}) when Topic =/= [] -> + ?LOG(debug, "put message, Topic=~p, Payload=~p~n", [Topic, Payload]), + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:publish(Pid, topic(Topic), Payload), + ok; +coap_put(_ChId, Prefix, Topic, Content) -> + ?LOG(error, "put has error, Prefix=~p, Topic=~p, Content=~p", [Prefix, Topic, Content]), + {error, bad_request}. + +coap_delete(_ChId, _Prefix, _Topic) -> + {error, method_not_allowed}. + +coap_observe(ChId, ?MQTT_PREFIX, Topic, Ack, Content) when Topic =/= [] -> + TrueTopic = topic(Topic), + ?LOG(debug, "observe Topic=~p, Ack=~p", [TrueTopic, Ack]), + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:subscribe(Pid, TrueTopic), + {ok, {state, ChId, ?MQTT_PREFIX, [TrueTopic]}, content, Content}; +coap_observe(ChId, Prefix, Topic, Ack, _Content) -> + ?LOG(error, "unknown observe request ChId=~p, Prefix=~p, Topic=~p, Ack=~p", [ChId, Prefix, Topic, Ack]), + {error, bad_request}. + +coap_unobserve({state, _ChId, ?MQTT_PREFIX, Topic}) when Topic =/= [] -> + ?LOG(debug, "unobserve ~p", [Topic]), + Pid = get(mqtt_client_pid), + emqx_coap_mqtt_adapter:unsubscribe(Pid, topic(Topic)), + ok; +coap_unobserve({state, ChId, Prefix, Topic}) -> + ?LOG(error, "ignore unknown unobserve request ChId=~p, Prefix=~p, Topic=~p", [ChId, Prefix, Topic]), + ok. + +handle_info({dispatch, Topic, Payload}, State) -> + ?LOG(debug, "dispatch Topic=~p, Payload=~p", [Topic, Payload]), + {notify, [], #coap_content{format = <<"application/octet-stream">>, payload = Payload}, State}; +handle_info(Message, State) -> + emqx_coap_mqtt_adapter:handle_info(Message, State). + +coap_ack(_Ref, State) -> {ok, State}. + +get_auth(Query) -> + get_auth(Query, #coap_mqtt_auth{}). + +get_auth([], Auth=#coap_mqtt_auth{}) -> + Auth; +get_auth([<<$c, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{clientid = Rest}); +get_auth([<<$u, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{username = Rest}); +get_auth([<<$p, $=, Rest/binary>>|T], Auth=#coap_mqtt_auth{}) -> + get_auth(T, Auth#coap_mqtt_auth{password = Rest}); +get_auth([Param|T], Auth=#coap_mqtt_auth{}) -> + ?LOG(error, "ignore unknown parameter ~p", [Param]), + get_auth(T, Auth). + +topic(Topic) when is_binary(Topic) -> Topic; +topic([]) -> <<>>; +topic([Path | TopicPath]) -> + case topic(TopicPath) of + <<>> -> Path; + RemTopic -> + <> + end. + diff --git a/apps/emqx_coap/src/emqx_coap_server.erl b/apps/emqx_coap/src/emqx_coap_server.erl new file mode 100644 index 000000000..0d571fac3 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_server.erl @@ -0,0 +1,106 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_server). + +-include("emqx_coap.hrl"). + +-export([ start/1 + , stop/1 + ]). + +-export([ start_listener/1 + , start_listener/3 + , stop_listener/1 + , stop_listener/2 + ]). + +%%-------------------------------------------------------------------- +%% APIs +%%-------------------------------------------------------------------- + +start(Envs) -> + {ok, _} = application:ensure_all_started(gen_coap), + start_listeners(Envs). + +stop(Envs) -> + stop_listeners(Envs). + +%%-------------------------------------------------------------------- +%% Internal funcs +%%-------------------------------------------------------------------- + +start_listeners(Envs) -> + lists:foreach(fun start_listener/1, listeners_confs(Envs)). + +stop_listeners(Envs) -> + lists:foreach(fun stop_listener/1, listeners_confs(Envs)). + +start_listener({Proto, ListenOn, Opts}) -> + case start_listener(Proto, ListenOn, Opts) of + {ok, _Pid} -> + io:format("Start coap:~s listener on ~s successfully.~n", + [Proto, format(ListenOn)]); + {error, Reason} -> + io:format(standard_error, "Failed to start coap:~s listener on ~s - ~0p~n!", + [Proto, format(ListenOn), Reason]), + error(Reason) + end. + +start_listener(udp, ListenOn, Opts) -> + coap_server:start_udp('coap:udp', ListenOn, Opts); +start_listener(dtls, ListenOn, Opts) -> + coap_server:start_dtls('coap:dtls', ListenOn, Opts). + +stop_listener({Proto, ListenOn, _Opts}) -> + Ret = stop_listener(Proto, ListenOn), + case Ret of + ok -> io:format("Stop coap:~s listener on ~s successfully.~n", + [Proto, format(ListenOn)]); + {error, Reason} -> + io:format(standard_error, "Failed to stop coap:~s listener on ~s - ~p~n.", + [Proto, format(ListenOn), Reason]) + end, + Ret. + +stop_listener(udp, ListenOn) -> + coap_server:stop_udp('coap:udp', ListenOn); +stop_listener(dtls, ListenOn) -> + coap_server:stop_dtls('coap:dtls', ListenOn). + +%% XXX: It is a temporary func to convert conf format for esockd +listeners_confs(Envs) -> + listeners_confs(udp, Envs) ++ listeners_confs(dtls, Envs). + +listeners_confs(udp, Envs) -> + Udps = proplists:get_value(bind_udp, Envs, []), + [{udp, Port, [{udp_options, InetOpts}]} || {Port, InetOpts} <- Udps]; + +listeners_confs(dtls, Envs) -> + case proplists:get_value(dtls_opts, Envs, []) of + [] -> []; + DtlsOpts -> + BindDtls = proplists:get_value(bind_dtls, Envs, []), + [{dtls, Port, [{dtls_options, InetOpts ++ DtlsOpts}]} || {Port, InetOpts} <- BindDtls] + end. + +format(Port) when is_integer(Port) -> + io_lib:format("0.0.0.0:~w", [Port]); +format({Addr, Port}) when is_list(Addr) -> + io_lib:format("~s:~w", [Addr, Port]); +format({Addr, Port}) when is_tuple(Addr) -> + io_lib:format("~s:~w", [inet:ntoa(Addr), Port]). + diff --git a/apps/emqx_coap/src/emqx_coap_sup.erl b/apps/emqx_coap/src/emqx_coap_sup.erl new file mode 100644 index 000000000..a3a0fdc53 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_sup.erl @@ -0,0 +1,42 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_sup). + +-behaviour(supervisor). + +-export([ start_link/0 + , init/1 + ]). + +start_link() -> + supervisor:start_link({local, ?MODULE}, ?MODULE, []). + +init(_Args) -> + Registry = #{id => emqx_coap_registry, + start => {emqx_coap_registry, start_link, []}, + restart => permanent, + shutdown => 5000, + type => worker, + modules => [emqx_coap_registry]}, + PsTopics = #{id => emqx_coap_ps_topics, + start => {emqx_coap_ps_topics, start_link, []}, + restart => permanent, + shutdown => 5000, + type => worker, + modules => [emqx_coap_ps_topics]}, + {ok, {{one_for_all, 10, 3600}, [Registry, PsTopics]}}. + diff --git a/apps/emqx_coap/src/emqx_coap_timer.erl b/apps/emqx_coap/src/emqx_coap_timer.erl new file mode 100644 index 000000000..3924ba239 --- /dev/null +++ b/apps/emqx_coap/src/emqx_coap_timer.erl @@ -0,0 +1,59 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_timer). + +-include("emqx_coap.hrl"). + +-export([ cancel_timer/1 + , start_timer/2 + , restart_timer/1 + , kick_timer/1 + , is_timeout/1 + , get_timer_length/1 + ]). + +-record(timer_state, {interval, kickme, tref, message}). + +-define(LOG(Level, Format, Args), + emqx_logger:Level("CoAP-Timer: " ++ Format, Args)). + +cancel_timer(#timer_state{tref = TRef}) when is_reference(TRef) -> + catch erlang:cancel_timer(TRef), + ok; +cancel_timer(_) -> + ok. + +kick_timer(State=#timer_state{kickme = false}) -> + State#timer_state{kickme = true}; +kick_timer(State=#timer_state{kickme = true}) -> + State. + +start_timer(Sec, Msg) -> + ?LOG(debug, "emqx_coap_timer:start_timer ~p", [Sec]), + TRef = erlang:send_after(timer:seconds(Sec), self(), Msg), + #timer_state{interval = Sec, kickme = false, tref = TRef, message = Msg}. + +restart_timer(State=#timer_state{interval = Sec, message = Msg}) -> + ?LOG(debug, "emqx_coap_timer:restart_timer ~p", [Sec]), + TRef = erlang:send_after(timer:seconds(Sec), self(), Msg), + State#timer_state{kickme = false, tref = TRef}. + +is_timeout(#timer_state{kickme = Bool}) -> + not Bool. + +get_timer_length(#timer_state{interval = Interval}) -> + Interval. diff --git a/apps/emqx_coap/test/emqx_coap_SUITE.erl b/apps/emqx_coap/test/emqx_coap_SUITE.erl new file mode 100644 index 000000000..866e2e203 --- /dev/null +++ b/apps/emqx_coap/test/emqx_coap_SUITE.erl @@ -0,0 +1,240 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("gen_coap/include/coap.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("emqx/include/emqx.hrl"). + +-define(LOGT(Format, Args), ct:pal(Format, Args)). + +all() -> emqx_ct:all(?MODULE). + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx_coap], fun set_sepecial_cfg/1), + Config. + +set_sepecial_cfg(emqx_coap) -> + Opts = application:get_env(emqx_coap, dtls_opts,[]), + Opts2 = [{keyfile, emqx_ct_helpers:deps_path(emqx, "etc/certs/key.pem")}, + {certfile, emqx_ct_helpers:deps_path(emqx, "etc/certs/cert.pem")}], + application:set_env(emqx_coap, dtls_opts, emqx_misc:merge_opts(Opts, Opts2)), + application:set_env(emqx_coap, enable_stats, true); +set_sepecial_cfg(_) -> + ok. + +end_per_suite(Config) -> + emqx_ct_helpers:stop_apps([emqx_coap]), + Config. + +%%-------------------------------------------------------------------- +%% Test Cases +%%-------------------------------------------------------------------- + +t_publish(_Config) -> + Topic = <<"abc">>, Payload = <<"123">>, + TopicStr = binary_to_list(Topic), + URI = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", + + %% Sub topic first + emqx:subscribe(Topic), + + Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + {ok, changed, _} = Reply, + + receive + {deliver, Topic, Msg} -> + ?assertEqual(Topic, Msg#message.topic), + ?assertEqual(Payload, Msg#message.payload) + after + 500 -> + ?assert(false) + end. + +t_observe(_Config) -> + Topic = <<"abc">>, TopicStr = binary_to_list(Topic), + Payload = <<"123">>, + Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", + {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), + ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), + + [SubPid] = emqx:subscribers(Topic), + ?assert(is_pid(SubPid)), + + %% Publish a message + emqx:publish(emqx_message:make(Topic, Payload)), + + Notif = receive_notification(), + ?LOGT("observer get Notif=~p", [Notif]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, + ?_assertEqual(Payload, PayloadRecv), + + er_coap_observer:stop(Pid), + timer:sleep(100), + + [] = emqx:subscribers(Topic). + +t_observe_wildcard(_Config) -> + Topic = <<"+/b">>, TopicStr = http_uri:encode(binary_to_list(Topic)), + Payload = <<"123">>, + Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", + {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), + ?LOGT("observer Uri=~p, Pid=~p, N=~p, Code=~p, Content=~p", [Uri, Pid, N, Code, Content]), + + [SubPid] = emqx:subscribers(Topic), + ?assert(is_pid(SubPid)), + + %% Publish a message + emqx:publish(emqx_message:make(Topic, Payload)), + + Notif = receive_notification(), + ?LOGT("observer get Notif=~p", [Notif]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, + ?_assertEqual(Payload, PayloadRecv), + + er_coap_observer:stop(Pid), + timer:sleep(100), + + [] = emqx:subscribers(Topic). + +t_observe_pub(_Config) -> + Topic = <<"+/b">>, TopicStr = http_uri:encode(binary_to_list(Topic)), + Uri = "coap://127.0.0.1/mqtt/"++TopicStr++"?c=client1&u=tom&p=secret", + {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri), + ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), + + [SubPid] = emqx:subscribers(Topic), + ?assert(is_pid(SubPid)), + + Topic2 = <<"a/b">>, Payload2 = <<"UFO">>, + TopicStr2 = http_uri:encode(binary_to_list(Topic2)), + URI2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", + + Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = Payload2}), + {ok,changed, _} = Reply2, + + Notif2 = receive_notification(), + ?LOGT("observer get Notif2=~p", [Notif2]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv2}} = Notif2, + ?_assertEqual(Payload2, PayloadRecv2), + + Topic3 = <<"j/b">>, Payload3 = <<"ET629">>, + TopicStr3 = http_uri:encode(binary_to_list(Topic3)), + URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=mike&p=guess", + Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), + {ok,changed, _} = Reply3, + + Notif3 = receive_notification(), + ?LOGT("observer get Notif3=~p", [Notif3]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv3}} = Notif3, + ?_assertEqual(Payload3, PayloadRecv3), + + er_coap_observer:stop(Pid). + +t_one_clientid_sub_2_topics(_Config) -> + Topic1 = <<"abc">>, TopicStr1 = binary_to_list(Topic1), + Payload1 = <<"123">>, + Uri1 = "coap://127.0.0.1/mqtt/"++TopicStr1++"?c=client1&u=tom&p=secret", + {ok, Pid1, N1, Code1, Content1} = er_coap_observer:observe(Uri1), + ?LOGT("observer 1 Pid=~p, N=~p, Code=~p, Content=~p", [Pid1, N1, Code1, Content1]), + + [SubPid] = emqx:subscribers(Topic1), + ?assert(is_pid(SubPid)), + + Topic2 = <<"x/y">>, TopicStr2 = http_uri:encode(binary_to_list(Topic2)), + Payload2 = <<"456">>, + Uri2 = "coap://127.0.0.1/mqtt/"++TopicStr2++"?c=client1&u=tom&p=secret", + {ok, Pid2, N2, Code2, Content2} = er_coap_observer:observe(Uri2), + ?LOGT("observer 2 Pid=~p, N=~p, Code=~p, Content=~p", [Pid2, N2, Code2, Content2]), + + [SubPid] = emqx:subscribers(Topic2), + ?assert(is_pid(SubPid)), + + emqx:publish(emqx_message:make(Topic1, Payload1)), + + Notif1 = receive_notification(), + ?LOGT("observer 1 get Notif=~p", [Notif1]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv1}} = Notif1, + ?_assertEqual(Payload1, PayloadRecv1), + + emqx:publish(emqx_message:make(Topic2, Payload2)), + + Notif2 = receive_notification(), + ?LOGT("observer 2 get Notif=~p", [Notif2]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv2}} = Notif2, + ?_assertEqual(Payload2, PayloadRecv2), + + er_coap_observer:stop(Pid1), + er_coap_observer:stop(Pid2). + +t_invalid_parameter(_Config) -> + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% "cid=client2" is invaid + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Topic3 = <<"a/b">>, Payload3 = <<"ET629">>, + TopicStr3 = http_uri:encode(binary_to_list(Topic3)), + URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?cid=client2&u=tom&p=simple", + Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), + ?assertMatch({error,bad_request}, Reply3), + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% "what=hello" is invaid + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + URI4 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?what=hello", + Reply4 = er_coap_client:request(put, URI4, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), + ?assertMatch({error, bad_request}, Reply4). + +t_invalid_topic(_Config) -> + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% "a/b" is a valid topic string + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Topic3 = <<"a/b">>, Payload3 = <<"ET629">>, + TopicStr3 = binary_to_list(Topic3), + URI3 = "coap://127.0.0.1/mqtt/"++TopicStr3++"?c=client2&u=tom&p=simple", + Reply3 = er_coap_client:request(put, URI3, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), + ?assertMatch({ok,changed,_Content}, Reply3), + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %% "+?#" is invaid topic string + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + URI4 = "coap://127.0.0.1/mqtt/"++"+?#"++"?what=hello", + Reply4 = er_coap_client:request(put, URI4, #coap_content{format = <<"application/octet-stream">>, payload = Payload3}), + ?assertMatch({error,bad_request}, Reply4). + +t_stats(_) -> + ok. + +t_auth_failure(_) -> + ok. + +t_qos_supprot(_) -> + ok. + +%%-------------------------------------------------------------------- +%% Helpers + +receive_notification() -> + receive + {coap_notify, Pid, N2, Code2, Content2} -> + {coap_notify, Pid, N2, Code2, Content2} + after 2000 -> + receive_notification_timeout + end. + diff --git a/apps/emqx_coap/test/emqx_coap_ps_SUITE.erl b/apps/emqx_coap/test/emqx_coap_ps_SUITE.erl new file mode 100644 index 000000000..0a1cc3860 --- /dev/null +++ b/apps/emqx_coap/test/emqx_coap_ps_SUITE.erl @@ -0,0 +1,677 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2020 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-module(emqx_coap_ps_SUITE). + +-compile(export_all). +-compile(nowarn_export_all). + +-include_lib("gen_coap/include/coap.hrl"). +-include_lib("eunit/include/eunit.hrl"). +-include_lib("emqx/include/emqx.hrl"). + +-define(LOGT(Format, Args), ct:pal(Format, Args)). + +all() -> emqx_ct:all(?MODULE). + +init_per_suite(Config) -> + emqx_ct_helpers:start_apps([emqx_coap], fun set_sepecial_cfg/1), + Config. + +set_sepecial_cfg(emqx_coap) -> + application:set_env(emqx_coap, enable_stats, true); +set_sepecial_cfg(_) -> + ok. + +end_per_suite(Config) -> + emqx_ct_helpers:stop_apps([emqx_coap]), + Config. + +%%-------------------------------------------------------------------- +%% Test Cases +%%-------------------------------------------------------------------- + +t_update_max_age(_Config) -> + TopicInPayload = <<"topic1">>, + Payload = <<";ct=42">>, + Payload1 = <<";ct=50">>, + URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + URI2 = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + timer:sleep(50), + + %% post to create the same topic but with different max age and ct value in payload + Reply1 = er_coap_client:request(post, URI, #coap_content{max_age = 70, format = <<"application/link-format">>, payload = Payload1}), + {ok,created, #coap_content{location_path = LocPath}} = Reply1, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{TopicInPayload, MaxAge2, CT2, _ResPayload, _TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?assertEqual(70, MaxAge2), + ?assertEqual(<<"50">>, CT2), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). + +t_create_subtopic(_Config) -> + TopicInPayload = <<"topic1">>, + TopicInPayloadStr = "topic1", + Payload = <<";ct=42">>, + URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + RealURI = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", + + Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + timer:sleep(50), + + %% post to create the a sub topic + SubPayload = <<";ct=42">>, + SubTopicInPayloadStr = "subtopic", + SubURI = "coap://127.0.0.1/ps/"++TopicInPayloadStr++"?c=client1&u=tom&p=secret", + SubRealURI = "coap://127.0.0.1/ps/"++TopicInPayloadStr++"/"++SubTopicInPayloadStr++"?c=client1&u=tom&p=secret", + FullTopic = list_to_binary(TopicInPayloadStr++"/"++SubTopicInPayloadStr), + Reply1 = er_coap_client:request(post, SubURI, #coap_content{format = <<"application/link-format">>, payload = SubPayload}), + ?LOGT("Reply =~p", [Reply1]), + {ok,created, #coap_content{location_path = LocPath1}} = Reply1, + ?assertEqual([<<"/ps/topic1/subtopic">>] ,LocPath1), + [{FullTopic, MaxAge2, CT2, _ResPayload, _}] = emqx_coap_ps_topics:lookup_topic_info(FullTopic), + ?assertEqual(60, MaxAge2), + ?assertEqual(<<"42">>, CT2), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, SubRealURI), + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, RealURI). + +t_over_max_age(_Config) -> + TopicInPayload = <<"topic1">>, + Payload = <<";ct=42">>, + URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{max_age = 2, format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(2, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + timer:sleep(3000), + ?assertEqual(true, emqx_coap_ps_topics:is_topic_timeout(TopicInPayload)). + +t_refreash_max_age(_Config) -> + TopicInPayload = <<"topic1">>, + Payload = <<";ct=42">>, + Payload1 = <<";ct=50">>, + URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + RealURI = "coap://127.0.0.1/ps/topic1"++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + TopicInfo = [{TopicInPayload, MaxAge1, CT1, _ResPayload, TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?LOGT("TimeStamp=~p", [TimeStamp]), + ?assertEqual(5, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + timer:sleep(3000), + + %% post to create the same topic, the max age timer will be restarted with the new max age value + Reply1 = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/link-format">>, payload = Payload1}), + {ok,created, #coap_content{location_path = LocPath}} = Reply1, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{TopicInPayload, MaxAge2, CT2, _ResPayload, TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(TopicInPayload), + ?LOGT("TimeStamp1=~p", [TimeStamp1]), + ?assertEqual(5, MaxAge2), + ?assertEqual(<<"50">>, CT2), + + timer:sleep(3000), + ?assertEqual(false, emqx_coap_ps_topics:is_topic_timeout(TopicInPayload)), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, RealURI). + +t_case01_publish_post(_Config) -> + timer:sleep(100), + MainTopic = <<"maintopic">>, + TopicInPayload = <<"topic1">>, + Payload = <<";ct=42">>, + MainTopicStr = binary_to_list(MainTopic), + + %% post to create topic maintopic/topic1 + URI1 = "coap://127.0.0.1/ps/"++MainTopicStr++"?c=client1&u=tom&p=secret", + FullTopic = list_to_binary(MainTopicStr++"/"++binary_to_list(TopicInPayload)), + Reply1 = er_coap_client:request(post, URI1, #coap_content{format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply1]), + {ok,created, #coap_content{location_path = LocPath1}} = Reply1, + ?assertEqual([<<"/ps/maintopic/topic1">>] ,LocPath1), + [{FullTopic, MaxAge, CT2, <<>>, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(FullTopic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT2), + + %% post to publish message to topic maintopic/topic1 + FullTopicStr = http_uri:encode(binary_to_list(FullTopic)), + URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", + PubPayload = <<"PUBLISH">>, + + %% Sub topic first + emqx:subscribe(FullTopic), + + Reply2 = er_coap_client:request(post, URI2, #coap_content{format = <<"application/octet-stream">>, payload = PubPayload}), + ?LOGT("Reply =~p", [Reply2]), + {ok,changed, _} = Reply2, + TopicInfo = [{FullTopic, MaxAge, CT2, PubPayload, _TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(FullTopic), + ?LOGT("the topic info =~p", [TopicInfo]), + + assert_recv(FullTopic, PubPayload), + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). + +t_case02_publish_post(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% Sub topic first + emqx:subscribe(Topic), + + %% post to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT), + + assert_recv(Topic, Payload), + + %% post to publish a new message to the same topic "topic1" with different payload + NewPayload = <<"newpayload">>, + Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = NewPayload}), + ?LOGT("Reply =~p", [Reply1]), + {ok,changed, _} = Reply1, + [{Topic, MaxAge, CT, NewPayload, _TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + + assert_recv(Topic, NewPayload), + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case03_publish_post(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% Sub topic first + emqx:subscribe(Topic), + + %% post to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT), + + assert_recv(Topic, Payload), + + %% post to publish a new message to the same topic "topic1", but the ct is not same as created + NewPayload = <<"newpayload">>, + Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/exi">>, payload = NewPayload}), + ?LOGT("Reply =~p", [Reply1]), + ?assertEqual({error,bad_request}, Reply1), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case04_publish_post(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% post to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(5, MaxAge), + ?assertEqual(<<"42">>, CT), + + %% after max age timeout, the topic still exists but the status is timeout + timer:sleep(6000), + ?assertEqual(true, emqx_coap_ps_topics:is_topic_timeout(Topic)), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case01_publish_put(_Config) -> + MainTopic = <<"maintopic">>, + TopicInPayload = <<"topic1">>, + Payload = <<";ct=42">>, + MainTopicStr = binary_to_list(MainTopic), + + %% post to create topic maintopic/topic1 + URI1 = "coap://127.0.0.1/ps/"++MainTopicStr++"?c=client1&u=tom&p=secret", + FullTopic = list_to_binary(MainTopicStr++"/"++binary_to_list(TopicInPayload)), + Reply1 = er_coap_client:request(post, URI1, #coap_content{format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply1]), + {ok,created, #coap_content{location_path = LocPath1}} = Reply1, + ?assertEqual([<<"/ps/maintopic/topic1">>] ,LocPath1), + [{FullTopic, MaxAge, CT2, <<>>, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(FullTopic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT2), + + %% put to publish message to topic maintopic/topic1 + FullTopicStr = http_uri:encode(binary_to_list(FullTopic)), + URI2 = "coap://127.0.0.1/ps/"++FullTopicStr++"?c=client1&u=tom&p=secret", + PubPayload = <<"PUBLISH">>, + + %% Sub topic first + emqx:subscribe(FullTopic), + + Reply2 = er_coap_client:request(put, URI2, #coap_content{format = <<"application/octet-stream">>, payload = PubPayload}), + ?LOGT("Reply =~p", [Reply2]), + {ok,changed, _} = Reply2, + [{FullTopic, MaxAge, CT2, PubPayload, _TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(FullTopic), + + assert_recv(FullTopic, PubPayload), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI2). + +t_case02_publish_put(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% Sub topic first + emqx:subscribe(Topic), + + %% put to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT), + + assert_recv(Topic, Payload), + + %% put to publish a new message to the same topic "topic1" with different payload + NewPayload = <<"newpayload">>, + Reply1 = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = NewPayload}), + ?LOGT("Reply =~p", [Reply1]), + {ok,changed, _} = Reply1, + [{Topic, MaxAge, CT, NewPayload, _TimeStamp1}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + + assert_recv(Topic, NewPayload), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case03_publish_put(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% Sub topic first + emqx:subscribe(Topic), + + %% put to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(60, MaxAge), + ?assertEqual(<<"42">>, CT), + + assert_recv(Topic, Payload), + + %% put to publish a new message to the same topic "topic1", but the ct is not same as created + NewPayload = <<"newpayload">>, + Reply1 = er_coap_client:request(put, URI, #coap_content{format = <<"application/exi">>, payload = NewPayload}), + ?LOGT("Reply =~p", [Reply1]), + ?assertEqual({error,bad_request}, Reply1), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case04_publish_put(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"payload">>, + + %% put to publish a new topic "topic1", and the topic is created + URI = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(put, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/topic1">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(5, MaxAge), + ?assertEqual(<<"42">>, CT), + + %% after max age timeout, no publish message to the same topic, the topic info will be deleted + %%%%%%%%%%%%%%%%%%%%%%%%%% + % but there is one thing to do is we don't count in the publish message received from emqx(from other node).TBD!!!!!!!!!!!!! + %%%%%%%%%%%%%%%%%%%%%%%%%% + timer:sleep(6000), + ?assertEqual(true, emqx_coap_ps_topics:is_topic_timeout(Topic)), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case01_subscribe(_Config) -> + Topic = <<"topic1">>, + Payload1 = <<";ct=42">>, + timer:sleep(100), + + %% First post to create a topic "topic1" + Uri = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/link-format">>, payload = Payload1}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = [LocPath]}} = Reply, + ?assertEqual(<<"/ps/topic1">> ,LocPath), + TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + %% Subscribe the topic + Uri1 = "coap://127.0.0.1"++binary_to_list(LocPath)++"?c=client1&u=tom&p=secret", + {ok, Pid, N, Code, Content} = er_coap_observer:observe(Uri1), + ?LOGT("observer Pid=~p, N=~p, Code=~p, Content=~p", [Pid, N, Code, Content]), + + [SubPid] = emqx:subscribers(Topic), + ?assert(is_pid(SubPid)), + + %% Publish a message + Payload = <<"123">>, + emqx:publish(emqx_message:make(Topic, Payload)), + + Notif = receive_notification(), + ?LOGT("observer get Notif=~p", [Notif]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = PayloadRecv}} = Notif, + + ?_assertEqual(Payload, PayloadRecv), + + %% GET to read the publish message of the topic + Reply1 = er_coap_client:request(get, Uri1), + ?LOGT("Reply=~p", [Reply1]), + {ok,content, #coap_content{max_age = MaxAgeLeft,payload = <<"123">>}} = Reply1, + ?_assertEqual(true, MaxAgeLeft<60), + + er_coap_observer:stop(Pid), + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri1). + +t_case02_subscribe(_Config) -> + Topic = <<"a/b">>, + TopicStr = binary_to_list(Topic), + PercentEncodedTopic = http_uri:encode(TopicStr), + Payload = <<"payload">>, + + %% post to publish a new topic "a/b", and the topic is created + URI = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/a/b">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(5, MaxAge), + ?assertEqual(<<"42">>, CT), + + %% Wait for the max age of the timer expires + timer:sleep(6000), + ?assertEqual(true, emqx_coap_ps_topics:is_topic_timeout(Topic)), + + %% Subscribe to the timeout topic "a/b", still successfully,got {ok, nocontent} Method + Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + Reply1 = {ok, Pid, _N, nocontent, _} = er_coap_observer:observe(Uri), + ?LOGT("Subscribe Reply=~p", [Reply1]), + + [SubPid] = emqx:subscribers(Topic), + ?assert(is_pid(SubPid)), + + %% put to publish to topic "a/b" + Reply2 = er_coap_client:request(put, URI, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + {ok,changed, #coap_content{}} = Reply2, + [{Topic, MaxAge1, CT, Payload, TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT), + ?assertEqual(false, TimeStamp =:= timeout), + + %% Publish a message + emqx:publish(emqx_message:make(Topic, Payload)), + + Notif = receive_notification(), + ?LOGT("observer get Notif=~p", [Notif]), + {coap_notify, _, _, {ok,content}, #coap_content{payload = Payload}} = Notif, + + er_coap_observer:stop(Pid), + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case03_subscribe(_Config) -> + %% Subscribe to the unexisted topic "a/b", got not_found + Topic = <<"a/b">>, + TopicStr = binary_to_list(Topic), + PercentEncodedTopic = http_uri:encode(TopicStr), + Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + {error, not_found} = er_coap_observer:observe(Uri), + + [] = emqx:subscribers(Topic). + +t_case04_subscribe(_Config) -> + %% Subscribe to the wildcad topic "+/b", got bad_request + Topic = <<"+/b">>, + TopicStr = binary_to_list(Topic), + PercentEncodedTopic = http_uri:encode(TopicStr), + Uri = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + {error, bad_request} = er_coap_observer:observe(Uri), + + [] = emqx:subscribers(Topic). + +t_case01_read(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"PubPayload">>, + timer:sleep(100), + + %% First post to create a topic "topic1" + Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = [LocPath]}} = Reply, + ?assertEqual(<<"/ps/topic1">> ,LocPath), + TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + %% GET to read the publish message of the topic + Reply1 = er_coap_client:request(get, Uri), + ?LOGT("Reply=~p", [Reply1]), + {ok,content, #coap_content{max_age = MaxAgeLeft,payload = Payload}} = Reply1, + ?_assertEqual(true, MaxAgeLeft<60), + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). + +t_case02_read(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"PubPayload">>, + timer:sleep(100), + + %% First post to publish a topic "topic1" + Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = [LocPath]}} = Reply, + ?assertEqual(<<"/ps/topic1">> ,LocPath), + TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + %% GET to read the publish message of unmatched format, got bad_request + Reply1 = er_coap_client:request(get, Uri, #coap_content{format = <<"application/json">>}), + ?LOGT("Reply=~p", [Reply1]), + {error, bad_request} = Reply1, + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). + +t_case03_read(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + timer:sleep(100), + + %% GET to read the nexisted topic "topic1", got not_found + Reply = er_coap_client:request(get, Uri), + ?LOGT("Reply=~p", [Reply]), + {error, not_found} = Reply. + +t_case04_read(_Config) -> + Topic = <<"topic1">>, + TopicStr = binary_to_list(Topic), + Payload = <<"PubPayload">>, + timer:sleep(100), + + %% First post to publish a topic "topic1" + Uri = "coap://127.0.0.1/ps/"++TopicStr++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, Uri, #coap_content{format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = [LocPath]}} = Reply, + ?assertEqual(<<"/ps/topic1">> ,LocPath), + TopicInfo = [{Topic, MaxAge1, CT1, _ResPayload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?LOGT("lookup topic info=~p", [TopicInfo]), + ?assertEqual(60, MaxAge1), + ?assertEqual(<<"42">>, CT1), + + %% GET to read the publish message of wildcard topic, got bad_request + WildTopic = binary_to_list(<<"+/topic1">>), + Uri1 = "coap://127.0.0.1/ps/"++WildTopic++"?c=client1&u=tom&p=secret", + Reply1 = er_coap_client:request(get, Uri1, #coap_content{format = <<"application/json">>}), + ?LOGT("Reply=~p", [Reply1]), + {error, bad_request} = Reply1, + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, Uri). + +t_case05_read(_Config) -> + Topic = <<"a/b">>, + TopicStr = binary_to_list(Topic), + PercentEncodedTopic = http_uri:encode(TopicStr), + Payload = <<"payload">>, + + %% post to publish a new topic "a/b", and the topic is created + URI = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + Reply = er_coap_client:request(post, URI, #coap_content{max_age = 5, format = <<"application/octet-stream">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/a/b">>] ,LocPath), + [{Topic, MaxAge, CT, Payload, _TimeStamp}] = emqx_coap_ps_topics:lookup_topic_info(Topic), + ?assertEqual(5, MaxAge), + ?assertEqual(<<"42">>, CT), + + %% Wait for the max age of the timer expires + timer:sleep(6000), + ?assertEqual(true, emqx_coap_ps_topics:is_topic_timeout(Topic)), + + %% GET to read the expired publish message, supposed to get {ok, nocontent}, but now got {ok, content} + Reply1 = er_coap_client:request(get, URI), + ?LOGT("Reply=~p", [Reply1]), + {ok, content, #coap_content{payload = <<>>}}= Reply1, + + {ok, deleted, #coap_content{}} = er_coap_client:request(delete, URI). + +t_case01_delete(_Config) -> + TopicInPayload = <<"a/b">>, + TopicStr = binary_to_list(TopicInPayload), + PercentEncodedTopic = http_uri:encode(TopicStr), + Payload = list_to_binary("<"++PercentEncodedTopic++">;ct=42"), + URI = "coap://127.0.0.1/ps/"++"?c=client1&u=tom&p=secret", + + %% Client post to CREATE topic "a/b" + Reply = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload}), + ?LOGT("Reply =~p", [Reply]), + {ok,created, #coap_content{location_path = LocPath}} = Reply, + ?assertEqual([<<"/ps/a/b">>] ,LocPath), + + %% Client post to CREATE topic "a/b/c" + TopicInPayload1 = <<"a/b/c">>, + PercentEncodedTopic1 = http_uri:encode(binary_to_list(TopicInPayload1)), + Payload1 = list_to_binary("<"++PercentEncodedTopic1++">;ct=42"), + Reply1 = er_coap_client:request(post, URI, #coap_content{format = <<"application/link-format">>, payload = Payload1}), + ?LOGT("Reply =~p", [Reply1]), + {ok,created, #coap_content{location_path = LocPath1}} = Reply1, + ?assertEqual([<<"/ps/a/b/c">>] ,LocPath1), + + timer:sleep(50), + + %% DELETE the topic "a/b" + UriD = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + ReplyD = er_coap_client:request(delete, UriD), + ?LOGT("Reply=~p", [Reply1]), + {ok, deleted, #coap_content{}}= ReplyD, + + ?assertEqual(false, emqx_coap_ps_topics:is_topic_existed(TopicInPayload)), + ?assertEqual(false, emqx_coap_ps_topics:is_topic_existed(TopicInPayload1)). + +t_case02_delete(_Config) -> + TopicInPayload = <<"a/b">>, + TopicStr = binary_to_list(TopicInPayload), + PercentEncodedTopic = http_uri:encode(TopicStr), + + %% DELETE the unexisted topic "a/b" + Uri1 = "coap://127.0.0.1/ps/"++PercentEncodedTopic++"?c=client1&u=tom&p=secret", + Reply1 = er_coap_client:request(delete, Uri1), + ?LOGT("Reply=~p", [Reply1]), + {error, not_found} = Reply1. + +t_case13_emit_stats_test(_Config) -> + ok. + +%%-------------------------------------------------------------------- +%% Internal functions + +receive_notification() -> + receive + {coap_notify, Pid, N2, Code2, Content2} -> + {coap_notify, Pid, N2, Code2, Content2} + after 2000 -> + receive_notification_timeout + end. + +assert_recv(Topic, Payload) -> + receive + {deliver, _, Msg} -> + ?assertEqual(Topic, Msg#message.topic), + ?assertEqual(Payload, Msg#message.payload) + after + 500 -> + ?assert(false) + end. + diff --git a/apps/emqx_enterprise_dashboard/.github/workflows/run_test_cases.yaml b/apps/emqx_enterprise_dashboard/.github/workflows/run_test_cases.yaml new file mode 100644 index 000000000..3b4fa29ec --- /dev/null +++ b/apps/emqx_enterprise_dashboard/.github/workflows/run_test_cases.yaml @@ -0,0 +1,28 @@ +name: Run test cases + +on: [push, pull_request] + +jobs: + run_test_cases: + runs-on: ubuntu-latest + + container: + image: erlang:22.1 + + steps: + - uses: actions/checkout@v1 + - name: run test cases + run: | + make eunit + make ct + make cover + - uses: actions/upload-artifact@v1 + if: always() + with: + name: logs + path: _build/test/logs + - uses: actions/upload-artifact@v1 + with: + name: cover + path: _build/test/cover + diff --git a/apps/emqx_enterprise_dashboard/.gitignore b/apps/emqx_enterprise_dashboard/.gitignore new file mode 100644 index 000000000..7e3592c39 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/.gitignore @@ -0,0 +1,26 @@ +.eunit +deps +*.o +*.beam +*.plt +erl_crash.dump +ebin +rel/example_project +.concrete/DEV_MODE +.rebar +.erlang.mk/ +ct.coverdata +logs/ +test/ct.cover.spec +data/ +.DS_Store +emqx_dashboard.d +cover/ +eunit.coverdata +.DS_Store +erlang.mk +rebar.lock +_build/ +*.conf.rendered +.rebar3/* + diff --git a/apps/emqx_enterprise_dashboard/.travis.yml b/apps/emqx_enterprise_dashboard/.travis.yml new file mode 100644 index 000000000..42422b9ce --- /dev/null +++ b/apps/emqx_enterprise_dashboard/.travis.yml @@ -0,0 +1,15 @@ +language: erlang + +otp_release: + - 21.3 + +before_install: + - git clone https://github.com/erlang/rebar3.git; cd rebar3; ./bootstrap; sudo mv rebar3 /usr/local/bin/; cd .. + +script: + - make xref + - make eunit + - make ct + +sudo: false + diff --git a/apps/emqx_enterprise_dashboard/LICENSE b/apps/emqx_enterprise_dashboard/LICENSE new file mode 100644 index 000000000..3fc84396f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/LICENSE @@ -0,0 +1 @@ +Copyright (c) 2019 EMQ Technologies Co., Ltd. All Rights Reserved. \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/Makefile b/apps/emqx_enterprise_dashboard/Makefile new file mode 100644 index 000000000..e95664406 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/Makefile @@ -0,0 +1,29 @@ +## shallow clone for speed + +REBAR_GIT_CLONE_OPTIONS += --depth 1 +export REBAR_GIT_CLONE_OPTIONS + +REBAR = rebar3 +all: compile + +compile: + $(REBAR) compile + +clean: distclean + +ct: compile + $(REBAR) as test ct -v + +eunit: compile + $(REBAR) as test eunit + +xref: + $(REBAR) xref + +cover: + $(REBAR) cover + +distclean: + @rm -rf _build + @rm -f data/app.*.config data/vm.*.args rebar.lock + diff --git a/apps/emqx_enterprise_dashboard/README.md b/apps/emqx_enterprise_dashboard/README.md new file mode 100644 index 000000000..a0e720d5d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/README.md @@ -0,0 +1,89 @@ + +emqx-dashboard +============== + +Dashboard for the EMQ X Broker. + +REST API +-------- + +The prefix of REST API is '/api/v2/'. + +Method | Path | Description +-------|---------------------------------------|------------------------------------ +GET | /nodes/ | A list of nodes in the cluster +GET | /nodes/:node | Lookup a node in the cluster +GET | /brokers/ | A list of brokers in the cluster +GET | /brokers/:node | Get broker info of a node +GET | /metrics/ | A list of metrics of all nodes in the cluster +GET | /nodes/:node/metrics/ | A list of metrics of a node +GET | /stats/ | A list of stats of all nodes in the cluster +GET | /nodes/:node/stats/ | A list of stats of a node +GET | /nodes/:node/clients/ | A list of clients on a node +GET | /listeners/ | A list of listeners in the cluster +GET | /nodes/:node/listeners | A list of listeners on the node +GET | /nodes/:node/sessions/ | A list of sessions on a node +GET | /subscriptions/:clientid | A list of subscriptions of a client +GET | /nodes/:node/subscriptions/:clientid | A list of subscriptions of a client on the node +GET | /nodes/:node/subscriptions/ | A list of subscriptions on a node +PUT | /clients/:clientid/clean_acl_cache | Clean ACL cache of a client +GET | /configs/ | Get all configs +GET | /nodes/:node/configs/ | Get all configs of a node +GET | /nodes/:node/plugin_configs/:plugin | Get configurations of a plugin on the node +DELETE | /clients/:clientid | Kick out a client +GET | /alarms/:node | List alarms of a node +GET | /alarms/ | List all alarms +GET | /plugins/ | List all plugins in the cluster +GET | /nodes/:node/plugins/ | List all plugins on a node +GET | /routes/ | List routes +POST | /nodes/:node/plugins/:plugin/load | Load a plugin +GET | /clients/:clientid | Lookup a client in the cluster +GET | nodes/:node/clients/:clientid | Lookup a client on node +GET | nodes/:node/sessions/:clientid | Lookup a session in the cluster +GET | nodes/:node/sessions/:clientid | Lookup a session on the node +POST | /mqtt/publish | Publish a MQTT message +POST | /mqtt/subscribe | Subscribe a topic +POST | /nodes/:node/plugins/:plugin/unload | Unload a plugin +POST | /mqtt/unsubscribe | Unsubscribe a topic +PUT | /configs/:app | Update config of an application in the cluster +PUT | /nodes/:node/configs/:app | Update config of an application on a node +PUT | /nodes/:node/plugin_configs/:plugin | Update configurations of a plugin on the node + +Build +----- + +make && make ct + +Configurtion +------------ + +``` +dashboard.listener = 18083 + +dashboard.listener.acceptors = 2 + +dashboard.listener.max_clients = 512 +``` + +Load Plugin +----------- + +``` +./bin/emqx_ctl plugins load emqx_dashboard +``` + +Login +----- + +URL: http://host:18083 + +Username: admin + +Password: public + +License +------- + +Apache License Version 2.0 + + diff --git a/apps/emqx_enterprise_dashboard/etc/emqx_dashboard.conf b/apps/emqx_enterprise_dashboard/etc/emqx_dashboard.conf new file mode 100644 index 000000000..e580bd46f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/etc/emqx_dashboard.conf @@ -0,0 +1,117 @@ +##-------------------------------------------------------------------- +## EMQ X Dashboard +##-------------------------------------------------------------------- + +## Default user's login name. +## +## Value: String +dashboard.default_user.login = admin + +## Default user's password. +## +## Value: String +dashboard.default_user.password = public + +## Default metrics.expire interval. +## +## d - day +## h - hour +## m - minute +## s - second +dashboard.metrics.expire_interval = 7d + +##-------------------------------------------------------------------- +## HTTP Listener + +## The port that the Dashboard HTTP listener will bind. +## +## Value: Port +## +## Examples: 18083 +dashboard.listener.http = 18083 + +## The acceptor pool for external Dashboard HTTP listener. +## +## Value: Number +dashboard.listener.http.acceptors = 4 + +## Maximum number of concurrent Dashboard HTTP connections. +## +## Value: Number +dashboard.listener.http.max_clients = 512 +##-------------------------------------------------------------------- +## HTTPS Listener + +## The port that the Dashboard HTTPS listener will bind. +## +## Value: Port +## +## Examples: 18084 +## dashboard.listener.https = 18084 + +## The acceptor pool for external Dashboard HTTPS listener. +## +## Value: Number +## dashboard.listener.https.acceptors = 2 + +## Maximum number of concurrent Dashboard HTTPS connections. +## +## Value: Number +## dashboard.listener.https.max_clients = 512 + +## Path to the file containing the user's private PEM-encoded key. +## +## Value: File +## dashboard.listener.https.keyfile = etc/certs/key.pem + +## Path to a file containing the user certificate. +## +## Value: File +## dashboard.listener.https.certfile = etc/certs/cert.pem + +## Path to the file containing PEM-encoded CA certificates. +## +## Value: File +## dashboard.listener.https.cacertfile = etc/certs/cacert.pem + +## See: 'listener.ssl..dhfile' in emq.conf +## +## Value: File +## dashboard.listener.https.dhfile = {{ platform_etc_dir }}/certs/dh-params.pem + +## See: 'listener.ssl..vefify' in emq.conf +## +## Value: vefify_peer | verify_none +## dashboard.listener.https.verify = verify_peer + +## See: 'listener.ssl..fail_if_no_peer_cert' in emq.conf +## +## Value: false | true +## dashboard.listener.https.fail_if_no_peer_cert = true + +## TLS versions only to protect from POODLE attack. +## +## Value: String, seperated by ',' +## dashboard.listener.https.tls_versions = tlsv1.2,tlsv1.1,tlsv1 + +## See: 'listener.ssl..ciphers' in emq.conf +## +## Value: Ciphers +## dashboard.listener.https.ciphers = ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-DES-CBC3-SHA,ECDH-ECDSA-AES256-GCM-SHA384,ECDH-RSA-AES256-GCM-SHA384,ECDH-ECDSA-AES256-SHA384,ECDH-RSA-AES256-SHA384,DHE-DSS-AES256-GCM-SHA384,DHE-DSS-AES256-SHA256,AES256-GCM-SHA384,AES256-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDH-ECDSA-AES128-GCM-SHA256,ECDH-RSA-AES128-GCM-SHA256,ECDH-ECDSA-AES128-SHA256,ECDH-RSA-AES128-SHA256,DHE-DSS-AES128-GCM-SHA256,DHE-DSS-AES128-SHA256,AES128-GCM-SHA256,AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,DHE-DSS-AES256-SHA,ECDH-ECDSA-AES256-SHA,ECDH-RSA-AES256-SHA,AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA,ECDH-ECDSA-AES128-SHA,ECDH-RSA-AES128-SHA,AES128-SHA + +## See: 'listener.ssl..secure_renegotiate' in emq.conf +## +## Value: on | off +## dashboard.listener.https.secure_renegotiate = off + +## See: 'listener.ssl..reuse_sessions' in emq.conf +## +## Value: on | off +## dashboard.listener.https.reuse_sessions = on + +## See: 'listener.ssl..honor_cipher_order' in emq.conf +## +## Value: on | off +## dashboard.listener.https.honor_cipher_order = on + + diff --git a/apps/emqx_enterprise_dashboard/include/emqx_dashboard.hrl b/apps/emqx_enterprise_dashboard/include/emqx_dashboard.hrl new file mode 100644 index 000000000..769d9f503 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/include/emqx_dashboard.hrl @@ -0,0 +1,23 @@ +%%-------------------------------------------------------------------- +%% Copyright (c) 2015-2017 EMQ Enterprise, Inc. (http://emqtt.io). +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%%-------------------------------------------------------------------- + +-record(mqtt_admin, {username, password, tags}). + +-type(mqtt_admin() :: #mqtt_admin{}). + +-define(EMPTY_KEY(Key), ((Key == undefined) orelse (Key == <<>>))). + +-record(mqtt_collect, {timestamp, collect}). \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/emqx_dashboard.schema b/apps/emqx_enterprise_dashboard/priv/emqx_dashboard.schema new file mode 100644 index 000000000..4207defc4 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/emqx_dashboard.schema @@ -0,0 +1,134 @@ +%%-*- mode: erlang -*- +%% emqx_dashboard config mapping + +{mapping, "dashboard.default_user.login", "emqx_dashboard.default_user_username", [ + {datatype, string} +]}. + +{mapping, "dashboard.default_user.password", "emqx_dashboard.default_user_passwd", [ + {datatype, string} +]}. + +{mapping, "dashboard.metrics.expire_interval", "emqx_dashboard.expire_interval", [ + {datatype, {duration, ms}} +]}. + +{mapping, "dashboard.listener.http", "emqx_dashboard.listeners", [ + {datatype, integer} +]}. + +{mapping, "dashboard.listener.http.acceptors", "emqx_dashboard.listeners", [ + {default, 4}, + {datatype, integer} +]}. + +{mapping, "dashboard.listener.http.max_clients", "emqx_dashboard.listeners", [ + {default, 512}, + {datatype, integer} +]}. + +{mapping, "dashboard.listener.http.access.$id", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https", "emqx_dashboard.listeners", [ + {datatype, integer} +]}. + +{mapping, "dashboard.listener.https.acceptors", "emqx_dashboard.listeners", [ + {default, 8}, + {datatype, integer} +]}. + +{mapping, "dashboard.listener.https.max_clients", "emqx_dashboard.listeners", [ + {default, 64}, + {datatype, integer} +]}. + +{mapping, "dashboard.listener.https.tls_versions", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.dhfile", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.keyfile", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.certfile", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.cacertfile", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.verify", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.fail_if_no_peer_cert", "emqx_dashboard.listeners", [ + {datatype, {enum, [true, false]}} +]}. + +{mapping, "dashboard.listener.https.ciphers", "emqx_dashboard.listeners", [ + {datatype, string} +]}. + +{mapping, "dashboard.listener.https.secure_renegotiate", "emqx_dashboard.listeners", [ + {datatype, flag} +]}. + +{mapping, "dashboard.listener.https.reuse_sessions", "emqx_dashboard.listeners", [ + {default, on}, + {datatype, flag} +]}. + +{mapping, "dashboard.listener.https.honor_cipher_order", "emqx_dashboard.listeners", [ + {datatype, flag} +]}. + +{translation, "emqx_dashboard.listeners", fun(Conf) -> + Filter = fun(Opts) -> [{K, V} || {K, V} <- Opts, V =/= undefined] end, + LisOpts = fun(Prefix) -> + Filter([{num_acceptors, cuttlefish:conf_get(Prefix ++ ".acceptors", Conf)}, + {max_connections, cuttlefish:conf_get(Prefix ++ ".max_clients", Conf)}]) + end, + + SplitFun = fun(undefined) -> undefined; (S) -> string:tokens(S, ",") end, + + SslOpts = fun(Prefix) -> + Versions = case SplitFun(cuttlefish:conf_get(Prefix ++ ".tls_versions", Conf, undefined)) of + undefined -> undefined; + L -> [list_to_atom(V) || V <- L] + end, + Filter([{versions, Versions}, + {ciphers, SplitFun(cuttlefish:conf_get(Prefix ++ ".ciphers", Conf, undefined))}, + {dhfile, cuttlefish:conf_get(Prefix ++ ".dhfile", Conf, undefined)}, + {keyfile, cuttlefish:conf_get(Prefix ++ ".keyfile", Conf, undefined)}, + {certfile, cuttlefish:conf_get(Prefix ++ ".certfile", Conf, undefined)}, + {cacertfile, cuttlefish:conf_get(Prefix ++ ".cacertfile", Conf, undefined)}, + {verify, cuttlefish:conf_get(Prefix ++ ".verify", Conf, undefined)}, + {fail_if_no_peer_cert, cuttlefish:conf_get(Prefix ++ ".fail_if_no_peer_cert", Conf, undefined)}, + {secure_renegotiate, cuttlefish:conf_get(Prefix ++ ".secure_renegotiate", Conf, undefined)}, + {reuse_sessions, cuttlefish:conf_get(Prefix ++ ".reuse_sessions", Conf, undefined)}, + {honor_cipher_order, cuttlefish:conf_get(Prefix ++ ".honor_cipher_order", Conf, undefined)}]) + end, + lists:append( + lists:map( + fun(Proto) -> + Prefix = "dashboard.listener." ++ atom_to_list(Proto), + case cuttlefish:conf_get(Prefix, Conf, undefined) of + undefined -> []; + Port -> + [{Proto, Port, case Proto of + http -> LisOpts(Prefix); + https -> LisOpts(Prefix) ++ SslOpts(Prefix) + end}] + end + end, [http, https])) +end}. + + diff --git a/apps/emqx_enterprise_dashboard/priv/www/index.html b/apps/emqx_enterprise_dashboard/priv/www/index.html new file mode 100644 index 000000000..169af29b7 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/index.html @@ -0,0 +1 @@ +EMQ X Dashboard

    \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/app.0607679a.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/app.0607679a.css new file mode 100644 index 000000000..2c4b82683 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/app.0607679a.css @@ -0,0 +1 @@ +.left-bar{min-height:calc(100vh - 80px);background-color:#2f333e;-webkit-transition:all .3s;transition:all .3s}.left-bar .menu-wrapper{margin-top:54px}.left-bar .ant-menu{border-right-color:transparent}.left-bar .ant-menu.ant-menu-inline{border-right-color:#fff;border-right:0}.left-bar .ant-menu-dark,.left-bar .ant-menu-sub{background-color:#2f333e}.left-bar .ant-menu-inline.ant-menu-sub{background:rgba(0,0,0,.46)}.left-bar .ant-menu-item .anticon,.left-bar .ant-menu-submenu-title .anticon{margin-right:12px;font-size:18px}.left-bar .logo{text-align:center;width:200px;height:60px;line-height:60px;overflow:hidden;position:fixed;top:0;left:0;z-index:100;-webkit-transition:all .3s;transition:all .3s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 20px;background:#2f333e}.left-bar .logo .logo-img{width:72px;height:auto;position:relative;left:-3px}.left-bar .logo .line{margin-top:12px;width:120px}.left-bar .el-scrollbar{height:100vh}.ant-menu-dark .ant-menu-sub{background-color:rgba(0,0,0,.81)}.breadcrumb{width:100%;margin:0 0 3px 5px}.nav-header[data-v-72830772]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;height:50px;padding:0 20px 0 8px;background-color:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08);position:fixed;top:0;right:0;left:201px;z-index:100;-webkit-transition:all .3s;transition:all .3s}.nav-header[data-v-72830772],.pull-right[data-v-72830772]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.pull-right[data-v-72830772]{color:rgba(0,0,0,.65);font-size:14px}.func-item[data-v-72830772]{height:50px;line-height:53px;padding:0 12px;-webkit-transition:all .3s;transition:all .3s;cursor:pointer}.func-item[data-v-72830772]:hover{background-color:rgba(0,0,0,.024)}.func-item .iconfont[data-v-72830772]{font-size:18px;padding:4px}.el-badge[data-v-72830772]{line-height:20px}.el-dropdown-menu[data-v-72830772]{width:130px;text-align:center}.nav-tabs{position:fixed;width:auto;padding:0 24px;top:50px;right:0;left:200px;height:30px;line-height:28px;background:#fcfcfc;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.1);box-shadow:0 1px 4px rgba(0,21,41,.1);z-index:100}.nav-tabs,.nav-tabs .el-button{-webkit-transition:all .3s;transition:all .3s}.nav-tabs .el-button{min-width:50px}.nav-tabs .el-button.active,.nav-tabs .el-button.active:focus,.nav-tabs .el-button.active:hover{border-color:#34c388;color:#fff;background:#34c388}.nav-tabs .el-button.active .btn-close,.nav-tabs .el-button.active:focus .btn-close,.nav-tabs .el-button.active:hover .btn-close{color:#fff}.nav-tabs .el-button .btn-close{color:#606266;-webkit-transition:all .3s;transition:all .3s;border-radius:50%;display:inline-block;width:12px;height:12px;text-align:center}.nav-tabs .el-button .btn-close i{-webkit-transform:scale(.6);transform:scale(.6);position:relative}.nav-tabs .el-button .btn-close:hover{background:#afafaf;color:#fff}.nav-tabs .scroll-container{white-space:nowrap;position:relative;overflow:hidden;width:100%}.nav-tabs .scroll-container .el-scrollbar__bar.is-horizontal{display:none}.nav-tabs .scroll-container .el-scrollbar:active>.el-scrollbar__bar,.nav-tabs .scroll-container .el-scrollbar:focus>.el-scrollbar__bar,.nav-tabs .scroll-container .el-scrollbar:hover>.el-scrollbar__bar{opacity:0}.fade-transform-enter-active[data-v-24e2d574],.fade-transform-leave-active[data-v-24e2d574]{-webkit-transition:all .3s;transition:all .3s}.fade-transform-enter[data-v-24e2d574]{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.fade-transform-leave-to[data-v-24e2d574]{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.el-aside[data-v-24e2d574]{background-color:#2f333e;-webkit-transition:all .3s;transition:all .3s;position:fixed;top:0;left:0;bottom:0;z-index:100}.el-main[data-v-24e2d574]{-webkit-transition:margin-left .3s;transition:margin-left .3s}.el-select-dropdown .custom-option .value{float:right;font-size:12px;color:#888;margin-left:30px}.page-header{width:auto;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;margin:24px 24px 0 24px}.page-header .page-header-top-start{position:absolute;right:24px;top:16px}.page-header .page-header-top-start.btn{top:12px}.page-header .page-header-content{width:100%;height:100%;min-height:100%;-webkit-transition:.3s;transition:.3s;padding:16px 24px}.page-header .page-header-content p{margin-bottom:0}.page-header .page-header-title-view .title{display:inline-block;padding-right:12px;color:rgba(0,0,0,.85);font-weight:700;font-size:16px;line-height:1.4}.page-header .page-header-title-view .title span{margin-right:8px}.page-header .page-header-title-view+.page-header-content-view{margin-top:16px}.page-header .link-item{margin-right:12px}.page-header .link-item .icon{width:24px;height:24px;line-height:16px;border-radius:50%;border:1px solid #34c388;padding:4px;text-align:center;margin-right:8px}.page-header .description{max-width:500px}.trans-up{-webkit-transition:all .15s cubic-bezier(.645,.045,.355,1);transition:all .15s cubic-bezier(.645,.045,.355,1)}.trans-up:hover{-webkit-box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);-webkit-transform:translateY(-1px);transform:translateY(-1px)}@font-face{font-family:element-icons;src:url(../../static/fonts/element-icons.535877f5.woff) format("woff"),url(../../static/fonts/element-icons.732389de.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\E6A0"}.el-icon-ice-cream-square:before{content:"\E6A3"}.el-icon-lollipop:before{content:"\E6A4"}.el-icon-potato-strips:before{content:"\E6A5"}.el-icon-milk-tea:before{content:"\E6A6"}.el-icon-ice-drink:before{content:"\E6A7"}.el-icon-ice-tea:before{content:"\E6A9"}.el-icon-coffee:before{content:"\E6AA"}.el-icon-orange:before{content:"\E6AB"}.el-icon-pear:before{content:"\E6AC"}.el-icon-apple:before{content:"\E6AD"}.el-icon-cherry:before{content:"\E6AE"}.el-icon-watermelon:before{content:"\E6AF"}.el-icon-grape:before{content:"\E6B0"}.el-icon-refrigerator:before{content:"\E6B1"}.el-icon-goblet-square-full:before{content:"\E6B2"}.el-icon-goblet-square:before{content:"\E6B3"}.el-icon-goblet-full:before{content:"\E6B4"}.el-icon-goblet:before{content:"\E6B5"}.el-icon-cold-drink:before{content:"\E6B6"}.el-icon-coffee-cup:before{content:"\E6B8"}.el-icon-water-cup:before{content:"\E6B9"}.el-icon-hot-water:before{content:"\E6BA"}.el-icon-ice-cream:before{content:"\E6BB"}.el-icon-dessert:before{content:"\E6BC"}.el-icon-sugar:before{content:"\E6BD"}.el-icon-tableware:before{content:"\E6BE"}.el-icon-burger:before{content:"\E6BF"}.el-icon-knife-fork:before{content:"\E6C1"}.el-icon-fork-spoon:before{content:"\E6C2"}.el-icon-chicken:before{content:"\E6C3"}.el-icon-food:before{content:"\E6C4"}.el-icon-dish-1:before{content:"\E6C5"}.el-icon-dish:before{content:"\E6C6"}.el-icon-moon-night:before{content:"\E6EE"}.el-icon-moon:before{content:"\E6F0"}.el-icon-cloudy-and-sunny:before{content:"\E6F1"}.el-icon-partly-cloudy:before{content:"\E6F2"}.el-icon-cloudy:before{content:"\E6F3"}.el-icon-sunny:before{content:"\E6F6"}.el-icon-sunset:before{content:"\E6F7"}.el-icon-sunrise-1:before{content:"\E6F8"}.el-icon-sunrise:before{content:"\E6F9"}.el-icon-heavy-rain:before{content:"\E6FA"}.el-icon-lightning:before{content:"\E6FB"}.el-icon-light-rain:before{content:"\E6FC"}.el-icon-wind-power:before{content:"\E6FD"}.el-icon-baseball:before{content:"\E712"}.el-icon-soccer:before{content:"\E713"}.el-icon-football:before{content:"\E715"}.el-icon-basketball:before{content:"\E716"}.el-icon-ship:before{content:"\E73F"}.el-icon-truck:before{content:"\E740"}.el-icon-bicycle:before{content:"\E741"}.el-icon-mobile-phone:before{content:"\E6D3"}.el-icon-service:before{content:"\E6D4"}.el-icon-key:before{content:"\E6E2"}.el-icon-unlock:before{content:"\E6E4"}.el-icon-lock:before{content:"\E6E5"}.el-icon-watch:before{content:"\E6FE"}.el-icon-watch-1:before{content:"\E6FF"}.el-icon-timer:before{content:"\E702"}.el-icon-alarm-clock:before{content:"\E703"}.el-icon-map-location:before{content:"\E704"}.el-icon-delete-location:before{content:"\E705"}.el-icon-add-location:before{content:"\E706"}.el-icon-location-information:before{content:"\E707"}.el-icon-location-outline:before{content:"\E708"}.el-icon-location:before{content:"\E79E"}.el-icon-place:before{content:"\E709"}.el-icon-discover:before{content:"\E70A"}.el-icon-first-aid-kit:before{content:"\E70B"}.el-icon-trophy-1:before{content:"\E70C"}.el-icon-trophy:before{content:"\E70D"}.el-icon-medal:before{content:"\E70E"}.el-icon-medal-1:before{content:"\E70F"}.el-icon-stopwatch:before{content:"\E710"}.el-icon-mic:before{content:"\E711"}.el-icon-copy-document:before{content:"\E718"}.el-icon-full-screen:before{content:"\E719"}.el-icon-switch-button:before{content:"\E71B"}.el-icon-aim:before{content:"\E71C"}.el-icon-crop:before{content:"\E71D"}.el-icon-odometer:before{content:"\E71E"}.el-icon-time:before{content:"\E71F"}.el-icon-bangzhu:before{content:"\E724"}.el-icon-close-notification:before{content:"\E726"}.el-icon-microphone:before{content:"\E727"}.el-icon-turn-off-microphone:before{content:"\E728"}.el-icon-position:before{content:"\E729"}.el-icon-postcard:before{content:"\E72A"}.el-icon-message:before{content:"\E72B"}.el-icon-chat-line-square:before{content:"\E72D"}.el-icon-chat-dot-square:before{content:"\E72E"}.el-icon-chat-dot-round:before{content:"\E72F"}.el-icon-chat-square:before{content:"\E730"}.el-icon-chat-line-round:before{content:"\E731"}.el-icon-chat-round:before{content:"\E732"}.el-icon-set-up:before{content:"\E733"}.el-icon-turn-off:before{content:"\E734"}.el-icon-open:before{content:"\E735"}.el-icon-connection:before{content:"\E736"}.el-icon-link:before{content:"\E737"}.el-icon-cpu:before{content:"\E738"}.el-icon-thumb:before{content:"\E739"}.el-icon-female:before{content:"\E73A"}.el-icon-male:before{content:"\E73B"}.el-icon-guide:before{content:"\E73C"}.el-icon-news:before{content:"\E73E"}.el-icon-price-tag:before{content:"\E744"}.el-icon-discount:before{content:"\E745"}.el-icon-wallet:before{content:"\E747"}.el-icon-coin:before{content:"\E748"}.el-icon-money:before{content:"\E749"}.el-icon-bank-card:before{content:"\E74A"}.el-icon-box:before{content:"\E74B"}.el-icon-present:before{content:"\E74C"}.el-icon-sell:before{content:"\E6D5"}.el-icon-sold-out:before{content:"\E6D6"}.el-icon-shopping-bag-2:before{content:"\E74D"}.el-icon-shopping-bag-1:before{content:"\E74E"}.el-icon-shopping-cart-2:before{content:"\E74F"}.el-icon-shopping-cart-1:before{content:"\E750"}.el-icon-shopping-cart-full:before{content:"\E751"}.el-icon-smoking:before{content:"\E752"}.el-icon-no-smoking:before{content:"\E753"}.el-icon-house:before{content:"\E754"}.el-icon-table-lamp:before{content:"\E755"}.el-icon-school:before{content:"\E756"}.el-icon-office-building:before{content:"\E757"}.el-icon-toilet-paper:before{content:"\E758"}.el-icon-notebook-2:before{content:"\E759"}.el-icon-notebook-1:before{content:"\E75A"}.el-icon-files:before{content:"\E75B"}.el-icon-collection:before{content:"\E75C"}.el-icon-receiving:before{content:"\E75D"}.el-icon-suitcase-1:before{content:"\E760"}.el-icon-suitcase:before{content:"\E761"}.el-icon-film:before{content:"\E763"}.el-icon-collection-tag:before{content:"\E765"}.el-icon-data-analysis:before{content:"\E766"}.el-icon-pie-chart:before{content:"\E767"}.el-icon-data-board:before{content:"\E768"}.el-icon-data-line:before{content:"\E76D"}.el-icon-reading:before{content:"\E769"}.el-icon-magic-stick:before{content:"\E76A"}.el-icon-coordinate:before{content:"\E76B"}.el-icon-mouse:before{content:"\E76C"}.el-icon-brush:before{content:"\E76E"}.el-icon-headset:before{content:"\E76F"}.el-icon-umbrella:before{content:"\E770"}.el-icon-scissors:before{content:"\E771"}.el-icon-mobile:before{content:"\E773"}.el-icon-attract:before{content:"\E774"}.el-icon-monitor:before{content:"\E775"}.el-icon-search:before{content:"\E778"}.el-icon-takeaway-box:before{content:"\E77A"}.el-icon-paperclip:before{content:"\E77D"}.el-icon-printer:before{content:"\E77E"}.el-icon-document-add:before{content:"\E782"}.el-icon-document:before{content:"\E785"}.el-icon-document-checked:before{content:"\E786"}.el-icon-document-copy:before{content:"\E787"}.el-icon-document-delete:before{content:"\E788"}.el-icon-document-remove:before{content:"\E789"}.el-icon-tickets:before{content:"\E78B"}.el-icon-folder-checked:before{content:"\E77F"}.el-icon-folder-delete:before{content:"\E780"}.el-icon-folder-remove:before{content:"\E781"}.el-icon-folder-add:before{content:"\E783"}.el-icon-folder-opened:before{content:"\E784"}.el-icon-folder:before{content:"\E78A"}.el-icon-edit-outline:before{content:"\E764"}.el-icon-edit:before{content:"\E78C"}.el-icon-date:before{content:"\E78E"}.el-icon-c-scale-to-original:before{content:"\E7C6"}.el-icon-view:before{content:"\E6CE"}.el-icon-loading:before{content:"\E6CF"}.el-icon-rank:before{content:"\E6D1"}.el-icon-sort-down:before{content:"\E7C4"}.el-icon-sort-up:before{content:"\E7C5"}.el-icon-sort:before{content:"\E6D2"}.el-icon-finished:before{content:"\E6CD"}.el-icon-refresh-left:before{content:"\E6C7"}.el-icon-refresh-right:before{content:"\E6C8"}.el-icon-refresh:before{content:"\E6D0"}.el-icon-video-play:before{content:"\E7C0"}.el-icon-video-pause:before{content:"\E7C1"}.el-icon-d-arrow-right:before{content:"\E6DC"}.el-icon-d-arrow-left:before{content:"\E6DD"}.el-icon-arrow-up:before{content:"\E6E1"}.el-icon-arrow-down:before{content:"\E6DF"}.el-icon-arrow-right:before{content:"\E6E0"}.el-icon-arrow-left:before{content:"\E6DE"}.el-icon-top-right:before{content:"\E6E7"}.el-icon-top-left:before{content:"\E6E8"}.el-icon-top:before{content:"\E6E6"}.el-icon-bottom:before{content:"\E6EB"}.el-icon-right:before{content:"\E6E9"}.el-icon-back:before{content:"\E6EA"}.el-icon-bottom-right:before{content:"\E6EC"}.el-icon-bottom-left:before{content:"\E6ED"}.el-icon-caret-top:before{content:"\E78F"}.el-icon-caret-bottom:before{content:"\E790"}.el-icon-caret-right:before{content:"\E791"}.el-icon-caret-left:before{content:"\E792"}.el-icon-d-caret:before{content:"\E79A"}.el-icon-share:before{content:"\E793"}.el-icon-menu:before{content:"\E798"}.el-icon-s-grid:before{content:"\E7A6"}.el-icon-s-check:before{content:"\E7A7"}.el-icon-s-data:before{content:"\E7A8"}.el-icon-s-opportunity:before{content:"\E7AA"}.el-icon-s-custom:before{content:"\E7AB"}.el-icon-s-claim:before{content:"\E7AD"}.el-icon-s-finance:before{content:"\E7AE"}.el-icon-s-comment:before{content:"\E7AF"}.el-icon-s-flag:before{content:"\E7B0"}.el-icon-s-marketing:before{content:"\E7B1"}.el-icon-s-shop:before{content:"\E7B4"}.el-icon-s-open:before{content:"\E7B5"}.el-icon-s-management:before{content:"\E7B6"}.el-icon-s-ticket:before{content:"\E7B7"}.el-icon-s-release:before{content:"\E7B8"}.el-icon-s-home:before{content:"\E7B9"}.el-icon-s-promotion:before{content:"\E7BA"}.el-icon-s-operation:before{content:"\E7BB"}.el-icon-s-unfold:before{content:"\E7BC"}.el-icon-s-fold:before{content:"\E7A9"}.el-icon-s-platform:before{content:"\E7BD"}.el-icon-s-order:before{content:"\E7BE"}.el-icon-s-cooperation:before{content:"\E7BF"}.el-icon-bell:before{content:"\E725"}.el-icon-message-solid:before{content:"\E799"}.el-icon-video-camera:before{content:"\E772"}.el-icon-video-camera-solid:before{content:"\E796"}.el-icon-camera:before{content:"\E779"}.el-icon-camera-solid:before{content:"\E79B"}.el-icon-download:before{content:"\E77C"}.el-icon-upload2:before{content:"\E77B"}.el-icon-upload:before{content:"\E7C3"}.el-icon-picture-outline-round:before{content:"\E75F"}.el-icon-picture-outline:before{content:"\E75E"}.el-icon-picture:before{content:"\E79F"}.el-icon-close:before{content:"\E6DB"}.el-icon-check:before{content:"\E6DA"}.el-icon-plus:before{content:"\E6D9"}.el-icon-minus:before{content:"\E6D8"}.el-icon-help:before{content:"\E73D"}.el-icon-s-help:before{content:"\E7B3"}.el-icon-circle-close:before{content:"\E78D"}.el-icon-circle-check:before{content:"\E720"}.el-icon-circle-plus-outline:before{content:"\E723"}.el-icon-remove-outline:before{content:"\E722"}.el-icon-zoom-out:before{content:"\E776"}.el-icon-zoom-in:before{content:"\E777"}.el-icon-error:before{content:"\E79D"}.el-icon-success:before{content:"\E79C"}.el-icon-circle-plus:before{content:"\E7A0"}.el-icon-remove:before{content:"\E7A2"}.el-icon-info:before{content:"\E7A1"}.el-icon-question:before{content:"\E7A4"}.el-icon-warning-outline:before{content:"\E6C9"}.el-icon-warning:before{content:"\E7A3"}.el-icon-goods:before{content:"\E7C2"}.el-icon-s-goods:before{content:"\E7B2"}.el-icon-star-off:before{content:"\E717"}.el-icon-star-on:before{content:"\E797"}.el-icon-more-outline:before{content:"\E6CC"}.el-icon-more:before{content:"\E794"}.el-icon-phone-outline:before{content:"\E6CB"}.el-icon-phone:before{content:"\E795"}.el-icon-user:before{content:"\E6E3"}.el-icon-user-solid:before{content:"\E7A5"}.el-icon-setting:before{content:"\E6CA"}.el-icon-s-tools:before{content:"\E7AC"}.el-icon-delete:before{content:"\E6D7"}.el-icon-delete-solid:before{content:"\E7C9"}.el-icon-eleme:before{content:"\E7C7"}.el-icon-platform-eleme:before{content:"\E7CA"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotating{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:transparent}.el-pagination button:focus{outline:none}.el-pagination button:hover{color:#34c388}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat;background-size:16px;background-color:#fff;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#34c388}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#34c388}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#34c388;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;vertical-align:top;display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:0}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#34c388}.el-pager li.active{color:#34c388;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px;padding-bottom:10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:transparent;border:none;outline:none;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#34c388}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:20px;padding-top:10px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e8e8e8;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#fafafa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:none}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ebf9f3;color:#5dcfa0}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:none}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #34c388;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:none;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #34c388;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e8e8e8;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:none;background-color:#ebf9f3}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:none!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#34c388}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:none;background-color:#ebf9f3}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:none!important}.el-submenu__title:hover{background-color:#ebf9f3}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#34c388}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:none!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button,.el-radio-button__inner{position:relative;display:inline-block;outline:none}.el-radio-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #d9d9d9;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#34c388}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #d9d9d9;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#34c388;border-color:#34c388;-webkit-box-shadow:-1px 0 0 0 #34c388;box-shadow:-1px 0 0 0 #34c388}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:8px 15px;font-size:14px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button--mini .el-radio-button__inner{padding:4px 6px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:4px 6px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #34c388;box-shadow:0 0 2px 2px #34c388}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#34c388}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #d9d9d9;outline:none;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#d9d9d9;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#34c388;background-color:#34c388}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e8e8e8;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#34c388;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#fafafa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\E6DA";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#fafafa}.el-select-dropdown__item.selected{color:#34c388;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e8e8e8}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#34c388}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotate(180deg);transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotate(180deg);transform:rotate(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e8e8e8}.el-select .el-input.is-focus .el-input__inner{border-color:#34c388}.el-select>.el-input{display:block}.el-select__input{border:none;outline:none;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-select .el-tag__close.el-icon-close:before{display:block;-webkit-transform:translateY(.5px);transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;background-color:#fff;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell{background-color:#fff}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#101010;font-weight:500}.el-table thead.is-group th{background:#fafafa}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small{font-size:12px}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{white-space:nowrap;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#f7f7f7}.el-table th div{padding-left:10px;padding-right:10px;line-height:40px;overflow:hidden;white-space:nowrap}.el-table th>.cell,.el-table th div{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis}.el-table th>.cell{position:relative;word-wrap:normal;vertical-align:middle;width:100%}.el-table th>.cell.highlight{color:#34c388}.el-table th.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th{border-right:1px solid #ebeef5}.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff;border-bottom:1px solid #ebeef5}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#fafafa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#fafafa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#34c388}.el-table .descending .sort-caret.descending{border-top-color:#34c388}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,.el-table__body tr.current-row>td,.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#ebf9f3}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#fafafa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ebf9f3;color:#5dcfa0}.el-table-filter__list-item.is-active{background-color:#34c388;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-table-filter__bottom button:hover{color:#34c388}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current div{background-color:#f2f6fc}.el-date-table td{width:32px;padding:4px 0;text-align:center;cursor:pointer;position:relative}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td div{padding:3px 0}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#34c388;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#34c388}.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#34c388}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#34c388}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#fafafa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#34c388;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#34c388;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#fafafa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#34c388}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#34c388}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#34c388}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#34c388;font-weight:700}.el-year-table td.disabled .cell{background-color:#fafafa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#34c388}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#34c388}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#34c388;font-weight:700}.time-select-item.disabled{color:#e8e8e8;cursor:not-allowed}.time-select-item:hover{background-color:#fafafa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:none;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#34c388}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#fafafa;border-color:#e8e8e8;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e8e8e8}.el-range-editor.is-disabled input{background-color:#fafafa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e8e8e8;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:none;cursor:pointer}.el-picker-panel__shortcut:hover{color:#34c388}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#34c388}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:none;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:transparent;cursor:pointer;outline:none;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#34c388}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#34c388}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#fafafa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e8e8e8;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:none;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#34c388}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e8e8e8}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px;padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:none;background:transparent;font-size:16px;cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#34c388}.el-message-box__content{position:relative;padding:10px 15px;color:#606266;font-size:14px}.el-message-box__input{padding-top:15px}.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f5222d}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#52c41a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#faad14}.el-message-box__status.el-icon-error{color:#f5222d}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f5222d;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}to{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#34c388;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px 0}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini.el-form-item{margin-bottom:18px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f5222d;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f5222d;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#f5222d}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f5222d}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#52c41a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#52c41a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#34c388;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8);transform:scale(.8)}.el-tabs__new-tab:hover{color:#34c388}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e8e8e8;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #34c388 inset;box-shadow:inset 0 0 2px 2px #34c388;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#34c388}.el-tabs__item:hover{color:#34c388;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e8e8e8}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e8e8e8;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e8e8e8;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #d9d9d9;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#fafafa;border-bottom:1px solid #e8e8e8;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#34c388;background-color:#fff;border-right-color:#d9d9d9;border-left-color:#d9d9d9}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#34c388}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #d9d9d9}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e8e8e8;border-bottom:none;border-top:1px solid #e8e8e8;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e8e8e8;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e8e8e8;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e8e8e8;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e8e8e8}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e8e8e8;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e8e8e8;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e8e8e8;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#34c388}.el-tree-node{white-space:nowrap;outline:none}.el-tree-node:focus>.el-tree-node__content{background-color:#fafafa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#34c388;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#fafafa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#effaf5}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#eef9e8;color:#52c41a}.el-alert--success.is-light .el-alert__description{color:#52c41a}.el-alert--success.is-dark{background-color:#52c41a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fff7e8;color:#faad14}.el-alert--warning.is-light .el-alert__description{color:#faad14}.el-alert--warning.is-dark{background-color:#faad14;color:#fff}.el-alert--error.is-light{background-color:#fee9ea;color:#f5222d}.el-alert--error.is-light .el-alert__description{color:#f5222d}.el-alert--error.is-dark{background-color:#f5222d;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#52c41a}.el-notification .el-icon-error{color:#f5222d}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#faad14}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#fafafa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#34c388}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#34c388}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #d9d9d9}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #d9d9d9}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e8e8e8;color:#e8e8e8}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e8e8e8;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #d9d9d9}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #d9d9d9;border-radius:0 0 4px 0}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table;content:""}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e8e8e8;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1)}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#34c388;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper:after{content:"";height:100%}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #34c388;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px}.el-slider.is-vertical .el-slider__button-wrapper,.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #d9d9d9;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#34c388}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#34c388;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#34c388;stroke-linecap:round}.el-loading-spinner i{color:#34c388}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-col-0{display:none;width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{position:relative;right:16.66667%}.el-col-push-4{position:relative;left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{position:relative;right:20.83333%}.el-col-push-5{position:relative;left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{position:relative;right:29.16667%}.el-col-push-7{position:relative;left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{position:relative;right:33.33333%}.el-col-push-8{position:relative;left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{position:relative;right:41.66667%}.el-col-push-10{position:relative;left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{position:relative;right:45.83333%}.el-col-push-11{position:relative;left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{position:relative;right:54.16667%}.el-col-push-13{position:relative;left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{position:relative;right:58.33333%}.el-col-push-14{position:relative;left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{position:relative;right:66.66667%}.el-col-push-16{position:relative;left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{position:relative;right:70.83333%}.el-col-push-17{position:relative;left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{position:relative;right:79.16667%}.el-col-push-19{position:relative;left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{position:relative;right:83.33333%}.el-col-push-20{position:relative;left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{position:relative;right:91.66667%}.el-col-push-22{position:relative;left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{position:relative;right:95.83333%}.el-col-push-23{position:relative;left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1280px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:none}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#34c388;color:#34c388}.el-upload:focus .el-upload-dragger{border-color:#34c388}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #d9d9d9;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#34c388;font-style:normal}.el-upload-dragger:hover{border-color:#34c388}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #34c388}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#52c41a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#34c388}.el-upload-list__item:hover{background-color:#fafafa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#34c388;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#34c388}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:transparent;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#52c41a}.el-progress.is-success .el-progress__text{color:#52c41a}.el-progress.is-warning .el-progress-bar__inner{background-color:#faad14}.el-progress.is-warning .el-progress__text{color:#faad14}.el-progress.is-exception .el-progress-bar__inner{background-color:#f5222d}.el-progress.is-exception .el-progress__text{color:#f5222d}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#34c388;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#eef9e8;border-color:#dcf3d1}.el-message--success .el-message__content{color:#52c41a}.el-message--warning{background-color:#fff7e8;border-color:#feefd0}.el-message--warning .el-message__content{color:#faad14}.el-message--error{background-color:#fee9ea;border-color:#fdd3d5}.el-message--error .el-message__content{color:#f5222d}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#52c41a}.el-message .el-icon-error{color:#f5222d}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#faad14}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f5222d;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#34c388}.el-badge__content--success{background-color:#52c41a}.el-badge__content--warning{background-color:#faad14}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f5222d}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon,.el-rate__item{display:inline-block;position:relative}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal,.el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#fafafa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#52c41a;border-color:#52c41a}.el-step__head.is-error{color:#f5222d;border-color:#f5222d}.el-step__head.is-finish{color:#34c388;border-color:#34c388}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#52c41a}.el-step__title.is-error{color:#f5222d}.el-step__title.is-finish{color:#34c388}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#52c41a}.el-step__description.is-error{color:#f5222d}.el-step__description.is-finish{color:#34c388}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:transparent;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:none;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:none;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45);transform:scale(.45)}.collapse-transition{-webkit-transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out;transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{-webkit-transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out;transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:none}.el-collapse-item__arrow{margin:0 8px 0 auto;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#34c388}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,.03));filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ebf9f3;border-color:#d6f3e7;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#34c388;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#34c388}.el-tag .el-tag__close{color:#34c388}.el-tag .el-tag__close:hover{color:#fff;background-color:#34c388}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#eef9e8;border-color:#dcf3d1;color:#52c41a}.el-tag.el-tag--success.is-hit{border-color:#52c41a}.el-tag.el-tag--success .el-tag__close{color:#52c41a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#52c41a}.el-tag.el-tag--warning{background-color:#fff7e8;border-color:#feefd0;color:#faad14}.el-tag.el-tag--warning.is-hit{border-color:#faad14}.el-tag.el-tag--warning .el-tag__close{color:#faad14}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#faad14}.el-tag.el-tag--danger{background-color:#fee9ea;border-color:#fdd3d5;color:#f5222d}.el-tag.el-tag--danger.is-hit{border-color:#f5222d}.el-tag.el-tag--danger .el-tag__close{color:#f5222d}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f5222d}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#34c388;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#34c388}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#5dcfa0}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#52c41a;border-color:#52c41a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#52c41a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#75d048}.el-tag--dark.el-tag--warning{background-color:#faad14;border-color:#faad14;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#faad14}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#fbbd43}.el-tag--dark.el-tag--danger{background-color:#f5222d;border-color:#f5222d;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f5222d}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f74e57}.el-tag--plain{background-color:#fff;border-color:#aee7cf;color:#34c388}.el-tag--plain.is-hit{border-color:#34c388}.el-tag--plain .el-tag__close{color:#34c388}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#34c388}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#bae7a3;color:#52c41a}.el-tag--plain.el-tag--success.is-hit{border-color:#52c41a}.el-tag--plain.el-tag--success .el-tag__close{color:#52c41a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#52c41a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#fddea1;color:#faad14}.el-tag--plain.el-tag--warning.is-hit{border-color:#faad14}.el-tag--plain.el-tag--warning .el-tag__close{color:#faad14}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#faad14}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fba7ab;color:#f5222d}.el-tag--plain.el-tag--danger.is-hit{border-color:#f5222d}.el-tag--plain.el-tag--danger .el-tag__close{color:#f5222d}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f5222d}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:focus{border-color:#34c388}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader .el-input.is-focus .el-input__inner{border-color:#34c388}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e8e8e8;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:none;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#fafafa}.el-cascader__suggestion-item.is-checked{color:#34c388;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input:-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{font-size:12px;margin-top:8px;width:280px}.el-color-predefine,.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex}.el-color-predefine__colors{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #34c388;box-shadow:0 0 3px 2px #34c388}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(#fff));background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:none;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#34c388;border-color:#34c388}.el-color-dropdown__link-btn{cursor:pointer;color:#34c388;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#34c388,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;cursor:pointer}.el-color-picker__color,.el-color-picker__trigger{-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-color-picker__color{display:block;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{font-size:12px;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #d9d9d9;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:none;border-color:#34c388}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#fafafa;border-color:#e8e8e8;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f5222d}.el-textarea.is-exceed .el-input__count{color:#f5222d}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d9d9d9;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:none;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:none;border-color:#34c388}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;left:5px;top:0;color:#c0c4cc}.el-input__icon,.el-input__prefix{height:100%;text-align:center;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{width:25px;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:none;border-color:#34c388}.el-input.is-disabled .el-input__inner{background-color:#fafafa;border-color:#e8e8e8;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f5222d}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f5222d}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#fafafa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d9d9d9;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-color:#d9d9d9;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#34c388;border-color:#c2eddb;background-color:#ebf9f3}.el-button:active{color:#2fb07a;border-color:#2fb07a;outline:none}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#34c388;color:#34c388}.el-button.is-plain:active{background:#fff;outline:none}.el-button.is-active,.el-button.is-plain:active{border-color:#2fb07a;color:#2fb07a}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#34c388;border-color:#34c388}.el-button--primary:focus,.el-button--primary:hover{background:#5dcfa0;border-color:#5dcfa0;color:#fff}.el-button--primary:active{outline:none}.el-button--primary.is-active,.el-button--primary:active{background:#2fb07a;border-color:#2fb07a;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#9ae1c4;border-color:#9ae1c4}.el-button--primary.is-plain{color:#34c388;background:#ebf9f3;border-color:#aee7cf}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#34c388;border-color:#34c388;color:#fff}.el-button--primary.is-plain:active{background:#2fb07a;border-color:#2fb07a;color:#fff;outline:none}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#85dbb8;background-color:#ebf9f3;border-color:#d6f3e7}.el-button--success{color:#fff;background-color:#52c41a;border-color:#52c41a}.el-button--success:focus,.el-button--success:hover{background:#75d048;border-color:#75d048;color:#fff}.el-button--success:active{outline:none}.el-button--success.is-active,.el-button--success:active{background:#4ab017;border-color:#4ab017;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a9e28d;border-color:#a9e28d}.el-button--success.is-plain{color:#52c41a;background:#eef9e8;border-color:#bae7a3}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#52c41a;border-color:#52c41a;color:#fff}.el-button--success.is-plain:active{background:#4ab017;border-color:#4ab017;color:#fff;outline:none}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#97dc76;background-color:#eef9e8;border-color:#dcf3d1}.el-button--warning{color:#fff;background-color:#faad14;border-color:#faad14}.el-button--warning:focus,.el-button--warning:hover{background:#fbbd43;border-color:#fbbd43;color:#fff}.el-button--warning:active{outline:none}.el-button--warning.is-active,.el-button--warning:active{background:#e19c12;border-color:#e19c12;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#fdd68a;border-color:#fdd68a}.el-button--warning.is-plain{color:#faad14;background:#fff7e8;border-color:#fddea1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#faad14;border-color:#faad14;color:#fff}.el-button--warning.is-plain:active{background:#e19c12;border-color:#e19c12;color:#fff;outline:none}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#fcce72;background-color:#fff7e8;border-color:#feefd0}.el-button--danger{color:#fff;background-color:#f5222d;border-color:#f5222d}.el-button--danger:focus,.el-button--danger:hover{background:#f74e57;border-color:#f74e57;color:#fff}.el-button--danger:active{outline:none}.el-button--danger.is-active,.el-button--danger:active{background:#dd1f29;border-color:#dd1f29;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fa9196;border-color:#fa9196}.el-button--danger.is-plain{color:#f5222d;background:#fee9ea;border-color:#fba7ab}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f5222d;border-color:#f5222d;color:#fff}.el-button--danger.is-plain:active{background:#dd1f29;border-color:#dd1f29;color:#fff;outline:none}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f97a81;background-color:#fee9ea;border-color:#fdd3d5}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{outline:none}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:none}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:8px 15px;font-size:14px;border-radius:3px}.el-button--small.is-round{padding:8px 15px}.el-button--small.is-circle{padding:8px}.el-button--mini{padding:4px 6px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:4px 6px}.el-button--mini.is-circle{padding:4px}.el-button--text{border-color:transparent;color:#34c388;background:transparent;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#5dcfa0;border-color:transparent;background-color:transparent}.el-button--text:active{color:#2fb07a;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#34c388;font-size:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #d9d9d9;background-color:#fafafa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#34c388}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#fafafa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;padding:20px}.el-footer,.el-main{-webkit-box-sizing:border-box;box-sizing:border-box}.el-footer{padding:0 20px;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e8e8e8}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e8e8e8;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#34c388}.el-timeline-item__node--success{background-color:#52c41a}.el-timeline-item__node--warning{background-color:#faad14}.el-timeline-item__node--danger{background-color:#f5222d}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:none;cursor:pointer;padding:0;font-size:14px;font-weight:500}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #34c388}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#34c388}.el-link.el-link--default:after{border-color:#34c388}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#34c388}.el-link.el-link--primary:hover{color:#5dcfa0}.el-link.el-link--primary:after{border-color:#34c388}.el-link.el-link--primary.is-disabled{color:#9ae1c4}.el-link.el-link--primary.is-underline:hover:after{border-color:#34c388}.el-link.el-link--danger{color:#f5222d}.el-link.el-link--danger:hover{color:#f74e57}.el-link.el-link--danger:after{border-color:#f5222d}.el-link.el-link--danger.is-disabled{color:#fa9196}.el-link.el-link--danger.is-underline:hover:after{border-color:#f5222d}.el-link.el-link--success{color:#52c41a}.el-link.el-link--success:hover{color:#75d048}.el-link.el-link--success:after{border-color:#52c41a}.el-link.el-link--success.is-disabled{color:#a9e28d}.el-link.el-link--success.is-underline:hover:after{border-color:#52c41a}.el-link.el-link--warning{color:#faad14}.el-link.el-link--warning:hover{color:#fbbd43}.el-link.el-link--warning:after{border-color:#faad14}.el-link.el-link--warning.is-disabled{color:#fdd68a}.el-link.el-link--warning.is-underline:hover:after{border-color:#faad14}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-link.el-link--info.is-underline:hover:after{border-color:#909399}.el-divider{background-color:#d9d9d9;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133;font-size:14px}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error,.el-image__placeholder{background:#fafafa}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#c0c4cc;vertical-align:middle}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table td.is-today{color:#34c388}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;color:#34c388;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{line-height:24px}.el-page-header,.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex}.el-page-header__left{cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#d9d9d9}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d9d9d9;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#34c388}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d9d9d9;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#d9d9d9}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#d9d9d9}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#34c388;border-color:#34c388}.el-checkbox__input.is-checked .el-checkbox__inner:after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#34c388}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#34c388}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#34c388;border-color:#34c388}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d9d9d9;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#34c388}.el-checkbox__inner:after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:none;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-child{margin-right:0}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d9d9d9;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#34c388}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:none;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#34c388;border-color:#34c388;-webkit-box-shadow:-1px 0 0 0 #85dbb8;box-shadow:-1px 0 0 0 #85dbb8}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#34c388}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d9d9d9;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#34c388}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:8px 15px;font-size:14px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:4px 6px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:4px 6px}.el-checkbox-group{font-size:0}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:none;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #d9d9d9;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#34c388}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:14px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#fafafa;border-color:#e8e8e8;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#fafafa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#fafafa;border-color:#e8e8e8}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#34c388;background:#34c388}.el-radio__input.is-checked .el-radio__inner:after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#34c388}.el-radio__input.is-focus .el-radio__inner{border-color:#34c388}.el-radio__inner{border:1px solid #d9d9d9;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#34c388}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:none;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #34c388;box-shadow:0 0 2px 2px #34c388}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity .34s ease-out;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:background-color .3s;transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity .12s ease-out;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #e8e8e8;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:1px solid #e8e8e8}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:none}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#34c388;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#fafafa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}body *,html *{-webkit-box-sizing:border-box;box-sizing:border-box}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local("Roboto Light"),local("Roboto-Light"),url(../../static/fonts/Roboto-Light.ecce92d0.woff) format("woff"),url(../../static/fonts/Roboto-Light.634f53eb.ttf) format("truetype")}body{background-color:#f0f2f5;padding:0;margin:0;color:rgba(0,0,0,.65);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}#app{min-width:1200px;margin:0 auto}#nprogress .bar{background:#34c388}#nprogress .peg{-webkit-box-shadow:0 0 10px #34c388,0 0 5px #34c388;box-shadow:0 0 10px #34c388,0 0 5px #34c388}.app-wrapper{padding:24px!important}.line{height:1px;min-width:50px;background-color:#34c388;margin:0 auto}.ant-card-bordered{border:none}.emq-list-card.ant-card .ant-card-head{border-bottom:1px solid #eee}.emq-list-card.ant-card .ant-card-head .ant-card-head-title{color:#303133;text-align:center;font-weight:400;position:relative}.emq-list-card.ant-card .ant-card-head .ant-card-head-title .back-btn{position:absolute;left:0;cursor:pointer;font-size:14px}.emq-list-card.ant-card .ant-card-head .ant-card-head-title .back-btn:before{font-family:element-icons,serif!important;content:"\E6DE";font-weight:700}.emq-table-header{padding:0 0 24px 0}.emq-table-header,.emq-table-header .search-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.emq-table-header .search-wrapper{width:400px}.emq-table-header .search-wrapper .node-select{width:100%}.emq-table-header .search-wrapper .el-button{margin-left:12px}.emq-table-footer{margin-top:24px;text-align:center}.btn{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.raw:hover,.btn:not(.btn-default){color:#34c388}.emq-title{font-size:16px;color:#333;font-weight:bolder;margin-bottom:40px}.emq-title.h3,.emq-title[size=small]{font-size:14px}.emq-title .sub-title{font-weight:400;display:block;font-size:12px;color:#8f9297;margin-top:12px}.emq-title.required-title:before{content:"*";color:#f5222d;margin-right:4px}.emq-option-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.emq-option-item .option-value{font-size:13px;padding-left:10px}.state{position:relative;top:-1px;display:inline-block;width:6px;height:6px;vertical-align:middle;border-radius:50%}.emq-popover-content{font-size:12px}.field-info{margin:0;list-style:none;padding:3px 0;line-height:35px}.field-info .field-title{display:inline-block;font-style:normal;font-size:14px;color:#999;padding-right:16px}.field-info .field-value{font-size:14px;color:#101010}.ant-badge-status-success{background-color:#34c388}.ant-badge[type=success] .ant-badge-status-text{color:#34c388}.ant-badge[type=error] .ant-badge-status-text{color:#f5222d}.button-group{margin-top:24px}.button-group__center{text-align:center}.button-group__right{text-align:right}.monaco-container{border:1px solid #d9d9d9}input{line-height:normal!important}.el-button{-webkit-box-shadow:0 2px 0 rgba(0,0,0,.015);box-shadow:0 2px 0 rgba(0,0,0,.015);font-weight:400}.el-button.el-button--small{font-size:14px;padding:8px 15px}.el-button--dashed.danger:focus,.el-button--dashed.danger:hover{color:#f5222d;border-color:#f5222d}.el-button--dashed{color:rgba(0,0,0,.65);background-color:#fff;border-color:#d9d9d9;border-style:dashed}.el-button--dashed:focus,.el-button--dashed:hover{color:#34c388;border-color:#34c388;background-color:#fff}.el-button--danger{color:#f5222d;background-color:#f5f5f5;border-color:#d9d9d9}.el-button--danger:hover{background-color:#f5222d;color:#fff;border-color:#f5222d}.el-button--danger:focus{color:#f5222d;background-color:#fff;border-color:#f5222d}.el-input,.el-textarea{-webkit-transition:all .3s;transition:all .3s}.el-input__inner:focus,.el-textarea__inner:focus{-webkit-box-shadow:0 0 0 2px rgba(52,195,136,.2);box-shadow:0 0 0 2px rgba(52,195,136,.2)}.el-form.el-form--label-left .el-form-item.is-required .el-form-item__label{margin-left:-10px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{-webkit-box-shadow:0 0 0 2px rgba(245,34,45,.2);box-shadow:0 0 0 2px rgba(245,34,45,.2)}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-textarea__inner{border-color:#d9d9d9}.el-form--label-top .el-form-item__label{padding:0}.el-form-item .emq-select{width:100%}.code-editor__item.el-form-item .el-form-item__content{line-height:18px}.el-select-dropdown__item.hover{background-color:rgba(52,195,136,.08)}.el-message{padding:16px;border-radius:4px;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15);background:#fff;border:none}.el-message--success .el-icon-success,.el-message--success .el-message__content{color:#34c388}.el-table .el-table__header th{border-bottom-color:#f7f7f7}.el-table .el-table__header-wrapper{border-radius:4px}.el-table thead{border-bottom-color:#fff}.el-table .el-table__empty-block{min-height:180px}.el-table.data-list .cell .iconfont{font-size:18px}.el-table .align-table-column .cell{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-dialog{border-radius:4px}.el-dialog .dialog-align-footer{text-align:center}.dialog-primary-btn{margin-left:12px}.el-radio-group,.el-radio-group .el-radio-button__inner{font-weight:400}.el-radio-group[border] .el-radio-button__orig-radio:checked+.el-radio-button__inner{background-color:#fff;color:#34c388}.el-dropdown-menu__item.active{background-color:#ebf9f3;color:#5dcfa0}.el-tabs.el-tabs--card>.el-tabs__header{border-bottom:0;margin-bottom:0}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__nav{border:none}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__item{-webkit-transition:all .5s;transition:all .5s;background:#fafafa;border-radius:4px 4px 0 0;margin-right:3px;border:1px solid transparent;border-bottom:1px solid #fff;line-height:38px}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{font-size:14px;line-height:14px;top:0;color:#909399}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close:hover{color:#fff}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__new-tab{color:#34c388;border-color:#34c388;line-height:17px}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__new-tab i{font-weight:600}.el-tabs.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{background:#fff;border:1px solid #fff}.el-tabs__item{color:#909399}.el-icon-question{cursor:pointer}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu-inline-collapsed>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon{font-size:20px;margin-right:0}.ant-breadcrumb{font-size:16px}.details-page .details-form__view .el-input.is-disabled .el-input__inner{background:transparent;border:none;cursor:text;color:#303133}.details-page .details-form__view .el-select .el-input .el-select__caret{visibility:hidden}.details-page .details-form__view .el-form-item__label{color:#999} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-18aaaf52.a09c5d07.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-18aaaf52.a09c5d07.css new file mode 100644 index 000000000..300d509eb --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-18aaaf52.a09c5d07.css @@ -0,0 +1 @@ +.key-and-value-editor{font-size:12px!important}.key-and-value-editor .el-input{width:100%!important}.key-and-value-editor .el-input.key-input{width:120px!important}.key-and-value-editor .el-table__empty-block{min-height:40px}.array-editor{font-size:12px!important}.array-editor .my-header{color:#333}.array-editor .el-input{width:100%!important}.array-editor .el-input.key-input{width:120px!important}.array-editor .el-table__empty-block{min-height:40px}.array-editor .requiredclass>div.cell:before{content:"*";color:#f5222d;margin-right:4px}.file-editor .el-upload{width:100%;text-align:right}.file-editor .el-upload .file-icon{color:#34c388}.listeners .listener-item{padding:20px;margin-bottom:20px;background-color:#f2f2f2;border:1px dashed #f2f2f2;-webkit-transition:border .3s;transition:border .3s;position:relative;border-radius:4px}.listeners .listener-item .listener-item-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px}.listeners .listener-item .listener-item-head .listener-item-type{font-size:12px}.listeners .listener-item .listener-item-head .listener-item-type .title{color:#888;float:left}.listeners .listener-item .listener-item-head .listener-item-type .desc{float:left;margin-left:8px;color:#444;margin-right:20px}.listeners .listener-item .listener-item-head .listener-item-btn .btn{margin-right:5px}.listeners .listener-item .listener-item-head .listener-item-btn .btn:last-child{margin-right:0}.el-select-dropdown .custom-option .value{float:right;font-size:12px;color:#888;margin-left:30px}.module-detail .page-header-content{padding:16px 20px}.module-detail .module-title{margin-bottom:10px}.module-detail .listener-title{margin-bottom:20px}.module-detail .listener-title:before{content:"*";color:#f5222d;font-size:12px;vertical-align:text-bottom}.module-detail .el-form-item .el-input,.module-detail .el-form-item .el-select{width:100%}.module-detail .el-form-item .el-select:not(.reset-width){width:330px}.module-detail .el-form-item .el-form-item__label{font-size:14px;color:#606266}.module-detail .config-item-wrapper{min-height:100px}.module-detail .config-item-wrapper .params-loading-wrapper{padding:0 32px}.module-detail .button-group__center{margin-bottom:24px}.module-detail .listener-wrapper{margin-top:24px}.module-detail .delete-btn{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-19e46f15.16b26fc6.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-19e46f15.16b26fc6.css new file mode 100644 index 000000000..ac421990a --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-19e46f15.16b26fc6.css @@ -0,0 +1 @@ +.auth-clientid-table .data-list{clear:both}.auth-clientid-table .app-wrapper .add-form{display:block;width:100%}.auth-clientid-table .app-wrapper .add-form .el-select{width:100%}.auth-clientid-table .app-wrapper .add-form .col-oper .el-button{margin-left:12px}.auth-clientid-table .app-wrapper .add-form .el-col-8{margin-bottom:20px}.auth-username-table .data-list{clear:both}.auth-username-table .app-wrapper .add-form{display:block;width:100%}.auth-username-table .app-wrapper .add-form .el-select{width:100%}.auth-username-table .app-wrapper .add-form .col-oper .el-button{margin-left:12px}.auth-username-table .app-wrapper .add-form .el-col-8{margin-bottom:20px}.auth-mnesia-table .data-list{clear:both}.auth-mnesia-table .app-wrapper .emq-table-header{padding:5px 0 0 0}.auth-mnesia-table .app-wrapper .acl{margin-top:40px}.auth-mnesia-table .app-wrapper .add-form{display:block;width:100%}.auth-mnesia-table .app-wrapper .add-form .tutorial{position:absolute;right:20px;top:4px}.auth-mnesia-table .app-wrapper .add-form .el-autocomplete,.auth-mnesia-table .app-wrapper .add-form .el-select{width:100%}.auth-mnesia-table .app-wrapper .add-form .col-oper .el-button{margin-left:12px}.auth-mnesia-table .app-wrapper .add-form .el-col{position:relative;margin-bottom:20px}.generate-jwt .monaco-container{height:200px}.generate-jwt .el-date-editor.el-input,.generate-jwt .el-date-editor.el-input__inner,.generate-jwt .el-select{width:100%}.generate-jwt .el-table{margin-top:40px}.generate-jwt .jwt-payload-desc{font-size:14px;padding:12px;border-radius:4px;line-height:1.4;margin:16px 0;background:#f6f7fb} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-1aa6ec30.655540b6.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-1aa6ec30.655540b6.css new file mode 100644 index 000000000..cfbb23995 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-1aa6ec30.655540b6.css @@ -0,0 +1 @@ +.rule-metrics .metrics-item[data-v-0b7b7823]{margin-bottom:50px}.rule-metrics .metrics-item .metrics-item-title[data-v-0b7b7823]{font-size:14px;font-weight:700;color:#101010}.rule-metrics .metrics-item .oper-wrapper[data-v-0b7b7823]{margin:20px auto;text-align:center}.rule-metrics .field-info[data-v-0b7b7823]{margin-top:12px}.rule-metrics .field-info.rule-metrics .field-title[data-v-0b7b7823]{min-width:130px}.rule-metrics .field-info.action-metrics .field-info-item[data-v-0b7b7823]{padding-left:12px}.rule-metrics .field-info.action-metrics .field-title[data-v-0b7b7823]{min-width:40px}.rule-metrics .metrics-item-body .item-title[data-v-0b7b7823]{color:#101010} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2095c2f3.62b43ba0.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2095c2f3.62b43ba0.css new file mode 100644 index 000000000..bdea14c3f --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2095c2f3.62b43ba0.css @@ -0,0 +1 @@ +.stretch-height{width:100%;height:10px;background:#e6e6e6;cursor:row-resize;text-align:center}.stretch-height .el-icon-more{position:relative;top:-4px}.rule-create .rule-wrapper .code,.rule-create .rule-wrapper .code-view,.rule-create .rule-wrapper .el-autocomplete,.rule-create .rule-wrapper .el-input,.rule-create .rule-wrapper .el-select,.rule-create .rule-wrapper .el-textarea{width:100%}.rule-create .rule-wrapper .code{font-size:13px;padding:4px;border:1px dashed #fff;-webkit-transition:all .3s;transition:all .3s;line-height:24px}.rule-create .rule-wrapper .code.code-border{border:1px dashed #fff}.rule-create .rule-wrapper .code.code-border:hover{border:1px dashed #d8d8d8}.rule-create .rule-wrapper .code code{word-break:break-word}.rule-create .rule-wrapper .icon,.rule-create .rule-wrapper .tips{margin-left:12px}.rule-create .rule-wrapper .tips{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px}.rule-create .rule-wrapper .line{width:95%;margin:30px auto 28px auto;background-color:#edeef2}.rule-create .detail-title-wrapper{margin:-28px -24px 24px;padding:10px 0}.rule-create .detail-title-wrapper .ant-card-body{padding:14px 32px}.rule-create .emq-list-card{margin-bottom:24px}.rule-create .metrics-wrapper{margin-top:-12px}.rule-create .metrics-card{color:#101010}.rule-create .metrics-card:not(.last-child){border-right:1px solid #d8d8d8}.rule-create .metrics-card .card-title{font-size:14px;height:36px;line-height:36px;font-weight:700}.rule-create .metrics-card .card-value{font-size:32px}.rule-create .metrics-card .card-unit{font-size:14px}.rule-create .metrics-card .card-desc{margin-top:8px;font-size:12px;color:#a2a2a2}.rule-create .available-fields{-webkit-transition:all .3s;transition:all .3s;border-bottom:1px dashed #d8d8d8;padding-bottom:3px;position:relative;margin-right:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;line-height:2.3}.rule-create .available-fields:hover{color:#34c388}.rule-create .rule-create-footer{height:60px;background-color:#fff;margin-top:24px;text-align:center}.rule-create .rule-create-footer .el-button{min-width:80px}.rule-create .required-title{position:relative}.rule-create .required-title:before{content:"*";color:#f5222d;font-size:12px;position:absolute;left:-10px;top:3px}.rule-create .tips-form .tips-item{margin-bottom:20px}.rule-create .tips-form .tips-item .notice{color:#f5222d}.rule-create .tips-form .tips-item .copy-success{color:#34c388;float:right}.rule-create .tips-wrapper{width:100%;word-break:break-word;margin-top:10px;background:#f6f7fb;border-radius:4px;color:#909399}.rule-create .tips-wrapper.code{border:none;padding:10px}.rule-create .payload.stretch-height .el-icon-more{top:-11px}.rule-create .payload-type{width:100%;padding:2px 12px;background:#f6f7fb;border:1px solid #d9d9d9;border-top:none;text-align:right}.rule-create .payload-type .el-radio__label{font-size:13px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-214e9a45.14ee6fe0.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-214e9a45.14ee6fe0.css new file mode 100644 index 000000000..1761354f1 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-214e9a45.14ee6fe0.css @@ -0,0 +1 @@ +.application .el-date-editor,.application .el-select{width:100%} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2be77691.75bab761.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2be77691.75bab761.css new file mode 100644 index 000000000..19c7d3ee2 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-2be77691.75bab761.css @@ -0,0 +1 @@ +.blacklist .description[data-v-170091b5]{max-width:500px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3208fb9c.ba1dcff8.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3208fb9c.ba1dcff8.css new file mode 100644 index 000000000..957e54fa5 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3208fb9c.ba1dcff8.css @@ -0,0 +1 @@ +.el-select-dropdown .custom-option .value{float:right;font-size:12px;color:#888;margin-left:30px}.rule-actions .show-btn{border-bottom:1px dashed #d8d8d8}.rule-actions .action-item .action-item-btn .btn{margin-right:5px}.rule-actions .action-item .action-item-btn .btn:last-child{margin-right:0}.rule-actions .action-item .action-item-btn .fallbacks{position:absolute;bottom:5px;right:22px}.rule-actions .action-item .action-item-btn .fallbacks .el-button{font-size:12px}.rule-actions .action-item .action-item-btn .fallbacks .el-button [class*=el-icon-]+span{margin-left:0}.rule-actions .error-action .action-item-btn .fallbacks{position:absolute;bottom:-3px;right:5px;color:#909399}.rule-actions .metrics-detail{margin-top:16px;padding:4px 0;font-size:12px;color:#444}.rule-actions .metrics-detail .main-title{color:#101010;margin-bottom:8px}.rule-actions .metrics-detail .title{color:#888;padding-left:8px}.rule-actions .metrics-detail .value{margin-left:8px;margin-right:20px}.rule-actions .action-item{padding:20px;margin-bottom:20px;background-color:#f2f2f2;border:1px dashed #f2f2f2;-webkit-transition:border .3s;transition:border .3s;position:relative}.rule-actions .action-item.error-action{padding:0;margin-bottom:0}.rule-actions .action-item-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:12px}.rule-actions .action-item-head .action-item-type{font-size:12px}.rule-actions .action-item-head .action-item-type .title{color:#888;float:left}.rule-actions .action-item-head .action-item-type .desc{float:left;margin-left:8px;color:#444;margin-right:20px}.rule-actions .action-item-description{font-size:12px;color:#888;margin:4px 0 12px 0}.rule-actions .action-item-params{margin-top:12px;margin-bottom:20px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:80%;-ms-flex-wrap:wrap;flex-wrap:wrap}.rule-actions .action-item-params .action-item-field{margin-right:20px}.rule-actions .action-item-params .title{color:#888;float:left}.rule-actions .action-item-params .value{float:left;margin-left:8px;color:#444}.rule-actions .el-form .el-form-item .el-input{width:100%}.rule-actions .el-form .el-form-item .el-select:not(.reset-width){width:330px}.rule-actions .el-form .el-form-item .el-form-item__label{padding-bottom:0;font-size:12px}.rule-actions .action-description{margin-top:-10px;padding-bottom:8px;font-size:12px;margin-bottom:3px;border-bottom:1px solid #d8d8d8}.rule-actions .tips{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px;margin-left:12px}.rule-actions .line{background-color:#d8d8d8}.rule-actions .params-item-wrapper{margin-top:30px;min-height:100px}.rule-actions .params-item-wrapper .params-loading-wrapper{padding:0 32px}.rule-actions .params-item-wrapper .el-input,.rule-actions .params-item-wrapper .el-select{width:200px!important}.rule-actions .params-item-wrapper .el-textarea{width:330px}.rule-actions .params-item-wrapper .monaco-action__sql{height:200px}.create-guide{min-height:80px;margin:0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.create-guide,.custom-option{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-option{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.custom-option .key{display:inline-block;max-width:350px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-32291c05.be47c5e9.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-32291c05.be47c5e9.css new file mode 100644 index 000000000..c54e0e364 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-32291c05.be47c5e9.css @@ -0,0 +1 @@ +.modules .header-box .content[data-v-839f236e],.modules .page-header-content-view .content[data-v-839f236e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:830px}.modules .header-box .content .modules-num[data-v-839f236e],.modules .page-header-content-view .content .modules-num[data-v-839f236e]{display:inline-block;min-width:38px;padding:2px 10px;text-align:center;color:#fff;font-size:13px;border-radius:15px;background-color:#2f333e;margin:0 12px}.modules .el-card[data-v-839f236e]{margin-bottom:20px}.modules .module-item[data-v-839f236e]{position:relative;cursor:pointer}.modules .module-item .item-error-tip[data-v-839f236e],.modules .module-item[data-v-839f236e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.modules .module-item .item-error-tip[data-v-839f236e]{position:absolute;top:0;left:0;width:100%;padding:5px 20px;background-color:#fff8e5;font-size:12px;border-left:5px solid #ffb900}.modules .module-item .item-error-tip .reconnect-btn[data-v-839f236e]{width:40px;height:18px;line-height:8px;color:#f56e28;border:1px solid #f56e28;background-color:#fff8e5}.modules .module-item .left-box[data-v-839f236e]{display:-webkit-box;display:-ms-flexbox;display:flex}.modules .module-item .item-img[data-v-839f236e]{width:85px;height:85px;-ms-flex-negative:0;flex-shrink:0}.modules .module-item .item-content[data-v-839f236e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:20px;margin-right:10px;-ms-flex-item-align:start;align-self:flex-start}.modules .module-item .item-content .item-title[data-v-839f236e]{color:#101010;font-size:16px;font-weight:700;word-break:break-word}.modules .module-item .item-content .item-des[data-v-839f236e]{max-width:240px;color:rgba(0,0,0,.65);font-size:12px}.modules .module-item .item-handle[data-v-839f236e]{height:85px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.modules .module-item .item-handle .handle-icons[data-v-839f236e]{width:52px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;font-size:20px;padding-right:2px}.modules .module-item .item-handle .handle-icons .open[data-v-839f236e]{width:20px;color:#23bd78;font-size:28px;position:relative}.modules .module-item .item-handle .handle-icons .el-icon-caret-right[data-v-839f236e]:before{position:absolute;left:-5px}.modules .module-item .item-handle .handle-icons .close[data-v-839f236e]{color:red;line-height:28px}.modules .module-item .item-handle .handle-icons .el-icon-edit-outline[data-v-839f236e]{line-height:28px}.modules .module-item .item-handle .start-btn[data-v-839f236e]{width:52px;color:#23bd78;border:1px solid #23bd78;font-size:14px;background-color:#f6fcf8;margin-left:0}.modules .module-item .item-handle .know-more[data-v-839f236e]{font-size:13px}.modules .search-input .el-icon-loading[data-v-839f236e],.modules .search-input .el-icon-search[data-v-839f236e]{position:relative;left:4px;top:7px}.modules .null-modules[data-v-839f236e]{min-height:130px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.modules .item-box[data-v-839f236e]{position:relative}.modules .item-box .delete-icon[data-v-839f236e]{visibility:hidden}.modules .item-box:hover .delete-icon[data-v-839f236e]{visibility:visible}.modules .delete-icon[data-v-839f236e]{position:absolute;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABcElEQVRYR+2WMU7DMBSGn3MLrgCXYGNDYqAzTKgLU/KsZKFblEekDIiu7FRCSL1AL1EuwQ0iJUGOHCmq7NjPgNohXjLEz//n//2yLeDIQxxZH2aA03Ygz/PLNE13/5kTqwNFUayEEE8AsEHERQgEEb0DwFXXdfdSyg/TGlYAIloDwFIXsSG0+K2qF0JskyS55gKoYrWDYXhDjMV18QIRNywANZmI2BAc8d4dV285EFxxLwBfJ0LEvQFcEKHiLAAbhG5hn3ZX4NghNBUYMjGeZk27LWvOEDIg2OLsFgwwhp6rX97nxHhTbAcOxPd6sQv9ZUOwAA7Foyjq74i2bdWJGQThDWASj+P4SwGUZXkeCuEFMCU+9DMUwgngI/4biEkAjngoxNR74BkAYr3wXgVu6LnrAjO04wURH1knIRG9AcAdALDELU58IuINC0BNVs+ypmlesyz7du3a9L+qqrO6rh+klKs/PYpDYGaA2YGTdeAH4UfVIZWshvAAAAAASUVORK5CYII=) no-repeat;background-size:100% 100%;top:3px;right:3px;cursor:pointer}.modules-select[data-v-839f236e]{-webkit-transform:none;transform:none}.modules-select .header-box[data-v-839f236e]{width:100%;height:112px;position:fixed;top:80px;right:0;z-index:9}.modules-select .header-box .inner-box[data-v-839f236e]{background:#f0f2f5;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box}.modules-select .header-box .content[data-v-839f236e]{height:64px;padding:0 24px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.modules-select .header-box .content .content-left[data-v-839f236e]{display:-webkit-box;display:-ms-flexbox;display:flex}.modules-select .header-box .content span[data-v-839f236e]{-ms-flex-negative:0;flex-shrink:0}.modules-select .header-box .content .module-class[data-v-839f236e]{font-size:14px;color:rgba(0,0,0,.65);margin-right:20px;cursor:pointer;-ms-flex-negative:0;flex-shrink:0}.modules-select .header-box .content .active-nav[data-v-839f236e]{color:#34c388;position:relative}.modules-select .header-box .content .active-nav[data-v-839f236e]:before{content:"";position:absolute;width:100%;height:2px;background:#34c388;bottom:-15px;left:0}.modules-select .content-title[data-v-839f236e]{font-weight:700}.modules-select .class-title[data-v-839f236e]{display:block;margin-bottom:30px;color:#101010;font-weight:700}.modules-select .content-box[data-v-839f236e]{scroll-behavior:smooth;padding:16px 24px;margin:24px;margin-top:112px;background-color:#fff}.modules-select .module-item .item-handle[data-v-839f236e]{text-align:center;font-size:14px}.modules-select .module-item .item-handle .start-btn[data-v-839f236e]{width:60px}.modules-select .module-item .item-handle .select-btn[data-v-839f236e]{width:50px;font-size:13px;color:#999}.modules-select .module-item .item-handle .select-btn[data-v-839f236e]:hover{color:#23bd78}.modules-select .active-title[data-v-839f236e]{color:#34c388}.modules-select .link-content[data-v-839f236e]{padding-top:200px;margin-top:-200px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3adcb268.c694417f.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3adcb268.c694417f.css new file mode 100644 index 000000000..58795a9c2 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-3adcb268.c694417f.css @@ -0,0 +1 @@ +.monaco-editor .accessibilityHelpWidget{padding:10px;vertical-align:middle;overflow:scroll}.monaco-aria-container{position:absolute;left:-999em}.monaco-editor .bracket-match{-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-menu .monaco-action-bar.vertical .action-label.hover{background-color:#eee}.monaco-editor .monaco-editor-overlaymessage{padding-bottom:8px}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.monaco-editor .monaco-editor-overlaymessage.fadeIn{-webkit-animation:fadeIn .15s ease-out;animation:fadeIn .15s ease-out}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.monaco-editor .monaco-editor-overlaymessage.fadeOut{-webkit-animation:fadeOut .1s ease-out;animation:fadeOut .1s ease-out}.monaco-editor .monaco-editor-overlaymessage .message{padding:1px 4px}.monaco-editor .monaco-editor-overlaymessage .anchor{width:0!important;height:0!important;border-color:transparent;border-style:solid;z-index:1000;border-width:8px;position:absolute}.monaco-editor .lightbulb-glyph{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:16px;width:20px;padding-left:2px}.monaco-editor .lightbulb-glyph:hover{cursor:pointer}.monaco-editor.vs .lightbulb-glyph{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42NyA4LjY1OGMtLjMzOC4zMzQtLjU5OC43MDUtLjc4MSAxLjExNC0uMTc4LjQwNy0uMjY4Ljg1LS4yNjggMS4zMjl2MS42YTEuMzA0IDEuMzA0IDAgMCAxLS43OTQgMS4xOTdjLS4xNTkuMDY4LS4zMjkuMTAyLS41MDkuMTAySDcuNzEyYTEuMjg1IDEuMjg1IDAgMCAxLS45MjItLjM3OSAxLjMwMyAxLjMwMyAwIDAgMS0uMzgtLjkydi0xLjZjMC0uNDc5LS4wOTItLjkyMS0uMjc0LTEuMzI5YTMuNTU2IDMuNTU2IDAgMCAwLS43NzYtMS4xMTQgNC42ODkgNC42ODkgMCAwIDEtMS4wMDYtMS40MzdBNC4xODcgNC4xODcgMCAwIDEgNCA1LjVhNC40MzIgNC40MzIgMCAwIDEgLjYxNi0yLjI3Yy4xOTctLjMzNi40MzItLjY0LjcwNS0uOTE0LjI3NC0uMjcyLjU3OC0uNTA2LjkxMS0uNzAyLjMzOC0uMTk2LjctLjM0OCAxLjA4NC0uNDU0QzcuNyAxLjA1MyA4LjEgMSA4LjUxNiAxYTQuNDc2IDQuNDc2IDAgMCAxIDIuMjc2LjYxNCA0LjQ3NSA0LjQ3NSAwIDAgMSAxLjYyMiAxLjYxNiA0LjQzOCA0LjQzOCAwIDAgMSAuNjE2IDIuMjdjMCAuNjE3LS4xMTcgMS4xOTEtLjM1MyAxLjcyMWE0LjY5IDQuNjkgMCAwIDEtMS4wMDYgMS40Mzd6TTkuNjIzIDEwLjVINy40MDl2Mi4yMDFjMCAuMDgxLjAyOC4xNS4wOS4yMTIuMDYyLjA2MS4xMzEuMDkuMjEzLjA5aDEuNjA2YS4yODkuMjg5IDAgMCAwIC4yMTMtLjA5LjI4Ni4yODYgMCAwIDAgLjA5LS4yMTJWMTAuNXoiIGZpbGw9IiNGQzAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjY3IDguNjU4Yy0uMzM4LjMzNC0uNTk4LjcwNS0uNzgxIDEuMTE0LS4xNzguNDA3LS4yNjguODUtLjI2OCAxLjMyOXYxLjZhMS4zMDQgMS4zMDQgMCAwIDEtLjc5NCAxLjE5N2MtLjE1OS4wNjgtLjMyOS4xMDItLjUwOS4xMDJINy43MTJhMS4yODUgMS4yODUgMCAwIDEtLjkyMi0uMzc5IDEuMzAzIDEuMzAzIDAgMCAxLS4zOC0uOTJ2LTEuNmMwLS40NzktLjA5Mi0uOTIxLS4yNzQtMS4zMjlhMy41NTYgMy41NTYgMCAwIDAtLjc3Ni0xLjExNCA0LjY4OSA0LjY4OSAwIDAgMS0xLjAwNi0xLjQzN0E0LjE4NyA0LjE4NyAwIDAgMSA0IDUuNWE0LjQzMiA0LjQzMiAwIDAgMSAuNjE2LTIuMjdjLjE5Ny0uMzM2LjQzMi0uNjQuNzA1LS45MTQuMjc0LS4yNzIuNTc4LS41MDYuOTExLS43MDIuMzM4LS4xOTYuNy0uMzQ4IDEuMDg0LS40NTRDNy43IDEuMDUzIDguMSAxIDguNTE2IDFhNC40NzYgNC40NzYgMCAwIDEgMi4yNzYuNjE0IDQuNDc1IDQuNDc1IDAgMCAxIDEuNjIyIDEuNjE2IDQuNDM4IDQuNDM4IDAgMCAxIC42MTYgMi4yN2MwIC42MTctLjExNyAxLjE5MS0uMzUzIDEuNzIxYTQuNjkgNC42OSAwIDAgMS0xLjAwNiAxLjQzN3pNOS42MjMgMTAuNUg3LjQwOXYyLjIwMWMwIC4wODEuMDI4LjE1LjA5LjIxMi4wNjIuMDYxLjEzMS4wOS4yMTMuMDloMS42MDZhLjI4OS4yODkgMCAwIDAgLjIxMy0uMDkuMjg2LjI4NiAwIDAgMCAuMDktLjIxMlYxMC41eiIgZmlsbD0iI0REQjEwMCIvPjwvc3ZnPg==") 50% no-repeat}.monaco-editor.vs .lightbulb-glyph.autofixable{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA5Yy0xLjY3IDAtMyAxLjMzLTMgM3MxLjMzIDMgMyAzIDMtMS4zMyAzLTMtMS4zMy0zLTMtM3ptLS43OTcgMy40NzFMMTAuNzA0IDE0IDEyIDEzLjAyNGwxLjMwNS45NzYtLjUwOC0xLjUyOUwxNCAxMS42NGgtMS40NjRMMTIgMTBsLS41MjcgMS42NEgxMGwxLjIwMy44MzF6IiBmaWxsPSIjMDA3QUNDIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS4xNyA4LjA4NUEzLjk3OSAzLjk3OSAwIDAgMCA4LjI4OCAxMC41SDYuNDA5djIuMjAxYzAgLjA4MS4wMjguMTUuMDkuMjEyLjA2Mi4wNjEuMTMxLjA5LjIxMy4wOWgxLjQxM2MuMDg5LjM0OC4yMjMuNjc4LjM5Ni45ODItLjA2Ni4wMS0uMTM0LjAxNS0uMjAzLjAxNUg2LjcxMmExLjI4NSAxLjI4NSAwIDAgMS0uOTIyLS4zNzkgMS4zMDMgMS4zMDMgMCAwIDEtLjM4LS45MnYtMS42YzAtLjQ3OS0uMDkyLS45MjEtLjI3NC0xLjMyOWEzLjU1NiAzLjU1NiAwIDAgMC0uNzc2LTEuMTE0IDQuNjg5IDQuNjg5IDAgMCAxLTEuMDA2LTEuNDM3QTQuMTg3IDQuMTg3IDAgMCAxIDMgNS41YTQuNDMyIDQuNDMyIDAgMCAxIC42MTYtMi4yN2MuMTk3LS4zMzYuNDMyLS42NC43MDUtLjkxNC4yNzQtLjI3Mi41NzgtLjUwNi45MTEtLjcwMi4zMzgtLjE5Ni43LS4zNDggMS4wODQtLjQ1NEM2LjcgMS4wNTMgNy4xIDEgNy41MTYgMWE0LjQ3NiA0LjQ3NiAwIDAgMSAyLjI3Ni42MTQgNC40NzUgNC40NzUgMCAwIDEgMS42MjIgMS42MTYgNC40MzggNC40MzggMCAwIDEgLjYxNiAyLjI3YzAgLjYxNy0uMTE3IDEuMTkxLS4zNTMgMS43MjFhNC41MzcgNC41MzcgMCAwIDEtLjUwNi44NjR6IiBmaWxsPSIjMDA3QUNDIi8+PC9zdmc+") 50% no-repeat}.monaco-editor.hc-black .lightbulb-glyph,.monaco-editor.vs-dark .lightbulb-glyph{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42NyA4LjY1OGMtLjMzOC4zMzQtLjU5OC43MDUtLjc4MSAxLjExNC0uMTc4LjQwNy0uMjY4Ljg1LS4yNjggMS4zMjl2MS42YTEuMzA0IDEuMzA0IDAgMCAxLS43OTQgMS4xOTdjLS4xNTkuMDY4LS4zMjkuMTAyLS41MDkuMTAySDcuNzEyYTEuMjg1IDEuMjg1IDAgMCAxLS45MjItLjM3OSAxLjMwMyAxLjMwMyAwIDAgMS0uMzgtLjkydi0xLjZjMC0uNDc5LS4wOTItLjkyMS0uMjc0LTEuMzI5YTMuNTU2IDMuNTU2IDAgMCAwLS43NzYtMS4xMTQgNC42ODkgNC42ODkgMCAwIDEtMS4wMDYtMS40MzdBNC4xODcgNC4xODcgMCAwIDEgNCA1LjVhNC40MzIgNC40MzIgMCAwIDEgLjYxNi0yLjI3Yy4xOTctLjMzNi40MzItLjY0LjcwNS0uOTE0LjI3NC0uMjcyLjU3OC0uNTA2LjkxMS0uNzAyLjMzOC0uMTk2LjctLjM0OCAxLjA4NC0uNDU0QzcuNyAxLjA1MyA4LjEgMSA4LjUxNiAxYTQuNDc2IDQuNDc2IDAgMCAxIDIuMjc2LjYxNCA0LjQ3NSA0LjQ3NSAwIDAgMSAxLjYyMiAxLjYxNiA0LjQzOCA0LjQzOCAwIDAgMSAuNjE2IDIuMjdjMCAuNjE3LS4xMTcgMS4xOTEtLjM1MyAxLjcyMWE0LjY5IDQuNjkgMCAwIDEtMS4wMDYgMS40Mzd6TTkuNjIzIDEwLjVINy40MDl2Mi4yMDFjMCAuMDgxLjAyOC4xNS4wOS4yMTIuMDYyLjA2MS4xMzEuMDkuMjEzLjA5aDEuNjA2YS4yODkuMjg5IDAgMCAwIC4yMTMtLjA5LjI4Ni4yODYgMCAwIDAgLjA5LS4yMTJWMTAuNXoiIGZpbGw9IiNGQzAiLz48L3N2Zz4=") 50% no-repeat}.monaco-editor.hc-black .lightbulb-glyph.autofixable,.monaco-editor.vs-dark .lightbulb-glyph.autofixable{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA5Yy0xLjY3IDAtMyAxLjMzLTMgM3MxLjMzIDMgMyAzIDMtMS4zMyAzLTMtMS4zMy0zLTMtM3ptLS43OTcgMy40NzFMMTAuNzA0IDE0IDEyIDEzLjAyNGwxLjMwNS45NzYtLjUwOC0xLjUyOUwxNCAxMS42NGgtMS40NjRMMTIgMTBsLS41MjcgMS42NEgxMGwxLjIwMy44MzF6IiBmaWxsPSIjNzVCRUZGIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS4xNyA4LjA4NUEzLjk3OSAzLjk3OSAwIDAgMCA4LjI4OCAxMC41SDYuNDA5djIuMjAxYzAgLjA4MS4wMjguMTUuMDkuMjEyLjA2Mi4wNjEuMTMxLjA5LjIxMy4wOWgxLjQxM2MuMDg5LjM0OC4yMjMuNjc4LjM5Ni45ODItLjA2Ni4wMS0uMTM0LjAxNS0uMjAzLjAxNUg2LjcxMmExLjI4NSAxLjI4NSAwIDAgMS0uOTIyLS4zNzkgMS4zMDMgMS4zMDMgMCAwIDEtLjM4LS45MnYtMS42YzAtLjQ3OS0uMDkyLS45MjEtLjI3NC0xLjMyOWEzLjU1NiAzLjU1NiAwIDAgMC0uNzc2LTEuMTE0IDQuNjg5IDQuNjg5IDAgMCAxLTEuMDA2LTEuNDM3QTQuMTg3IDQuMTg3IDAgMCAxIDMgNS41YTQuNDMyIDQuNDMyIDAgMCAxIC42MTYtMi4yN2MuMTk3LS4zMzYuNDMyLS42NC43MDUtLjkxNC4yNzQtLjI3Mi41NzgtLjUwNi45MTEtLjcwMi4zMzgtLjE5Ni43LS4zNDggMS4wODQtLjQ1NEM2LjcgMS4wNTMgNy4xIDEgNy41MTYgMWE0LjQ3NiA0LjQ3NiAwIDAgMSAyLjI3Ni42MTQgNC40NzUgNC40NzUgMCAwIDEgMS42MjIgMS42MTYgNC40MzggNC40MzggMCAwIDEgLjYxNiAyLjI3YzAgLjYxNy0uMTE3IDEuMTkxLS4zNTMgMS43MjFhNC41MzcgNC41MzcgMCAwIDEtLjUwNi44NjR6IiBmaWxsPSIjNzVCRUZGIi8+PC9zdmc+") 50% no-repeat}.monaco-editor .codelens-decoration{overflow:hidden;display:inline-block;text-overflow:ellipsis}.monaco-editor .codelens-decoration>a,.monaco-editor .codelens-decoration>span{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;vertical-align:sub}.monaco-editor .codelens-decoration>a{text-decoration:none}.monaco-editor .codelens-decoration>a:hover{text-decoration:underline;cursor:pointer}.monaco-editor .codelens-decoration.invisible-cl{opacity:0}@-webkit-keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}@keyframes fadein{0%{opacity:0;visibility:visible}to{opacity:1}}.monaco-editor .codelens-decoration.fadein{-webkit-animation:fadein .1s linear;animation:fadein .1s linear}.monaco-action-bar{text-align:right;overflow:hidden;white-space:nowrap}.monaco-action-bar .actions-container{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 auto;padding:0;width:100%;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.monaco-action-bar.vertical .actions-container{display:inline-block}.monaco-action-bar.reverse .actions-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.monaco-action-bar .action-item{cursor:pointer;display:inline-block;-webkit-transition:-webkit-transform 50ms ease;transition:-webkit-transform 50ms ease;transition:transform 50ms ease;transition:transform 50ms ease,-webkit-transform 50ms ease;position:relative}.monaco-action-bar .action-item.disabled{cursor:default}.monaco-action-bar.animated .action-item.active{-webkit-transform:scale(1.272019649);transform:scale(1.272019649)}.monaco-action-bar .action-item .icon{display:inline-block}.monaco-action-bar .action-label{font-size:11px;margin-right:4px}.monaco-action-bar .action-label.octicon{font-size:15px;line-height:35px;text-align:center}.monaco-action-bar .action-item.disabled .action-label,.monaco-action-bar .action-item.disabled .action-label:hover{opacity:.4}.monaco-action-bar.vertical{text-align:left}.monaco-action-bar.vertical .action-item{display:block}.monaco-action-bar.vertical .action-label.separator{display:block;border-bottom:1px solid #bbb;padding-top:1px;margin-left:.8em;margin-right:.8em}.monaco-action-bar.animated.vertical .action-item.active{-webkit-transform:translate(5px);transform:translate(5px)}.secondary-actions .monaco-action-bar .action-label{margin-left:6px}.monaco-action-bar .action-item.select-container{overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:170px;min-width:60px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.monaco-editor.vs .dnd-target{border-right:2px dotted #000;color:#fff}.monaco-editor.vs-dark .dnd-target{border-right:2px dotted #aeafad;color:#51504f}.monaco-editor.hc-black .dnd-target{border-right:2px dotted #fff;color:#000}.monaco-editor.hc-black.mac.mouse-default .view-lines,.monaco-editor.mouse-default .view-lines,.monaco-editor.vs-dark.mac.mouse-default .view-lines{cursor:default}.monaco-editor.hc-black.mac.mouse-copy .view-lines,.monaco-editor.mouse-copy .view-lines,.monaco-editor.vs-dark.mac.mouse-copy .view-lines{cursor:copy}.monaco-custom-checkbox{margin-left:2px;float:left;cursor:pointer;overflow:hidden;opacity:.7;width:20px;height:20px;border:1px solid transparent;padding:1px;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.monaco-custom-checkbox.checked,.monaco-custom-checkbox:hover{opacity:1}.hc-black .monaco-custom-checkbox,.hc-black .monaco-custom-checkbox:hover{background:none}.monaco-custom-checkbox.monaco-simple-checkbox{height:18px;width:18px;border:1px solid transparent;border-radius:3px;margin-right:9px;margin-left:0;padding:0;opacity:1;background-size:16px!important}.monaco-custom-checkbox.monaco-simple-checkbox.checked{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNSAzLjc2M2wtOS4xOTMgOC4xNzItLjcyMS0uMDQyTDEgNy4yOTZsLjc2My0uNjc4IDMuNzQ3IDQuMjE0TDE0LjMyMSAzbC42NzkuNzYzeiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat;background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNSAzLjc2M2wtOS4xOTMgOC4xNzItLjcyMS0uMDQyTDEgNy4yOTZsLjc2My0uNjc4IDMuNzQ3IDQuMjE0TDE0LjMyMSAzbC42NzkuNzYzeiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") 50% no-repeat}.vs .monaco-custom-checkbox.monaco-case-sensitive{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ5NSA5LjA1MmwuODkxIDIuMzVoMS4wOTFMNi4yMzcgM2gtMS4wMkwyIDExLjQwMmgxLjA5NWwuODM4LTIuMzVoMy41NjJ6TTUuODExIDQuNDUzbC4wNDQuMTM1IDEuMzE4IDMuNTc0SDQuMjU1bDEuMzA3LTMuNTc0LjA0NC0uMTM1LjAzOC0uMTU2LjAzMi0uMTUyLjAyMS0uMTI2aC4wMjNsLjAyNC4xMjYuMDI5LjE1Mi4wMzguMTU2em03Ljk4NCA2LjAxMXYuOTM2aC45NlY3LjQ5OGMwLS43MTktLjE4LTEuMjcyLS41MzktMS42NjEtLjM1OS0uMzg5LS44ODktLjU4My0xLjU4OC0uNTgzLS4xOTkgMC0uNDAxLjAxOS0uNjA2LjA1NmE0Ljg3NSA0Ljg3NSAwIDAgMC0xLjA3OC4zMjYgMi4wODEgMi4wODEgMCAwIDAtLjM0My4xODh2Ljk4NGMuMjY2LS4yMy41NjYtLjQxMS45MDQtLjU0YTIuOTI3IDIuOTI3IDAgMCAxIDEuMDUyLS4xOTNjLjE4OCAwIC4zNTguMDI4LjUxMy4wODVhLjk4Ljk4IDAgMCAxIC4zOTYuMjY3Yy4xMDkuMTIxLjE5My4yNzkuMjUyLjQ3Mi4wNTkuMTkzLjA4OC40MjcuMDg4LjdsLTEuODExLjI1MmMtLjM0NC4wNDctLjY0LjEyNi0uODg4LjIzN2ExLjk0NyAxLjk0NyAwIDAgMC0uNjE1LjQxOSAxLjYgMS42IDAgMCAwLS4zNi41OCAyLjEzNCAyLjEzNCAwIDAgMC0uMTE3LjcyMWMwIC4yNDYuMDQyLjQ3NS4xMjQuNjg4LjA4Mi4yMTMuMjAzLjM5Ny4zNjMuNTUxLjE2LjE1NC4zNi4yNzYuNTk4LjM2Ni4yMzguMDkuNTEzLjEzNS44MjYuMTM1LjQwMiAwIC43Ni0uMDkyIDEuMDc1LS4yNzguMzE1LS4xODYuNTcyLS40NTQuNzcxLS44MDZoLjAyM3ptLTIuMTI4LTEuNzQzYy4xNzYtLjA2NC40MDEtLjExNC42NzQtLjE0OWwxLjQ2NS0uMjA1di42MDljMCAuMjQ2LS4wNDEuNDc1LS4xMjMuNjg4YTEuNzI3IDEuNzI3IDAgMCAxLS4zNDMuNTU3IDEuNTczIDEuNTczIDAgMCAxLS41MjQuMzcyIDEuNjMgMS42MyAwIDAgMS0uNjY4LjEzNWMtLjE4NyAwLS4zNTMtLjAyNS0uNDk1LS4wNzZhMS4wMyAxLjAzIDAgMCAxLS4zNTctLjIxMS44OTYuODk2IDAgMCAxLS4yMi0uMzE2QTEuMDA1IDEuMDA1IDAgMCAxIDExIDkuNzMyYTEuNiAxLjYgMCAwIDEgLjA1NS0uNDQuNzM5LjczOSAwIDAgMSAuMjAyLS4zMzQgMS4xNiAxLjE2IDAgMCAxIC40MS0uMjM3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat}.vs-dark .monaco-custom-checkbox.monaco-case-sensitive{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ5NSA5LjA1MmwuODkxIDIuMzVoMS4wOTFMNi4yMzcgM2gtMS4wMkwyIDExLjQwMmgxLjA5NWwuODM4LTIuMzVoMy41NjJ6TTUuODExIDQuNDUzbC4wNDQuMTM1IDEuMzE4IDMuNTc0SDQuMjU1bDEuMzA3LTMuNTc0LjA0NC0uMTM1LjAzOC0uMTU2LjAzMi0uMTUyLjAyMS0uMTI2aC4wMjNsLjAyNC4xMjYuMDI5LjE1Mi4wMzguMTU2em03Ljk4NCA2LjAxMXYuOTM2aC45NlY3LjQ5OGMwLS43MTktLjE4LTEuMjcyLS41MzktMS42NjEtLjM1OS0uMzg5LS44ODktLjU4My0xLjU4OC0uNTgzLS4xOTkgMC0uNDAxLjAxOS0uNjA2LjA1NmE0Ljg3NSA0Ljg3NSAwIDAgMC0xLjA3OC4zMjYgMi4wODEgMi4wODEgMCAwIDAtLjM0My4xODh2Ljk4NGMuMjY2LS4yMy41NjYtLjQxMS45MDQtLjU0YTIuOTI3IDIuOTI3IDAgMCAxIDEuMDUyLS4xOTNjLjE4OCAwIC4zNTguMDI4LjUxMy4wODVhLjk4Ljk4IDAgMCAxIC4zOTYuMjY3Yy4xMDkuMTIxLjE5My4yNzkuMjUyLjQ3Mi4wNTkuMTkzLjA4OC40MjcuMDg4LjdsLTEuODExLjI1MmMtLjM0NC4wNDctLjY0LjEyNi0uODg4LjIzN2ExLjk0NyAxLjk0NyAwIDAgMC0uNjE1LjQxOSAxLjYgMS42IDAgMCAwLS4zNi41OCAyLjEzNCAyLjEzNCAwIDAgMC0uMTE3LjcyMWMwIC4yNDYuMDQyLjQ3NS4xMjQuNjg4LjA4Mi4yMTMuMjAzLjM5Ny4zNjMuNTUxLjE2LjE1NC4zNi4yNzYuNTk4LjM2Ni4yMzguMDkuNTEzLjEzNS44MjYuMTM1LjQwMiAwIC43Ni0uMDkyIDEuMDc1LS4yNzguMzE1LS4xODYuNTcyLS40NTQuNzcxLS44MDZoLjAyM3ptLTIuMTI4LTEuNzQzYy4xNzYtLjA2NC40MDEtLjExNC42NzQtLjE0OWwxLjQ2NS0uMjA1di42MDljMCAuMjQ2LS4wNDEuNDc1LS4xMjMuNjg4YTEuNzI3IDEuNzI3IDAgMCAxLS4zNDMuNTU3IDEuNTczIDEuNTczIDAgMCAxLS41MjQuMzcyIDEuNjMgMS42MyAwIDAgMS0uNjY4LjEzNWMtLjE4NyAwLS4zNTMtLjAyNS0uNDk1LS4wNzZhMS4wMyAxLjAzIDAgMCAxLS4zNTctLjIxMS44OTYuODk2IDAgMCAxLS4yMi0uMzE2QTEuMDA1IDEuMDA1IDAgMCAxIDExIDkuNzMyYTEuNiAxLjYgMCAwIDEgLjA1NS0uNDQuNzM5LjczOSAwIDAgMSAuMjAyLS4zMzQgMS4xNiAxLjE2IDAgMCAxIC40MS0uMjM3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") 50% no-repeat}.hc-black .monaco-custom-checkbox.monaco-case-sensitive,.hc-black .monaco-custom-checkbox.monaco-case-sensitive:hover{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ5NSA5LjA1MmwuODkxIDIuMzVoMS4wOTFMNi4yMzcgM2gtMS4wMkwyIDExLjQwMmgxLjA5NWwuODM4LTIuMzVoMy41NjJ6TTUuODExIDQuNDUzbC4wNDQuMTM1IDEuMzE4IDMuNTc0SDQuMjU1bDEuMzA3LTMuNTc0LjA0NC0uMTM1LjAzOC0uMTU2LjAzMi0uMTUyLjAyMS0uMTI2aC4wMjNsLjAyNC4xMjYuMDI5LjE1Mi4wMzguMTU2em03Ljk4NCA2LjAxMXYuOTM2aC45NlY3LjQ5OGMwLS43MTktLjE4LTEuMjcyLS41MzktMS42NjEtLjM1OS0uMzg5LS44ODktLjU4My0xLjU4OC0uNTgzLS4xOTkgMC0uNDAxLjAxOS0uNjA2LjA1NmE0Ljg3NSA0Ljg3NSAwIDAgMC0xLjA3OC4zMjYgMi4wODEgMi4wODEgMCAwIDAtLjM0My4xODh2Ljk4NGMuMjY2LS4yMy41NjYtLjQxMS45MDQtLjU0YTIuOTI3IDIuOTI3IDAgMCAxIDEuMDUyLS4xOTNjLjE4OCAwIC4zNTguMDI4LjUxMy4wODVhLjk4Ljk4IDAgMCAxIC4zOTYuMjY3Yy4xMDkuMTIxLjE5My4yNzkuMjUyLjQ3Mi4wNTkuMTkzLjA4OC40MjcuMDg4LjdsLTEuODExLjI1MmMtLjM0NC4wNDctLjY0LjEyNi0uODg4LjIzN2ExLjk0NyAxLjk0NyAwIDAgMC0uNjE1LjQxOSAxLjYgMS42IDAgMCAwLS4zNi41OCAyLjEzNCAyLjEzNCAwIDAgMC0uMTE3LjcyMWMwIC4yNDYuMDQyLjQ3NS4xMjQuNjg4LjA4Mi4yMTMuMjAzLjM5Ny4zNjMuNTUxLjE2LjE1NC4zNi4yNzYuNTk4LjM2Ni4yMzguMDkuNTEzLjEzNS44MjYuMTM1LjQwMiAwIC43Ni0uMDkyIDEuMDc1LS4yNzguMzE1LS4xODYuNTcyLS40NTQuNzcxLS44MDZoLjAyM3ptLTIuMTI4LTEuNzQzYy4xNzYtLjA2NC40MDEtLjExNC42NzQtLjE0OWwxLjQ2NS0uMjA1di42MDljMCAuMjQ2LS4wNDEuNDc1LS4xMjMuNjg4YTEuNzI3IDEuNzI3IDAgMCAxLS4zNDMuNTU3IDEuNTczIDEuNTczIDAgMCAxLS41MjQuMzcyIDEuNjMgMS42MyAwIDAgMS0uNjY4LjEzNWMtLjE4NyAwLS4zNTMtLjAyNS0uNDk1LS4wNzZhMS4wMyAxLjAzIDAgMCAxLS4zNTctLjIxMS44OTYuODk2IDAgMCAxLS4yMi0uMzE2QTEuMDA1IDEuMDA1IDAgMCAxIDExIDkuNzMyYTEuNiAxLjYgMCAwIDEgLjA1NS0uNDQuNzM5LjczOSAwIDAgMSAuMjAyLS4zMzQgMS4xNiAxLjE2IDAgMCAxIC40MS0uMjM3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==") 50% no-repeat}.vs .monaco-custom-checkbox.monaco-preserve-case{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNTM0IDEyLjQ2N0g3LjQzNmwtLjg5Ny0yLjM3M2gtMy41OWwtLjg0NSAyLjM3M0gxTDQuMjQ4IDRoMS4wMjdsMy4yNiA4LjQ2N3ptLTIuMzItMy4yNjVMNC44ODUgNS41OTRhMy40NTQgMy40NTQgMCAwIDEtLjEzLS41NjdoLS4wMjNjLS4wNC4yNC0uMDg1LjQzLS4xMzYuNTY3TDMuMjc5IDkuMjAyaDIuOTM1ek05Ljc4NiAxMi40NjdWNGgyLjQxYy43MzIgMCAxLjMxMi4xOCAxLjc0MS41MzcuNDMuMzU5LjY0NC44MjUuNjQ0IDEuNCAwIC40OC0uMTMuODk3LS4zOSAxLjI1Mi0uMjYuMzU0LS42MTguNjA2LTEuMDc1Ljc1NXYuMDI0Yy41NzEuMDY3IDEuMDI4LjI4MyAxLjM3LjY1LjM0My4zNjIuNTE0LjgzNC41MTQgMS40MTcgMCAuNzI0LS4yNiAxLjMxLS43OCAxLjc2LS41MTkuNDQ4LTEuMTc0LjY3Mi0xLjk2Ni42NzJIOS43ODZ6bS45OTItNy41N3YyLjczNGgxLjAxNmMuNTQzIDAgLjk3LS4xMyAxLjI4MS0uMzkuMzExLS4yNjMuNDY2LS42MzMuNDY2LTEuMTEgMC0uODIyLS41NC0xLjIzMy0xLjYyMy0xLjIzM2gtMS4xNHptMCAzLjYyNnYzLjA0N2gxLjM0NmMuNTgzIDAgMS4wMzQtLjEzOCAxLjM1My0uNDE0LjMyMi0uMjc1LjQ4NC0uNjUzLjQ4NC0xLjEzMyAwLTEtLjY4MS0xLjUtMi4wNDMtMS41aC0xLjE0eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat}.vs-dark .monaco-custom-checkbox.monaco-preserve-case{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNTM0IDEyLjQ2N0g3LjQzNmwtLjg5Ny0yLjM3M2gtMy41OWwtLjg0NSAyLjM3M0gxTDQuMjQ4IDRoMS4wMjdsMy4yNiA4LjQ2N3ptLTIuMzItMy4yNjVMNC44ODUgNS41OTRhMy40NTQgMy40NTQgMCAwIDEtLjEzLS41NjdoLS4wMjNjLS4wNC4yNC0uMDg1LjQzLS4xMzYuNTY3TDMuMjc5IDkuMjAyaDIuOTM1ek05Ljc4NiAxMi40NjdWNGgyLjQxYy43MzIgMCAxLjMxMi4xOCAxLjc0MS41MzcuNDMuMzU5LjY0NC44MjUuNjQ0IDEuNCAwIC40OC0uMTMuODk3LS4zOSAxLjI1Mi0uMjYuMzU0LS42MTguNjA2LTEuMDc1Ljc1NXYuMDI0Yy41NzEuMDY3IDEuMDI4LjI4MyAxLjM3LjY1LjM0My4zNjIuNTE0LjgzNC41MTQgMS40MTcgMCAuNzI0LS4yNiAxLjMxLS43OCAxLjc2LS41MTkuNDQ4LTEuMTc0LjY3Mi0xLjk2Ni42NzJIOS43ODZ6bS45OTItNy41N3YyLjczNGgxLjAxNmMuNTQzIDAgLjk3LS4xMyAxLjI4MS0uMzkuMzExLS4yNjMuNDY2LS42MzMuNDY2LTEuMTEgMC0uODIyLS41NC0xLjIzMy0xLjYyMy0xLjIzM2gtMS4xNHptMCAzLjYyNnYzLjA0N2gxLjM0NmMuNTgzIDAgMS4wMzQtLjEzOCAxLjM1My0uNDE0LjMyMi0uMjc1LjQ4NC0uNjUzLjQ4NC0xLjEzMyAwLTEtLjY4MS0xLjUtMi4wNDMtMS41aC0xLjE0eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") 50% no-repeat}.hc-black .monaco-custom-checkbox.monaco-preserve-case,.hc-black .monaco-custom-checkbox.monaco-preserve-case:hover{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTguNTM0IDEyLjQ2N0g3LjQzNmwtLjg5Ny0yLjM3M2gtMy41OWwtLjg0NSAyLjM3M0gxTDQuMjQ4IDRoMS4wMjdsMy4yNiA4LjQ2N3ptLTIuMzItMy4yNjVMNC44ODUgNS41OTRhMy40NTQgMy40NTQgMCAwIDEtLjEzLS41NjdoLS4wMjNjLS4wNC4yNC0uMDg1LjQzLS4xMzYuNTY3TDMuMjc5IDkuMjAyaDIuOTM1ek05Ljc4NiAxMi40NjdWNGgyLjQxYy43MzIgMCAxLjMxMi4xOCAxLjc0MS41MzcuNDMuMzU5LjY0NC44MjUuNjQ0IDEuNCAwIC40OC0uMTMuODk3LS4zOSAxLjI1Mi0uMjYuMzU0LS42MTguNjA2LTEuMDc1Ljc1NXYuMDI0Yy41NzEuMDY3IDEuMDI4LjI4MyAxLjM3LjY1LjM0My4zNjIuNTE0LjgzNC41MTQgMS40MTcgMCAuNzI0LS4yNiAxLjMxLS43OCAxLjc2LS41MTkuNDQ4LTEuMTc0LjY3Mi0xLjk2Ni42NzJIOS43ODZ6bS45OTItNy41N3YyLjczNGgxLjAxNmMuNTQzIDAgLjk3LS4xMyAxLjI4MS0uMzkuMzExLS4yNjMuNDY2LS42MzMuNDY2LTEuMTEgMC0uODIyLS41NC0xLjIzMy0xLjYyMy0xLjIzM2gtMS4xNHptMCAzLjYyNnYzLjA0N2gxLjM0NmMuNTgzIDAgMS4wMzQtLjEzOCAxLjM1My0uNDE0LjMyMi0uMjc1LjQ4NC0uNjUzLjQ4NC0xLjEzMyAwLTEtLjY4MS0xLjUtMi4wNDMtMS41aC0xLjE0eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==") 50% no-repeat}.vs .monaco-custom-checkbox.monaco-whole-word{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDJoMTR2MUgxVjJ6bTEzIDJoLTF2OGgxVjR6bS0yLjcyOCA0LjM4N2EyLjM1MyAyLjM1MyAwIDAgMC0uMzYtLjc4NiAxLjc0NiAxLjc0NiAwIDAgMC0uNjA5LS41MyAxLjgzMiAxLjgzMiAwIDAgMC0uODY2LS4xOTNjLS4xOTggMC0uMzguMDI0LS41NDcuMDczYTEuNzYgMS43NiAwIDAgMC0uNDUzLjIwNSAxLjcyNCAxLjcyNCAwIDAgMC0uMzY1LjMxOGwtLjE3OS4yNThWNC41NzhIN1YxMmguODkzdi0uNTc1bC4xMjYuMTc1Yy4wODcuMTAyLjE4OS4xOS4zMDQuMjY5LjExNy4wNzguMjQ5LjE0LjM5OC4xODYuMTQ5LjA0Ni4zMTQuMDY4LjQ5OC4wNjguMzUzIDAgLjY2Ni0uMDcxLjkzNy0uMjEyLjI3Mi0uMTQzLjQ5OS0uMzM4LjY4Mi0uNTg2LjE4My0uMjUuMzIxLS41NDMuNDE0LS44NzkuMDkzLS4zMzguMTQtLjcwMy4xNC0xLjA5N2EzLjc1NiAzLjc1NiAwIDAgMC0uMTItLjk2MnpNOS43OTMgNy43OGMuMTUxLjA3MS4yODIuMTc2LjM5LjMxNC4xMDkuMTQuMTk0LjMxMy4yNTUuNTE3LjA1MS4xNzQuMDgyLjM3MS4wODkuNTg3bC0uMDA3LjEyNWMwIC4zMjctLjAzMy42Mi0uMS44NjlhMS44ODYgMS44ODYgMCAwIDEtLjI3OC42MTRjLS4xMTcuMTYyLS4yNi4yODUtLjQyMS4zNjYtLjMyMi4xNjItLjc2LjE2Ni0xLjA2OS4wMTVhMS4yNjQgMS4yNjQgMCAwIDEtLjM5My0uMjk2IDEuMjczIDEuMjczIDAgMCAxLS4yMTgtLjM2N3MtLjE3OS0uNDQ3LS4xNzktLjk0N2MwLS41LjE3OS0xLjAwMi4xNzktMS4wMDIuMDYyLS4xNzcuMTM2LS4zMTguMjI0LS40My4xMTQtLjE0My4yNTYtLjI1OS40MjQtLjM0NS4xNjgtLjA4Ni4zNjUtLjEyOS41ODctLjEyOS4xOSAwIC4zNjQuMDM3LjUxNy4xMDl6TTE1IDEzSDF2MWgxNHYtMXpNMi44MTMgMTBsLS43MjggMi4wMzFIMWwuMDI1LS4wNzIgMi40NDEtNy4wODZoLjk0MWwyLjQ4NSA3LjE1OEg1LjgxTDUuMDMyIDEwSDIuODEzem0xLjEyMS0zLjU3OGgtLjAyMmwtLjkwNSAyLjc1M2gxLjg0MWwtLjkxNC0yLjc1M3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=") 50% no-repeat}.vs-dark .monaco-custom-checkbox.monaco-whole-word{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDJoMTR2MUgxVjJ6bTEzIDJoLTF2OGgxVjR6bS0yLjcyOCA0LjM4N2EyLjM1MyAyLjM1MyAwIDAgMC0uMzYtLjc4NiAxLjc0NiAxLjc0NiAwIDAgMC0uNjA5LS41MyAxLjgzMiAxLjgzMiAwIDAgMC0uODY2LS4xOTNjLS4xOTggMC0uMzguMDI0LS41NDcuMDczYTEuNzYgMS43NiAwIDAgMC0uNDUzLjIwNSAxLjcyNCAxLjcyNCAwIDAgMC0uMzY1LjMxOGwtLjE3OS4yNThWNC41NzhIN1YxMmguODkzdi0uNTc1bC4xMjYuMTc1Yy4wODcuMTAyLjE4OS4xOS4zMDQuMjY5LjExNy4wNzguMjQ5LjE0LjM5OC4xODYuMTQ5LjA0Ni4zMTQuMDY4LjQ5OC4wNjguMzUzIDAgLjY2Ni0uMDcxLjkzNy0uMjEyLjI3Mi0uMTQzLjQ5OS0uMzM4LjY4Mi0uNTg2LjE4My0uMjUuMzIxLS41NDMuNDE0LS44NzkuMDkzLS4zMzguMTQtLjcwMy4xNC0xLjA5N2EzLjc1NiAzLjc1NiAwIDAgMC0uMTItLjk2MnpNOS43OTMgNy43OGMuMTUxLjA3MS4yODIuMTc2LjM5LjMxNC4xMDkuMTQuMTk0LjMxMy4yNTUuNTE3LjA1MS4xNzQuMDgyLjM3MS4wODkuNTg3bC0uMDA3LjEyNWMwIC4zMjctLjAzMy42Mi0uMS44NjlhMS44ODYgMS44ODYgMCAwIDEtLjI3OC42MTRjLS4xMTcuMTYyLS4yNi4yODUtLjQyMS4zNjYtLjMyMi4xNjItLjc2LjE2Ni0xLjA2OS4wMTVhMS4yNjQgMS4yNjQgMCAwIDEtLjM5My0uMjk2IDEuMjczIDEuMjczIDAgMCAxLS4yMTgtLjM2N3MtLjE3OS0uNDQ3LS4xNzktLjk0N2MwLS41LjE3OS0xLjAwMi4xNzktMS4wMDIuMDYyLS4xNzcuMTM2LS4zMTguMjI0LS40My4xMTQtLjE0My4yNTYtLjI1OS40MjQtLjM0NS4xNjgtLjA4Ni4zNjUtLjEyOS41ODctLjEyOS4xOSAwIC4zNjQuMDM3LjUxNy4xMDl6TTE1IDEzSDF2MWgxNHYtMXpNMi44MTMgMTBsLS43MjggMi4wMzFIMWwuMDI1LS4wNzIgMi40NDEtNy4wODZoLjk0MWwyLjQ4NSA3LjE1OEg1LjgxTDUuMDMyIDEwSDIuODEzem0xLjEyMS0zLjU3OGgtLjAyMmwtLjkwNSAyLjc1M2gxLjg0MWwtLjkxNC0yLjc1M3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") 50% no-repeat}.hc-black .monaco-custom-checkbox.monaco-whole-word,.hc-black .monaco-custom-checkbox.monaco-whole-word:hover{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDJoMTR2MUgxVjJ6bTEzIDJoLTF2OGgxVjR6bS0yLjcyOCA0LjM4N2EyLjM1MyAyLjM1MyAwIDAgMC0uMzYtLjc4NiAxLjc0NiAxLjc0NiAwIDAgMC0uNjA5LS41MyAxLjgzMiAxLjgzMiAwIDAgMC0uODY2LS4xOTNjLS4xOTggMC0uMzguMDI0LS41NDcuMDczYTEuNzYgMS43NiAwIDAgMC0uNDUzLjIwNSAxLjcyNCAxLjcyNCAwIDAgMC0uMzY1LjMxOGwtLjE3OS4yNThWNC41NzhIN1YxMmguODkzdi0uNTc1bC4xMjYuMTc1Yy4wODcuMTAyLjE4OS4xOS4zMDQuMjY5LjExNy4wNzguMjQ5LjE0LjM5OC4xODYuMTQ5LjA0Ni4zMTQuMDY4LjQ5OC4wNjguMzUzIDAgLjY2Ni0uMDcxLjkzNy0uMjEyLjI3Mi0uMTQzLjQ5OS0uMzM4LjY4Mi0uNTg2LjE4My0uMjUuMzIxLS41NDMuNDE0LS44NzkuMDkzLS4zMzguMTQtLjcwMy4xNC0xLjA5N2EzLjc1NiAzLjc1NiAwIDAgMC0uMTItLjk2MnpNOS43OTMgNy43OGMuMTUxLjA3MS4yODIuMTc2LjM5LjMxNC4xMDkuMTQuMTk0LjMxMy4yNTUuNTE3LjA1MS4xNzQuMDgyLjM3MS4wODkuNTg3bC0uMDA3LjEyNWMwIC4zMjctLjAzMy42Mi0uMS44NjlhMS44ODYgMS44ODYgMCAwIDEtLjI3OC42MTRjLS4xMTcuMTYyLS4yNi4yODUtLjQyMS4zNjYtLjMyMi4xNjItLjc2LjE2Ni0xLjA2OS4wMTVhMS4yNjQgMS4yNjQgMCAwIDEtLjM5My0uMjk2IDEuMjczIDEuMjczIDAgMCAxLS4yMTgtLjM2N3MtLjE3OS0uNDQ3LS4xNzktLjk0N2MwLS41LjE3OS0xLjAwMi4xNzktMS4wMDIuMDYyLS4xNzcuMTM2LS4zMTguMjI0LS40My4xMTQtLjE0My4yNTYtLjI1OS40MjQtLjM0NS4xNjgtLjA4Ni4zNjUtLjEyOS41ODctLjEyOS4xOSAwIC4zNjQuMDM3LjUxNy4xMDl6TTE1IDEzSDF2MWgxNHYtMXpNMi44MTMgMTBsLS43MjggMi4wMzFIMWwuMDI1LS4wNzIgMi40NDEtNy4wODZoLjk0MWwyLjQ4NSA3LjE1OEg1LjgxTDUuMDMyIDEwSDIuODEzem0xLjEyMS0zLjU3OGgtLjAyMmwtLjkwNSAyLjc1M2gxLjg0MWwtLjkxNC0yLjc1M3oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=") 50% no-repeat}.vs .monaco-custom-checkbox.monaco-regex{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wMTIgMmguOTc2djMuMTEzbDIuNTYtMS41NTcuNDg2Ljg4NUwxMS40NyA2bDIuNTY0IDEuNTU5LS40ODUuODg1LTIuNTYxLTEuNTU3VjEwaC0uOTc2VjYuODg3bC0yLjU2IDEuNTU3LS40ODYtLjg4NUw5LjUzIDYgNi45NjYgNC40NDFsLjQ4NS0uODg1IDIuNTYxIDEuNTU3VjJ6TTIgMTBoNHY0SDJ2LTR6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+") 50% no-repeat}.vs-dark .monaco-custom-checkbox.monaco-regex{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wMTIgMmguOTc2djMuMTEzbDIuNTYtMS41NTcuNDg2Ljg4NUwxMS40NyA2bDIuNTY0IDEuNTU5LS40ODUuODg1LTIuNTYxLTEuNTU3VjEwaC0uOTc2VjYuODg3bC0yLjU2IDEuNTU3LS40ODYtLjg4NUw5LjUzIDYgNi45NjYgNC40NDFsLjQ4NS0uODg1IDIuNTYxIDEuNTU3VjJ6TTIgMTBoNHY0SDJ2LTR6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+") 50% no-repeat}.hc-black .monaco-custom-checkbox.monaco-regex,.hc-black .monaco-custom-checkbox.monaco-regex:hover{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wMTIgMmguOTc2djMuMTEzbDIuNTYtMS41NTcuNDg2Ljg4NUwxMS40NyA2bDIuNTY0IDEuNTU5LS40ODUuODg1LTIuNTYxLTEuNTU3VjEwaC0uOTc2VjYuODg3bC0yLjU2IDEuNTU3LS40ODYtLjg4NUw5LjUzIDYgNi45NjYgNC40NDFsLjQ4NS0uODg1IDIuNTYxIDEuNTU3VjJ6TTIgMTBoNHY0SDJ2LTR6IiBmaWxsPSIjZmZmIi8+PC9zdmc+") 50% no-repeat}.monaco-checkbox .label{width:12px;height:12px;border:1px solid #000;background-color:transparent;display:inline-block}.monaco-checkbox .checkbox{position:absolute;overflow:hidden;clip:rect(0 0 0 0);height:1px;width:1px;margin:-1px;padding:0;border:0}.monaco-checkbox .checkbox:checked+.label{background-color:#000}.monaco-editor .find-widget{position:absolute;z-index:10;top:-44px;height:33px;overflow:hidden;line-height:19px;-webkit-transition:top .2s linear;transition:top .2s linear;padding:0 4px;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor .find-widget.hiddenEditor{display:none}.monaco-editor .find-widget.replaceToggled{top:-74px}.monaco-editor .find-widget.replaceToggled>.replace-part{display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex}.monaco-editor .find-widget.replaceToggled.visible,.monaco-editor .find-widget.visible{top:0}.monaco-editor .find-widget.multipleline{top:unset;bottom:10px}.monaco-editor .find-widget.multipleline.replaceToggled.visible,.monaco-editor .find-widget.multipleline.visible{top:0;bottom:unset}.monaco-editor .find-widget .monaco-inputbox.synthetic-focus{outline:1px solid -webkit-focus-ring-color;outline-offset:-1px}.monaco-editor .find-widget .monaco-inputbox .input{background-color:transparent;min-height:0}.monaco-editor .find-widget .monaco-findInput .input{font-size:13px}.monaco-editor .find-widget>.find-part,.monaco-editor .find-widget>.replace-part{margin:4px 0 0 17px;font-size:12px;display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex}.monaco-editor .find-widget>.find-part .monaco-inputbox,.monaco-editor .find-widget>.replace-part .monaco-inputbox{min-height:25px}.monaco-editor .find-widget>.replace-part .monaco-inputbox>.wrapper>.mirror{padding-right:22px}.monaco-editor .find-widget>.find-part .monaco-inputbox>.wrapper>.input,.monaco-editor .find-widget>.find-part .monaco-inputbox>.wrapper>.mirror,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.wrapper>.input,.monaco-editor .find-widget>.replace-part .monaco-inputbox>.wrapper>.mirror{padding-top:2px;padding-bottom:2px}.monaco-editor .find-widget>.find-part .find-actions,.monaco-editor .find-widget>.replace-part .replace-actions{height:25px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.monaco-editor .find-widget .monaco-findInput{vertical-align:middle;display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element{width:100%}.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical{opacity:0}.monaco-editor .find-widget .matchesCount{margin:0 0 0 3px;padding:2px 0 0 2px;height:25px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;line-height:23px}.monaco-editor .find-widget .button,.monaco-editor .find-widget .matchesCount{display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex;-webkit-box-flex:initial;-ms-flex:initial;flex:initial}.monaco-editor .find-widget .button{min-width:20px;width:20px;height:20px;margin-left:3px;background-position:50%;background-repeat:no-repeat;cursor:pointer}.monaco-editor .find-widget .button:not(.disabled):hover{background-color:rgba(0,0,0,.1)}.monaco-editor .find-widget .button.left{margin-left:0;margin-right:3px}.monaco-editor .find-widget .button.wide{width:auto;padding:1px 6px;top:-1px}.monaco-editor .find-widget .button.toggle{position:absolute;top:0;left:0;width:18px;height:100%;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.monaco-editor .find-widget .button.toggle.disabled{display:none}.monaco-editor .find-widget .previous{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44NTQgNi4yOTNsLTUtNWgtLjcwOGwtNSA1TDMuODU0IDcgOCAyLjg1NFYxNS4wNmgxVjIuODU0TDEzLjE0NiA3bC43MDctLjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .find-widget .next{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjE0NiA5Ljc2OGw1IDVoLjcwOGw1LTUtLjcwOC0uNzA3TDkgMTMuMjA3VjFIOHYxMi4yMDdMMy44NTQgOS4wNjFsLS43MDguNzA3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .find-widget .disabled{opacity:.3;cursor:default}.monaco-editor .find-widget .monaco-checkbox{width:20px;height:20px;display:inline-block;vertical-align:middle;margin-left:3px}.monaco-editor .find-widget .monaco-checkbox .label{content:"";display:inline-block;background-repeat:no-repeat;background-position:50%;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgMTJ2LTFoOXYxSDF6bTAtNWgxNHYxSDFWN3ptMTEtNHYxSDFWM2gxMXoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=");width:20px;height:20px;border:none}.monaco-editor .find-widget .monaco-checkbox .checkbox:disabled+.label{opacity:.3;cursor:default}.monaco-editor .find-widget .monaco-checkbox .checkbox:not(:disabled)+.label{cursor:pointer}.monaco-editor .find-widget .monaco-checkbox .checkbox:not(:disabled):hover:before+.label{background-color:#ddd}.monaco-editor .find-widget .monaco-checkbox .checkbox:checked+.label{background-color:hsla(0,0%,39.2%,.2)}.monaco-editor .find-widget .close-fw{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwOC0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .find-widget .expand{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .find-widget .collapse{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYyTDExIDguMzA4di0uNjE4TDYuMzMzIDMuMDI0bC0uNjE4LjYxOUwxMC4wNzIgOHoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .find-widget .replace{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjIyMSAzLjczOWwyLjI2MSAyLjI2OUw3LjcgMy43ODRsLS43LS43LTEuMDEyIDEuMDA3LS4wMDgtMS42YS41MjMuNTIzIDAgMCAxIC41LS41MjZIOFYxSDYuNDhBMS40ODIgMS40ODIgMCAwIDAgNSAyLjQ4OVY0LjFMMy45MjcgMy4wMzNsLS43MDYuNzA2em02LjY3IDEuNzk0aC4wMWMuMTgzLjMxMS40NTEuNDY3LjgwNi40NjcuMzkzIDAgLjcwNi0uMTY4Ljk0LS41MDMuMjM2LS4zMzUuMzUzLS43OC4zNTMtMS4zMzMgMC0uNTExLS4xLS45MTMtLjMwMS0xLjIwNy0uMjAxLS4yOTUtLjQ4OC0uNDQyLS44Ni0uNDQyLS40MDUgMC0uNzE4LjE5NC0uOTM4LjU4MWgtLjAxVjFIOXY0LjkxOWguODl2LS4zODZ6bS0uMDE1LTEuMDYxdi0uMzRjMC0uMjQ4LjA1OC0uNDQ4LjE3NS0uNjAxYS41NC41NCAwIDAgMSAuNDQ1LS4yMy40OS40OSAwIDAgMSAuNDM2LjIzM2MuMTA0LjE1NC4xNTUuMzY4LjE1NS42NDMgMCAuMzMtLjA1Ni41ODctLjE2OS43NjhhLjUyNC41MjQgMCAwIDEtLjQ3LjI3LjQ5NS40OTUgMCAwIDEtLjQxMS0uMjExLjg1My44NTMgMCAwIDEtLjE2LS41MzJ6TTkgMTIuNzY5Yy0uMjU2LjE1NC0uNjI1LjIzMS0xLjEwOC4yMzEtLjU2MyAwLTEuMDItLjE3OC0xLjM2OS0uNTMzLS4zNDktLjM1NS0uNTIzLS44MTMtLjUyMy0xLjM3NCAwLS42NDguMTg2LTEuMTU4LjU2LTEuNTMuMzc0LS4zNzYuODc1LS41NjMgMS41LS41NjMuNDMzIDAgLjc0Ni4wNi45NC4xNzl2Ljk5OGExLjI2IDEuMjYgMCAwIDAtLjc5Mi0uMjc2Yy0uMzI1IDAtLjU4My4xLS43NzQuMjk4LS4xOS4xOTYtLjI4My40NjgtLjI4My44MTYgMCAuMzM4LjA5LjYwMy4yNzIuNzk3LjE4Mi4xOTEuNDMxLjI4Ny43NDkuMjg3LjI4MiAwIC41NTgtLjA5Mi44MjgtLjI3NnYuOTQ2ek00IDdMMyA4djZsMSAxaDdsMS0xVjhsLTEtMUg0em0wIDFoN3Y2SDRWOHoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .find-widget .replace-all{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42IDIuNjc3Yy4xNDctLjMxLjM1Ni0uNDY1LjYyNi0uNDY1LjI0OCAwIC40NC4xMTguNTczLjM1My4xMzQuMjM2LjIwMS41NTcuMjAxLjk2NiAwIC40NDMtLjA3OC43OTgtLjIzNSAxLjA2Ny0uMTU2LjI2OC0uMzY1LjQwMi0uNjI3LjQwMi0uMjM3IDAtLjQxNi0uMTI1LS41MzctLjM3NGgtLjAwOHYuMzFIMTFWMWguNTkzdjEuNjc3aC4wMDh6bS0uMDE2IDEuMWEuNzguNzggMCAwIDAgLjEwNy40MjZjLjA3MS4xMTMuMTYzLjE2OS4yNzQuMTY5LjEzNiAwIC4yNC0uMDcyLjMxNC0uMjE2LjA3NS0uMTQ1LjExMy0uMzUuMTEzLS42MTUgMC0uMjItLjAzNS0uMzktLjEwNC0uNTE0LS4wNjctLjEyNC0uMTY0LS4xODctLjI5LS4xODctLjEyIDAtLjIxOS4wNjItLjI5Ny4xODVhLjg4Ni44ODYgMCAwIDAtLjExNy40OHYuMjcyek00LjEyIDcuNjk1TDIgNS41NjhsLjY2Mi0uNjYyIDEuMDA2IDF2LTEuNTFBMS4zOSAxLjM5IDAgMCAxIDUuMDU1IDNINy40di45MDVINS4wNTVhLjQ5LjQ5IDAgMCAwLS40NjguNDkzbC4wMDcgMS41Ljk0OS0uOTQ0LjY1Ni42NTYtMi4wOCAyLjA4NXpNOS4zNTYgNC45M0gxMFYzLjIyQzEwIDIuNDA4IDkuNjg1IDIgOS4wNTYgMmMtLjEzNSAwLS4yODUuMDI0LS40NS4wNzNhMS40NDQgMS40NDQgMCAwIDAtLjM4OC4xNjd2LjY2NWMuMjM3LS4yMDMuNDg3LS4zMDQuNzUtLjMwNC4yNjEgMCAuMzkyLjE1Ni4zOTIuNDY5bC0uNi4xMDNjLS41MDYuMDg2LS43Ni40MDYtLjc2Ljk2MSAwIC4yNjMuMDYxLjQ3My4xODMuNjMxQS42MS42MSAwIDAgMCA4LjY5IDVjLjI5IDAgLjUwOS0uMTYuNjU3LS40OGguMDA5di40MXptLjAwNC0xLjM1NXYuMTkzYzAgLjE3NS0uMDQuMzItLjEyLjQzNmEuMzY4LjM2OCAwIDAgMS0uMzEzLjE3LjI3Ni4yNzYgMCAwIDEtLjIyLS4wOTUuMzguMzggMCAwIDEtLjA4LS4yNDhjMC0uMjIyLjExLS4zNTEuMzMyLS4zODlsLjQtLjA2N3pNNyAxMi45M2gtLjY0NHYtLjQxaC0uMDA5Yy0uMTQ4LjMyLS4zNjcuNDgtLjY1Ny40OGEuNjEuNjEgMCAwIDEtLjUwNy0uMjM1Yy0uMTIyLS4xNTgtLjE4My0uMzY4LS4xODMtLjYzIDAtLjU1Ni4yNTQtLjg3Ni43Ni0uOTYybC42LS4xMDNjMC0uMzEzLS4xMy0uNDctLjM5Mi0uNDctLjI2MyAwLS41MTMuMTAyLS43NS4zMDV2LS42NjVjLjA5NS0uMDYzLjIyNC0uMTE5LjM4OC0uMTY3LjE2NS0uMDQ5LjMxNS0uMDczLjQ1LS4wNzMuNjMgMCAuOTQ0LjQwNy45NDQgMS4yMnYxLjcxem0tLjY0LTEuMTYydi0uMTkzbC0uNC4wNjhjLS4yMjIuMDM3LS4zMzMuMTY2LS4zMzMuMzg4IDAgLjEuMDI3LjE4My4wOC4yNDhhLjI3Ni4yNzYgMCAwIDAgLjIyLjA5NS4zNjguMzY4IDAgMCAwIC4zMTItLjE3Yy4wOC0uMTE2LjEyLS4yNi4xMi0uNDM2ek05LjI2MiAxM2MuMzIxIDAgLjU2OC0uMDU4LjczOC0uMTczdi0uNzFhLjkuOSAwIDAgMS0uNTUyLjIwNy42MTkuNjE5IDAgMCAxLS41LS4yMTVjLS4xMi0uMTQ1LS4xODEtLjM0NS0uMTgxLS41OTggMC0uMjYuMDYzLS40NjQuMTg5LS42MTJhLjY0NC42NDQgMCAwIDEgLjUxNi0uMjIzYy4xOTQgMCAuMzcuMDY5LjUyOC4yMDd2LS43NDljLS4xMjktLjA5LS4zMzgtLjEzNC0uNjI2LS4xMzQtLjQxNyAwLS43NTEuMTQtMS4wMDEuNDIyLS4yNDkuMjgtLjM3My42NjItLjM3MyAxLjE0OCAwIC40Mi4xMTYuNzY0LjM0OSAxLjAzLjIzMi4yNjcuNTM3LjQuOTEzLjR6TTIgOWwxLTFoOWwxIDF2NWwtMSAxSDNsLTEtMVY5em0xIDB2NWg5VjlIM3ptMy0ybDEtMWg3bDEgMXY1bC0xIDFWN0g2eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .find-widget>.replace-part{display:none}.monaco-editor .find-widget>.replace-part>.monaco-findInput{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex;vertical-align:middle;-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.monaco-editor .find-widget>.replace-part>.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.monaco-editor .find-widget.reduced-find-widget .matchesCount,.monaco-editor .find-widget.reduced-find-widget .monaco-checkbox{display:none}.monaco-editor .find-widget.narrow-find-widget{max-width:257px!important}.monaco-editor .find-widget.collapsed-find-widget{max-width:170px!important}.monaco-editor .find-widget.collapsed-find-widget .button.next,.monaco-editor .find-widget.collapsed-find-widget .button.previous,.monaco-editor .find-widget.collapsed-find-widget .button.replace,.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,.monaco-editor .find-widget.collapsed-find-widget>.find-part .monaco-findInput .controls{display:none}.monaco-editor .findMatch{-webkit-animation-duration:0;-webkit-animation-name:inherit!important;-moz-animation-duration:0;-moz-animation-name:inherit!important;-ms-animation-duration:0;-ms-animation-name:inherit!important;animation-duration:0;animation-name:inherit!important}.monaco-editor .find-widget .monaco-sash{width:2px!important;margin-left:-4px}.monaco-editor.hc-black .find-widget .previous,.monaco-editor.vs-dark .find-widget .previous{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44NTQgNi4yOTNsLTUtNWgtLjcwOGwtNSA1TDMuODU0IDcgOCAyLjg1NFYxNS4wNmgxVjIuODU0TDEzLjE0NiA3bC43MDctLjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .find-widget .next,.monaco-editor.vs-dark .find-widget .next{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjE0NiA5Ljc2OGw1IDVoLjcwOGw1LTUtLjcwOC0uNzA3TDkgMTMuMjA3VjFIOHYxMi4yMDdMMy44NTQgOS4wNjFsLS43MDguNzA3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .find-widget .monaco-checkbox .label,.monaco-editor.vs-dark .find-widget .monaco-checkbox .label{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgMTJ2LTFoOXYxSDF6bTAtNWgxNHYxSDFWN3ptMTEtNHYxSDFWM2gxMXoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.vs-dark .find-widget .monaco-checkbox .checkbox:not(:disabled):hover:before+.label{background-color:hsla(0,0%,100%,.1)}.monaco-editor.hc-black .find-widget .close-fw,.monaco-editor.vs-dark .find-widget .close-fw{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwOC0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .find-widget .replace,.monaco-editor.vs-dark .find-widget .replace{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjIyMSAzLjczOWwyLjI2MSAyLjI2OUw3LjcgMy43ODRsLS43LS43LTEuMDEyIDEuMDA3LS4wMDgtMS42YS41MjMuNTIzIDAgMCAxIC41LS41MjZIOFYxSDYuNDhBMS40ODIgMS40ODIgMCAwIDAgNSAyLjQ4OVY0LjFMMy45MjcgMy4wMzNsLS43MDYuNzA2em02LjY3IDEuNzk0aC4wMWMuMTgzLjMxMS40NTEuNDY3LjgwNi40NjcuMzkzIDAgLjcwNi0uMTY4Ljk0LS41MDMuMjM2LS4zMzUuMzUzLS43OC4zNTMtMS4zMzMgMC0uNTExLS4xLS45MTMtLjMwMS0xLjIwNy0uMjAxLS4yOTUtLjQ4OC0uNDQyLS44Ni0uNDQyLS40MDUgMC0uNzE4LjE5NC0uOTM4LjU4MWgtLjAxVjFIOXY0LjkxOWguODl2LS4zODZ6bS0uMDE1LTEuMDYxdi0uMzRjMC0uMjQ4LjA1OC0uNDQ4LjE3NS0uNjAxYS41NC41NCAwIDAgMSAuNDQ1LS4yMy40OS40OSAwIDAgMSAuNDM2LjIzM2MuMTA0LjE1NC4xNTUuMzY4LjE1NS42NDMgMCAuMzMtLjA1Ni41ODctLjE2OS43NjhhLjUyNC41MjQgMCAwIDEtLjQ3LjI3LjQ5NS40OTUgMCAwIDEtLjQxMS0uMjExLjg1My44NTMgMCAwIDEtLjE2LS41MzJ6TTkgMTIuNzY5Yy0uMjU2LjE1NC0uNjI1LjIzMS0xLjEwOC4yMzEtLjU2MyAwLTEuMDItLjE3OC0xLjM2OS0uNTMzLS4zNDktLjM1NS0uNTIzLS44MTMtLjUyMy0xLjM3NCAwLS42NDguMTg2LTEuMTU4LjU2LTEuNTMuMzc0LS4zNzYuODc1LS41NjMgMS41LS41NjMuNDMzIDAgLjc0Ni4wNi45NC4xNzl2Ljk5OGExLjI2IDEuMjYgMCAwIDAtLjc5Mi0uMjc2Yy0uMzI1IDAtLjU4My4xLS43NzQuMjk4LS4xOS4xOTYtLjI4My40NjgtLjI4My44MTYgMCAuMzM4LjA5LjYwMy4yNzIuNzk3LjE4Mi4xOTEuNDMxLjI4Ny43NDkuMjg3LjI4MiAwIC41NTgtLjA5Mi44MjgtLjI3NnYuOTQ2ek00IDdMMyA4djZsMSAxaDdsMS0xVjhsLTEtMUg0em0wIDFoN3Y2SDRWOHoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .find-widget .replace-all,.monaco-editor.vs-dark .find-widget .replace-all{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42IDIuNjc3Yy4xNDctLjMxLjM1Ni0uNDY1LjYyNi0uNDY1LjI0OCAwIC40NC4xMTguNTczLjM1My4xMzQuMjM2LjIwMS41NTcuMjAxLjk2NiAwIC40NDMtLjA3OC43OTgtLjIzNSAxLjA2Ny0uMTU2LjI2OC0uMzY1LjQwMi0uNjI3LjQwMi0uMjM3IDAtLjQxNi0uMTI1LS41MzctLjM3NGgtLjAwOHYuMzFIMTFWMWguNTkzdjEuNjc3aC4wMDh6bS0uMDE2IDEuMWEuNzguNzggMCAwIDAgLjEwNy40MjZjLjA3MS4xMTMuMTYzLjE2OS4yNzQuMTY5LjEzNiAwIC4yNC0uMDcyLjMxNC0uMjE2LjA3NS0uMTQ1LjExMy0uMzUuMTEzLS42MTUgMC0uMjItLjAzNS0uMzktLjEwNC0uNTE0LS4wNjctLjEyNC0uMTY0LS4xODctLjI5LS4xODctLjEyIDAtLjIxOS4wNjItLjI5Ny4xODVhLjg4Ni44ODYgMCAwIDAtLjExNy40OHYuMjcyek00LjEyIDcuNjk1TDIgNS41NjhsLjY2Mi0uNjYyIDEuMDA2IDF2LTEuNTFBMS4zOSAxLjM5IDAgMCAxIDUuMDU1IDNINy40di45MDVINS4wNTVhLjQ5LjQ5IDAgMCAwLS40NjguNDkzbC4wMDcgMS41Ljk0OS0uOTQ0LjY1Ni42NTYtMi4wOCAyLjA4NXpNOS4zNTYgNC45M0gxMFYzLjIyQzEwIDIuNDA4IDkuNjg1IDIgOS4wNTYgMmMtLjEzNSAwLS4yODUuMDI0LS40NS4wNzNhMS40NDQgMS40NDQgMCAwIDAtLjM4OC4xNjd2LjY2NWMuMjM3LS4yMDMuNDg3LS4zMDQuNzUtLjMwNC4yNjEgMCAuMzkyLjE1Ni4zOTIuNDY5bC0uNi4xMDNjLS41MDYuMDg2LS43Ni40MDYtLjc2Ljk2MSAwIC4yNjMuMDYxLjQ3My4xODMuNjMxQS42MS42MSAwIDAgMCA4LjY5IDVjLjI5IDAgLjUwOS0uMTYuNjU3LS40OGguMDA5di40MXptLjAwNC0xLjM1NXYuMTkzYzAgLjE3NS0uMDQuMzItLjEyLjQzNmEuMzY4LjM2OCAwIDAgMS0uMzEzLjE3LjI3Ni4yNzYgMCAwIDEtLjIyLS4wOTUuMzguMzggMCAwIDEtLjA4LS4yNDhjMC0uMjIyLjExLS4zNTEuMzMyLS4zODlsLjQtLjA2N3pNNyAxMi45M2gtLjY0NHYtLjQxaC0uMDA5Yy0uMTQ4LjMyLS4zNjcuNDgtLjY1Ny40OGEuNjEuNjEgMCAwIDEtLjUwNy0uMjM1Yy0uMTIyLS4xNTgtLjE4My0uMzY4LS4xODMtLjYzIDAtLjU1Ni4yNTQtLjg3Ni43Ni0uOTYybC42LS4xMDNjMC0uMzEzLS4xMy0uNDctLjM5Mi0uNDctLjI2MyAwLS41MTMuMTAyLS43NS4zMDV2LS42NjVjLjA5NS0uMDYzLjIyNC0uMTE5LjM4OC0uMTY3LjE2NS0uMDQ5LjMxNS0uMDczLjQ1LS4wNzMuNjMgMCAuOTQ0LjQwNy45NDQgMS4yMnYxLjcxem0tLjY0LTEuMTYydi0uMTkzbC0uNC4wNjhjLS4yMjIuMDM3LS4zMzMuMTY2LS4zMzMuMzg4IDAgLjEuMDI3LjE4My4wOC4yNDhhLjI3Ni4yNzYgMCAwIDAgLjIyLjA5NS4zNjguMzY4IDAgMCAwIC4zMTItLjE3Yy4wOC0uMTE2LjEyLS4yNi4xMi0uNDM2ek05LjI2MiAxM2MuMzIxIDAgLjU2OC0uMDU4LjczOC0uMTczdi0uNzFhLjkuOSAwIDAgMS0uNTUyLjIwNy42MTkuNjE5IDAgMCAxLS41LS4yMTVjLS4xMi0uMTQ1LS4xODEtLjM0NS0uMTgxLS41OTggMC0uMjYuMDYzLS40NjQuMTg5LS42MTJhLjY0NC42NDQgMCAwIDEgLjUxNi0uMjIzYy4xOTQgMCAuMzcuMDY5LjUyOC4yMDd2LS43NDljLS4xMjktLjA5LS4zMzgtLjEzNC0uNjI2LS4xMzQtLjQxNyAwLS43NTEuMTQtMS4wMDEuNDIyLS4yNDkuMjgtLjM3My42NjItLjM3MyAxLjE0OCAwIC40Mi4xMTYuNzY0LjM0OSAxLjAzLjIzMi4yNjcuNTM3LjQuOTEzLjR6TTIgOWwxLTFoOWwxIDF2NWwtMSAxSDNsLTEtMVY5em0xIDB2NWg5VjlIM3ptMy0ybDEtMWg3bDEgMXY1bC0xIDFWN0g2eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .find-widget .expand,.monaco-editor.vs-dark .find-widget .expand{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .find-widget .collapse,.monaco-editor.vs-dark .find-widget .collapse{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYyTDExIDguMzA4di0uNjE4TDYuMzMzIDMuMDI0bC0uNjE4LjYxOUwxMC4wNzIgOHoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .find-widget .button:not(.disabled):hover,.monaco-editor.vs-dark .find-widget .button:not(.disabled):hover{background-color:hsla(0,0%,100%,.1)}.monaco-editor.hc-black .find-widget .button:before{position:relative;top:1px;left:2px}.monaco-editor.hc-black .find-widget .monaco-checkbox .checkbox:checked+.label{background-color:hsla(0,0%,100%,.1)}.monaco-sash{position:absolute;z-index:35;-ms-touch-action:none;touch-action:none}.monaco-sash.disabled{pointer-events:none}.monaco-sash.vertical{cursor:ew-resize;top:0;width:4px;height:100%}.monaco-sash.mac.vertical{cursor:col-resize}.monaco-sash.vertical.minimum{cursor:e-resize}.monaco-sash.vertical.maximum{cursor:w-resize}.monaco-sash.horizontal{cursor:ns-resize;left:0;width:100%;height:4px}.monaco-sash.mac.horizontal{cursor:row-resize}.monaco-sash.horizontal.minimum{cursor:s-resize}.monaco-sash.horizontal.maximum{cursor:n-resize}.monaco-sash:not(.disabled).orthogonal-end:after,.monaco-sash:not(.disabled).orthogonal-start:before{content:" ";height:8px;width:8px;z-index:100;display:block;cursor:all-scroll;position:absolute}.monaco-sash.orthogonal-start.vertical:before{left:-2px;top:-4px}.monaco-sash.orthogonal-end.vertical:after{left:-2px;bottom:-4px}.monaco-sash.orthogonal-start.horizontal:before{top:-2px;left:-4px}.monaco-sash.orthogonal-end.horizontal:after{top:-2px;right:-4px}.monaco-sash.disabled{cursor:default!important;pointer-events:none!important}.monaco-sash.touch.vertical{width:20px}.monaco-sash.touch.horizontal{height:20px}.monaco-sash.debug{background:#0ff}.monaco-sash.debug.disabled{background:rgba(0,255,255,.2)}.monaco-sash.debug:not(.disabled).orthogonal-end:after,.monaco-sash.debug:not(.disabled).orthogonal-start:before{background:red}.monaco-findInput{position:relative}.monaco-findInput .monaco-inputbox{font-size:13px;width:100%}.monaco-findInput>.controls{position:absolute;top:3px;right:2px}.vs .monaco-findInput.disabled{background-color:#e1e1e1}.vs-dark .monaco-findInput.disabled{background-color:#333}.monaco-findInput.highlight-0 .controls{-webkit-animation:monaco-findInput-highlight-0 .1s linear 0s;animation:monaco-findInput-highlight-0 .1s linear 0s}.monaco-findInput.highlight-1 .controls{-webkit-animation:monaco-findInput-highlight-1 .1s linear 0s;animation:monaco-findInput-highlight-1 .1s linear 0s}.hc-black .monaco-findInput.highlight-0 .controls,.vs-dark .monaco-findInput.highlight-0 .controls{-webkit-animation:monaco-findInput-highlight-dark-0 .1s linear 0s;animation:monaco-findInput-highlight-dark-0 .1s linear 0s}.hc-black .monaco-findInput.highlight-1 .controls,.vs-dark .monaco-findInput.highlight-1 .controls{-webkit-animation:monaco-findInput-highlight-dark-1 .1s linear 0s;animation:monaco-findInput-highlight-dark-1 .1s linear 0s}@-webkit-keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@keyframes monaco-findInput-highlight-0{0%{background:rgba(253,255,0,.8)}to{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@keyframes monaco-findInput-highlight-1{0%{background:rgba(253,255,0,.8)}99%{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@keyframes monaco-findInput-highlight-dark-0{0%{background:hsla(0,0%,100%,.44)}to{background:transparent}}@-webkit-keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}@keyframes monaco-findInput-highlight-dark-1{0%{background:hsla(0,0%,100%,.44)}99%{background:transparent}}.monaco-inputbox{position:relative;display:block;padding:0;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;line-height:auto!important;font-size:inherit}.monaco-inputbox.idle{border:1px solid transparent}.monaco-inputbox>.wrapper>.input,.monaco-inputbox>.wrapper>.mirror{padding:4px}.monaco-inputbox>.wrapper{position:relative;width:100%;height:100%}.monaco-inputbox>.wrapper>.input{display:inline-block;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;line-height:inherit;border:none;font-family:inherit;font-size:inherit;resize:none;color:inherit}.monaco-inputbox>.wrapper>input{text-overflow:ellipsis}.monaco-inputbox>.wrapper>textarea.input{display:block;-ms-overflow-style:none;overflow:-moz-scrollbars-none;scrollbar-width:none;outline:none}.monaco-inputbox>.wrapper>textarea.input::-webkit-scrollbar{display:none}.monaco-inputbox>.wrapper>.mirror{position:absolute;display:inline-block;width:100%;top:0;left:0;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;white-space:pre-wrap;visibility:hidden;word-wrap:break-word}.monaco-inputbox-container{text-align:right}.monaco-inputbox-container .monaco-inputbox-message{display:inline-block;overflow:hidden;text-align:left;width:100%;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;padding:.4em;font-size:12px;line-height:17px;min-height:34px;margin-top:-1px;word-wrap:break-word}.monaco-inputbox .monaco-action-bar{position:absolute;right:2px;top:4px}.monaco-inputbox .monaco-action-bar .action-item{margin-left:2px}.monaco-inputbox .monaco-action-bar .action-item .icon{background-repeat:no-repeat;width:16px;height:16px}.monaco-scrollable-element>.scrollbar>.up-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuNDggOC45NjFsMS4yNi0xLjI2LTUuMDQtNS4wNC01LjQ2IDUuMDQgMS4yNiAxLjI2IDQuMi0zLjc4IDMuNzggMy43OHoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=");cursor:pointer}.monaco-scrollable-element>.scrollbar>.down-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMSAxMSI+PHBhdGggZmlsbD0iIzQyNDI0MiIgZD0iTTEuNSAyLjY2MkwuMjQgMy45MjJsNS4wNCA1LjA0IDUuNDYtNS4wNC0xLjI2LTEuMjYtNC4yIDMuNzgtMy43OC0zLjc4eiIvPjwvc3ZnPg==");cursor:pointer}.monaco-scrollable-element>.scrollbar>.left-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMSAxMSI+PHBhdGggZmlsbD0iIzQyNDI0MiIgZD0iTTguNjQgMS40NDFMNy4zOC4xODFsLTUuMDQgNS4wNCA1LjA0IDUuNDYgMS4yNi0xLjI2LTMuNzgtNC4yIDMuNzgtMy43OHoiLz48L3N2Zz4=");cursor:pointer}.monaco-scrollable-element>.scrollbar>.right-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iIzQyNDI0MiIgZD0iTTIuNDY3IDkuNTQ4bDEuMjYgMS4yNiA1LjA0LTUuMDQtNS4wNC01LjQ2LTEuMjYgMS4yNiAzLjc4IDQuMi0zLjc4IDMuNzh6Ii8+PC9zdmc+");cursor:pointer}.hc-black .monaco-scrollable-element>.scrollbar>.up-arrow,.vs-dark .monaco-scrollable-element>.scrollbar>.up-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkuNDggOC45NjFsMS4yNi0xLjI2LTUuMDQtNS4wNC01LjQ2IDUuMDQgMS4yNiAxLjI2IDQuMi0zLjc4IDMuNzggMy43OHoiIGZpbGw9IiNFOEU4RTgiLz48L3N2Zz4=")}.hc-black .monaco-scrollable-element>.scrollbar>.down-arrow,.vs-dark .monaco-scrollable-element>.scrollbar>.down-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMSAxMSI+PHBhdGggZmlsbD0iI0U4RThFOCIgZD0iTTEuNSAyLjY2MkwuMjQgMy45MjJsNS4wNCA1LjA0IDUuNDYtNS4wNC0xLjI2LTEuMjYtNC4yIDMuNzgtMy43OC0zLjc4eiIvPjwvc3ZnPg==")}.hc-black .monaco-scrollable-element>.scrollbar>.left-arrow,.vs-dark .monaco-scrollable-element>.scrollbar>.left-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMSAxMSI+PHBhdGggZmlsbD0iI0U4RThFOCIgZD0iTTguNjQgMS40NDFMNy4zOC4xODFsLTUuMDQgNS4wNCA1LjA0IDUuNDYgMS4yNi0xLjI2LTMuNzgtNC4yIDMuNzgtMy43OHoiLz48L3N2Zz4=")}.hc-black .monaco-scrollable-element>.scrollbar>.right-arrow,.vs-dark .monaco-scrollable-element>.scrollbar>.right-arrow{background:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTEgMTEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI0U4RThFOCIgZD0iTTIuNDY3IDkuNTQ4bDEuMjYgMS4yNiA1LjA0LTUuMDQtNS4wNC01LjQ2LTEuMjYgMS4yNiAzLjc4IDQuMi0zLjc4IDMuNzh6Ii8+PC9zdmc+")}.monaco-scrollable-element>.visible{opacity:1;background:transparent;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.monaco-scrollable-element>.invisible{opacity:0;pointer-events:none}.monaco-scrollable-element>.invisible.fade{-webkit-transition:opacity .8s linear;transition:opacity .8s linear}.monaco-scrollable-element>.shadow{position:absolute;display:none}.monaco-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;-webkit-box-shadow:#ddd 0 6px 6px -6px inset;box-shadow:inset 0 6px 6px -6px #ddd}.monaco-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;-webkit-box-shadow:#ddd 6px 0 6px -6px inset;box-shadow:inset 6px 0 6px -6px #ddd}.monaco-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.monaco-scrollable-element>.shadow.top.left{-webkit-box-shadow:#ddd 6px 6px 6px -6px inset;box-shadow:inset 6px 6px 6px -6px #ddd}.vs .monaco-scrollable-element>.scrollbar>.slider{background:hsla(0,0%,39.2%,.4)}.vs-dark .monaco-scrollable-element>.scrollbar>.slider{background:hsla(0,0%,47.5%,.4)}.hc-black .monaco-scrollable-element>.scrollbar>.slider{background:rgba(111,195,223,.6)}.monaco-scrollable-element>.scrollbar>.slider:hover{background:hsla(0,0%,39.2%,.7)}.hc-black .monaco-scrollable-element>.scrollbar>.slider:hover{background:rgba(111,195,223,.8)}.monaco-scrollable-element>.scrollbar>.slider.active{background:rgba(0,0,0,.6)}.vs-dark .monaco-scrollable-element>.scrollbar>.slider.active{background:hsla(0,0%,74.9%,.4)}.hc-black .monaco-scrollable-element>.scrollbar>.slider.active{background:#6fc3df}.vs-dark .monaco-scrollable-element .shadow.top{-webkit-box-shadow:none;box-shadow:none}.vs-dark .monaco-scrollable-element .shadow.left{-webkit-box-shadow:#000 6px 0 6px -6px inset;box-shadow:inset 6px 0 6px -6px #000}.vs-dark .monaco-scrollable-element .shadow.top.left{-webkit-box-shadow:#000 6px 6px 6px -6px inset;box-shadow:inset 6px 6px 6px -6px #000}.hc-black .monaco-scrollable-element .shadow.left,.hc-black .monaco-scrollable-element .shadow.top,.hc-black .monaco-scrollable-element .shadow.top.left{-webkit-box-shadow:none;box-shadow:none}.monaco-editor .margin-view-overlays .folding{cursor:pointer;background-repeat:no-repeat;background-origin:border-box;background-position:calc(50% + 2px) 50%;background-size:auto calc(100% - 3px);opacity:0;-webkit-transition:opacity .5s;transition:opacity .5s;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor.hc-black .margin-view-overlays .folding,.monaco-editor.vs-dark .margin-view-overlays .folding{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .margin-view-overlays .folding{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==")}.monaco-editor .margin-view-overlays .folding.alwaysShowFoldIcons,.monaco-editor .margin-view-overlays:hover .folding{opacity:1}.monaco-editor .margin-view-overlays .folding.collapsed{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+");opacity:1}.monaco-editor.vs-dark .margin-view-overlays .folding.collapsed{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .margin-view-overlays .folding.collapsed{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+")}.monaco-editor .inline-folded:after{color:grey;margin:.1em .2em 0 .2em;content:"\22EF";display:inline;line-height:1em;cursor:pointer}.monaco-editor .peekview-widget .head{-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex}.monaco-editor .peekview-widget .head .peekview-title{display:inline-block;font-size:13px;margin-left:20px;cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty){font-size:.9em;margin-left:.5em}.monaco-editor .peekview-widget .head .peekview-actions{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;padding-right:2px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar{display:inline-block}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar,.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar>.actions-container{height:100%}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar .action-item{margin-left:4px}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar .action-label{width:16px;height:100%;margin:0;line-height:inherit;background-repeat:no-repeat;background-position:50%}.monaco-editor .peekview-widget .head .peekview-actions>.monaco-action-bar .action-label.octicon{margin:0}.monaco-editor .peekview-widget .head .peekview-actions .action-label.icon.close-peekview-action{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ2LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDdMOCA4LjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=") 50% no-repeat}.monaco-editor .peekview-widget>.body{border-top:1px solid;position:relative}.monaco-editor.hc-black .peekview-widget .head .peekview-actions .action-label.icon.close-peekview-action,.monaco-editor.vs-dark .peekview-widget .head .peekview-actions .action-label.icon.close-peekview-action{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ2LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDdMOCA4LjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") 50% no-repeat}.monaco-editor .peekview-widget .peekview-actions .icon.chevron-up{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44NTQgNi4yOTNsLTUtNWgtLjcwOGwtNSA1TDMuODU0IDcgOCAyLjg1NFYxNS4wNmgxVjIuODU0TDEzLjE0NiA3bC43MDctLjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=") 50% no-repeat}.hc-black .monaco-editor .peekview-widget .peekview-actions .icon.chevron-up,.vs-dark .monaco-editor .peekview-widget .peekview-actions .icon.chevron-up{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMy44NTQgNi4yOTNsLTUtNWgtLjcwOGwtNSA1TDMuODU0IDcgOCAyLjg1NFYxNS4wNmgxVjIuODU0TDEzLjE0NiA3bC43MDctLjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") 50% no-repeat}.monaco-editor .peekview-widget .peekview-actions .icon.chevron-down{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjE0NiA5Ljc2OGw1IDVoLjcwOGw1LTUtLjcwOC0uNzA3TDkgMTMuMjA3VjFIOHYxMi4yMDdMMy44NTQgOS4wNjFsLS43MDguNzA3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat}.hc-black .monaco-editor .peekview-widget .peekview-actions .icon.chevron-down,.vs-dark .monaco-editor .peekview-widget .peekview-actions .icon.chevron-down{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjE0NiA5Ljc2OGw1IDVoLjcwOGw1LTUtLjcwOC0uNzA3TDkgMTMuMjA3VjFIOHYxMi4yMDdMMy44NTQgOS4wNjFsLS43MDguNzA3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") 50% no-repeat}::-ms-clear{display:none}.monaco-editor .editor-widget input{color:inherit}.monaco-editor{position:relative;overflow:visible;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"liga" off,"calt" off;font-feature-settings:"liga" off,"calt" off}.monaco-editor.enable-ligatures{-webkit-font-feature-settings:"liga" on,"calt" on;font-feature-settings:"liga" on,"calt" on}.monaco-editor .overflow-guard{position:relative;overflow:hidden}.monaco-editor .view-overlays{position:absolute;top:0}.monaco-editor .vs-whitespace{display:inline-block}.monaco-editor .inputarea{min-width:0;min-height:0;margin:0;padding:0;position:absolute;outline:none!important;resize:none;border:none;overflow:hidden;color:transparent;background-color:transparent}.monaco-editor .inputarea.ime-input{z-index:10}.monaco-editor .margin-view-overlays .line-numbers{position:absolute;text-align:right;display:inline-block;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:default;height:100%}.monaco-editor .relative-current-line-number{text-align:left;display:inline-block;width:100%}.monaco-editor .margin-view-overlays .line-numbers{cursor:-webkit-image-set(url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNSIgaGVpZ2h0PSIyNSI+PHBhdGggZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjMDAwIiBkPSJNMTQuNSAxLjJMMS45IDEzLjhIN2wtMy44IDcuNyAzLjEgMSAzLjgtNy42IDQuNCAzLjF6Ii8+PC9zdmc+") 1x,url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMCIgaGVpZ2h0PSI1MCI+PHBhdGggZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjMDAwIiBzdHJva2Utd2lkdGg9IjIiIGQ9Ik0yOSAyLjRMMy44IDI3LjZIMTRMNi40IDQzbDYuMiAyIDcuNi0xNS4yTDI5IDM2eiIvPjwvc3ZnPg==") 2x) 30 0,default}.monaco-editor.mac .margin-view-overlays .line-numbers{cursor:-webkit-image-set(url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMyIgaGVpZ2h0PSIxOSI+PHBhdGggZD0iTTUuMyAxNi42bDEuNi00LjdIMi4xTDEyLjUgMS4ydjE0LjRMOS43IDEzbC0xLjYgNC42Yy0uMi41LS44LjgtMS4zLjZsLS44LS4zYy0uNi0uMi0uOS0uNy0uNy0xLjN6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPjwvc3ZnPg==") 1x,url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNiIgaGVpZ2h0PSIzOCI+PHBhdGggZD0iTTEwLjYgMzMuMmwzLjItOS40SDQuMkwyNSAyLjR2MjguOEwxOS40IDI2bC0zLjIgOS4yYy0uNCAxLTEuNiAxLjYtMi42IDEuMmwtMS42LS42Yy0xLjItLjQtMS44LTEuNC0xLjQtMi42eiIgc3Ryb2tlPSIjZmZmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz48L3N2Zz4=") 2x) 24 3,default}.monaco-editor .margin-view-overlays .line-numbers.lh-odd{margin-top:1px}.monaco-editor .margin-view-overlays .current-line,.monaco-editor .view-overlays .current-line{display:block;position:absolute;left:0;top:0;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both{border-right:0}.monaco-editor .lines-content .cdr{position:absolute}.monaco-editor .glyph-margin{position:absolute;top:0}.monaco-editor .lines-content .cigr,.monaco-editor .lines-content .cigra,.monaco-editor .margin-view-overlays .cgmr{position:absolute}.monaco-editor.no-user-select .lines-content,.monaco-editor.no-user-select .view-line,.monaco-editor.no-user-select .view-lines{-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.monaco-editor .view-lines{cursor:text;white-space:nowrap}.monaco-editor.hc-black.mac .view-lines,.monaco-editor.vs-dark.mac .view-lines{cursor:-webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x,url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8,text}.monaco-editor .view-line{position:absolute;width:100%}.monaco-editor .lines-decorations{position:absolute;top:0;background:#fff}.monaco-editor .margin-view-overlays .cldr{position:absolute;height:100%}.monaco-editor .margin-view-overlays .cmdr{position:absolute;left:0;width:100%;height:100%}.monaco-editor .minimap.slider-mouseover .minimap-slider{opacity:0;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.monaco-editor .minimap.slider-mouseover .minimap-slider.active,.monaco-editor .minimap.slider-mouseover:hover .minimap-slider{opacity:1}.monaco-editor .minimap-shadow-hidden{position:absolute;width:0}.monaco-editor .minimap-shadow-visible{position:absolute;left:-6px;width:6px}.monaco-editor .overlayWidgets{position:absolute;top:0;left:0}.monaco-editor .view-ruler{position:absolute;top:0}.monaco-editor .scroll-decoration{position:absolute;top:0;left:0;height:6px}.monaco-editor .lines-content .cslr{position:absolute}.monaco-editor .top-left-radius{border-top-left-radius:3px}.monaco-editor .bottom-left-radius{border-bottom-left-radius:3px}.monaco-editor .top-right-radius{border-top-right-radius:3px}.monaco-editor .bottom-right-radius{border-bottom-right-radius:3px}.monaco-editor.hc-black .top-left-radius{border-top-left-radius:0}.monaco-editor.hc-black .bottom-left-radius{border-bottom-left-radius:0}.monaco-editor.hc-black .top-right-radius{border-top-right-radius:0}.monaco-editor.hc-black .bottom-right-radius{border-bottom-right-radius:0}.monaco-editor .cursors-layer{position:absolute;top:0}.monaco-editor .cursors-layer>.cursor{position:absolute;cursor:text;overflow:hidden}.monaco-editor .cursors-layer.cursor-smooth-caret-animation>.cursor{-webkit-transition:80ms;transition:80ms}.monaco-editor .cursors-layer.cursor-block-outline-style>.cursor{-webkit-box-sizing:border-box;box-sizing:border-box;background:transparent!important;border-style:solid;border-width:1px}.monaco-editor .cursors-layer.cursor-underline-style>.cursor{border-bottom-width:2px;border-bottom-style:solid;background:transparent!important;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor .cursors-layer.cursor-underline-thin-style>.cursor{border-bottom-width:1px;border-bottom-style:solid;background:transparent!important;-webkit-box-sizing:border-box;box-sizing:border-box}@-webkit-keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@keyframes monaco-cursor-smooth{0%,20%{opacity:1}60%,to{opacity:0}}@-webkit-keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@keyframes monaco-cursor-phase{0%,20%{opacity:1}90%,to{opacity:0}}@-webkit-keyframes monaco-cursor-expand{0%,20%{-webkit-transform:scaleY(1);transform:scaleY(1)}80%,to{-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes monaco-cursor-expand{0%,20%{-webkit-transform:scaleY(1);transform:scaleY(1)}80%,to{-webkit-transform:scaleY(0);transform:scaleY(0)}}.cursor-smooth{-webkit-animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-smooth .5s ease-in-out 0s 20 alternate}.cursor-phase{-webkit-animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-phase .5s ease-in-out 0s 20 alternate}.cursor-expand>.cursor{-webkit-animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate;animation:monaco-cursor-expand .5s ease-in-out 0s 20 alternate}.monaco-editor .zone-widget{position:absolute;z-index:10}.monaco-editor .zone-widget .zone-widget-container{border-top-style:solid;border-bottom-style:solid;border-top-width:0;border-bottom-width:0;position:relative}.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget{border-top-width:1px;border-bottom-width:1px}.monaco-editor .reference-zone-widget .inline{display:inline-block;vertical-align:top}.monaco-editor .reference-zone-widget .messages{height:100%;width:100%;text-align:center;padding:3em 0}.monaco-editor .reference-zone-widget .ref-tree{line-height:23px}.monaco-editor .reference-zone-widget .ref-tree .reference{text-overflow:ellipsis;overflow:hidden}.monaco-editor .reference-zone-widget .ref-tree .reference-file{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:100%;height:100%}.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file{color:inherit!important}.monaco-editor .reference-zone-widget .ref-tree .reference-file .count{margin-right:12px;margin-left:auto}.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file{font-weight:700}.monaco-icon-label{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;text-overflow:ellipsis}.monaco-icon-label:before{background-size:16px;background-position:0;background-repeat:no-repeat;padding-right:6px;width:16px;height:22px;display:inline-block;-webkit-font-smoothing:antialiased;vertical-align:top;-ms-flex-negative:0;flex-shrink:0}.monaco-icon-label>.monaco-icon-label-description-container{overflow:hidden;text-overflow:ellipsis}.monaco-icon-label>.monaco-icon-label-description-container>.label-name{color:inherit;white-space:pre}.monaco-icon-label>.monaco-icon-label-description-container>.label-description{opacity:.7;margin-left:.5em;font-size:.9em;white-space:pre}.monaco-icon-label.italic>.monaco-icon-label-description-container>.label-description,.monaco-icon-label.italic>.monaco-icon-label-description-container>.label-name{font-style:italic}.monaco-icon-label:after{opacity:.75;font-size:90%;font-weight:600;padding:0 12px 0 5px;margin-left:auto;text-align:center}.monaco-list:focus .selected .monaco-icon-label,.monaco-list:focus .selected .monaco-icon-label:after,.monaco-tree.focused .selected .monaco-icon-label,.monaco-tree.focused .selected .monaco-icon-label:after{color:inherit!important}.monaco-list-row.focused.selected .label-description,.monaco-list-row.selected .label-description,.monaco-tree-row.focused.selected .label-description,.monaco-tree-row.selected .label-description{opacity:.8}.monaco-count-badge{padding:3px 5px;border-radius:11px;font-size:11px;min-width:18px;min-height:18px;line-height:11px;font-weight:400;text-align:center;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-list{position:relative;height:100%;width:100%;white-space:nowrap}.monaco-list.mouse-support{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;-o-user-select:none;user-select:none}.monaco-list>.monaco-scrollable-element{height:100%}.monaco-list-rows{position:relative;width:100%;height:100%}.monaco-list.horizontal-scrolling .monaco-list-rows{width:auto;min-width:100%}.monaco-list-row{position:absolute;-o-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;width:100%}.monaco-list.mouse-support .monaco-list-row{cursor:pointer;-ms-touch-action:none;touch-action:none}.monaco-list-row.scrolling{display:none!important}.monaco-list.element-focused,.monaco-list.selection-multiple,.monaco-list.selection-single{outline:0!important}.monaco-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute}.monaco-list-type-filter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;border-radius:2px;padding:0 3px;max-width:calc(100% - 10px);text-overflow:ellipsis;overflow:hidden;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:all-scroll;font-size:13px;line-height:18px;height:20px;z-index:1;top:4px}.monaco-list-type-filter.dragging{-webkit-transition:top .2s,left .2s;transition:top .2s,left .2s}.monaco-list-type-filter.ne{right:4px}.monaco-list-type-filter.nw{left:4px}.monaco-list-type-filter>.controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .2s;transition:width .2s;width:0}.monaco-list-type-filter.dragging>.controls,.monaco-list-type-filter:hover>.controls{width:36px}.monaco-list-type-filter>.controls>*{-webkit-box-sizing:border-box;box-sizing:border-box;width:16px;height:16px;margin:0 0 0 2px;-ms-flex-negative:0;flex-shrink:0}.monaco-list-type-filter>.controls>.filter{-webkit-appearance:none;width:16px;height:16px;background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgMTJ2LTFoOXYxSDF6bTAtNWgxNHYxSDFWN3ptMTEtNHYxSDFWM2gxMXoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=");background-position:50% 50%;cursor:pointer}.monaco-list-type-filter>.controls>.filter:checked{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgMTJ2LTFoNHYxSDZ6TTQgN2g4djFINFY3em0xMC00djFIMlYzaDEyeiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.vs-dark .monaco-list-type-filter>.controls>.filter{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgMTJ2LTFoOXYxSDF6bTAtNWgxNHYxSDFWN3ptMTEtNHYxSDFWM2gxMXoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.vs-dark .monaco-list-type-filter>.controls>.filter:checked{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgMTJ2LTFoNHYxSDZ6TTQgN2g4djFINFY3em0xMC00djFIMlYzaDEyeiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.hc-black .monaco-list-type-filter>.controls>.filter{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEgMTJ2LTFoOXYxSDF6bTAtNWgxNHYxSDFWN3ptMTEtNHYxSDFWM2gxMXoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.hc-black .monaco-list-type-filter>.controls>.filter:checked{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTYgMTJ2LTFoNHYxSDZ6TTQgN2g4djFINFY3em0xMC00djFIMlYzaDEyeiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==")}.monaco-list-type-filter>.controls>.clear{border:none;background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=");cursor:pointer}.hc-black .monaco-list-type-filter>.controls>.clear,.vs-dark .monaco-list-type-filter>.controls>.clear{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-list-type-filter-message{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;height:100%;top:0;left:0;padding:40px 1em 1em 1em;text-align:center;white-space:normal;opacity:.7;pointer-events:none}.monaco-list-type-filter-message:empty{display:none}.monaco-list-type-filter{cursor:-webkit-grab;cursor:grab}.monaco-list-type-filter.dragging{cursor:-webkit-grabbing;cursor:grabbing}.monaco-tl-row{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.monaco-tl-indent{height:100%;position:absolute;top:0;left:18px;pointer-events:none}.hide-arrows .monaco-tl-indent{left:12px}.monaco-tl-indent>.indent-guide{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;border-left:1px solid transparent;-webkit-transition:border-color .1s linear;transition:border-color .1s linear}.monaco-tl-contents,.monaco-tl-twistie{height:100%}.monaco-tl-twistie{font-size:10px;text-align:right;margin-right:6px;-ms-flex-negative:0;flex-shrink:0;width:16px}.monaco-tl-contents{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.monaco-tl-twistie.collapsible{background-size:16px;background-position:3px 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-tl-twistie.collapsible.collapsed:not(.loading){display:inline-block;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.vs-dark .monaco-tl-twistie.collapsible:not(.loading){background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.vs-dark .monaco-tl-twistie.collapsible.collapsed:not(.loading){background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.hc-black .monaco-tl-twistie.collapsible:not(.loading){background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjIuNjE4TDguMjg0IDExaC0uNjE4TDMgNi4zMzNsLjYxOS0uNjE4IDQuMzU3IDQuMzU3eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==")}.hc-black .monaco-tl-twistie.collapsible.collapsed:not(.loading){background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+")}.monaco-tl-twistie.loading{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvc3ZnPg==");background-position:0}.vs-dark .monaco-tl-twistie.loading{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48ZyBmaWxsPSJncmF5Ij48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvZz48L3N2Zz4=")}.hc-black .monaco-tl-twistie.loading{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48ZyBmaWxsPSIjZmZmIj48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvZz48L3N2Zz4=")}.monaco-split-view2{position:relative;width:100%;height:100%}.monaco-split-view2>.sash-container{position:absolute;width:100%;height:100%;pointer-events:none}.monaco-split-view2>.sash-container>.monaco-sash{pointer-events:auto}.monaco-split-view2>.split-view-container{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;white-space:nowrap}.monaco-split-view2.vertical>.split-view-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.monaco-split-view2.horizontal>.split-view-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.monaco-split-view2>.split-view-container>.split-view-view{white-space:normal;-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative}.monaco-split-view2>.split-view-container>.split-view-view:not(.visible){display:none}.monaco-split-view2.vertical>.split-view-container>.split-view-view{width:100%}.monaco-split-view2.horizontal>.split-view-container>.split-view-view{height:100%;display:inline-block}.monaco-split-view2.separator-border>.split-view-container>.split-view-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--separator-border)}.monaco-split-view2.separator-border.horizontal>.split-view-container>.split-view-view:not(:first-child):before{height:100%;width:1px}.monaco-split-view2.separator-border.vertical>.split-view-container>.split-view-view:not(:first-child):before{height:1px;width:100%}.monaco-editor .goto-definition-link{text-decoration:underline;cursor:pointer}.monaco-editor .peekview-widget .head .peekview-title .severity-icon{display:inline-block;vertical-align:text-top;margin-right:4px}.monaco-editor .marker-widget{text-overflow:ellipsis;white-space:nowrap}.monaco-editor .marker-widget>.stale{opacity:.6;font-style:italic}.monaco-editor .marker-widget .title{display:inline-block;padding-right:5px}.monaco-editor .marker-widget .descriptioncontainer{position:absolute;white-space:pre;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;padding:8px 12px 0 20px}.monaco-editor .marker-widget .descriptioncontainer .message{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.monaco-editor .marker-widget .descriptioncontainer .message .details{padding-left:6px}.monaco-editor .marker-widget .descriptioncontainer .message .code,.monaco-editor .marker-widget .descriptioncontainer .message .source{opacity:.6}.monaco-editor .marker-widget .descriptioncontainer .filename{cursor:pointer}.monaco-keybinding{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:10px}.monaco-keybinding>.monaco-keybinding-key{display:inline-block;border:1px solid hsla(0,0%,80%,.4);border-bottom-color:hsla(0,0%,73.3%,.4);border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 hsla(0,0%,73.3%,.4);box-shadow:inset 0 -1px 0 hsla(0,0%,73.3%,.4);background-color:hsla(0,0%,86.7%,.4);vertical-align:middle;color:#555;font-size:11px;padding:3px 5px;margin:0 2px}.monaco-keybinding>.monaco-keybinding-key:first-child{margin-left:0}.monaco-keybinding>.monaco-keybinding-key:last-child{margin-right:0}.hc-black .monaco-keybinding>.monaco-keybinding-key,.vs-dark .monaco-keybinding>.monaco-keybinding-key{background-color:hsla(0,0%,50.2%,.17);color:#ccc;border:1px solid rgba(51,51,51,.6);border-bottom-color:rgba(68,68,68,.6);-webkit-box-shadow:inset 0 -1px 0 rgba(68,68,68,.6);box-shadow:inset 0 -1px 0 rgba(68,68,68,.6)}.monaco-keybinding>.monaco-keybinding-key-separator{display:inline-block}.monaco-keybinding>.monaco-keybinding-key-chord-separator{width:6px}.monaco-quick-open-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight,.monaco-quick-open-widget .monaco-tree .monaco-tree-row .monaco-highlighted-label .highlight{color:#0066bf}.vs-dark .monaco-quick-open-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight,.vs-dark .monaco-quick-open-widget .monaco-tree .monaco-tree-row .monaco-highlighted-label .highlight{color:#0097fb}.hc-black .monaco-quick-open-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight,.hc-black .monaco-quick-open-widget .monaco-tree .monaco-tree-row .monaco-highlighted-label .highlight{color:#f38518}.monaco-quick-open-widget{position:absolute;width:600px;z-index:2000;padding-bottom:6px;left:50%;margin-left:-300px}.monaco-quick-open-widget .monaco-progress-container{position:absolute;left:0;top:38px;z-index:1;height:2px}.monaco-quick-open-widget .monaco-progress-container .progress-bit{height:2px}.monaco-quick-open-widget .quick-open-input{width:588px;border:none;margin:6px}.monaco-quick-open-widget .quick-open-input .monaco-inputbox{width:100%;height:25px}.monaco-quick-open-widget .quick-open-result-count{position:absolute;left:-10000px}.monaco-quick-open-widget .quick-open-tree{line-height:22px}.monaco-quick-open-widget .quick-open-tree .monaco-tree-row>.content>.sub-content{overflow:hidden}.monaco-quick-open-widget.content-changing .quick-open-tree .monaco-scrollable-element .slider{display:none}.monaco-quick-open-widget .quick-open-tree .quick-open-entry{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%}.monaco-quick-open-widget .quick-open-tree .quick-open-entry>.quick-open-row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon{overflow:hidden;width:16px;height:16px;margin-right:4px;display:inline-block;vertical-align:middle;-ms-flex-negative:0;flex-shrink:0}.monaco-quick-open-widget .quick-open-tree .monaco-icon-label,.monaco-quick-open-widget .quick-open-tree .monaco-icon-label .monaco-icon-label-description-container{-webkit-box-flex:1;-ms-flex:1;flex:1}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .monaco-highlighted-label span{opacity:1}.monaco-quick-open-widget .quick-open-tree .quick-open-entry-meta{opacity:.7;line-height:normal}.monaco-quick-open-widget .quick-open-tree .content.has-group-label .quick-open-entry-keybinding{margin-right:8px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry-keybinding .monaco-keybinding-key{vertical-align:text-bottom}.monaco-quick-open-widget .quick-open-tree .results-group{margin-right:18px}.monaco-quick-open-widget .quick-open-tree .focused .monaco-tree-row.focused>.content.has-actions>.results-group,.monaco-quick-open-widget .quick-open-tree .monaco-tree-row.focused>.content.has-actions>.results-group,.monaco-quick-open-widget .quick-open-tree .monaco-tree-row:hover:not(.highlighted)>.content.has-actions>.results-group{margin-right:0}.monaco-quick-open-widget .quick-open-tree .results-group-separator{border-top-width:1px;border-top-style:solid;-webkit-box-sizing:border-box;box-sizing:border-box;margin-left:-11px;padding-left:11px}.monaco-tree .monaco-tree-row>.content.actions{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.monaco-tree .monaco-tree-row>.content.actions>.sub-content{-webkit-box-flex:1;-ms-flex:1;flex:1}.monaco-tree .monaco-tree-row>.content.actions .action-item{margin:0}.monaco-tree .monaco-tree-row>.content.actions>.primary-action-bar{line-height:22px;display:none;padding:0 .8em 0 .4em}.monaco-tree .monaco-tree-row.focused>.content.has-actions>.primary-action-bar{width:0;display:block}.monaco-tree.focused .monaco-tree-row.focused>.content.has-actions>.primary-action-bar,.monaco-tree .monaco-tree-row:hover:not(.highlighted)>.content.has-actions>.primary-action-bar,.monaco-tree .monaco-tree-row>.content.has-actions.more>.primary-action-bar{width:inherit;display:block}.monaco-tree .monaco-tree-row>.content.actions>.primary-action-bar .action-label{margin-right:.4em;margin-top:4px;background-repeat:no-repeat;width:16px;height:16px}.monaco-quick-open-widget .quick-open-tree .monaco-highlighted-label .highlight{font-weight:700}.monaco-tree{height:100%;width:100%;white-space:nowrap;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;-o-user-select:none;user-select:none;position:relative}.monaco-tree>.monaco-scrollable-element{height:100%}.monaco-tree>.monaco-scrollable-element>.monaco-tree-wrapper{height:100%;width:100%;position:relative}.monaco-tree .monaco-tree-rows{position:absolute;width:100%;height:100%}.monaco-tree .monaco-tree-rows>.monaco-tree-row{-o-box-sizing:border-box;-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;overflow:hidden;width:100%;-ms-touch-action:none;touch-action:none}.monaco-tree .monaco-tree-rows>.monaco-tree-row>.content{position:relative;height:100%}.monaco-tree-drag-image{display:inline-block;padding:1px 7px;border-radius:10px;font-size:12px;position:absolute}.monaco-tree .monaco-tree-rows>.monaco-tree-row.scrolling{display:none}.monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.has-children>.content:before{content:" ";position:absolute;display:block;background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+") 50% 50% no-repeat;width:16px;height:100%;top:0;left:-16px}.monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.expanded>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjE5LjYxOEw4LjI4NSAxMWgtLjYxOEwzIDYuMzMzbC42MTktLjYxOCA0LjM1NyA0LjM1N3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-tree .monaco-tree-rows>.monaco-tree-row.has-children.loading>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvc3ZnPg==")}.monaco-tree.highlighted .monaco-tree-rows>.monaco-tree-row:not(.highlighted){opacity:.3}.vs-dark .monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.has-children>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.vs-dark .monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.expanded>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjE5LjYxOEw4LjI4NSAxMWgtLjYxOEwzIDYuMzMzbC42MTktLjYxOCA0LjM1NyA0LjM1N3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.vs-dark .monaco-tree .monaco-tree-rows>.monaco-tree-row.has-children.loading>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48ZyBmaWxsPSJncmF5Ij48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvZz48L3N2Zz4=")}.hc-black .monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.has-children>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4wNzIgOGwtNC4zNTcgNC4zNTcuNjE4LjYxOUwxMSA4LjMwOXYtLjYxOEw2LjMzMyAzLjAyNGwtLjYxOC42MTlMMTAuMDcyIDh6IiBmaWxsPSIjZmZmIi8+PC9zdmc+")}.hc-black .monaco-tree .monaco-tree-rows.show-twisties>.monaco-tree-row.expanded>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03Ljk3NiAxMC4wNzJsNC4zNTctNC4zNTcuNjE5LjYxOEw4LjI4NSAxMWgtLjYxOEwzIDYuMzMzbC42MTktLjYxOCA0LjM1NyA0LjM1N3oiIGZpbGw9IiNmZmYiLz48L3N2Zz4=")}.hc-black .monaco-tree .monaco-tree-rows>.monaco-tree-row.has-children.loading>.content:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHN0eWxlPmNpcmNsZXthbmltYXRpb246YmFsbCAuNnMgbGluZWFyIGluZmluaXRlfWNpcmNsZTpudGgtY2hpbGQoMil7YW5pbWF0aW9uLWRlbGF5Oi4wNzVzfWNpcmNsZTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi4xNXN9Y2lyY2xlOm50aC1jaGlsZCg0KXthbmltYXRpb24tZGVsYXk6LjIyNXN9Y2lyY2xlOm50aC1jaGlsZCg1KXthbmltYXRpb24tZGVsYXk6LjNzfWNpcmNsZTpudGgtY2hpbGQoNil7YW5pbWF0aW9uLWRlbGF5Oi4zNzVzfWNpcmNsZTpudGgtY2hpbGQoNyl7YW5pbWF0aW9uLWRlbGF5Oi40NXN9Y2lyY2xlOm50aC1jaGlsZCg4KXthbmltYXRpb24tZGVsYXk6LjUyNXN9PC9zdHlsZT48ZyBmaWxsPSIjZmZmIj48Y2lyY2xlIGN4PSI1IiBjeT0iMSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSI3LjgyOCIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjkiIGN5PSI1IiByPSIxIiBvcGFjaXR5PSIuMyIvPjxjaXJjbGUgY3g9IjcuODI4IiBjeT0iNy44MjgiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iNSIgY3k9IjkiIHI9IjEiIG9wYWNpdHk9Ii4zIi8+PGNpcmNsZSBjeD0iMi4xNzIiIGN5PSI3LjgyOCIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIxIiBjeT0iNSIgcj0iMSIgb3BhY2l0eT0iLjMiLz48Y2lyY2xlIGN4PSIyLjE3MiIgY3k9IjIuMTcyIiByPSIxIiBvcGFjaXR5PSIuMyIvPjwvZz48L3N2Zz4=")}.monaco-tree-action.collapse-all{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkgOUg0djFoNVY5eiIgZmlsbD0iIzQyNDI0MiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNSAzbDEtMWg3bDEgMXY3bC0xIDFoLTJ2MmwtMSAxSDNsLTEtMVY2bDEtMWgyVjN6bTEgMmg0bDEgMXY0aDJWM0g2djJ6bTQgMUgzdjdoN1Y2eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat}.vs-dark .monaco-tree-action.collapse-all{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkgOUg0djFoNVY5eiIgZmlsbD0iI0M1QzVDNSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNSAzbDEtMWg3bDEgMXY3bC0xIDFoLTJ2MmwtMSAxSDNsLTEtMVY2bDEtMWgyVjN6bTEgMmg0bDEgMXY0aDJWM0g2djJ6bTQgMUgzdjdoN1Y2eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") 50% no-repeat}.hc-black .monaco-tree-action.collapse-all{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkgOUg0djFoNVY5eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNSAzbDEtMWg3bDEgMXY3bC0xIDFoLTJ2MmwtMSAxSDNsLTEtMVY2bDEtMWgyVjN6bTEgMmg0bDEgMXY0aDJWM0g2djJ6bTQgMUgzdjdoN1Y2eiIgZmlsbD0iI2ZmZiIvPjwvc3ZnPg==") 50% no-repeat}.monaco-progress-container{width:100%;height:5px;overflow:hidden}.monaco-progress-container .progress-bit{width:2%;height:5px;position:absolute;left:0;display:none}.monaco-progress-container.active .progress-bit{display:inherit}.monaco-progress-container.discrete .progress-bit{left:0;-webkit-transition:width .1s linear;transition:width .1s linear}.monaco-progress-container.discrete.done .progress-bit{width:100%}.monaco-progress-container.infinite .progress-bit{animation-name:progress;animation-duration:4s;animation-iteration-count:infinite;animation-timing-function:linear;-ms-animation-name:progress;-ms-animation-duration:4s;-ms-animation-iteration-count:infinite;-ms-animation-timing-function:linear;-webkit-animation-name:progress;-webkit-animation-duration:4s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-moz-animation-name:progress;-moz-animation-duration:4s;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear;will-change:transform}@keyframes progress{0%{-webkit-transform:translateX(0) scaleX(1);transform:translateX(0) scaleX(1)}50%{-webkit-transform:translateX(2500%) scaleX(3);transform:translateX(2500%) scaleX(3)}to{-webkit-transform:translateX(4950%) scaleX(1);transform:translateX(4950%) scaleX(1)}}@-webkit-keyframes progress{0%{-webkit-transform:translateX(0) scaleX(1);transform:translateX(0) scaleX(1)}50%{-webkit-transform:translateX(2500%) scaleX(3);transform:translateX(2500%) scaleX(3)}to{-webkit-transform:translateX(4950%) scaleX(1);transform:translateX(4950%) scaleX(1)}}.monaco-editor-hover{cursor:default;position:absolute;overflow:hidden;z-index:50;-webkit-user-select:text;-ms-user-select:text;-moz-user-select:text;-o-user-select:text;user-select:text;-webkit-box-sizing:initial;box-sizing:initial;-webkit-animation:fadein .1s linear;animation:fadein .1s linear;line-height:1.5em}.monaco-editor-hover.hidden{display:none}.monaco-editor-hover .hover-contents{padding:4px 8px}.monaco-editor-hover .markdown-hover>.hover-contents:not(.code-hover-contents){max-width:500px;word-wrap:break-word}.monaco-editor-hover p,.monaco-editor-hover ul{margin:8px 0}.monaco-editor-hover hr{margin-top:4px;margin-bottom:-6px;margin-left:-10px;margin-right:-10px;height:1px}.monaco-editor-hover p:first-child,.monaco-editor-hover ul:first-child{margin-top:0}.monaco-editor-hover p:last-child,.monaco-editor-hover ul:last-child{margin-bottom:0}.monaco-editor-hover ul{padding-left:20px}.monaco-editor-hover li>p{margin-bottom:0}.monaco-editor-hover li>ul{margin-top:0}.monaco-editor-hover code{border-radius:3px;padding:0 .4em}.monaco-editor-hover .monaco-tokenized-source{white-space:pre-wrap;word-break:break-all}.monaco-editor-hover .hover-row.status-bar{font-size:12px;line-height:22px}.monaco-editor-hover .hover-row.status-bar .actions{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 8px}.monaco-editor-hover .hover-row.status-bar .actions .action-container{margin-right:16px;cursor:pointer}.monaco-editor-hover .hover-row.status-bar .actions .action-container .action .icon{padding-right:4px}.colorpicker-widget{height:190px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.monaco-editor .colorpicker-hover:focus{outline:none}.colorpicker-header{display:-webkit-box;display:-ms-flexbox;display:flex;height:24px;position:relative;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=");background-size:9px 9px;-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:-o-pixelated;image-rendering:pixelated}.colorpicker-header .picked-color{width:216px;line-height:24px;cursor:pointer;color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.colorpicker-header .picked-color.light{color:#000}.colorpicker-header .original-color{width:74px;z-index:inherit;cursor:pointer}.colorpicker-body{display:-webkit-box;display:-ms-flexbox;display:flex;padding:8px;position:relative}.colorpicker-body .saturation-wrap{overflow:hidden;height:150px;position:relative;min-width:220px;-webkit-box-flex:1;-ms-flex:1;flex:1}.colorpicker-body .saturation-box{height:150px;position:absolute}.colorpicker-body .saturation-selection{width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #fff;border-radius:100%;-webkit-box-shadow:0 0 2px rgba(0,0,0,.8);box-shadow:0 0 2px rgba(0,0,0,.8);position:absolute}.colorpicker-body .strip{width:25px;height:150px}.colorpicker-body .hue-strip{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.colorpicker-body .hue-strip,.colorpicker-body .opacity-strip{position:relative;margin-left:8px;cursor:-webkit-grab;cursor:grab}.colorpicker-body .opacity-strip{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=");background-size:9px 9px;-ms-interpolation-mode:nearest-neighbor;image-rendering:-webkit-optimize-contrast;image-rendering:-moz-crisp-edges;image-rendering:-o-pixelated;image-rendering:pixelated}.colorpicker-body .strip.grabbing{cursor:-webkit-grabbing;cursor:grabbing}.colorpicker-body .slider{position:absolute;top:0;left:-2px;width:calc(100% + 4px);height:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid hsla(0,0%,100%,.71);-webkit-box-shadow:0 0 1px rgba(0,0,0,.85);box-shadow:0 0 1px rgba(0,0,0,.85)}.colorpicker-body .strip .overlay{height:150px;pointer-events:none}.monaco-editor .tokens-inspect-widget{z-index:50;-webkit-user-select:text;-ms-user-select:text;-moz-user-select:text;-o-user-select:text;user-select:text;padding:10px}.tokens-inspect-separator{height:1px;border:0}.monaco-editor .tokens-inspect-widget .tm-token{font-family:monospace}.monaco-editor .tokens-inspect-widget .tm-token-length{font-weight:400;font-size:60%;float:right}.monaco-editor .tokens-inspect-widget .tm-metadata-table{width:100%}.monaco-editor .tokens-inspect-widget .tm-metadata-value{font-family:monospace;text-align:right}.monaco-editor .tokens-inspect-widget .tm-token-type{font-family:monospace}.monaco-editor .iPadShowKeyboard{width:58px;min-width:0;height:36px;min-height:0;margin:0;padding:0;position:absolute;resize:none;overflow:hidden;background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMCAwIC4wMDUgNC4wMVYzMi4wM2E0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMyA0LjAwMmg0NC4wMjhhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAgMCA0OC4wMzYuMDA4SDQuMDA4ek04LjAxIDguMDEzaDQuMDAzdjQuMDAzSDguMDFWOC4wMTN6bTEyLjAwOCAwaC00LjAwMnY0LjAwM2g0LjAwMlY4LjAxM3ptNC4wMDMgMGg0LjAwMnY0LjAwM2gtNC4wMDJWOC4wMTN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM1Y4LjAxM3ptNC4wMDIgMGg0LjAwM3Y0LjAwM0g0MC4wM1Y4LjAxM3ptLTI0LjAxNSA4LjAwNUg4LjAxdjQuMDAzaDguMDA2di00LjAwM3ptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN2LTQuMDAzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN2LTQuMDAzem0xMi4wMDggMHY0LjAwM2gtOC4wMDV2LTQuMDAzaDguMDA1em0tMzIuMDIxIDguMDA1SDguMDF2NC4wMDNoNC4wMDN2LTQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ2LTQuMDAzem0yOC4wMTggMEg0MC4wM3Y0LjAwM2g0LjAwM3YtNC4wMDN6IiBmaWxsPSIjNDI0MjQyIi8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNTN2MzZIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=") 50% no-repeat;border:4px solid #f6f6f6;border-radius:4px}.monaco-editor.vs-dark .iPadShowKeyboard{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzYgNC4wMUg0LjAwOFYzMi4wM2g0NC4wMjhWNC4wMXpNNC4wMDguMDA4QTQuMDAzIDQuMDAzIDAgMCAwIC4wMDUgNC4wMVYzMi4wM2E0LjAwMyA0LjAwMyAwIDAgMCA0LjAwMyA0LjAwMmg0NC4wMjhhNC4wMDMgNC4wMDMgMCAwIDAgNC4wMDMtNC4wMDJWNC4wMUE0LjAwMyA0LjAwMyAwIDAgMCA0OC4wMzYuMDA4SDQuMDA4ek04LjAxIDguMDEzaDQuMDAzdjQuMDAzSDguMDFWOC4wMTN6bTEyLjAwOCAwaC00LjAwMnY0LjAwM2g0LjAwMlY4LjAxM3ptNC4wMDMgMGg0LjAwMnY0LjAwM2gtNC4wMDJWOC4wMTN6bTEyLjAwOCAwaC00LjAwM3Y0LjAwM2g0LjAwM1Y4LjAxM3ptNC4wMDIgMGg0LjAwM3Y0LjAwM0g0MC4wM1Y4LjAxM3ptLTI0LjAxNSA4LjAwNUg4LjAxdjQuMDAzaDguMDA2di00LjAwM3ptNC4wMDIgMGg0LjAwM3Y0LjAwM2gtNC4wMDN2LTQuMDAzem0xMi4wMDggMGgtNC4wMDN2NC4wMDNoNC4wMDN2LTQuMDAzem0xMi4wMDggMHY0LjAwM2gtOC4wMDV2LTQuMDAzaDguMDA1em0tMzIuMDIxIDguMDA1SDguMDF2NC4wMDNoNC4wMDN2LTQuMDAzem00LjAwMyAwaDIwLjAxM3Y0LjAwM0gxNi4wMTZ2LTQuMDAzem0yOC4wMTggMEg0MC4wM3Y0LjAwM2g0LjAwM3YtNC4wMDN6IiBmaWxsPSIjQzVDNUM1Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoNTN2MzZIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=") 50% no-repeat;border:4px solid #252526}.monaco-editor .detected-link,.monaco-editor .detected-link-active{text-decoration:underline;text-underline-position:under}.monaco-editor .detected-link-active{cursor:pointer}.monaco-editor .parameter-hints-widget{z-index:10;line-height:1.5em}.monaco-editor .parameter-hints-widget,.monaco-editor .parameter-hints-widget>.wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.monaco-editor .parameter-hints-widget>.wrapper{max-width:440px}.monaco-editor .parameter-hints-widget.multiple{min-height:3.3em;padding:0 0 0 1.9em}.monaco-editor .parameter-hints-widget.visible{-webkit-transition:left .05s ease-in-out;transition:left .05s ease-in-out}.monaco-editor .parameter-hints-widget p,.monaco-editor .parameter-hints-widget ul{margin:8px 0}.monaco-editor .parameter-hints-widget .body,.monaco-editor .parameter-hints-widget .monaco-scrollable-element{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.monaco-editor .parameter-hints-widget .signature{padding:4px 5px}.monaco-editor .parameter-hints-widget .docs{padding:0 10px 0 5px;white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs.empty{display:none}.monaco-editor .parameter-hints-widget .docs .markdown-docs{white-space:normal}.monaco-editor .parameter-hints-widget .docs .code{white-space:pre-wrap}.monaco-editor .parameter-hints-widget .docs code{border-radius:3px;padding:0 .4em}.monaco-editor .parameter-hints-widget .buttons{position:absolute;display:none;bottom:0;left:0}.monaco-editor .parameter-hints-widget.multiple .buttons{display:block}.monaco-editor .parameter-hints-widget.multiple .button{position:absolute;left:2px;width:16px;height:16px;background-repeat:no-repeat;cursor:pointer}.monaco-editor .parameter-hints-widget .button.previous{bottom:24px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0iIzQyNDI0MiIgZD0iTTEwLjggOS41bC45LS45TDguMSA1IDQuMiA4LjZsLjkuOSAzLTIuNyAyLjcgMi43eiIvPjwvc3ZnPg==")}.monaco-editor .parameter-hints-widget .button.next{bottom:0;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0iIzQyNDI0MiIgZD0iTTUuMSA1bC0uOS45IDMuNiAzLjYgMy45LTMuNi0xLS45LTMgMi43TDUuMSA1eiIvPjwvc3ZnPg==")}.monaco-editor .parameter-hints-widget .overloads{position:absolute;display:none;text-align:center;bottom:14px;left:0;width:22px;height:12px;line-height:12px;opacity:.5}.monaco-editor .parameter-hints-widget.multiple .overloads{display:block}.monaco-editor .parameter-hints-widget .signature .parameter.active{font-weight:700;text-decoration:underline}.monaco-editor .parameter-hints-widget .documentation-parameter>.parameter{font-weight:700;margin-right:.5em}.monaco-editor.hc-black .parameter-hints-widget .button.previous,.monaco-editor.vs-dark .parameter-hints-widget .button.previous{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0iI0U4RThFOCIgZD0iTTEwLjggOS41bC45LS45TDguMSA1IDQuMiA4LjZsLjkuOSAzLTIuNyAyLjcgMi43eiIvPjwvc3ZnPg==")}.monaco-editor.hc-black .parameter-hints-widget .button.next,.monaco-editor.vs-dark .parameter-hints-widget .button.next{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0iI0U4RThFOCIgZD0iTTUuMSA1bC0uOS45IDMuNiAzLjYgMy45LTMuNi0xLS45LTMgMi43TDUuMSA1eiIvPjwvc3ZnPg==")}.monaco-quick-open-widget{font-size:13px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon,.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNCAyNi44NThMNC40ODYgMjZsNS0zaDEuMDI4bDUgMyAuNDg2Ljg1OHY2bC0uNDg2Ljg1Ny01IDNIOS40ODZsLTUtM0w0IDMyLjg1N3YtNnptNS41IDguN2wtNC41LTIuN1YyNy43bDQuNSAyLjQ1NHY1LjQwM3ptMSAwbDQuNS0yLjdWMjcuN2wtNC41IDIuNDU0djUuNDAzem0tLjUtMTEuN2wtNC43NCAyLjg0NEwxMCAyOS4yODhsNC43NC0yLjU4NkwxMCAyMy44NTd6IiBmaWxsPSIjQjE4MEQ3Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDYuODU3TDQuNDg2IDZsNS0zaDEuMDI4bDUgMyAuNDg2Ljg1N3Y2bC0uNDg2Ljg1OC01IDNIOS40ODZsLTUtM0w0IDEyLjg1OHYtNnptNS41IDguN2wtNC41LTIuN1Y3LjdsNC41IDIuNDU0djUuNDAzem0xIDBsNC41LTIuN1Y3LjdsLTQuNSAyLjQ1NHY1LjQwM3ptLS41LTExLjdMNS4yNiA2LjcwMiAxMCA5LjI4OGw0Ljc0LTIuNTg2TDEwIDMuODU3eiIgZmlsbD0iIzY1MkQ5MCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjMgMjguMzk0bC41NTMtLjg5NCA3LTMuNWguODk0bDUgMi41LjU1My44OTR2NC41bC0uNTUzLjg5NS03IDMuNWgtLjg5NGwtNS0yLjUtLjU1My0uODk1di00LjV6bTUuNSA2Ljc1bC00LjUtMi4yNXYtMy43MjNsNC41IDIuMDQ1djMuOTI4em0xIDBsNi41LTMuMjVWMjguMThsLTYuNSAzLjAzM3YzLjkzMXptMS41LTEwLjI1bC02LjY2MyAzLjMzMiA0LjY2IDIuMTE4IDYuNjc0LTMuMTE0TDMxIDI0Ljg5NHoiIGZpbGw9IiM3NUJFRkYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIzIDguMzk0bC41NTMtLjg5NCA3LTMuNWguODk0bDUgMi41LjU1My44OTR2NC41bC0uNTUzLjg5NS03IDMuNWgtLjg5NGwtNS0yLjUtLjU1My0uODk1di00LjV6bTUuNSA2Ljc1bC00LjUtMi4yNVY5LjE3MWw0LjUgMi4wNDV2My45Mjh6bTEgMGw2LjUtMy4yNVY4LjE4bC02LjUgMy4wMzN2My45MzF6TTMxIDQuODk0bC02LjY2MyAzLjMzMiA0LjY2IDIuMTE4IDYuNjc0LTMuMTE0TDMxIDQuODk0eiIgZmlsbD0iIzAwN0FDQyIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDUuMzU0IDI4LjY0NmwtMS4yOTMtMS4yOTMgMy4yOTMtMy4yOTIgMS4yOTMgMS4yOTMtMy4yOTMgMy4yOTJ6TTQ3IDIzbC00IDR2LjcwN2wyIDJoLjcwN2wxLjE0Ny0xLjE0NnY1Ljc5MmwuNS41aDQuNjU2di41MjFsMS4zMzMgMS4zMzNoLjcwN2wyLjY2Ny0yLjY2NnYtLjcwN0w1NS4zODMgMzJoLS43MDdsLTEuODUzIDEuODUzaC00Ljk3di0zLjk2aDQuMTU3di40ODFsMS4zMzMgMS4zMzNoLjcwN2wyLjY2Ny0yLjY2NnYtLjcwN0w1NS4zODMgMjdoLS43MDdsLTEuODEzIDEuODE0aC01LjAxVjI3LjU2bDEuODU0LTEuODU0VjI1bC0yLTJINDd6bTYuMDcgNy4wMmwuNjI3LjYyNyAxLjk2LTEuOTYtLjYyNy0uNjI2LTEuOTYgMS45NnptMCA1bC42MjcuNjI3IDEuOTYtMS45Ni0uNjI3LS42MjYtMS45NiAxLjk2eiIgZmlsbD0iI0VFOUQyOCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDUuMzU0IDguNjQ2TDQ0LjA2IDcuMzU0bDMuMjkzLTMuMjkzIDEuMjkzIDEuMjkzLTMuMjkzIDMuMjkyek00NyAzbC00IDR2LjcwN2wyIDJoLjcwN2wxLjE0Ny0xLjE0NnY1Ljc5M2wuNS41aDQuNjU2di41MmwxLjMzMyAxLjMzM2guNzA3bDIuNjY3LTIuNjY2di0uNzA3TDU1LjM4MyAxMmgtLjcwN2wtMS44NTMgMS44NTRoLTQuOTd2LTMuOTZoNC4xNTd2LjQ4bDEuMzMzIDEuMzMzaC43MDdsMi42NjctMi42NjZ2LS43MDdMNTUuMzgzIDdoLS43MDdsLTEuODEzIDEuODE0aC01LjAxVjcuNTZsMS44NTQtMS44NTRWNWwtMi0ySDQ3em02LjA3IDcuMDJsLjYyNy42MjcgMS45Ni0xLjk2LS42MjctLjYyNi0xLjk2IDEuOTZ6bTAgNWwuNjI3LjYyNyAxLjk2LTEuOTYtLjYyNy0uNjI2LTEuOTYgMS45NnoiIGZpbGw9IiNENjdFMDAiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTg4IDI0Ljk4NFYyNGgtLjA5Yy0uMzEzIDAtLjYxNi4wNjItLjkwOS4xODVhMi4zMyAyLjMzIDAgMCAwLS43NzUuNTMgMi4yMyAyLjIzIDAgMCAwLS40OTMuNzUzdi4wMDFhMy41NDIgMy41NDIgMCAwIDAtLjE5OC44M3YuMDAyYy0uMDI4LjI4LS4wMzYuNTY3LS4wMjQuODYzLjAxMi4yOS4wMTguNTguMDE4Ljg2OSAwIC4yMDMtLjA0LjM5My0uMTE3LjU3MnYuMDAxYTEuNTAzIDEuNTAzIDAgMCAxLS43NjUuNzg2IDEuMzc2IDEuMzc2IDAgMCAxLS41NTguMTE2SDg0di45ODRoLjA5Yy4xOTUgMCAuMzguMDQuNTU2LjEyMWwuMDAxLjAwMWMuMTc4LjA3OC4zMjkuMTg0LjQ1NS4zMThsLjAwMi4wMDJjLjEzLjEzLjIzMy4yODUuMzA3LjQ2NWwuMDAxLjAwMmMuMDc4LjE4LjExNy4zNjguMTE3LjU2NiAwIC4yOS0uMDA2LjU4LS4wMTguODY5YTYuMTkgNi4xOSAwIDAgMCAuMDI0Ljg3di4wMDFjLjAzMy4yODMuMDk5LjU1OC4xOTcuODI0di4wMDFjLjEwNi4yNzMuMjcxLjUyNC40OTQuNzUzLjIyMy4yMy40ODIuNDA3Ljc3NS41My4yOTMuMTIzLjU5Ni4xODUuOTEuMTg1SDg4di0uOTg0aC0uMDljLS4yIDAtLjM4Ni0uMDM4LS41NjItLjExNWExLjYxMiAxLjYxMiAwIDAgMS0uNDU3LS4zMiAxLjY1OSAxLjY1OSAwIDAgMS0uMzA5LS40NjdjLS4wNzQtLjE4LS4xMS0uMzctLjExLS41NzMgMC0uMjI4LjAwMy0uNDUyLjAxMS0uNjcyLjAwOC0uMjI4LjAwOC0uNDUgMC0uNjY1YTQuNjQxIDQuNjQxIDAgMCAwLS4wNTUtLjY0IDIuNjgyIDIuNjgyIDAgMCAwLS4xNjgtLjYwOSAyLjI4IDIuMjggMCAwIDAtLjczOC0uOTU1IDIuMjggMi4yOCAwIDAgMCAuNzM4LS45NTUgMi43IDIuNyAwIDAgMCAuMTY4LS42MDJjLjAzMy0uMjEuMDUxLS40MjMuMDU1LS42NC4wMDgtLjIyLjAwOC0uNDQyIDAtLjY2NmExOS4yNiAxOS4yNiAwIDAgMS0uMDEyLS42NzggMS40NyAxLjQ3IDAgMCAxIC40Mi0xLjAzNWMuMTMtLjEzNS4yODQtLjI0MS40NTctLjMxOWExLjMzIDEuMzMgMCAwIDEgLjU2My0uMTIxSDg4em00IDEwLjAzMlYzNmguMDljLjMxMyAwIC42MTYtLjA2Mi45MDktLjE4NS4yOTMtLjEyMy41NTItLjMuNzc1LS41My4yMjMtLjIzLjM4OC0uNDguNDkzLS43NTN2LS4wMDFjLjEtLjI2Ni4xNjUtLjU0My4xOTgtLjgzdi0uMDAyYy4wMjgtLjI4LjAzNi0uNTY3LjAyNC0uODYzLS4wMTItLjI5LS4wMTgtLjU4LS4wMTgtLjg2OSAwLS4yMDMuMDQtLjM5My4xMTctLjU3MnYtLjAwMWExLjUwMyAxLjUwMyAwIDAgMSAuNzY1LS43ODZjLjE3Ni0uMDc4LjM2Mi0uMTE2LjU1OC0uMTE2SDk2di0uOTg0aC0uMDljLS4xOTUgMC0uMzgtLjA0LS41NTYtLjEyMWwtLjAwMS0uMDAxYTEuMzc2IDEuMzc2IDAgMCAxLS40NTUtLjMxOGwtLjAwMi0uMDAyYTEuNDE0IDEuNDE0IDAgMCAxLS4zMDctLjQ2NWwtLjAwMS0uMDAyYTEuNDA1IDEuNDA1IDAgMCAxLS4xMTctLjU2NmMwLS4yOS4wMDYtLjU4LjAxOC0uODY5YTYuMTkgNi4xOSAwIDAgMC0uMDI0LS44N3YtLjAwMWEzLjU0MSAzLjU0MSAwIDAgMC0uMTk3LS44MjR2LS4wMDFhMi4yMyAyLjIzIDAgMCAwLS40OTQtLjc1MyAyLjMzIDIuMzMgMCAwIDAtLjc3NS0uNTMgMi4zMjUgMi4zMjUgMCAwIDAtLjkxLS4xODVIOTJ2Ljk4NGguMDljLjIgMCAuMzg2LjAzOC41NjIuMTE1LjE3NC4wODIuMzI2LjE4OC40NTcuMzIuMTI3LjEzNC4yMy4yOS4zMDkuNDY3LjA3NC4xOC4xMS4zNy4xMS41NzMgMCAuMjI4LS4wMDMuNDUzLS4wMTEuNjcyLS4wMDguMjI4LS4wMDguNDUgMCAuNjY1LjAwNC4yMjEuMDIyLjQzNS4wNTUuNjQuMDMzLjIxNC4wODkuNDE2LjE2OC42MDlhMi4yOCAyLjI4IDAgMCAwIC43MzguOTU1IDIuMjggMi4yOCAwIDAgMC0uNzM4Ljk1NSAyLjcgMi43IDAgMCAwLS4xNjguNjAyIDQuNzYgNC43NiAwIDAgMC0uMDU1LjY0Yy0uMDA4LjIyLS4wMDguNDQyIDAgLjY2NS4wMDguMjI1LjAxMi40NS4wMTIuNjc5YTEuNDcgMS40NyAwIDAgMS0uNDIgMS4wMzUgMS40NjYgMS40NjYgMCAwIDEtLjQ1Ny4zMTkgMS4zMyAxLjMzIDAgMCAxLS41NjMuMTIxSDkyeiIgZmlsbD0iI0M1QzVDNSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNODggNC45ODRWNGgtLjA5Yy0uMzEzIDAtLjYxNi4wNjItLjkwOS4xODVhMi4zMyAyLjMzIDAgMCAwLS43NzUuNTMgMi4yMyAyLjIzIDAgMCAwLS40OTMuNzUzdi4wMDFhMy41NDIgMy41NDIgMCAwIDAtLjE5OC44M3YuMDAyYy0uMDI4LjI4LS4wMzYuNTY3LS4wMjQuODYzLjAxMi4yOS4wMTguNTguMDE4Ljg2OSAwIC4yMDMtLjA0LjM5My0uMTE3LjU3MnYuMDAxYTEuNTA0IDEuNTA0IDAgMCAxLS43NjUuNzg3IDEuMzc1IDEuMzc1IDAgMCAxLS41NTguMTE1SDg0di45ODRoLjA5Yy4xOTUgMCAuMzguMDQuNTU2LjEyMWwuMDAxLjAwMWMuMTc4LjA3OC4zMjkuMTg0LjQ1NS4zMThsLjAwMi4wMDJjLjEzLjEzLjIzMy4yODUuMzA3LjQ2NWwuMDAxLjAwMmMuMDc4LjE4LjExNy4zNjguMTE3LjU2NiAwIC4yOS0uMDA2LjU4LS4wMTguODY5YTYuMTkgNi4xOSAwIDAgMCAuMDI0Ljg3di4wMDFjLjAzMy4yODMuMDk5LjU1OC4xOTcuODI0di4wMDFjLjEwNi4yNzMuMjcxLjUyNC40OTQuNzUzLjIyMy4yMy40ODIuNDA3Ljc3NS41My4yOTMuMTIzLjU5Ni4xODUuOTEuMTg1SDg4di0uOTg0aC0uMDljLS4yIDAtLjM4Ni0uMDM4LS41NjItLjExNWExLjYxMiAxLjYxMiAwIDAgMS0uNDU3LS4zMiAxLjY1OSAxLjY1OSAwIDAgMS0uMzA5LS40NjdjLS4wNzQtLjE4LS4xMS0uMzctLjExLS41NzMgMC0uMjI4LjAwMy0uNDUzLjAxMS0uNjcyLjAwOC0uMjI4LjAwOC0uNDUgMC0uNjY1YTQuNjQxIDQuNjQxIDAgMCAwLS4wNTUtLjY0IDIuNjgyIDIuNjgyIDAgMCAwLS4xNjgtLjYwOSAyLjI4IDIuMjggMCAwIDAtLjczOC0uOTU1IDIuMjgyIDIuMjgyIDAgMCAwIC43MzgtLjk1NSAyLjcgMi43IDAgMCAwIC4xNjgtLjYwMmMuMDMzLS4yMS4wNTEtLjQyMy4wNTUtLjY0LjAwOC0uMjIuMDA4LS40NDIgMC0uNjY2LS4wMDgtLjIyNC0uMDEyLS40NS0uMDEyLS42NzhhMS40NyAxLjQ3IDAgMCAxIC44NzctMS4zNTQgMS4zMyAxLjMzIDAgMCAxIC41NjMtLjEyMUg4OHptNCAxMC4wMzJWMTZoLjA5Yy4zMTMgMCAuNjE2LS4wNjIuOTA5LS4xODUuMjkzLS4xMjMuNTUyLS4zLjc3NS0uNTMuMjIzLS4yMy4zODgtLjQ4LjQ5My0uNzUzdi0uMDAxYy4xLS4yNjYuMTY1LS41NDMuMTk4LS44M3YtLjAwMmMuMDI4LS4yOC4wMzYtLjU2Ny4wMjQtLjg2My0uMDEyLS4yOS0uMDE4LS41OC0uMDE4LS44NjkgMC0uMjAzLjA0LS4zOTMuMTE3LS41NzJ2LS4wMDFhMS41MDMgMS41MDMgMCAwIDEgLjc2NS0uNzg3Yy4xNzYtLjA3Ni4zNjItLjExNS41NTgtLjExNUg5NnYtLjk4NGgtLjA5Yy0uMTk1IDAtLjM4LS4wNC0uNTU2LS4xMjFsLS4wMDEtLjAwMWExLjM3NiAxLjM3NiAwIDAgMS0uNDU1LS4zMThsLS4wMDItLjAwMmExLjQxNCAxLjQxNCAwIDAgMS0uMzA3LS40NjVsLS4wMDEtLjAwMmExLjQwNSAxLjQwNSAwIDAgMS0uMTE3LS41NjZjMC0uMjkuMDA2LS41OC4wMTgtLjg2OWE2LjE5IDYuMTkgMCAwIDAtLjAyNC0uODd2LS4wMDFhMy41NDIgMy41NDIgMCAwIDAtLjE5Ny0uODI0di0uMDAxYTIuMjMgMi4yMyAwIDAgMC0uNDk0LS43NTMgMi4zMyAyLjMzIDAgMCAwLS43NzUtLjUzIDIuMzI1IDIuMzI1IDAgMCAwLS45MS0uMTg1SDkydi45ODRoLjA5Yy4yIDAgLjM4Ni4wMzguNTYyLjExNS4xNzQuMDgyLjMyNi4xODguNDU3LjMyLjEyNy4xMzQuMjMuMjkuMzA5LjQ2Ny4wNzQuMTguMTEuMzcuMTEuNTczIDAgLjIyOC0uMDAzLjQ1Mi0uMDExLjY3Mi0uMDA4LjIyOC0uMDA4LjQ1IDAgLjY2NS4wMDQuMjIyLjAyMi40MzUuMDU1LjY0LjAzMy4yMTQuMDg5LjQxNi4xNjguNjA5YTIuMjgyIDIuMjgyIDAgMCAwIC43MzguOTU1IDIuMjggMi4yOCAwIDAgMC0uNzM4Ljk1NSAyLjcgMi43IDAgMCAwLS4xNjguNjAyIDQuNzYgNC43NiAwIDAgMC0uMDU1LjY0Yy0uMDA4LjIyLS4wMDguNDQyIDAgLjY2Ni4wMDguMjI0LjAxMi40NS4wMTIuNjc4YTEuNDcgMS40NyAwIDAgMS0uNDIgMS4wMzUgMS40NjYgMS40NjYgMCAwIDEtLjQ1Ny4zMTkgMS4zMyAxLjMzIDAgMCAxLS41NjMuMTIxSDkyeiIgZmlsbD0iIzQyNDI0MiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzMuNSAyN2EyLjUgMi41IDAgMSAwIDAgNSAyLjUgMi41IDAgMCAwIDAtNXptLTMuNDY1IDNhMy41MDEgMy41MDEgMCAxIDAgMC0xaC0zLjA5OGEyIDIgMCAxIDAgMCAxaDMuMDk4eiIgZmlsbD0iIzc1QkVGRiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzMuNSA3YTIuNSAyLjUgMCAxIDAgMCA1IDIuNSAyLjUgMCAwIDAgMC01em0tMy40NjUgM2EzLjUwMSAzLjUwMSAwIDEgMCAwLTFoLTMuMDk4YTIgMiAwIDEgMCAwIDFoMy4wOTh6IiBmaWxsPSIjMDA3QUNDIi8+PHBhdGggZD0iTTEwNC44MDcgMzYuOTc1YTEuNzUxIDEuNzUxIDAgMCAxLTEuMjU1LS41NTYgMS42ODIgMS42ODIgMCAwIDEtLjU0NC0xLjEgMS43MiAxLjcyIDAgMCAxIC4zNTMtMS4yMThjMS4yMDctMS4yNzIgMy41ODYtMy42NTIgNS4zMTctNS4zNDZhNC4yNiA0LjI2IDAgMCAxIC4wNDgtMy4wNzggNC4xMDEgNC4xMDEgMCAwIDEgMS42NjUtMS45NjkgNC4yNjEgNC4yNjEgMCAwIDEgNC4wNC0uMzZsLjYxNy4yNjgtMi44NjYgMi45NTEgMS4yNTUgMS4yNTkgMi45NDQtMi44NzcuMjY3LjYxOWE0LjI4OCA0LjI4OCAwIDAgMSAuMDM5IDMuMzExIDQuMjAyIDQuMjAyIDAgMCAxLS45MjIgMS4zOTJjLS4yMjYuMjItLjQ3NS40MTUtLjc0My41ODFhNC4yMTggNC4yMTggMCAwIDEtMy44MTIuNDQ2Yy0xLjA5OCAxLjExMy0zLjgzOSAzLjg3Mi01LjMxOSA1LjI1NGExLjYzIDEuNjMgMCAwIDEtMS4wODQuNDIzem03LjkzOC0xMy4wNDdhMy4zMjIgMy4zMjIgMCAwIDAtMS44NDkuNTU3IDMuMzcgMy4zNyAwIDAgMC0uNTkxLjQ1OCAzLjMxOSAzLjMxOSAwIDAgMC0uNjU3IDMuNzMzbC4xMzUuMjk3LS4yMzMuMjI3Yy0xLjczOCAxLjY5Ny00LjI2OSA0LjIyLTUuNDg1IDUuNTA1YS44MDMuODAzIDAgMCAwIC4xMzIgMS4wNDguOTEuOTEgMCAwIDAgLjI5OC4yMmMuMTAxLjA0NS4yMDkuMDcuMzE5LjA3MmEuNjk1LjY5NSAwIDAgMCAuNDUtLjE4YzEuNTczLTEuNDY5IDQuNjEyLTQuNTM5IDUuNTA0LTUuNDRsLjIyOS0uMjMyLjI5NS4xMzVhMy4yODkgMy4yODkgMCAwIDAgMy4yMjUtLjI1M2MuMjE0LS4xMzIuNDEzLS4yODguNTkyLS40NjVhMy4yODQgMy4yODQgMCAwIDAgLjk2My0yLjM1OGMwLS4yMTUtLjAyMi0uNDMtLjA2NC0uNjQybC0yLjU3NyAyLjUxNS0yLjU1Mi0yLjU0NyAyLjUxNS0yLjU5YTMuMjggMy4yOCAwIDAgMC0uNjQ5LS4wNnoiIGZpbGw9IiNDNUM1QzUiLz48cGF0aCBkPSJNMTA0LjgwNyAxNi45NzVhMS43NTEgMS43NTEgMCAwIDEtMS4yNTUtLjU1NiAxLjY4MiAxLjY4MiAwIDAgMS0uNTQ0LTEuMSAxLjcyIDEuNzIgMCAwIDEgLjM1My0xLjIxOGMxLjIwNy0xLjI3MiAzLjU4Ni0zLjY1MiA1LjMxNy01LjM0NmE0LjI2IDQuMjYgMCAwIDEgLjA0OC0zLjA3OCA0LjEwMSA0LjEwMSAwIDAgMSAxLjY2NS0xLjk2OSA0LjI2MSA0LjI2MSAwIDAgMSA0LjA0LS4zNmwuNjE3LjI2OC0yLjg2NiAyLjk1MSAxLjI1NSAxLjI1OSAyLjk0NC0yLjg3Ny4yNjcuNjE5YTQuMjg4IDQuMjg4IDAgMCAxIC4wMzkgMy4zMTEgNC4yMDMgNC4yMDMgMCAwIDEtLjkyMiAxLjM5MmMtLjIyNi4yMi0uNDc1LjQxNS0uNzQzLjU4MWE0LjIxOCA0LjIxOCAwIDAgMS0zLjgxMi40NDZjLTEuMDk4IDEuMTEzLTMuODM5IDMuODcyLTUuMzE5IDUuMjU0YTEuNjMgMS42MyAwIDAgMS0xLjA4NC40MjN6bTcuOTM4LTEzLjA0N2EzLjMyMSAzLjMyMSAwIDAgMC0xLjg0OS41NTdjLS4yMTMuMTMtLjQxMi4yODQtLjU5MS40NThhMy4zMTkgMy4zMTkgMCAwIDAtLjY1NyAzLjczM2wuMTM1LjI5Ny0uMjMzLjIyN2MtMS43MzggMS42OTctNC4yNjkgNC4yMi01LjQ4NSA1LjUwNWEuODAzLjgwMyAwIDAgMCAuMTMyIDEuMDQ4LjkxLjkxIDAgMCAwIC4yOTguMjJjLjEwMS4wNDUuMjA5LjA3LjMxOS4wNzJhLjY5NS42OTUgMCAwIDAgLjQ1LS4xOGMxLjU3My0xLjQ2OSA0LjYxMi00LjUzOSA1LjUwNC01LjQ0bC4yMjktLjIzMi4yOTUuMTM1YTMuMjg5IDMuMjg5IDAgMCAwIDMuMjI1LS4yNTNjLjIxNC0uMTMyLjQxMy0uMjg4LjU5Mi0uNDY1YTMuMjg0IDMuMjg0IDAgMCAwIC45NjMtMi4zNThjMC0uMjE1LS4wMjItLjQzLS4wNjQtLjY0MmwtMi41NzcgMi41MTUtMi41NTItMi41NDcgMi41MTUtMi41OWEzLjI4IDMuMjggMCAwIDAtLjY0OS0uMDZ6IiBmaWxsPSIjNDI0MjQyIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNDkgMjVsMS0xaDZsMSAxdjVsLTEgMWgtNHYtMWg0di01aC02djNoLTF2LTN6bTEgNGwxIDF2NWwtMSAxaC02bC0xLTF2LTVsMS0xaDZ6bTAgMXY1aC02di01aDZ6bTEuNDE0LTFsLS40MTQtLjQxNFYyOGg0djFoLTMuNTg2ek0xNTEgMjZoNHYxaC00di0xem0tMiA2aC00djFoNHYtMXoiIGZpbGw9IiM3NUJFRkYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTE0OSA1bDEtMWg2bDEgMXY1bC0xIDFoLTR2LTFoNFY1aC02djNoLTFWNXptMSA0bDEgMXY1bC0xIDFoLTZsLTEtMXYtNWwxLTFoNnptMCAxdjVoLTZ2LTVoNnptMS40MTQtMUwxNTEgOC41ODZWOGg0djFoLTMuNTg2ek0xNTEgNmg0djFoLTRWNnptLTIgNmgtNHYxaDR2LTF6IiBmaWxsPSIjMDA3QUNDIi8+PHBhdGggZD0iTTE3NyA2aC01VjVoNXYxem0tMSAzaC0ydjFoMlY5em0tNCAwaC05djFoOVY5em0yIDZoLTExdjFoMTF2LTF6bS01LTNoLTZ2MWg2di0xem04IDBoLTV2MWg1di0xem0tNy04djNoLTdWNGg3em0tMSAxaC01djFoNVY1eiIgZmlsbD0iI0M1QzVDNSIvPjxwYXRoIGQ9Ik0xNzcgMjZoLTV2LTFoNXYxem0tMSAzaC0ydjFoMnYtMXptLTQgMGgtOXYxaDl2LTF6bTIgNmgtMTF2MWgxMXYtMXptLTUtM2gtNnYxaDZ2LTF6bTggMGgtNXYxaDV2LTF6bS03LTh2M2gtN3YtM2g3em0tMSAxaC01djFoNXYtMXoiIGZpbGw9IiM0MjQyNDIiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwOS4yMjMgMzIuOTMzYy4zMjYuMTkyLjY5OS4yOSAxLjA3Ny4yODJhMi4xNTUgMi4xNTUgMCAwIDAgMS43NTQtLjg0MiAzLjI5NCAzLjI5NCAwIDAgMCAuNjU0LTIuMTEzIDIuODkgMi44OSAwIDAgMC0uNTc2LTEuODc3IDEuOTg3IDEuOTg3IDAgMCAwLTEuNjM0LS43MzMgMi4yOTIgMi4yOTIgMCAwIDAtMS41MjMuNTY3di0yLjc0MmgtLjk5MVYzMy4xaC45OTV2LS4zNDRjLjA3Ni4wNjYuMTU4LjEyNS4yNDQuMTc3em0uNjI3LTQuMjMzYy4xODYtLjA3OS4zODgtLjExMy41OS0uMWExLjA4IDEuMDggMCAwIDEgLjg5Ni40MjhjLjI1Ny4zNjMuMzgyLjgwMi4zNTcgMS4yNDVhMi40ODMgMi40ODMgMCAwIDEtLjQgMS40ODQgMS4xNDEgMS4xNDEgMCAwIDEtLjk2LjUwOCAxLjIyNSAxLjIyNSAwIDAgMS0uOTc2LS40MTcgMS41MjMgMS41MjMgMCAwIDEtLjM4Mi0xLjA0OHYtLjZhMS43MjMgMS43MjMgMCAwIDEgLjM5My0xLjE0NWMuMTMxLS4xNTQuMjk2LS4yNzYuNDgyLS4zNTV6bS00LjU2MS0xLjAyNWEzLjAyOCAzLjAyOCAwIDAgMC0uOTM3LjE2MiAyLjU4MyAyLjU4MyAwIDAgMC0uOC40bC0uMS4wNzd2MS4ybC40MjMtLjM1OWEyLjEgMi4xIDAgMCAxIDEuMzY2LS41NzIuNzU3Ljc1NyAwIDAgMSAuNjYxLjI4MmMuMTUuMjMyLjIzLjUwMy4yMzEuNzc5bC0xLjIzMy4xODFhMi41OTggMi41OTggMCAwIDAtMS4zNzguNTc1IDEuNjUgMS42NSAwIDAgMC0uMDIyIDIuMzM2IDEuNzQgMS43NCAwIDAgMCAxLjI1My40NTQgMS45NiAxLjk2IDAgMCAwIDEuMTA3LS4zMzIgMi4xOSAyLjE5IDAgMCAwIC4yODYtLjIyOXYuNDQ0aC45NDF2LTMuMzU4YTIuMTk2IDIuMTk2IDAgMCAwLS40NjktMS41IDEuNjkgMS42OSAwIDAgMC0xLjMyOS0uNTR6bS44NTcgMy4wNDFjLjAyLjQxOC0uMTIuODI5LS4zOTEgMS4xNDhhMS4yMiAxLjIyIDAgMCAxLS45NTUuNDIyLjgzLjgzIDAgMCAxLS42MDgtLjIuODM0LjgzNCAwIDAgMSAwLTEuMDkxYy4yODEtLjE3NC42LS4yNzcuOTMtLjNsMS4wMi0uMTQ4LjAwNC4xNjl6bTguMzEzIDIuMzE2Yy4zMDcuMTMyLjYzOS4xOTQuOTczLjE4My40OTUuMDEyLjk4My0uMTE0IDEuNDEtLjM2NWwuMTIzLS4wNzUuMDEzLS4wMDd2LTEuMTUzbC0uNDQ2LjMyYy0uMzE2LjIyNC0uNjk2LjM0LTEuMDg0LjMyOWExLjMwMyAxLjMwMyAwIDAgMS0xLjA0OC0uNDY0IDEuOTc4IDEuOTc4IDAgMCAxLS40LTEuMzEyYy0uMDI2LS41LjEzNS0uOTkzLjQ1My0xLjM4MWExLjQzNyAxLjQzNyAwIDAgMSAxLjE0Ny0uNTA3Yy4zNDQtLjAwMi42ODEuMDk1Ljk3MS4yNzlsLjQyOS4yNjVWMjcuOTdsLS4xNjktLjA3M2EyLjg5OSAyLjg5OSAwIDAgMC0xLjE3LS4yNDcgMi41MiAyLjUyIDAgMCAwLTEuOTI5LjgxNyAyLjkwMSAyLjkwMSAwIDAgMC0uNzQ3IDIuMDQ5Yy0uMDI4LjcwOC4yMTEgMS40LjY2OSAxLjkzOS4yMjMuMjQ5LjQ5OC40NDYuODA1LjU3OHoiIGZpbGw9IiNDNUM1QzUiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwOS4yMjMgMTIuOTMzYy4zMjYuMTkyLjY5OS4yOSAxLjA3Ny4yODJhMi4xNTUgMi4xNTUgMCAwIDAgMS43NTQtLjg0MiAzLjI5NCAzLjI5NCAwIDAgMCAuNjU0LTIuMTEzIDIuODkgMi44OSAwIDAgMC0uNTc2LTEuODc3IDEuOTg3IDEuOTg3IDAgMCAwLTEuNjM0LS43MzMgMi4yOTMgMi4yOTMgMCAwIDAtMS41MjMuNTY3VjUuNDc1aC0uOTkxVjEzLjFoLjk5NXYtLjM0NGMuMDc2LjA2Ni4xNTguMTI1LjI0NC4xNzd6bS42MjctNC4yMzNjLjE4Ni0uMDc5LjM4OC0uMTEzLjU5LS4xYTEuMDggMS4wOCAwIDAgMSAuODk2LjQyOGMuMjU3LjM2My4zODIuODAyLjM1NyAxLjI0NWEyLjQ4MyAyLjQ4MyAwIDAgMS0uNCAxLjQ4NCAxLjE0MSAxLjE0MSAwIDAgMS0uOTYuNTA4IDEuMjI1IDEuMjI1IDAgMCAxLS45NzYtLjQxNyAxLjUyMyAxLjUyMyAwIDAgMS0uMzgyLTEuMDQ4di0uNmExLjcyMyAxLjcyMyAwIDAgMSAuMzkzLTEuMTQ1Yy4xMzEtLjE1NC4yOTYtLjI3Ni40ODItLjM1NXptLTQuNTYxLTEuMDI1YTMuMDMgMy4wMyAwIDAgMC0uOTM3LjE2MiAyLjU4NCAyLjU4NCAwIDAgMC0uOC40bC0uMS4wNzd2MS4ybC40MjMtLjM1OWEyLjEgMi4xIDAgMCAxIDEuMzY2LS41NzIuNzU3Ljc1NyAwIDAgMSAuNjYxLjI4MmMuMTUuMjMyLjIzLjUwMy4yMzEuNzc5bC0xLjIzMy4xODFhMi41OTggMi41OTggMCAwIDAtMS4zNzguNTc1IDEuNjUgMS42NSAwIDAgMC0uMDIyIDIuMzM2IDEuNzQgMS43NCAwIDAgMCAxLjI1My40NTQgMS45NiAxLjk2IDAgMCAwIDEuMTA3LS4zMzIgMi4xOSAyLjE5IDAgMCAwIC4yODYtLjIyOXYuNDQ0aC45NDFWOS43MTVhMi4xOTYgMi4xOTYgMCAwIDAtLjQ2OS0xLjUgMS42OSAxLjY5IDAgMCAwLTEuMzI5LS41NHptLjg1NyAzLjA0MWMuMDIuNDE4LS4xMi44MjktLjM5MSAxLjE0OGExLjIyIDEuMjIgMCAwIDEtLjk1NS40MjIuODMuODMgMCAwIDEtLjYwOC0uMi44MzQuODM0IDAgMCAxIDAtMS4wOTFjLjI4MS0uMTc0LjYtLjI3Ny45My0uM2wxLjAyLS4xNDguMDA0LjE2OXptOC4zMTMgMi4zMTdjLjMwNy4xMy42MzkuMTkzLjk3My4xODIuNDk1LjAxMi45ODMtLjExNCAxLjQxLS4zNjVsLjEyMy0uMDc1LjAxMy0uMDA3di0xLjE1M2wtLjQ0Ni4zMmMtLjMxNi4yMjQtLjY5Ni4zNC0xLjA4NC4zMjlhMS4zMDMgMS4zMDMgMCAwIDEtMS4wNDgtLjQ2NCAxLjk3OCAxLjk3OCAwIDAgMS0uNC0xLjMxMmMtLjAyNi0uNS4xMzUtLjk5My40NTMtMS4zODFBMS40MzYgMS40MzYgMCAwIDEgMjE1LjYgOC42Yy4zNDQtLjAwMi42ODEuMDk1Ljk3MS4yNzlsLjQyOS4yNjVWNy45N2wtLjE2OS0uMDczYTIuODk4IDIuODk4IDAgMCAwLTEuMTctLjI0NyAyLjUyIDIuNTIgMCAwIDAtMS45MjkuODE3IDIuOSAyLjkgMCAwIDAtLjc0NyAyLjA0OWMtLjAyOC43MDcuMjExIDEuNC42NjkgMS45MzkuMjIzLjI0OS40OTguNDQ2LjgwNS41Nzh6TTI2NiAzbC0xIDF2MTJsMSAxaDlsMS0xVjdsLS4yOTMtLjcwNy0zLTNMMjcyIDNoLTZ6bTAgMTNWNGg1djRoNHY4aC05em05LTlsLTMtM3YzaDN6IiBmaWxsPSIjNDI0MjQyIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNjYgMjNsLTEgMXYxMmwxIDFoOWwxLTF2LTlsLS4yOTMtLjcwNy0zLTNMMjcyIDIzaC02em0wIDEzVjI0aDV2NGg0djhoLTl6bTktOWwtMy0zdjNoM3oiIGZpbGw9IiNDNUM1QzUiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTEzMCAyNGwtMSAxdjNoMXYtM2g2djVoLTR2MWg0bDEtMXYtNWwtMS0xaC02em0xIDZsLTEtMWgtNmwtMSAxdjVsMSAxaDZsMS0xdi01em0tMSAxdi0xaC02djVoNnYtNHptMS0yLjQxNGwuNDE0LjQxNEgxMzV2LTFoLTR2LjU4NnpNMTM1IDI2aC00djFoNHYtMXptLTYgNWgtNHYxaDR2LTF6bS00IDJoNHYxaC00di0xeiIgZmlsbD0iI0VFOUQyOCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTMwIDRsLTEgMXYzaDFWNWg2djVoLTR2MWg0bDEtMVY1bC0xLTFoLTZ6bTEgNmwtMS0xaC02bC0xIDF2NWwxIDFoNmwxLTF2LTV6bS0xIDF2LTFoLTZ2NWg2di00em0xLTIuNDE0bC40MTQuNDE0SDEzNVY4aC00di41ODZ6TTEzNSA2aC00djFoNFY2em0tNiA1aC00djFoNHYtMXptLTQgMmg0djFoLTR2LTF6IiBmaWxsPSIjRDY3RTAwIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNDYgM2wtMSAxdjEybDEgMWg4bDEtMVY0bC0xLTFoLTh6bTAgMlY0aDh2MTJoLTh2LTFoMnYtMWgtMnYtMmg0di0xaC00VjloMlY4aC0yVjZoNFY1aC00eiIgZmlsbD0iIzQyNDI0MiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjQ2IDIzbC0xIDF2MTJsMSAxaDhsMS0xVjI0bC0xLTFoLTh6bTAgMnYtMWg4djEyaC04di0xaDJ2LTFoLTJ2LTJoNHYtMWgtNHYtMmgydi0xaC0ydi0yaDR2LTFoLTR6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+");background-repeat:no-repeat;background-position:-2px -22px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon,.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.constructor,.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.function,.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.method{background-position:-2px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.field,.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.variable{background-position:-22px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.class{background-position:-42px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.interface{background-position:-62px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.module{background-position:-82px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.property{background-position:-102px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.enum{background-position:-122px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.string{background-position:-202px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.rule{background-position:-242px -2px}.monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.file{background-position:-262px -2px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.constructor,.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.function,.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.method{background-position:-2px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.field,.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.variable{background-position:-22px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.class{background-position:-43px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.interface{background-position:-63px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.module{background-position:-82px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.property{background-position:-102px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.enum{background-position:-122px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.string{background-position:-202px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.rule{background-position:-242px -22px}.vs-dark .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.file{background-position:-262px -22px}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon{background:none;display:inline}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon:before{height:16px;width:16px;display:inline-block}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.constructor:before,.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.function:before,.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.method:before,.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDQuODU3TDIuNDg2IDRsNS0zaDEuMDI5bDUgMyAuNDg1Ljg1N3Y2bC0uNDg2Ljg1OC01IDNINy40ODZsLTUtM0wyIDEwLjg1OHYtNnptNS41IDguN2wtNC41LTIuN1Y1LjdsNC41IDIuNDU0djUuNDAzem0xIDBsNC41LTIuN1Y1LjdMOC41IDguMTU0djUuNDAzek04IDEuODU3TDMuMjYgNC43MDIgOCA3LjI4OGw0Ljc0LTIuNTg2TDggMS44NTd6IiBmaWxsPSIjQjE4MEQ3Ii8+PC9zdmc+)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.field:before,.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.variable:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDYuMzk0bC41NTMtLjg5NCA3LTMuNWguODk0bDUgMi41LjU1My44OTR2NC41bC0uNTUzLjg5NS03IDMuNWgtLjg5NGwtNS0yLjVMMSAxMC44OTR2LTQuNXptNS41IDYuNzVMMiAxMC44OTRWNy4xNzFsNC41IDIuMDQ1djMuOTI4em0xIDBsNi41LTMuMjVWNi4xOEw3LjUgOS4yMTN2My45MzF6TTkgMi44OTRMMi4zMzcgNi4yMjZsNC42NiAyLjExOCA2LjY3NC0zLjExNEw5IDIuODk0eiIgZmlsbD0iIzc1QkVGRiIvPjwvc3ZnPg==)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.class:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjM1NCA2LjY0NkwyLjA2IDUuMzU0IDUuMzU0IDIuMDZsMS4yOTIgMS4yOTMtMy4yOTIgMy4yOTJ6TTUgMUwxIDV2LjcwN2wyIDJoLjcwN2wxLjE0Ny0xLjE0NnY1Ljc5M2wuNS41aDQuNjU2di41MmwxLjMzMyAxLjMzM2guNzA3bDIuNjY3LTIuNjY2di0uNzA3TDEzLjM4MyAxMGgtLjcwN2wtMS44NTMgMS44NTRoLTQuOTd2LTMuOTZoNC4xNTd2LjQ4bDEuMzMzIDEuMzMzaC43MDdsMi42NjctMi42NjZ2LS43MDdMMTMuMzgzIDVoLS43MDdsLTEuODEzIDEuODE0aC01LjAxVjUuNTZsMS44NTQtMS44NTRWM2wtMi0ySDV6bTYuMDcgNy4wMmwuNjI3LjYyNyAxLjk2LTEuOTYtLjYyNy0uNjI2LTEuOTYgMS45NnptMCA1bC42MjcuNjI3IDEuOTYtMS45Ni0uNjI3LS42MjYtMS45NiAxLjk2eiIgZmlsbD0iI0VFOUQyOCIvPjwvc3ZnPg==)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.interface:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS41IDVhMi41IDIuNSAwIDEgMCAwIDUgMi41IDIuNSAwIDAgMCAwLTV6TTguMDM1IDhhMy41IDMuNSAwIDEgMCAwLTFINC45MzdhMiAyIDAgMSAwIDAgMWgzLjA5OHoiIGZpbGw9IiM3NUJFRkYiLz48L3N2Zz4=)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.module:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDIuOTg0VjJoLS4wOWMtLjMxMyAwLS42MTYuMDYyLS45MDkuMTg1YTIuMzMgMi4zMyAwIDAgMC0uNzc1LjUzIDIuMjMgMi4yMyAwIDAgMC0uNDkzLjc1M3YuMDAxYTMuNTQyIDMuNTQyIDAgMCAwLS4xOTguODN2LjAwMmE2LjA4IDYuMDggMCAwIDAtLjAyNC44NjNjLjAxMi4yOS4wMTguNTguMDE4Ljg2OSAwIC4yMDMtLjA0LjM5My0uMTE3LjU3MnYuMDAxYTEuNTA0IDEuNTA0IDAgMCAxLS43NjUuNzg3IDEuMzc2IDEuMzc2IDAgMCAxLS41NTguMTE1SDJ2Ljk4NGguMDljLjE5NSAwIC4zOC4wNC41NTYuMTIxbC4wMDEuMDAxYy4xNzguMDc4LjMyOS4xODQuNDU1LjMxOGwuMDAyLjAwMmMuMTMuMTMuMjMzLjI4NS4zMDcuNDY1bC4wMDEuMDAyYy4wNzguMTguMTE3LjM2OC4xMTcuNTY2IDAgLjI5LS4wMDYuNTgtLjAxOC44NjktLjAxMi4yOTYtLjAwNC41ODUuMDI0Ljg3di4wMDFjLjAzMy4yODMuMDk5LjU1OC4xOTcuODI0di4wMDFjLjEwNi4yNzMuMjcxLjUyNC40OTQuNzUzLjIyMy4yMy40ODIuNDA3Ljc3NS41My4yOTMuMTIzLjU5Ni4xODUuOTEuMTg1SDZ2LS45ODRoLS4wOWMtLjE5OSAwLS4zODctLjAzOC0uNTYyLS4xMTVhMS42MTMgMS42MTMgMCAwIDEtLjQ1Ny0uMzIgMS42NTkgMS42NTkgMCAwIDEtLjMwOS0uNDY3Yy0uMDc0LS4xOC0uMTEtLjM3LS4xMS0uNTczIDAtLjIyOC4wMDMtLjQ1My4wMTEtLjY3Mi4wMDgtLjIyOC4wMDgtLjQ1IDAtLjY2NWE0LjYzOSA0LjYzOSAwIDAgMC0uMDU1LS42NCAyLjY4MiAyLjY4MiAwIDAgMC0uMTY4LS42MDlBMi4yODQgMi4yODQgMCAwIDAgMy41MjIgOGEyLjI4NCAyLjI4NCAwIDAgMCAuNzM4LS45NTVjLjA4LS4xOTIuMTM1LS4zOTMuMTY4LS42MDIuMDMzLS4yMS4wNTEtLjQyMy4wNTUtLjY0LjAwOC0uMjIuMDA4LS40NDIgMC0uNjY2LS4wMDgtLjIyNC0uMDEyLS40NS0uMDEyLS42NzhhMS40NyAxLjQ3IDAgMCAxIC44NzctMS4zNTQgMS4zMyAxLjMzIDAgMCAxIC41NjMtLjEyMUg2em00IDEwLjAzMlYxNGguMDljLjMxMyAwIC42MTYtLjA2Mi45MDktLjE4NS4yOTMtLjEyMy41NTItLjMuNzc1LS41My4yMjMtLjIzLjM4OC0uNDguNDkzLS43NTN2LS4wMDFjLjEtLjI2Ni4xNjUtLjU0My4xOTgtLjgzdi0uMDAyYy4wMjgtLjI4LjAzNi0uNTY3LjAyNC0uODYzLS4wMTItLjI5LS4wMTgtLjU4LS4wMTgtLjg2OSAwLS4yMDMuMDQtLjM5My4xMTctLjU3MnYtLjAwMWExLjUwNCAxLjUwNCAwIDAgMSAuNzY1LS43ODdjLjE3Ni0uMDc3LjM2Mi0uMTE1LjU1OC0uMTE1SDE0di0uOTg0aC0uMDljLS4xOTUgMC0uMzgtLjA0LS41NTYtLjEyMWwtLjAwMS0uMDAxYTEuMzc2IDEuMzc2IDAgMCAxLS40NTUtLjMxOGwtLjAwMi0uMDAyYTEuNDE0IDEuNDE0IDAgMCAxLS4zMDctLjQ2NWwtLjAwMS0uMDAyYTEuNDA1IDEuNDA1IDAgMCAxLS4xMTctLjU2NmMwLS4yOS4wMDYtLjU4LjAxOC0uODY5YTYuMTkgNi4xOSAwIDAgMC0uMDI0LS44N3YtLjAwMWEzLjU0MiAzLjU0MiAwIDAgMC0uMTk3LS44MjR2LS4wMDFhMi4yMyAyLjIzIDAgMCAwLS40OTQtLjc1MyAyLjMzIDIuMzMgMCAwIDAtLjc3NS0uNTMgMi4zMjUgMi4zMjUgMCAwIDAtLjkxLS4xODVIMTB2Ljk4NGguMDljLjIgMCAuMzg2LjAzOC41NjIuMTE1LjE3NC4wODIuMzI2LjE4OC40NTcuMzIuMTI3LjEzNC4yMy4yOS4zMDkuNDY3LjA3NC4xOC4xMS4zNy4xMS41NzMgMCAuMjI4LS4wMDMuNDUyLS4wMTEuNjcyLS4wMDguMjI4LS4wMDguNDUgMCAuNjY1LjAwNC4yMjIuMDIyLjQzNS4wNTUuNjQuMDMzLjIxNC4wODkuNDE2LjE2OC42MDlhMi4yODIgMi4yODIgMCAwIDAgLjczOC45NTUgMi4yODIgMi4yODIgMCAwIDAtLjczOC45NTUgMi43IDIuNyAwIDAgMC0uMTY4LjYwMmMtLjAzMy4yMS0uMDUxLjQyMy0uMDU1LjY0LS4wMDguMjItLjAwOC40NDIgMCAuNjY2LjAwOC4yMjQuMDEyLjQ1LjAxMi42NzhhMS40NyAxLjQ3IDAgMCAxLS40MiAxLjAzNSAxLjQ2NiAxLjQ2NiAwIDAgMS0uNDU3LjMxOSAxLjMzIDEuMzMgMCAwIDEtLjU2My4xMjFIMTB6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.property:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuODA3IDE0Ljk3NWExLjc1IDEuNzUgMCAwIDEtMS4yNTUtLjU1NiAxLjY4NCAxLjY4NCAwIDAgMS0uNTQ0LTEuMUExLjcyIDEuNzIgMCAwIDEgMS4zNiAxMi4xQzIuNTY4IDEwLjgzIDQuOTQ3IDguNDUgNi42NzggNi43NTVhNC4yNTcgNC4yNTcgMCAwIDEgLjA0OC0zLjA3OCA0LjA5NSA0LjA5NSAwIDAgMSAxLjY2NS0xLjk2OSA0LjI1OSA0LjI1OSAwIDAgMSA0LjA0LS4zNmwuNjE3LjI2OC0yLjg2NiAyLjk1MSAxLjI1NSAxLjI1OSAyLjk0NC0yLjg3Ny4yNjcuNjE5YTQuMjk1IDQuMjk1IDAgMCAxIC4wNCAzLjMxMSA0LjE5OCA0LjE5OCAwIDAgMS0uOTIzIDEuMzkyIDQuMjcgNC4yNyAwIDAgMS0uNzQzLjU4MSA0LjIxNyA0LjIxNyAwIDAgMS0zLjgxMi40NDZDOC4xMTIgMTAuNDEgNS4zNyAxMy4xNyAzLjg5IDE0LjU1MmExLjYzIDEuNjMgMCAwIDEtMS4wODQuNDIzem03LjkzOC0xMy4wNDdhMy4zMiAzLjMyIDAgMCAwLTEuODQ5LjU1N2MtLjIxMy4xMy0uNDEyLjI4NC0uNTkxLjQ1OGEzLjMyMSAzLjMyMSAwIDAgMC0uNjU3IDMuNzMzbC4xMzUuMjk3LS4yMzMuMjI3Yy0xLjczOCAxLjY5Ny00LjI2OSA0LjIyLTUuNDg1IDUuNTA0YS44MDUuODA1IDAgMCAwIC4xMzIgMS4wNS45MTEuOTExIDAgMCAwIC4yOTguMjJjLjEuMDQ0LjIwOS4wNjkuMzE5LjA3MmEuNjk0LjY5NCAwIDAgMCAuNDUtLjE4MWMxLjU3My0xLjQ2OSA0LjYxMi00LjUzOSA1LjUwNC01LjQ0bC4yMy0uMjMyLjI5NC4xMzVhMy4yODYgMy4yODYgMCAwIDAgMy4yMjUtLjI1NCAzLjMzIDMuMzMgMCAwIDAgLjU5MS0uNDY0IDMuMjggMy4yOCAwIDAgMCAuOTY0LTIuMzU4YzAtLjIxNS0uMDIxLS40My0uMDY0LS42NDJMMTEuNDMgNy4xMjUgOC44NzkgNC41NzhsMi41MTUtMi41OWEzLjI4NiAzLjI4NiAwIDAgMC0uNjUtLjA2eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.enum:before,.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.value:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDJMNyAzdjNoMVYzaDZ2NWgtNHYxaDRsMS0xVjNsLTEtMUg4em0xIDZMOCA3SDJMMSA4djVsMSAxaDZsMS0xVjh6TTggOVY4SDJ2NWg2Vjl6bTEtMi40MTRMOS40MTQgN0gxM1Y2SDl2LjU4NnpNMTMgNEg5djFoNFY0ek03IDlIM3YxaDRWOXptLTQgMmg0djFIM3YtMXoiIGZpbGw9IiNFRTlEMjgiLz48L3N2Zz4=)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.rule:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg4bDEtMVYybC0xLTFINHptMCAyVjJoOHYxMkg0di0xaDJ2LTFINHYtMmg0VjlINFY3aDJWNkg0VjRoNFYzSDR6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.file:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg5bDEtMVY1bC0uMjkzLS43MDctMy0zTDEwIDFINHptMCAxM1YyaDV2NGg0djhINHptOS05bC0zLTN2M2gzeiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==)}.hc-black .monaco-quick-open-widget .quick-open-tree .quick-open-entry .quick-open-entry-icon.string:before{content:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIyMyAxMC45MzNjLjMyNi4xOTIuNjk5LjI5IDEuMDc3LjI4MmEyLjE1OSAyLjE1OSAwIDAgMCAxLjc1NC0uODQyIDMuMjkxIDMuMjkxIDAgMCAwIC42NTQtMi4xMTMgMi44ODYgMi44ODYgMCAwIDAtLjU3Ni0xLjg3NyAxLjk5IDEuOTkgMCAwIDAtMS42MzQtLjczMyAyLjI5NCAyLjI5NCAwIDAgMC0xLjUyMy41NjdWMy40NzVoLS45OTFWMTEuMWguOTk1di0uMzQ0Yy4wNzYuMDY2LjE1OC4xMjUuMjQ0LjE3N3pNNy44NSA2LjdjLjE4Ni0uMDc5LjM4OC0uMTEzLjU5LS4xYTEuMDggMS4wOCAwIDAgMSAuODk2LjQyOGMuMjU3LjM2My4zODIuODAyLjM1NyAxLjI0NWEyLjQ4NSAyLjQ4NSAwIDAgMS0uNCAxLjQ4NCAxLjEzMyAxLjEzMyAwIDAgMS0uOTYuNTA4IDEuMjI0IDEuMjI0IDAgMCAxLS45NzYtLjQxN0ExLjUyMiAxLjUyMiAwIDAgMSA2Ljk3NSA4Ljh2LS42YTEuNzIyIDEuNzIyIDAgMCAxIC4zOTMtMS4xNDVjLjEzLS4xNTQuMjk2LS4yNzYuNDgyLS4zNTV6TTMuMjg5IDUuNjc1YTMuMDMgMy4wMyAwIDAgMC0uOTM3LjE2MiAyLjU5IDIuNTkgMCAwIDAtLjguNGwtLjEuMDc3djEuMmwuNDIzLS4zNTlhMi4xIDIuMSAwIDAgMSAxLjM2Ni0uNTcyLjc1OC43NTggMCAwIDEgLjY2MS4yODJjLjE1LjIzMi4yMy41MDMuMjMxLjc3OUwyLjkgNy44MjVhMi42IDIuNiAwIDAgMC0xLjM3OC41NzUgMS42NSAxLjY1IDAgMCAwLS4wMjIgMi4zMzYgMS43MzcgMS43MzcgMCAwIDAgMS4yNTMuNDU0IDEuOTYgMS45NiAwIDAgMCAxLjEwNy0uMzMyYy4xMDItLjA2OC4xOTctLjE0NS4yODYtLjIyOXYuNDQ0aC45NDFWNy43MTVhMi4xOTMgMi4xOTMgMCAwIDAtLjQ2OS0xLjUgMS42ODcgMS42ODcgMCAwIDAtMS4zMjktLjU0em0uODU3IDMuMDQxYy4wMi40MTgtLjEyLjgyOS0uMzkxIDEuMTQ4YTEuMjIxIDEuMjIxIDAgMCAxLS45NTUuNDIyLjgzMi44MzIgMCAwIDEtLjYwOC0uMi44MzMuODMzIDAgMCAxIDAtMS4wOTFjLjI4MS0uMTc0LjYtLjI3Ny45My0uM2wxLjAyLS4xNDguMDA0LjE2OXptOC4zMTMgMi4zMTdjLjMwNy4xMy42NC4xOTMuOTczLjE4Mi40OTUuMDEyLjk4My0uMTE0IDEuNDEtLjM2NWwuMTIzLS4wNzUuMDEzLS4wMDdWOS42MTVsLS40NDYuMzJjLS4zMTYuMjI0LS42OTYuMzQtMS4wODQuMzI5QTEuMyAxLjMgMCAwIDEgMTIuNCA5LjhhMS45NzUgMS45NzUgMCAwIDEtLjQtMS4zMTIgMi4wMSAyLjAxIDAgMCAxIC40NTMtMS4zODFBMS40MzIgMS40MzIgMCAwIDEgMTMuNiA2LjZhMS44IDEuOCAwIDAgMSAuOTcxLjI3OWwuNDMuMjY1VjUuOTdsLS4xNy0uMDczYTIuOSAyLjkgMCAwIDAtMS4xNy0uMjQ3IDIuNTIgMi41MiAwIDAgMC0xLjkyOS44MTcgMi45IDIuOSAwIDAgMC0uNzQ3IDIuMDQ5Yy0uMDI4LjcwNy4yMSAxLjQuNjcgMS45MzkuMjIyLjI0OS40OTcuNDQ2LjgwNC41Nzh6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+)}.monaco-editor .rename-box{z-index:100;color:inherit}.monaco-editor .rename-box .rename-input{padding:4px}.monaco-editor .snippet-placeholder{min-width:2px}.monaco-editor .finish-snippet-placeholder,.monaco-editor .snippet-placeholder{outline-style:solid;outline-width:1px}.monaco-editor .suggest-widget{z-index:40;width:430px}.monaco-editor .suggest-widget>.details,.monaco-editor .suggest-widget>.message,.monaco-editor .suggest-widget>.tree{width:100%;border-style:solid;border-width:1px;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.hc-black .suggest-widget>.details,.monaco-editor.hc-black .suggest-widget>.message,.monaco-editor.hc-black .suggest-widget>.tree{border-width:2px}.monaco-editor .suggest-widget.docs-side{width:660px}.monaco-editor .suggest-widget.docs-side>.details,.monaco-editor .suggest-widget.docs-side>.tree{width:50%;float:left}.monaco-editor .suggest-widget.docs-side.list-right>.details,.monaco-editor .suggest-widget.docs-side.list-right>.tree{float:right}.monaco-editor .suggest-widget>.message{padding-left:22px}.monaco-editor .suggest-widget>.tree{height:100%}.monaco-editor .suggest-widget .monaco-list{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;-o-user-select:none;user-select:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row{display:-webkit-box;display:-ms-flexbox;display:flex;-mox-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:10px;background-repeat:no-repeat;background-position:2px 2px;white-space:nowrap;cursor:pointer;-ms-touch-action:none;touch-action:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents{-webkit-box-flex:1;-ms-flex:1;flex:1;height:100%;overflow:hidden;padding-left:2px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:pre}.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight{font-weight:700}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.header>.close,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore{opacity:.6;background-position:50%;background-repeat:no-repeat;background-size:70%;cursor:pointer}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.header>.close{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ2LjcwNy0uNzA3TDguNzA3IDhsMy42NDYtMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDdMOCA4LjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=");position:absolute;top:0;right:0;margin-right:5px}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDcuNWE1LjUgNS41IDAgMSAxIDExIDAgNS41IDUuNSAwIDAgMS0xMSAwem0tMSAwYTYuNSA2LjUgMCAxIDEgMTMgMCA2LjUgNi41IDAgMCAxLTEzIDB6TTggNVY0aDF2MUg4em0wIDVWNmgxdjRIOHoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.header>.close:hover,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore:hover{opacity:1}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.type-label{margin-left:.8em;-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;overflow:hidden;text-overflow:ellipsis;opacity:.7;white-space:nowrap}.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.type-label>.monaco-tokenized-source{display:inline}.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row.focused>.contents>.main>.readMore,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused>.contents>.main>.readMore,.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused>.contents>.main>.type-label,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore,.monaco-editor .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.type-label{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main>.readMore,.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused>.contents>.main>.type-label{display:inline}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated{opacity:.66;text-decoration:unset}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated>.monaco-icon-label-description-container{text-decoration:line-through}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label:before{height:100%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon{display:block;height:16px;width:16px;margin-left:2px;background-repeat:no-repeat;background-size:80%;background-position:50%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .monaco-icon-label.suggest-icon:before{display:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.suggest-icon:before{content:" ";background-repeat:no-repeat;background-position:50%;background-size:75%}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constructor:before,.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.function:before,.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.method:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDQuODU3TDIuNDg2IDRsNS0zaDEuMDI5bDUgMyAuNDg1Ljg1N3Y2bC0uNDg2Ljg1OC01IDNINy40ODZsLTUtM0wyIDEwLjg1OHYtNnptNS41IDguN2wtNC41LTIuN1Y1LjdsNC41IDIuNDU0djUuNDAzem0xIDBsNC41LTIuN1Y1LjdMOC41IDguMTU0djUuNDAzek04IDEuODU3TDMuMjYgNC43MDIgOCA3LjI4OGw0Ljc0LTIuNTg2TDggMS44NTd6IiBmaWxsPSIjNjUyRDkwIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.field:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDYuMzk0bC41NTMtLjg5NCA3LTMuNWguODk0bDUgMi41LjU1My44OTR2NC41bC0uNTUzLjg5NS03IDMuNWgtLjg5NGwtNS0yLjVMMSAxMC44OTR2LTQuNXptNS41IDYuNzVMMiAxMC44OTRWNy4xNzFsNC41IDIuMDQ1djMuOTI4em0xIDBsNi41LTMuMjVWNi4xOEw3LjUgOS4yMTN2My45MzF6TTkgMi44OTRMMi4zMzcgNi4yMjZsNC42NiAyLjExOCA2LjY3NC0zLjExNEw5IDIuODk0eiIgZmlsbD0iIzAwN0FDQyIvPjwvc3ZnPg==")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.event:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQxNCAxLjU2TDguMzEyIDFoMy4yOTRsLjgxOCAxLjU3NUwxMC4yMzYgNmgxLjc4MWwuNzIgMS42OTVMNS42MTggMTVsLTEuNjAyLTEuMTYzTDYuMTE5IDEwSDQuODk4TDQgOC41NmwzLjQxNC03ek03Ljc4IDlMNC45IDE0LjMwNSAxMi4wMTggN0g4LjMxMmwzLjI5NC01SDguMzEyTDQuODk4IDlINy43OHoiIGZpbGw9IiNENjdFMDAiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.operator:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjg3MyAxLjFjLjMzNS4xMzYuNjAyLjM5OC43NDUuNzMuMDcyLjE3LjEwOS4zNTIuMTA3LjUzN2ExLjM0IDEuMzQgMCAwIDEtLjYxIDEuMTM1IDEuMzU5IDEuMzU5IDAgMCAxLS43NTMuMjIzQTEuMzU1IDEuMzU1IDAgMCAxIDEgMi4zNjJhMS4zNTUgMS4zNTUgMCAwIDEgLjgzLTEuMjU2Yy4zMzMtLjE0LjcwOC0uMTQxIDEuMDQzLS4wMDZ6bS0uMjk4IDEuNzY1YS41NTEuNTUxIDAgMCAwIC4zMzItLjUuNTQ4LjU0OCAwIDEgMC0uMzMyLjV6TTYuNDMgMS4xMDlMMS4xMSA2LjQzbC42ODYuNjg3IDUuMzItNS4zMi0uNjg2LS42ODd6TTExLjUgOWgxdjIuNUgxNXYxaC0yLjVWMTVoLTF2LTIuNUg5di0xaDIuNVY5em0tNS43MzIuNTI1bC43MDcuNzA3TDQuNzA3IDEybDEuNzY4IDEuNzY4LS43MDcuNzA3TDQgMTIuNzA3bC0xLjc2OCAxLjc2OC0uNzA3LS43MDdMMy4yOTMgMTJsLTEuNzY4LTEuNzY4LjcwNy0uNzA3TDQgMTEuMjkzbDEuNzY4LTEuNzY4em0xLjM1LTQuMTk1YTEuMzUzIDEuMzUzIDAgMCAwLTEuMjU2LS44MyAxLjM1NSAxLjM1NSAwIDAgMC0xLjI1Ni44MyAxLjM2MiAxLjM2MiAwIDAgMCAxLjI1NyAxLjg5NUExLjM1OCAxLjM1OCAwIDAgMCA3LjExOCA1LjMzem0tLjc1My43NDVhLjU1My41NTMgMCAwIDEtLjI4OS4yOS41NDcuNTQ3IDAgMCAxLS41OTktLjExNy41MjkuNTI5IDAgMCAxLS4xMTctLjE3My41NDQuNTQ0IDAgMCAxIC43MTYtLjcxNS41NjUuNTY1IDAgMCAxIC4xNzMuMTE2LjU0OS41NDkgMCAwIDEgLjExNi41OTl6TTE0IDNoLTR2MWg0VjN6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.variable:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgNGwtLjUuNXY4bC41LjVINHYtMUgyVjVoMlY0SDEuNXptMTMgOWwuNS0uNXYtOGwtLjUtLjVIMTJ2MWgydjdoLTJ2MWgyLjV6TTguNzk3IDVsLTQuNSAyTDQgNy40NTd2Mi41bC4yNDMuNDI5IDIuNSAxLjUuNDYuMDI4IDQuNS0yTDEyIDkuNDU3di0yLjVsLS4yNDMtLjQyOS0yLjUtMS41TDguNzk3IDV6TTUgOC4zNHYxLjMzNGwxLjUuOVY5LjI0TDUgOC4zNHptMi41Ljk0MnYxLjQwNUwxMSA5LjEzM1Y3LjcyNkw3LjUgOS4yODJ6bTIuOTE4LTIuMzkxbC0xLjQ1Mi0uODcyLTMuMzg0IDEuNTA0IDEuNDUyLjg3MSAzLjM4NC0xLjUwM3oiIGZpbGw9IiMwMDdBQ0MiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.class:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjM1NCA2LjY0NkwyLjA2IDUuMzU0IDUuMzU0IDIuMDZsMS4yOTIgMS4yOTMtMy4yOTIgMy4yOTJ6TTUgMUwxIDV2LjcwN2wyIDJoLjcwN2wxLjE0Ny0xLjE0NnY1Ljc5M2wuNS41aDQuNjU2di41MmwxLjMzMyAxLjMzM2guNzA3bDIuNjY3LTIuNjY2di0uNzA3TDEzLjM4MyAxMGgtLjcwN2wtMS44NTMgMS44NTRoLTQuOTd2LTMuOTZoNC4xNTd2LjQ4bDEuMzMzIDEuMzMzaC43MDdsMi42NjctMi42NjZ2LS43MDdMMTMuMzgzIDVoLS43MDdsLTEuODEzIDEuODE0aC01LjAxVjUuNTZsMS44NTQtMS44NTRWM2wtMi0ySDV6bTYuMDcgNy4wMmwuNjI3LjYyNyAxLjk2LTEuOTYtLjYyNy0uNjI2LTEuOTYgMS45NnptMCA1bC42MjcuNjI3IDEuOTYtMS45Ni0uNjI3LS42MjYtMS45NiAxLjk2eiIgZmlsbD0iI0Q2N0UwMCIvPjwvc3ZnPg==")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.interface:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS41IDVhMi41IDIuNSAwIDEgMCAwIDUgMi41IDIuNSAwIDAgMCAwLTV6TTguMDM1IDhhMy41IDMuNSAwIDEgMCAwLTFINC45MzdhMiAyIDAgMSAwIDAgMWgzLjA5OHoiIGZpbGw9IiMwMDdBQ0MiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.struct:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDJMMSAzdjNsMSAxaDEybDEtMVYzbC0xLTFIMnptMCAxaDEydjNIMlYzem0tMSA3bDEtMWgzbDEgMXYzbC0xIDFIMmwtMS0xdi0zem0yIDBIMnYzaDN2LTNIM3ptNyAwbDEtMWgzbDEgMXYzbC0xIDFoLTNsLTEtMXYtM3ptMiAwaC0xdjNoM3YtM2gtMnoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.type-parameter:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSA2aC0xdi0uNWEuNS41IDAgMCAwLS41LS41SDguNDc5djUuNWEuNS41IDAgMCAwIC41LjVoLjV2MWgtM3YtMWguNWEuNS41IDAgMCAwIC41LS41VjVINi41YS41LjUgMCAwIDAtLjUuNVY2SDVWNGg2djJ6bTIuOTE0IDIuMDQ4bC0xLjQ2Mi0xLjQ2Mi43MDctLjcwNyAxLjgxNiAxLjgxNnYuNzA3bC0xLjc2OCAxLjc2Ny0uNzA3LS43MDcgMS40MTQtMS40MTR6TTMuNTQ4IDkuNDYyTDIuMDg2IDggMy41IDYuNTg2bC0uNzA3LS43MDctMS43NjggMS43Njd2LjcwOGwxLjgxNiAxLjgxNS43MDctLjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.module:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDIuOTg0VjJoLS4wOWMtLjMxMyAwLS42MTYuMDYyLS45MDkuMTg1YTIuMzMgMi4zMyAwIDAgMC0uNzc1LjUzIDIuMjMgMi4yMyAwIDAgMC0uNDkzLjc1M3YuMDAxYTMuNTQyIDMuNTQyIDAgMCAwLS4xOTguODN2LjAwMmE2LjA4IDYuMDggMCAwIDAtLjAyNC44NjNjLjAxMi4yOS4wMTguNTguMDE4Ljg2OSAwIC4yMDMtLjA0LjM5My0uMTE3LjU3MnYuMDAxYTEuNTA0IDEuNTA0IDAgMCAxLS43NjUuNzg3IDEuMzc2IDEuMzc2IDAgMCAxLS41NTguMTE1SDJ2Ljk4NGguMDljLjE5NSAwIC4zOC4wNC41NTYuMTIxbC4wMDEuMDAxYy4xNzguMDc4LjMyOS4xODQuNDU1LjMxOGwuMDAyLjAwMmMuMTMuMTMuMjMzLjI4NS4zMDcuNDY1bC4wMDEuMDAyYy4wNzguMTguMTE3LjM2OC4xMTcuNTY2IDAgLjI5LS4wMDYuNTgtLjAxOC44NjktLjAxMi4yOTYtLjAwNC41ODUuMDI0Ljg3di4wMDFjLjAzMy4yODMuMDk5LjU1OC4xOTcuODI0di4wMDFjLjEwNi4yNzMuMjcxLjUyNC40OTQuNzUzLjIyMy4yMy40ODIuNDA3Ljc3NS41My4yOTMuMTIzLjU5Ni4xODUuOTEuMTg1SDZ2LS45ODRoLS4wOWMtLjE5OSAwLS4zODctLjAzOC0uNTYyLS4xMTVhMS42MTMgMS42MTMgMCAwIDEtLjQ1Ny0uMzIgMS42NTkgMS42NTkgMCAwIDEtLjMwOS0uNDY3Yy0uMDc0LS4xOC0uMTEtLjM3LS4xMS0uNTczIDAtLjIyOC4wMDMtLjQ1My4wMTEtLjY3Mi4wMDgtLjIyOC4wMDgtLjQ1IDAtLjY2NWE0LjYzOSA0LjYzOSAwIDAgMC0uMDU1LS42NCAyLjY4MiAyLjY4MiAwIDAgMC0uMTY4LS42MDlBMi4yODQgMi4yODQgMCAwIDAgMy41MjIgOGEyLjI4NCAyLjI4NCAwIDAgMCAuNzM4LS45NTVjLjA4LS4xOTIuMTM1LS4zOTMuMTY4LS42MDIuMDMzLS4yMS4wNTEtLjQyMy4wNTUtLjY0LjAwOC0uMjIuMDA4LS40NDIgMC0uNjY2LS4wMDgtLjIyNC0uMDEyLS40NS0uMDEyLS42NzhhMS40NyAxLjQ3IDAgMCAxIC44NzctMS4zNTQgMS4zMyAxLjMzIDAgMCAxIC41NjMtLjEyMUg2em00IDEwLjAzMlYxNGguMDljLjMxMyAwIC42MTYtLjA2Mi45MDktLjE4NS4yOTMtLjEyMy41NTItLjMuNzc1LS41My4yMjMtLjIzLjM4OC0uNDguNDkzLS43NTN2LS4wMDFjLjEtLjI2Ni4xNjUtLjU0My4xOTgtLjgzdi0uMDAyYy4wMjgtLjI4LjAzNi0uNTY3LjAyNC0uODYzLS4wMTItLjI5LS4wMTgtLjU4LS4wMTgtLjg2OSAwLS4yMDMuMDQtLjM5My4xMTctLjU3MnYtLjAwMWExLjUwNCAxLjUwNCAwIDAgMSAuNzY1LS43ODdjLjE3Ni0uMDc3LjM2Mi0uMTE1LjU1OC0uMTE1SDE0di0uOTg0aC0uMDljLS4xOTUgMC0uMzgtLjA0LS41NTYtLjEyMWwtLjAwMS0uMDAxYTEuMzc2IDEuMzc2IDAgMCAxLS40NTUtLjMxOGwtLjAwMi0uMDAyYTEuNDE0IDEuNDE0IDAgMCAxLS4zMDctLjQ2NWwtLjAwMS0uMDAyYTEuNDA1IDEuNDA1IDAgMCAxLS4xMTctLjU2NmMwLS4yOS4wMDYtLjU4LjAxOC0uODY5YTYuMTkgNi4xOSAwIDAgMC0uMDI0LS44N3YtLjAwMWEzLjU0MiAzLjU0MiAwIDAgMC0uMTk3LS44MjR2LS4wMDFhMi4yMyAyLjIzIDAgMCAwLS40OTQtLjc1MyAyLjMzIDIuMzMgMCAwIDAtLjc3NS0uNTMgMi4zMjUgMi4zMjUgMCAwIDAtLjkxLS4xODVIMTB2Ljk4NGguMDljLjIgMCAuMzg2LjAzOC41NjIuMTE1LjE3NC4wODIuMzI2LjE4OC40NTcuMzIuMTI3LjEzNC4yMy4yOS4zMDkuNDY3LjA3NC4xOC4xMS4zNy4xMS41NzMgMCAuMjI4LS4wMDMuNDUyLS4wMTEuNjcyLS4wMDguMjI4LS4wMDguNDUgMCAuNjY1LjAwNC4yMjIuMDIyLjQzNS4wNTUuNjQuMDMzLjIxNC4wODkuNDE2LjE2OC42MDlhMi4yODIgMi4yODIgMCAwIDAgLjczOC45NTUgMi4yODIgMi4yODIgMCAwIDAtLjczOC45NTUgMi43IDIuNyAwIDAgMC0uMTY4LjYwMmMtLjAzMy4yMS0uMDUxLjQyMy0uMDU1LjY0LS4wMDguMjItLjAwOC40NDIgMCAuNjY2LjAwOC4yMjQuMDEyLjQ1LjAxMi42NzhhMS40NyAxLjQ3IDAgMCAxLS40MiAxLjAzNSAxLjQ2NiAxLjQ2NiAwIDAgMS0uNDU3LjMxOSAxLjMzIDEuMzMgMCAwIDEtLjU2My4xMjFIMTB6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.property:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuODA3IDE0Ljk3NWExLjc1IDEuNzUgMCAwIDEtMS4yNTUtLjU1NiAxLjY4NCAxLjY4NCAwIDAgMS0uNTQ0LTEuMUExLjcyIDEuNzIgMCAwIDEgMS4zNiAxMi4xQzIuNTY4IDEwLjgzIDQuOTQ3IDguNDUgNi42NzggNi43NTVhNC4yNTcgNC4yNTcgMCAwIDEgLjA0OC0zLjA3OCA0LjA5NSA0LjA5NSAwIDAgMSAxLjY2NS0xLjk2OSA0LjI1OSA0LjI1OSAwIDAgMSA0LjA0LS4zNmwuNjE3LjI2OC0yLjg2NiAyLjk1MSAxLjI1NSAxLjI1OSAyLjk0NC0yLjg3Ny4yNjcuNjE5YTQuMjk1IDQuMjk1IDAgMCAxIC4wNCAzLjMxMSA0LjE5OCA0LjE5OCAwIDAgMS0uOTIzIDEuMzkyIDQuMjcgNC4yNyAwIDAgMS0uNzQzLjU4MSA0LjIxNyA0LjIxNyAwIDAgMS0zLjgxMi40NDZDOC4xMTIgMTAuNDEgNS4zNyAxMy4xNyAzLjg5IDE0LjU1MmExLjYzIDEuNjMgMCAwIDEtMS4wODQuNDIzem03LjkzOC0xMy4wNDdhMy4zMiAzLjMyIDAgMCAwLTEuODQ5LjU1N2MtLjIxMy4xMy0uNDEyLjI4NC0uNTkxLjQ1OGEzLjMyMSAzLjMyMSAwIDAgMC0uNjU3IDMuNzMzbC4xMzUuMjk3LS4yMzMuMjI3Yy0xLjczOCAxLjY5Ny00LjI2OSA0LjIyLTUuNDg1IDUuNTA0YS44MDUuODA1IDAgMCAwIC4xMzIgMS4wNS45MTEuOTExIDAgMCAwIC4yOTguMjJjLjEuMDQ0LjIwOS4wNjkuMzE5LjA3MmEuNjk0LjY5NCAwIDAgMCAuNDUtLjE4MWMxLjU3My0xLjQ2OSA0LjYxMi00LjUzOSA1LjUwNC01LjQ0bC4yMy0uMjMyLjI5NC4xMzVhMy4yODYgMy4yODYgMCAwIDAgMy4yMjUtLjI1NCAzLjMzIDMuMzMgMCAwIDAgLjU5MS0uNDY0IDMuMjggMy4yOCAwIDAgMCAuOTY0LTIuMzU4YzAtLjIxNS0uMDIxLS40My0uMDY0LS42NDJMMTEuNDMgNy4xMjUgOC44NzkgNC41NzhsMi41MTUtMi41OWEzLjI4NiAzLjI4NiAwIDAgMC0uNjUtLjA2eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.unit:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg4bDEtMVYybC0xLTFINHptMCAyVjJoOHYxMkg0di0xaDJ2LTFINHYtMmg0VjlINFY3aDJWNkg0VjRoNFYzSDR6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constant:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZoOHYxSDRWNnptOCAzSDR2MWg4Vjl6IiBmaWxsPSIjNDI0MjQyIi8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDRsMS0xaDEybDEgMXY4bC0xIDFIMmwtMS0xVjR6bTEgMHY4aDEyVjRIMnoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum:before,.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.value:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDJMNyAzdjNoMVYzaDZ2NWgtNHYxaDRsMS0xVjNsLTEtMUg4em0xIDZMOCA3SDJMMSA4djVsMSAxaDZsMS0xVjh6TTggOVY4SDJ2NWg2Vjl6bTEtMi40MTRMOS40MTQgN0gxM1Y2SDl2LjU4NnpNMTMgNEg5djFoNFY0ek03IDlIM3YxaDRWOXptLTQgMmg0djFIM3YtMXoiIGZpbGw9IiNENjdFMDAiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum-member:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDNsMS0xaDZsMSAxdjVsLTEgMWgtNFY4aDRWM0g4djNIN1Yzem0xIDRsMSAxdjVsLTEgMUgybC0xLTFWOGwxLTFoNnptMCAxdjVIMlY4aDZ6bTEuNDE0LTFMOSA2LjU4NlY2aDR2MUg5LjQxNHpNOSA0aDR2MUg5VjR6bS0yIDZIM3YxaDR2LTF6IiBmaWxsPSIjMDA3QUNDIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.keyword:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1IDRoLTVWM2g1djF6bS0xIDNoLTJ2MWgyVjd6bS00IDBIMXYxaDlWN3ptMiA2SDF2MWgxMXYtMXptLTUtM0gxdjFoNnYtMXptOCAwaC01djFoNXYtMXpNOCAydjNIMVYyaDd6TTcgM0gydjFoNVYzeiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.text:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIyMyAxMC45MzNjLjMyNi4xOTIuNjk5LjI5IDEuMDc3LjI4MmEyLjE1OSAyLjE1OSAwIDAgMCAxLjc1NC0uODQyIDMuMjkxIDMuMjkxIDAgMCAwIC42NTQtMi4xMTMgMi44ODYgMi44ODYgMCAwIDAtLjU3Ni0xLjg3NyAxLjk5IDEuOTkgMCAwIDAtMS42MzQtLjczMyAyLjI5NCAyLjI5NCAwIDAgMC0xLjUyMy41NjdWMy40NzVoLS45OTFWMTEuMWguOTk1di0uMzQ0Yy4wNzYuMDY2LjE1OC4xMjUuMjQ0LjE3N3pNNy44NSA2LjdjLjE4Ni0uMDc5LjM4OC0uMTEzLjU5LS4xYTEuMDggMS4wOCAwIDAgMSAuODk2LjQyOGMuMjU3LjM2My4zODIuODAyLjM1NyAxLjI0NWEyLjQ4NSAyLjQ4NSAwIDAgMS0uNCAxLjQ4NCAxLjEzMyAxLjEzMyAwIDAgMS0uOTYuNTA4IDEuMjI0IDEuMjI0IDAgMCAxLS45NzYtLjQxN0ExLjUyMiAxLjUyMiAwIDAgMSA2Ljk3NSA4Ljh2LS42YTEuNzIyIDEuNzIyIDAgMCAxIC4zOTMtMS4xNDVjLjEzLS4xNTQuMjk2LS4yNzYuNDgyLS4zNTV6TTMuMjg5IDUuNjc1YTMuMDMgMy4wMyAwIDAgMC0uOTM3LjE2MiAyLjU5IDIuNTkgMCAwIDAtLjguNGwtLjEuMDc3djEuMmwuNDIzLS4zNTlhMi4xIDIuMSAwIDAgMSAxLjM2Ni0uNTcyLjc1OC43NTggMCAwIDEgLjY2MS4yODJjLjE1LjIzMi4yMy41MDMuMjMxLjc3OUwyLjkgNy44MjVhMi42IDIuNiAwIDAgMC0xLjM3OC41NzUgMS42NSAxLjY1IDAgMCAwLS4wMjIgMi4zMzYgMS43MzcgMS43MzcgMCAwIDAgMS4yNTMuNDU0IDEuOTYgMS45NiAwIDAgMCAxLjEwNy0uMzMyYy4xMDItLjA2OC4xOTctLjE0NS4yODYtLjIyOXYuNDQ0aC45NDFWNy43MTVhMi4xOTMgMi4xOTMgMCAwIDAtLjQ2OS0xLjUgMS42ODcgMS42ODcgMCAwIDAtMS4zMjktLjU0em0uODU3IDMuMDQxYy4wMi40MTgtLjEyLjgyOS0uMzkxIDEuMTQ4YTEuMjIxIDEuMjIxIDAgMCAxLS45NTUuNDIyLjgzMi44MzIgMCAwIDEtLjYwOC0uMi44MzMuODMzIDAgMCAxIDAtMS4wOTFjLjI4MS0uMTc0LjYtLjI3Ny45My0uM2wxLjAyLS4xNDguMDA0LjE2OXptOC4zMTMgMi4zMTdjLjMwNy4xMy42NC4xOTMuOTczLjE4Mi40OTUuMDEyLjk4My0uMTE0IDEuNDEtLjM2NWwuMTIzLS4wNzUuMDEzLS4wMDdWOS42MTVsLS40NDYuMzJjLS4zMTYuMjI0LS42OTYuMzQtMS4wODQuMzI5QTEuMyAxLjMgMCAwIDEgMTIuNCA5LjhhMS45NzUgMS45NzUgMCAwIDEtLjQtMS4zMTIgMi4wMSAyLjAxIDAgMCAxIC40NTMtMS4zODFBMS40MzIgMS40MzIgMCAwIDEgMTMuNiA2LjZhMS44IDEuOCAwIDAgMSAuOTcxLjI3OWwuNDMuMjY1VjUuOTdsLS4xNy0uMDczYTIuOSAyLjkgMCAwIDAtMS4xNy0uMjQ3IDIuNTIgMi41MiAwIDAgMC0xLjkyOS44MTcgMi45IDIuOSAwIDAgMC0uNzQ3IDIuMDQ5Yy0uMDI4LjcwNy4yMSAxLjQuNjcgMS45MzkuMjIyLjI0OS40OTcuNDQ2LjgwNC41Nzh6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.color:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjYgMTEuNzY3YTEuODY3IDEuODY3IDAgMCAwLTIuNjQtMi42NGMtMS4wNDIgMS4wOTgtMi44NTYuODEyLTIuOTQ3LS42OThBNyA3IDAgMSAxIDcuNCAxNC45NzVjLTEuNTk0LS4xMzYtMS45MDEtMi4wNDktLjgtMy4yMDh6bS4zNjcgMS43NzZjLS4wNjQtLjI5Ny4wMjEtLjcyOC4zNTEtMS4wOGEyLjg2NyAyLjg2NyAwIDAgMC0uMDEtNC4wNDNoLS4wMDFhMi44NjcgMi44NjcgMCAwIDAtNC4wNTQgMGwtLjAxLjAxLS4wMDguMDA5Yy0uMjk2LjMxMS0uNjY0LjM4Ny0uOTAyLjMzOGEuMzk4LjM5OCAwIDAgMS0uMjIzLS4xMTVjLS4wMzYtLjA0LS4wODktLjEyMi0uMDk5LS4yOTRhNiA2IDAgMSAxIDUuNDczIDUuNjFjLS4xOTQtLjAxNi0uMy0uMDgtLjM2LS4xMzVhLjU1NS41NTUgMCAwIDEtLjE1Ny0uM3pNNSA2YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptNyA1YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpNOCA1YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptNSAzYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptLTItMmExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.file:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg5bDEtMVY1bC0uMjkzLS43MDctMy0zTDEwIDFINHptMCAxM1YyaDV2NGg0djhINHptOS05bC0zLTN2M2gzeiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.reference:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDMuODU0TDUuOTE1IDZsLS43MDctLjcwN0w2LjUgNGgtM2ExLjUgMS41IDAgMCAwIDAgM0g0djFoLS41YTIuNSAyLjUgMCAxIDEgMC01aDNMNiAyLjVsLS43OTMtLjc5M0w1LjkxNCAxbDIuMTQ3IDIuMTQ2di43MDh6TTUgNi41bC45MTQuOTE0TDYgNy4zMjhWMTRoOFY3aC00VjNoLS45NHYtLjI2OEw4LjMyOSAySDExLjJsLjMuMSAzLjQgMy41LjEuNHY4LjVsLS41LjVoLTlsLS41LS41di04ek0xMSAzdjNoMi45MDNMMTEgM3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.snippet:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgMWwtLjUuNVYxM2gxVjJoMTF2MTFoMVYxLjVsLS41LS41aC0xMnpNMiAxNXYtMWgxdjFIMnptMy0xSDR2MWgxdi0xem0xIDBoMXYxSDZ2LTF6bTMgMEg4djFoMXYtMXptMSAwaDF2MWgtMXYtMXptNSAxdi0xaC0xdjFoMXptLTMtMWgxdjFoLTF2LTF6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.customcolor:before{background-image:none}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon.folder:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjAxIDIuNWwuNS0uNWg0Ljk5N2wuMzU0LjE0Ni44NTIuODUzaDYuNzg4bC41LjV2NS40OTZsLS4wMS4wMTF2NC40OTZsLS41LjVIMS41bC0uNS0uNVY2LjUwN2wuMDEtLjAxVjIuNXpNMTQuMDAyIDR2MS4wMDNoLTYuNWwtLjM1NC4xNDctLjg1OC44NTdIMi4wMTFWM0g2LjNsLjg1My44NTMuMzUzLjE0Nmg2LjQ5NXpNNi40OTYgNy4wMDZIMi4wMTF2LjQ4OUgydjUuNTA3aDExLjk5di03SDcuNzA4bC0uODU4Ljg1OC0uMzU0LjE0NnoiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=")}.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan{margin:0 0 0 .3em;border:.1em solid #000;width:.7em;height:.7em;display:inline-block}.monaco-editor .suggest-widget .details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;cursor:default}.monaco-editor .suggest-widget .details.no-docs{display:none}.monaco-editor .suggest-widget.docs-below .details{border-top-width:0}.monaco-editor .suggest-widget .details>.monaco-scrollable-element{-webkit-box-flex:1;-ms-flex:1;flex:1}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;width:100%}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.header>.type{-webkit-box-flex:2;-ms-flex:2;flex:2;overflow:hidden;text-overflow:ellipsis;opacity:.7;word-break:break-all;margin:0 24px 0 0;padding:4px 0 12px 5px}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs{margin:0;padding:4px 5px;white-space:pre-wrap}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs.markdown-docs{padding:0;white-space:normal}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs.markdown-docs>div,.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs.markdown-docs>span:not(:empty){padding:4px 5px}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:first-child{margin-top:0}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs.markdown-docs>div>p:last-child{margin-bottom:0}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>.docs .code{white-space:pre-wrap;word-wrap:break-word}.monaco-editor .suggest-widget .details>.monaco-scrollable-element>.body>p:empty{display:none}.monaco-editor .suggest-widget .details code{border-radius:3px;padding:0 .4em}.monaco-editor.hc-black .suggest-widget .details>.monaco-scrollable-element>.body>.header>.close,.monaco-editor.vs-dark .suggest-widget .details>.monaco-scrollable-element>.body>.header>.close{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ2LjcwNy0uNzA3TDguNzA3IDhsMy42NDYtMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDdMOCA4LjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row>.contents>.main>.readMore{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDcuNWE1LjUgNS41IDAgMSAxIDExIDAgNS41IDUuNSAwIDAgMS0xMSAwem0tMSAwYTYuNSA2LjUgMCAxIDEgMTMgMCA2LjUgNi41IDAgMCAxLTEzIDB6TTggNHYxaDFWNEg4em0wIDJ2NGgxVjZIOHoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constructor:before,.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.function:before,.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.method:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constructor:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.function:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.method:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDQuODU3TDIuNDg2IDRsNS0zaDEuMDI5bDUgMyAuNDg1Ljg1N3Y2bC0uNDg2Ljg1OC01IDNINy40ODZsLTUtM0wyIDEwLjg1OHYtNnptNS41IDguN2wtNC41LTIuN1Y1LjdsNC41IDIuNDU0djUuNDAzem0xIDBsNC41LTIuN1Y1LjdMOC41IDguMTU0djUuNDAzek04IDEuODU3TDMuMjYgNC43MDIgOCA3LjI4OGw0Ljc0LTIuNTg2TDggMS44NTd6IiBmaWxsPSIjQjE4MEQ3Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.field:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.field:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDYuMzk0bC41NTMtLjg5NCA3LTMuNWguODk0bDUgMi41LjU1My44OTR2NC41bC0uNTUzLjg5NS03IDMuNWgtLjg5NGwtNS0yLjVMMSAxMC44OTR2LTQuNXptNS41IDYuNzVMMiAxMC44OTRWNy4xNzFsNC41IDIuMDQ1djMuOTI4em0xIDBsNi41LTMuMjVWNi4xOEw3LjUgOS4yMTN2My45MzF6TTkgMi44OTRMMi4zMzcgNi4yMjZsNC42NiAyLjExOCA2LjY3NC0zLjExNEw5IDIuODk0eiIgZmlsbD0iIzc1QkVGRiIvPjwvc3ZnPg==")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.event:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.event:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQxNCAxLjU2TDguMzEyIDFoMy4yOTRsLjgxOCAxLjU3NUwxMC4yMzYgNmgxLjc4MWwuNzIgMS42OTVMNS42MTggMTVsLTEuNjAyLTEuMTYzTDYuMTE5IDEwSDQuODk4TDQgOC41NmwzLjQxNC03ek03Ljc4IDlMNC45IDE0LjMwNSAxMi4wMTggN0g4LjMxMmwzLjI5NC01SDguMzEyTDQuODk4IDlINy43OHoiIGZpbGw9IiNENjdFMDAiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.operator:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.operator:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjg3MyAxLjFjLjMzNS4xMzYuNjAyLjM5OC43NDUuNzMuMDcyLjE3LjEwOS4zNTIuMTA3LjUzN2ExLjM0IDEuMzQgMCAwIDEtLjYxIDEuMTM1IDEuMzU5IDEuMzU5IDAgMCAxLS43NTMuMjIzQTEuMzU1IDEuMzU1IDAgMCAxIDEgMi4zNjJhMS4zNTUgMS4zNTUgMCAwIDEgLjgzLTEuMjU2Yy4zMzMtLjE0LjcwOC0uMTQxIDEuMDQzLS4wMDZ6bS0uMjk4IDEuNzY1YS41NTEuNTUxIDAgMCAwIC4zMzItLjUuNTQ4LjU0OCAwIDEgMC0uMzMyLjV6TTYuNDMgMS4xMDlMMS4xMSA2LjQzbC42ODYuNjg3IDUuMzItNS4zMi0uNjg2LS42ODd6TTExLjUgOWgxdjIuNUgxNXYxaC0yLjVWMTVoLTF2LTIuNUg5di0xaDIuNVY5em0tNS43MzIuNTI1bC43MDcuNzA3TDQuNzA3IDEybDEuNzY4IDEuNzY4LS43MDcuNzA3TDQgMTIuNzA3bC0xLjc2OCAxLjc2OC0uNzA3LS43MDdMMy4yOTMgMTJsLTEuNzY4LTEuNzY4LjcwNy0uNzA3TDQgMTEuMjkzbDEuNzY4LTEuNzY4em0xLjM1LTQuMTk1YTEuMzUzIDEuMzUzIDAgMCAwLTEuMjU2LS44MyAxLjM1NSAxLjM1NSAwIDAgMC0xLjI1Ni44MyAxLjM2MiAxLjM2MiAwIDAgMCAxLjI1NyAxLjg5NUExLjM1OCAxLjM1OCAwIDAgMCA3LjExOCA1LjMzem0tLjc1My43NDVhLjU1My41NTMgMCAwIDEtLjI4OS4yOS41NDcuNTQ3IDAgMCAxLS41OTktLjExNy41MjkuNTI5IDAgMCAxLS4xMTctLjE3My41NDQuNTQ0IDAgMCAxIC43MTYtLjcxNS41NjUuNTY1IDAgMCAxIC4xNzMuMTE2LjU0OS41NDkgMCAwIDEgLjExNi41OTl6TTE0IDNoLTR2MWg0VjN6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.variable:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.variable:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjUgNGwtLjUuNXY4bC41LjVINHYtMUgyVjVoMlY0SDEuNXptMTMgOWwuNS0uNXYtOGwtLjUtLjVIMTJ2MWgydjdoLTJ2MWgyLjV6TTguNzk3IDVsLTQuNSAyTDQgNy40NTd2Mi41bC4yNDMuNDI5IDIuNSAxLjUuNDYuMDI4IDQuNS0yTDEyIDkuNDU3di0yLjVsLS4yNDMtLjQyOS0yLjUtMS41TDguNzk3IDV6TTUgOC4zNHYxLjMzNGwxLjUuOVY5LjI0TDUgOC4zNHptMi41Ljk0MnYxLjQwNUwxMSA5LjEzM1Y3LjcyNkw3LjUgOS4yODJ6bTIuOTE4LTIuMzkxbC0xLjQ1Mi0uODcyLTMuMzg0IDEuNTA0IDEuNDUyLjg3MSAzLjM4NC0xLjUwM3oiIGZpbGw9IiM3NUJFRkYiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.class:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.class:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjM1NCA2LjY0NkwyLjA2IDUuMzU0IDUuMzU0IDIuMDZsMS4yOTIgMS4yOTMtMy4yOTIgMy4yOTJ6TTUgMUwxIDV2LjcwN2wyIDJoLjcwN2wxLjE0Ny0xLjE0NnY1Ljc5M2wuNS41aDQuNjU2di41MmwxLjMzMyAxLjMzM2guNzA3bDIuNjY3LTIuNjY2di0uNzA3TDEzLjM4MyAxMGgtLjcwN2wtMS44NTMgMS44NTRoLTQuOTd2LTMuOTZoNC4xNTd2LjQ4bDEuMzMzIDEuMzMzaC43MDdsMi42NjctMi42NjZ2LS43MDdMMTMuMzgzIDVoLS43MDdsLTEuODEzIDEuODE0aC01LjAxVjUuNTZsMS44NTQtMS44NTRWM2wtMi0ySDV6bTYuMDcgNy4wMmwuNjI3LjYyNyAxLjk2LTEuOTYtLjYyNy0uNjI2LTEuOTYgMS45NnptMCA1bC42MjcuNjI3IDEuOTYtMS45Ni0uNjI3LS42MjYtMS45NiAxLjk2eiIgZmlsbD0iI0VFOUQyOCIvPjwvc3ZnPg==")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.interface:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.interface:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS41IDVhMi41IDIuNSAwIDEgMCAwIDUgMi41IDIuNSAwIDAgMCAwLTV6TTguMDM1IDhhMy41IDMuNSAwIDEgMCAwLTFINC45MzdhMiAyIDAgMSAwIDAgMWgzLjA5OHoiIGZpbGw9IiM3NUJFRkYiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.struct:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.struct:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yIDJMMSAzdjNsMSAxaDEybDEtMVYzbC0xLTFIMnptMCAxaDEydjNIMlYzem0tMSA3bDEtMWgzbDEgMXYzbC0xIDFIMmwtMS0xdi0zem0yIDBIMnYzaDN2LTNIM3ptNyAwbDEtMWgzbDEgMXYzbC0xIDFoLTNsLTEtMXYtM3ptMiAwaC0xdjNoM3YtM2gtMnoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.type-parameter:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.type-parameter:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSA2aC0xdi0uNWEuNS41IDAgMCAwLS41LS41SDguNDc5djUuNWEuNS41IDAgMCAwIC41LjVoLjV2MWgtM3YtMWguNWEuNS41IDAgMCAwIC41LS41VjVINi41YS41LjUgMCAwIDAtLjUuNVY2SDVWNGg2djJ6bTIuOTE0IDIuMDQ4bC0xLjQ2Mi0xLjQ2Mi43MDctLjcwNyAxLjgxNiAxLjgxNnYuNzA3bC0xLjc2OCAxLjc2Ny0uNzA3LS43MDcgMS40MTQtMS40MTR6TTMuNTQ4IDkuNDYyTDIuMDg2IDggMy41IDYuNTg2bC0uNzA3LS43MDctMS43NjggMS43Njd2LjcwOGwxLjgxNiAxLjgxNS43MDctLjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.module:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.module:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02IDIuOTg0VjJoLS4wOWMtLjMxMyAwLS42MTYuMDYyLS45MDkuMTg1YTIuMzMgMi4zMyAwIDAgMC0uNzc1LjUzIDIuMjMgMi4yMyAwIDAgMC0uNDkzLjc1M3YuMDAxYTMuNTQyIDMuNTQyIDAgMCAwLS4xOTguODN2LjAwMmE2LjA4IDYuMDggMCAwIDAtLjAyNC44NjNjLjAxMi4yOS4wMTguNTguMDE4Ljg2OSAwIC4yMDMtLjA0LjM5My0uMTE3LjU3MnYuMDAxYTEuNTA0IDEuNTA0IDAgMCAxLS43NjUuNzg3IDEuMzc2IDEuMzc2IDAgMCAxLS41NTguMTE1SDJ2Ljk4NGguMDljLjE5NSAwIC4zOC4wNC41NTYuMTIxbC4wMDEuMDAxYy4xNzguMDc4LjMyOS4xODQuNDU1LjMxOGwuMDAyLjAwMmMuMTMuMTMuMjMzLjI4NS4zMDcuNDY1bC4wMDEuMDAyYy4wNzguMTguMTE3LjM2OC4xMTcuNTY2IDAgLjI5LS4wMDYuNTgtLjAxOC44NjktLjAxMi4yOTYtLjAwNC41ODUuMDI0Ljg3di4wMDFjLjAzMy4yODMuMDk5LjU1OC4xOTcuODI0di4wMDFjLjEwNi4yNzMuMjcxLjUyNC40OTQuNzUzLjIyMy4yMy40ODIuNDA3Ljc3NS41My4yOTMuMTIzLjU5Ni4xODUuOTEuMTg1SDZ2LS45ODRoLS4wOWMtLjE5OSAwLS4zODctLjAzOC0uNTYyLS4xMTVhMS42MTMgMS42MTMgMCAwIDEtLjQ1Ny0uMzIgMS42NTkgMS42NTkgMCAwIDEtLjMwOS0uNDY3Yy0uMDc0LS4xOC0uMTEtLjM3LS4xMS0uNTczIDAtLjIyOC4wMDMtLjQ1My4wMTEtLjY3Mi4wMDgtLjIyOC4wMDgtLjQ1IDAtLjY2NWE0LjYzOSA0LjYzOSAwIDAgMC0uMDU1LS42NCAyLjY4MiAyLjY4MiAwIDAgMC0uMTY4LS42MDlBMi4yODQgMi4yODQgMCAwIDAgMy41MjIgOGEyLjI4NCAyLjI4NCAwIDAgMCAuNzM4LS45NTVjLjA4LS4xOTIuMTM1LS4zOTMuMTY4LS42MDIuMDMzLS4yMS4wNTEtLjQyMy4wNTUtLjY0LjAwOC0uMjIuMDA4LS40NDIgMC0uNjY2LS4wMDgtLjIyNC0uMDEyLS40NS0uMDEyLS42NzhhMS40NyAxLjQ3IDAgMCAxIC44NzctMS4zNTQgMS4zMyAxLjMzIDAgMCAxIC41NjMtLjEyMUg2em00IDEwLjAzMlYxNGguMDljLjMxMyAwIC42MTYtLjA2Mi45MDktLjE4NS4yOTMtLjEyMy41NTItLjMuNzc1LS41My4yMjMtLjIzLjM4OC0uNDguNDkzLS43NTN2LS4wMDFjLjEtLjI2Ni4xNjUtLjU0My4xOTgtLjgzdi0uMDAyYy4wMjgtLjI4LjAzNi0uNTY3LjAyNC0uODYzLS4wMTItLjI5LS4wMTgtLjU4LS4wMTgtLjg2OSAwLS4yMDMuMDQtLjM5My4xMTctLjU3MnYtLjAwMWExLjUwNCAxLjUwNCAwIDAgMSAuNzY1LS43ODdjLjE3Ni0uMDc3LjM2Mi0uMTE1LjU1OC0uMTE1SDE0di0uOTg0aC0uMDljLS4xOTUgMC0uMzgtLjA0LS41NTYtLjEyMWwtLjAwMS0uMDAxYTEuMzc2IDEuMzc2IDAgMCAxLS40NTUtLjMxOGwtLjAwMi0uMDAyYTEuNDE0IDEuNDE0IDAgMCAxLS4zMDctLjQ2NWwtLjAwMS0uMDAyYTEuNDA1IDEuNDA1IDAgMCAxLS4xMTctLjU2NmMwLS4yOS4wMDYtLjU4LjAxOC0uODY5YTYuMTkgNi4xOSAwIDAgMC0uMDI0LS44N3YtLjAwMWEzLjU0MiAzLjU0MiAwIDAgMC0uMTk3LS44MjR2LS4wMDFhMi4yMyAyLjIzIDAgMCAwLS40OTQtLjc1MyAyLjMzIDIuMzMgMCAwIDAtLjc3NS0uNTMgMi4zMjUgMi4zMjUgMCAwIDAtLjkxLS4xODVIMTB2Ljk4NGguMDljLjIgMCAuMzg2LjAzOC41NjIuMTE1LjE3NC4wODIuMzI2LjE4OC40NTcuMzIuMTI3LjEzNC4yMy4yOS4zMDkuNDY3LjA3NC4xOC4xMS4zNy4xMS41NzMgMCAuMjI4LS4wMDMuNDUyLS4wMTEuNjcyLS4wMDguMjI4LS4wMDguNDUgMCAuNjY1LjAwNC4yMjIuMDIyLjQzNS4wNTUuNjQuMDMzLjIxNC4wODkuNDE2LjE2OC42MDlhMi4yODIgMi4yODIgMCAwIDAgLjczOC45NTUgMi4yODIgMi4yODIgMCAwIDAtLjczOC45NTUgMi43IDIuNyAwIDAgMC0uMTY4LjYwMmMtLjAzMy4yMS0uMDUxLjQyMy0uMDU1LjY0LS4wMDguMjItLjAwOC40NDIgMCAuNjY2LjAwOC4yMjQuMDEyLjQ1LjAxMi42NzhhMS40NyAxLjQ3IDAgMCAxLS40MiAxLjAzNSAxLjQ2NiAxLjQ2NiAwIDAgMS0uNDU3LjMxOSAxLjMzIDEuMzMgMCAwIDEtLjU2My4xMjFIMTB6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.property:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.property:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIuODA3IDE0Ljk3NWExLjc1IDEuNzUgMCAwIDEtMS4yNTUtLjU1NiAxLjY4NCAxLjY4NCAwIDAgMS0uNTQ0LTEuMUExLjcyIDEuNzIgMCAwIDEgMS4zNiAxMi4xQzIuNTY4IDEwLjgzIDQuOTQ3IDguNDUgNi42NzggNi43NTVhNC4yNTcgNC4yNTcgMCAwIDEgLjA0OC0zLjA3OCA0LjA5NSA0LjA5NSAwIDAgMSAxLjY2NS0xLjk2OSA0LjI1OSA0LjI1OSAwIDAgMSA0LjA0LS4zNmwuNjE3LjI2OC0yLjg2NiAyLjk1MSAxLjI1NSAxLjI1OSAyLjk0NC0yLjg3Ny4yNjcuNjE5YTQuMjk1IDQuMjk1IDAgMCAxIC4wNCAzLjMxMSA0LjE5OCA0LjE5OCAwIDAgMS0uOTIzIDEuMzkyIDQuMjcgNC4yNyAwIDAgMS0uNzQzLjU4MSA0LjIxNyA0LjIxNyAwIDAgMS0zLjgxMi40NDZDOC4xMTIgMTAuNDEgNS4zNyAxMy4xNyAzLjg5IDE0LjU1MmExLjYzIDEuNjMgMCAwIDEtMS4wODQuNDIzem03LjkzOC0xMy4wNDdhMy4zMiAzLjMyIDAgMCAwLTEuODQ5LjU1N2MtLjIxMy4xMy0uNDEyLjI4NC0uNTkxLjQ1OGEzLjMyMSAzLjMyMSAwIDAgMC0uNjU3IDMuNzMzbC4xMzUuMjk3LS4yMzMuMjI3Yy0xLjczOCAxLjY5Ny00LjI2OSA0LjIyLTUuNDg1IDUuNTA0YS44MDUuODA1IDAgMCAwIC4xMzIgMS4wNS45MTEuOTExIDAgMCAwIC4yOTguMjJjLjEuMDQ0LjIwOS4wNjkuMzE5LjA3MmEuNjk0LjY5NCAwIDAgMCAuNDUtLjE4MWMxLjU3My0xLjQ2OSA0LjYxMi00LjUzOSA1LjUwNC01LjQ0bC4yMy0uMjMyLjI5NC4xMzVhMy4yODYgMy4yODYgMCAwIDAgMy4yMjUtLjI1NCAzLjMzIDMuMzMgMCAwIDAgLjU5MS0uNDY0IDMuMjggMy4yOCAwIDAgMCAuOTY0LTIuMzU4YzAtLjIxNS0uMDIxLS40My0uMDY0LS42NDJMMTEuNDMgNy4xMjUgOC44NzkgNC41NzhsMi41MTUtMi41OWEzLjI4NiAzLjI4NiAwIDAgMC0uNjUtLjA2eiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.unit:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.unit:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg4bDEtMVYybC0xLTFINHptMCAyVjJoOHYxMkg0di0xaDJ2LTFINHYtMmg0VjlINFY3aDJWNkg0VjRoNFYzSDR6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constant:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.constant:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZoOHYxSDRWNnptOCAzSDR2MWg4Vjl6IiBmaWxsPSIjQzVDNUM1Ii8+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDRsMS0xaDEybDEgMXY4bC0xIDFIMmwtMS0xVjR6bTEgMHY4aDEyVjRIMnoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum:before,.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.value:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.value:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDJMNyAzdjNoMVYzaDZ2NWgtNHYxaDRsMS0xVjNsLTEtMUg4em0xIDZMOCA3SDJMMSA4djVsMSAxaDZsMS0xVjh6TTggOVY4SDJ2NWg2Vjl6bTEtMi40MTRMOS40MTQgN0gxM1Y2SDl2LjU4NnpNMTMgNEg5djFoNFY0ek03IDlIM3YxaDRWOXptLTQgMmg0djFIM3YtMXoiIGZpbGw9IiNFRTlEMjgiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum-member:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.enum-member:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDNsMS0xaDZsMSAxdjVsLTEgMWgtNFY4aDRWM0g4djNIN1Yzem0xIDRsMSAxdjVsLTEgMUgybC0xLTFWOGwxLTFoNnptMCAxdjVIMlY4aDZ6bTEuNDE0LTFMOSA2LjU4NlY2aDR2MUg5LjQxNHpNOSA0aDR2MUg5VjR6bS0yIDZIM3YxaDR2LTF6IiBmaWxsPSIjNzVCRUZGIi8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.keyword:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.keyword:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1IDRoLTVWM2g1djF6bS0xIDNoLTJ2MWgyVjd6bS00IDBIMXYxaDlWN3ptMiA2SDF2MWgxMXYtMXptLTUtM0gxdjFoNnYtMXptOCAwaC01djFoNXYtMXpNOCAydjNIMVYyaDd6TTcgM0gydjFoNVYzeiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.text:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.text:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjIyMyAxMC45MzNjLjMyNi4xOTIuNjk5LjI5IDEuMDc3LjI4MmEyLjE1OSAyLjE1OSAwIDAgMCAxLjc1NC0uODQyIDMuMjkxIDMuMjkxIDAgMCAwIC42NTQtMi4xMTMgMi44ODYgMi44ODYgMCAwIDAtLjU3Ni0xLjg3NyAxLjk5IDEuOTkgMCAwIDAtMS42MzQtLjczMyAyLjI5NCAyLjI5NCAwIDAgMC0xLjUyMy41NjdWMy40NzVoLS45OTFWMTEuMWguOTk1di0uMzQ0Yy4wNzYuMDY2LjE1OC4xMjUuMjQ0LjE3N3pNNy44NSA2LjdjLjE4Ni0uMDc5LjM4OC0uMTEzLjU5LS4xYTEuMDggMS4wOCAwIDAgMSAuODk2LjQyOGMuMjU3LjM2My4zODIuODAyLjM1NyAxLjI0NWEyLjQ4NSAyLjQ4NSAwIDAgMS0uNCAxLjQ4NCAxLjEzMyAxLjEzMyAwIDAgMS0uOTYuNTA4IDEuMjI0IDEuMjI0IDAgMCAxLS45NzYtLjQxN0ExLjUyMiAxLjUyMiAwIDAgMSA2Ljk3NSA4Ljh2LS42YTEuNzIyIDEuNzIyIDAgMCAxIC4zOTMtMS4xNDVjLjEzLS4xNTQuMjk2LS4yNzYuNDgyLS4zNTV6TTMuMjg5IDUuNjc1YTMuMDMgMy4wMyAwIDAgMC0uOTM3LjE2MiAyLjU5IDIuNTkgMCAwIDAtLjguNGwtLjEuMDc3djEuMmwuNDIzLS4zNTlhMi4xIDIuMSAwIDAgMSAxLjM2Ni0uNTcyLjc1OC43NTggMCAwIDEgLjY2MS4yODJjLjE1LjIzMi4yMy41MDMuMjMxLjc3OUwyLjkgNy44MjVhMi42IDIuNiAwIDAgMC0xLjM3OC41NzUgMS42NSAxLjY1IDAgMCAwLS4wMjIgMi4zMzYgMS43MzcgMS43MzcgMCAwIDAgMS4yNTMuNDU0IDEuOTYgMS45NiAwIDAgMCAxLjEwNy0uMzMyYy4xMDItLjA2OC4xOTctLjE0NS4yODYtLjIyOXYuNDQ0aC45NDFWNy43MTVhMi4xOTMgMi4xOTMgMCAwIDAtLjQ2OS0xLjUgMS42ODcgMS42ODcgMCAwIDAtMS4zMjktLjU0em0uODU3IDMuMDQxYy4wMi40MTgtLjEyLjgyOS0uMzkxIDEuMTQ4YTEuMjIxIDEuMjIxIDAgMCAxLS45NTUuNDIyLjgzMi44MzIgMCAwIDEtLjYwOC0uMi44MzMuODMzIDAgMCAxIDAtMS4wOTFjLjI4MS0uMTc0LjYtLjI3Ny45My0uM2wxLjAyLS4xNDguMDA0LjE2OXptOC4zMTMgMi4zMTdjLjMwNy4xMy42NC4xOTMuOTczLjE4Mi40OTUuMDEyLjk4My0uMTE0IDEuNDEtLjM2NWwuMTIzLS4wNzUuMDEzLS4wMDdWOS42MTVsLS40NDYuMzJjLS4zMTYuMjI0LS42OTYuMzQtMS4wODQuMzI5QTEuMyAxLjMgMCAwIDEgMTIuNCA5LjhhMS45NzUgMS45NzUgMCAwIDEtLjQtMS4zMTIgMi4wMSAyLjAxIDAgMCAxIC40NTMtMS4zODFBMS40MzIgMS40MzIgMCAwIDEgMTMuNiA2LjZhMS44IDEuOCAwIDAgMSAuOTcxLjI3OWwuNDMuMjY1VjUuOTdsLS4xNy0uMDczYTIuOSAyLjkgMCAwIDAtMS4xNy0uMjQ3IDIuNTIgMi41MiAwIDAgMC0xLjkyOS44MTcgMi45IDIuOSAwIDAgMC0uNzQ3IDIuMDQ5Yy0uMDI4LjcwNy4yMSAxLjQuNjcgMS45MzkuMjIyLjI0OS40OTcuNDQ2LjgwNC41Nzh6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.color:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.color:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjYgMTEuNzY3YTEuODY3IDEuODY3IDAgMCAwLTIuNjQtMi42NGMtMS4wNDIgMS4wOTgtMi44NTYuODEyLTIuOTQ3LS42OThBNyA3IDAgMSAxIDcuNCAxNC45NzVjLTEuNTk0LS4xMzYtMS45MDEtMi4wNDktLjgtMy4yMDh6bS4zNjcgMS43NzZjLS4wNjQtLjI5Ny4wMjEtLjcyOC4zNTEtMS4wOGEyLjg2NyAyLjg2NyAwIDAgMC0uMDEtNC4wNDNoLS4wMDFhMi44NjcgMi44NjcgMCAwIDAtNC4wNTQgMGwtLjAxLjAxLS4wMDguMDA5Yy0uMjk2LjMxMS0uNjY0LjM4Ny0uOTAyLjMzOGEuMzk4LjM5OCAwIDAgMS0uMjIzLS4xMTVjLS4wMzYtLjA0LS4wODktLjEyMi0uMDk5LS4yOTRhNiA2IDAgMSAxIDUuNDczIDUuNjFjLS4xOTQtLjAxNi0uMy0uMDgtLjM2LS4xMzVhLjU1NS41NTUgMCAwIDEtLjE1Ny0uM3pNNSA2YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptNyA1YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHpNOCA1YTEgMSAwIDEgMCAwLTIgMSAxIDAgMCAwIDAgMnptNSAzYTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHptLTItMmExIDEgMCAxIDAgMC0yIDEgMSAwIDAgMCAwIDJ6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.file:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.file:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDFMMyAydjEybDEgMWg5bDEtMVY1bC0uMjkzLS43MDctMy0zTDEwIDFINHptMCAxM1YyaDV2NGg0djhINHptOS05bC0zLTN2M2gzeiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.reference:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.reference:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDMuODU0TDUuOTE1IDZsLS43MDctLjcwN0w2LjUgNGgtM2ExLjUgMS41IDAgMCAwIDAgM0g0djFoLS41YTIuNSAyLjUgMCAxIDEgMC01aDNMNiAyLjVsLS43OTMtLjc5M0w1LjkxNCAxbDIuMTQ3IDIuMTQ2di43MDh6TTUgNi41bC45MTQuOTE0TDYgNy4zMjhWMTRoOFY3aC00VjNoLS45NHYtLjI2OEw4LjMyOSAySDExLjJsLjMuMSAzLjQgMy41LjEuNHY4LjVsLS41LjVoLTlsLS41LS41di04ek0xMSAzdjNoMi45MDNMMTEgM3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.snippet:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.snippet:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjUgMWwtLjUuNVYxM2gxVjJoMTF2MTFoMVYxLjVsLS41LS41aC0xMnpNMiAxNXYtMWgxdjFIMnptMy0xSDR2MWgxdi0xem0xIDBoMXYxSDZ2LTF6bTMgMEg4djFoMXYtMXptMSAwaDF2MWgtMXYtMXptNSAxdi0xaC0xdjFoMXptLTMtMWgxdjFoLTF2LTF6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.customcolor:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.customcolor:before{background-image:none}.monaco-editor.hc-black .suggest-widget .monaco-list .monaco-list-row .suggest-icon.folder:before,.monaco-editor.vs-dark .suggest-widget .monaco-list .monaco-list-row .suggest-icon.folder:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjAxIDIuNWwuNS0uNWg0Ljk5N2wuMzU0LjE0Ni44NTIuODUzaDYuNzg4bC41LjV2NS40OTZsLS4wMS4wMTF2NC40OTZsLS41LjVIMS41bC0uNS0uNVY2LjUwN2wuMDEtLjAxVjIuNXpNMTQuMDAyIDR2MS4wMDNoLTYuNWwtLjM1NC4xNDctLjg1OC44NTdIMi4wMTFWM0g2LjNsLjg1My44NTMuMzUzLjE0Nmg2LjQ5NXpNNi40OTYgNy4wMDZIMi4wMTF2LjQ4OUgydjUuNTA3aDExLjk5di03SDcuNzA4bC0uODU4Ljg1OC0uMzU0LjE0NnoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=")}.monaco-editor{font-family:-apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,Ubuntu,Droid Sans,sans-serif}.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label{stroke-width:1.2px}.monaco-editor-hover p{margin:0}.monaco-editor.hc-black{-ms-high-contrast-adjust:none}@media screen and (-ms-high-contrast:active){.monaco-editor.vs-dark .view-overlays .current-line,.monaco-editor.vs .view-overlays .current-line{border-color:windowtext!important;border-left:0;border-right:0}.monaco-editor.vs-dark .cursor,.monaco-editor.vs .cursor{background-color:windowtext!important}.monaco-editor.vs-dark .dnd-target,.monaco-editor.vs .dnd-target{border-color:windowtext!important}.monaco-editor.vs-dark .selected-text,.monaco-editor.vs .selected-text{background-color:highlight!important}.monaco-editor.vs-dark .view-line,.monaco-editor.vs .view-line{-ms-high-contrast-adjust:none}.monaco-editor.vs-dark .view-line span,.monaco-editor.vs .view-line span{color:windowtext!important}.monaco-editor.vs-dark .view-line span.inline-selected-text,.monaco-editor.vs .view-line span.inline-selected-text{color:highlighttext!important}.monaco-editor.vs-dark .view-overlays,.monaco-editor.vs .view-overlays{-ms-high-contrast-adjust:none}.monaco-editor.vs-dark .reference-decoration,.monaco-editor.vs-dark .selectionHighlight,.monaco-editor.vs-dark .wordHighlight,.monaco-editor.vs-dark .wordHighlightStrong,.monaco-editor.vs .reference-decoration,.monaco-editor.vs .selectionHighlight,.monaco-editor.vs .wordHighlight,.monaco-editor.vs .wordHighlightStrong{border:2px dotted highlight!important;background:transparent!important;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .rangeHighlight,.monaco-editor.vs .rangeHighlight{background:transparent!important;border:1px dotted activeborder!important;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .bracket-match,.monaco-editor.vs .bracket-match{border-color:windowtext!important;background:transparent!important}.monaco-editor.vs-dark .currentFindMatch,.monaco-editor.vs-dark .findMatch,.monaco-editor.vs .currentFindMatch,.monaco-editor.vs .findMatch{border:2px dotted activeborder!important;background:transparent!important;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .find-widget,.monaco-editor.vs .find-widget{border:1px solid windowtext}.monaco-editor.vs-dark .monaco-list .monaco-list-row,.monaco-editor.vs .monaco-list .monaco-list-row{-ms-high-contrast-adjust:none;color:windowtext!important}.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused,.monaco-editor.vs .monaco-list .monaco-list-row.focused{color:highlighttext!important;background-color:highlight!important}.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover,.monaco-editor.vs .monaco-list .monaco-list-row:hover{background:transparent!important;border:1px solid highlight;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .monaco-tree .monaco-tree-row,.monaco-editor.vs .monaco-tree .monaco-tree-row{-ms-high-contrast-adjust:none;color:windowtext!important}.monaco-editor.vs-dark .monaco-tree .monaco-tree-row.focused,.monaco-editor.vs-dark .monaco-tree .monaco-tree-row.selected,.monaco-editor.vs .monaco-tree .monaco-tree-row.focused,.monaco-editor.vs .monaco-tree .monaco-tree-row.selected{color:highlighttext!important;background-color:highlight!important}.monaco-editor.vs-dark .monaco-tree .monaco-tree-row:hover,.monaco-editor.vs .monaco-tree .monaco-tree-row:hover{background:transparent!important;border:1px solid highlight;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar,.monaco-editor.vs .monaco-scrollable-element>.scrollbar{-ms-high-contrast-adjust:none;background:background!important;border:1px solid windowtext;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider{background:windowtext!important}.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs-dark .monaco-scrollable-element>.scrollbar>.slider:hover,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider.active,.monaco-editor.vs .monaco-scrollable-element>.scrollbar>.slider:hover{background:highlight!important}.monaco-editor.vs-dark .decorationsOverviewRuler,.monaco-editor.vs .decorationsOverviewRuler{opacity:0}.monaco-editor.vs-dark .minimap,.monaco-editor.vs .minimap{display:none}.monaco-editor.vs-dark .squiggly-d-error,.monaco-editor.vs .squiggly-d-error{background:transparent!important;border-bottom:4px double #e47777}.monaco-editor.vs-dark .squiggly-b-info,.monaco-editor.vs-dark .squiggly-c-warning,.monaco-editor.vs .squiggly-b-info,.monaco-editor.vs .squiggly-c-warning{border-bottom:4px double #71b771}.monaco-editor.vs-dark .squiggly-a-hint,.monaco-editor.vs .squiggly-a-hint{border-bottom:4px double #6c6c6c}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label{-ms-high-contrast-adjust:none;color:highlighttext!important;background-color:highlight!important}.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label{-ms-high-contrast-adjust:none;background:transparent!important;border:1px solid highlight;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-diff-editor.vs-dark .diffOverviewRuler,.monaco-diff-editor.vs .diffOverviewRuler{display:none}.monaco-editor.vs-dark .line-delete,.monaco-editor.vs-dark .line-insert,.monaco-editor.vs .line-delete,.monaco-editor.vs .line-insert{background:transparent!important;border:1px solid highlight!important;-webkit-box-sizing:border-box;box-sizing:border-box}.monaco-editor.vs-dark .char-delete,.monaco-editor.vs-dark .char-insert,.monaco-editor.vs .char-delete,.monaco-editor.vs .char-insert{background:transparent!important}}.monaco-diff-editor .diffOverview{z-index:9}.monaco-diff-editor.vs .diffOverview{background:rgba(0,0,0,.03)}.monaco-diff-editor.vs-dark .diffOverview{background:hsla(0,0%,100%,.01)}.monaco-diff-editor .diffViewport{-webkit-box-shadow:inset 0 0 1px 0 #b9b9b9;box-shadow:inset 0 0 1px 0 #b9b9b9;background:rgba(0,0,0,.1)}.monaco-diff-editor.hc-black .diffViewport,.monaco-diff-editor.vs-dark .diffViewport{background:hsla(0,0%,100%,.1)}.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar,.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar{background:transparent}.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar{background:none}.monaco-scrollable-element.modified-in-monaco-diff-editor .slider{z-index:10}.modified-in-monaco-diff-editor .slider.active{background:hsla(0,0%,67.1%,.4)}.modified-in-monaco-diff-editor.hc-black .slider.active{background:none}.monaco-diff-editor .delete-sign,.monaco-diff-editor .insert-sign,.monaco-editor .delete-sign,.monaco-editor .insert-sign{background-size:60%;opacity:.7;background-repeat:no-repeat;background-position:75%;background-size:11px 11px}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.hc-black .insert-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.hc-black .insert-sign{opacity:1}.monaco-diff-editor .insert-sign,.monaco-editor .insert-sign{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDd2MUg4djZIN1Y4SDFWN2g2VjFoMXY2aDZ6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-diff-editor .delete-sign,.monaco-editor .delete-sign{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1IDhIMVY3aDE0djF6IiBmaWxsPSIjNDI0MjQyIi8+PC9zdmc+")}.monaco-diff-editor.hc-black .insert-sign,.monaco-diff-editor.vs-dark .insert-sign,.monaco-editor.hc-black .insert-sign,.monaco-editor.vs-dark .insert-sign{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE0IDd2MUg4djZIN1Y4SDFWN2g2VjFoMXY2aDZ6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-diff-editor.hc-black .delete-sign,.monaco-diff-editor.vs-dark .delete-sign,.monaco-editor.hc-black .delete-sign,.monaco-editor.vs-dark .delete-sign{background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1IDhIMVY3aDE0djF6IiBmaWxsPSIjQzVDNUM1Ii8+PC9zdmc+")}.monaco-editor .inline-added-margin-view-zone,.monaco-editor .inline-deleted-margin-view-zone{text-align:right}.monaco-editor .diagonal-fill{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAChJREFUKFNjOH/+fAMDDgCSu3Dhwn9c8gwwBTgNGR4KQP4HhQOhsAIAZCBTkhtqePcAAAAASUVORK5CYII=")}.monaco-editor.vs-dark .diagonal-fill{opacity:.2}.monaco-editor.hc-black .diagonal-fill{background:none}.monaco-editor .view-zones .view-lines .view-line span{display:inline-block}.monaco-editor .margin-view-zones .inline-deleted-margin-view-zone .lightbulb-glyph{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42NyA4LjY1OGMtLjMzOC4zMzQtLjU5OC43MDUtLjc4MSAxLjExNC0uMTc4LjQwNy0uMjY4Ljg1LS4yNjggMS4zMjl2MS42YTEuMzA0IDEuMzA0IDAgMCAxLS43OTQgMS4xOTdjLS4xNTkuMDY4LS4zMjkuMTAyLS41MDkuMTAySDcuNzEyYTEuMjg1IDEuMjg1IDAgMCAxLS45MjItLjM3OSAxLjMwMyAxLjMwMyAwIDAgMS0uMzgtLjkydi0xLjZjMC0uNDc5LS4wOTItLjkyMS0uMjc0LTEuMzI5YTMuNTU2IDMuNTU2IDAgMCAwLS43NzYtMS4xMTQgNC42ODkgNC42ODkgMCAwIDEtMS4wMDYtMS40MzdBNC4xODcgNC4xODcgMCAwIDEgNCA1LjVhNC40MzIgNC40MzIgMCAwIDEgLjYxNi0yLjI3Yy4xOTctLjMzNi40MzItLjY0LjcwNS0uOTE0LjI3NC0uMjcyLjU3OC0uNTA2LjkxMS0uNzAyLjMzOC0uMTk2LjctLjM0OCAxLjA4NC0uNDU0QzcuNyAxLjA1MyA4LjEgMSA4LjUxNiAxYTQuNDc2IDQuNDc2IDAgMCAxIDIuMjc2LjYxNCA0LjQ3NSA0LjQ3NSAwIDAgMSAxLjYyMiAxLjYxNiA0LjQzOCA0LjQzOCAwIDAgMSAuNjE2IDIuMjdjMCAuNjE3LS4xMTcgMS4xOTEtLjM1MyAxLjcyMWE0LjY5IDQuNjkgMCAwIDEtMS4wMDYgMS40Mzd6TTkuNjIzIDEwLjVINy40MDl2Mi4yMDFjMCAuMDgxLjAyOC4xNS4wOS4yMTIuMDYyLjA2MS4xMzEuMDkuMjEzLjA5aDEuNjA2YS4yODkuMjg5IDAgMCAwIC4yMTMtLjA5LjI4Ni4yODYgMCAwIDAgLjA5LS4yMTJWMTAuNXoiIGZpbGw9IiM0MjQyNDIiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjY3IDguNjU4Yy0uMzM4LjMzNC0uNTk4LjcwNS0uNzgxIDEuMTE0LS4xNzguNDA3LS4yNjguODUtLjI2OCAxLjMyOXYxLjZhMS4zMDQgMS4zMDQgMCAwIDEtLjc5NCAxLjE5N2MtLjE1OS4wNjgtLjMyOS4xMDItLjUwOS4xMDJINy43MTJhMS4yODUgMS4yODUgMCAwIDEtLjkyMi0uMzc5IDEuMzAzIDEuMzAzIDAgMCAxLS4zOC0uOTJ2LTEuNmMwLS40NzktLjA5Mi0uOTIxLS4yNzQtMS4zMjlhMy41NTYgMy41NTYgMCAwIDAtLjc3Ni0xLjExNCA0LjY4OSA0LjY4OSAwIDAgMS0xLjAwNi0xLjQzN0E0LjE4NyA0LjE4NyAwIDAgMSA0IDUuNWE0LjQzMiA0LjQzMiAwIDAgMSAuNjE2LTIuMjdjLjE5Ny0uMzM2LjQzMi0uNjQuNzA1LS45MTQuMjc0LS4yNzIuNTc4LS41MDYuOTExLS43MDIuMzM4LS4xOTYuNy0uMzQ4IDEuMDg0LS40NTRDNy43IDEuMDUzIDguMSAxIDguNTE2IDFhNC40NzYgNC40NzYgMCAwIDEgMi4yNzYuNjE0IDQuNDc1IDQuNDc1IDAgMCAxIDEuNjIyIDEuNjE2IDQuNDM4IDQuNDM4IDAgMCAxIC42MTYgMi4yN2MwIC42MTctLjExNyAxLjE5MS0uMzUzIDEuNzIxYTQuNjkgNC42OSAwIDAgMS0xLjAwNiAxLjQzN3pNOS42MjMgMTAuNUg3LjQwOXYyLjIwMWMwIC4wODEuMDI4LjE1LjA5LjIxMi4wNjIuMDYxLjEzMS4wOS4yMTMuMDloMS42MDZhLjI4OS4yODkgMCAwIDAgLjIxMy0uMDkuMjg2LjI4NiAwIDAgMCAuMDktLjIxMlYxMC41eiIgZmlsbD0iIzQyNDI0MiIvPjwvc3ZnPg==") 50% no-repeat}.monaco-editor.hc-dark .margin-view-zones .inline-deleted-margin-view-zone .lightbulb-glyph,.monaco-editor.vs-dark .margin-view-zones .inline-deleted-margin-view-zone .lightbulb-glyph{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS42NyA4LjY1OGMtLjMzOC4zMzQtLjU5OC43MDUtLjc4MSAxLjExNC0uMTc4LjQwNy0uMjY4Ljg1LS4yNjggMS4zMjl2MS42YTEuMzA0IDEuMzA0IDAgMCAxLS43OTQgMS4xOTdjLS4xNTkuMDY4LS4zMjkuMTAyLS41MDkuMTAySDcuNzEyYTEuMjg1IDEuMjg1IDAgMCAxLS45MjItLjM3OSAxLjMwMyAxLjMwMyAwIDAgMS0uMzgtLjkydi0xLjZjMC0uNDc5LS4wOTItLjkyMS0uMjc0LTEuMzI5YTMuNTU2IDMuNTU2IDAgMCAwLS43NzYtMS4xMTQgNC42ODkgNC42ODkgMCAwIDEtMS4wMDYtMS40MzdBNC4xODcgNC4xODcgMCAwIDEgNCA1LjVhNC40MzIgNC40MzIgMCAwIDEgLjYxNi0yLjI3Yy4xOTctLjMzNi40MzItLjY0LjcwNS0uOTE0LjI3NC0uMjcyLjU3OC0uNTA2LjkxMS0uNzAyLjMzOC0uMTk2LjctLjM0OCAxLjA4NC0uNDU0QzcuNyAxLjA1MyA4LjEgMSA4LjUxNiAxYTQuNDc2IDQuNDc2IDAgMCAxIDIuMjc2LjYxNCA0LjQ3NSA0LjQ3NSAwIDAgMSAxLjYyMiAxLjYxNiA0LjQzOCA0LjQzOCAwIDAgMSAuNjE2IDIuMjdjMCAuNjE3LS4xMTcgMS4xOTEtLjM1MyAxLjcyMWE0LjY5IDQuNjkgMCAwIDEtMS4wMDYgMS40Mzd6TTkuNjIzIDEwLjVINy40MDl2Mi4yMDFjMCAuMDgxLjAyOC4xNS4wOS4yMTIuMDYyLjA2MS4xMzEuMDkuMjEzLjA5aDEuNjA2YS4yODkuMjg5IDAgMCAwIC4yMTMtLjA5LjI4Ni4yODYgMCAwIDAgLjA5LS4yMTJWMTAuNXoiIGZpbGw9IiNDMkMyQzIiLz48L3N2Zz4=") 50% no-repeat}.monaco-editor .margin-view-zones .lightbulb-glyph:hover{cursor:pointer}.monaco-diff-editor .diff-review-line-number{text-align:right;display:inline-block}.monaco-diff-editor .diff-review{position:absolute;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.monaco-diff-editor .diff-review-summary{padding-left:10px}.monaco-diff-editor .diff-review-shadow{position:absolute}.monaco-diff-editor .diff-review-row{white-space:pre}.monaco-diff-editor .diff-review-table{display:table;min-width:100%}.monaco-diff-editor .diff-review-row{display:table-row;width:100%}.monaco-diff-editor .diff-review-cell{display:table-cell}.monaco-diff-editor .diff-review-spacer{display:inline-block;width:10px}.monaco-diff-editor .diff-review-actions{display:inline-block;position:absolute;right:10px;top:2px}.monaco-diff-editor .diff-review-actions .action-label{width:16px;height:16px;margin:2px 0}.monaco-diff-editor .action-label.icon.close-diff-review{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiM0MjQyNDIiLz48L3N2Zz4=") 50% no-repeat}.monaco-diff-editor.hc-black .action-label.icon.close-diff-review,.monaco-diff-editor.vs-dark .action-label.icon.close-diff-review{background:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDguNzA3bDMuNjQ2IDMuNjQ3LjcwOC0uNzA3TDguNzA3IDhsMy42NDctMy42NDYtLjcwNy0uNzA4TDggNy4yOTMgNC4zNTQgMy42NDZsLS43MDguNzA4TDcuMjkzIDhsLTMuNjQ3IDMuNjQ2LjcwOC43MDhMOCA4LjcwN3oiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") 50% no-repeat}.context-view .monaco-menu{min-width:130px}.context-view-block{position:fixed;left:0;top:0;z-index:-1;width:100%;height:100%}.monaco-menu .monaco-action-bar.vertical{margin-left:0;overflow:visible}.monaco-menu .monaco-action-bar.vertical .actions-container{display:block}.monaco-menu .monaco-action-bar.vertical .action-item{padding:0;-webkit-transform:none;transform:none;display:-ms-flexbox;display:-webkit-box;display:flex}.monaco-menu .monaco-action-bar.vertical .action-item.active{-webkit-transform:none;transform:none}.monaco-menu .monaco-action-bar.vertical .action-menu-item{-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;display:-ms-flexbox;display:-webkit-box;display:flex;height:2em;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.monaco-menu .monaco-action-bar.vertical .action-label{-ms-flex:1 1 auto;-webkit-box-flex:1;flex:1 1 auto;text-decoration:none;padding:0 1em;background:none;font-size:12px;line-height:1}.monaco-menu .monaco-action-bar.vertical .keybinding,.monaco-menu .monaco-action-bar.vertical .submenu-indicator{display:inline-block;-ms-flex:2 1 auto;-webkit-box-flex:2;flex:2 1 auto;padding:0 1em;text-align:right;font-size:12px;line-height:1}.monaco-menu .monaco-action-bar.vertical .submenu-indicator{height:100%;-webkit-mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNTIgMTIuMzY0TDkuODc5IDcgNC41MiAxLjYzNmwuNjE1LS42MTVMMTEuMTIyIDdsLTUuOTg2IDUuOTgtLjYxNS0uNjE2eiIgZmlsbD0iIzAwMCIvPjwvc3ZnPg==") no-repeat 90% 50%/13px 13px;mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNTIgMTIuMzY0TDkuODc5IDcgNC41MiAxLjYzNmwuNjE1LS42MTVMMTEuMTIyIDdsLTUuOTg2IDUuOTgtLjYxNS0uNjE2eiIgZmlsbD0iIzAwMCIvPjwvc3ZnPg==") no-repeat 90% 50%/13px 13px}.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator{opacity:.4}.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator){display:inline-block;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;margin:0}.monaco-menu .monaco-action-bar.vertical .action-item{position:static;overflow:visible}.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu{position:absolute}.monaco-menu .monaco-action-bar.vertical .action-label.separator{padding:.5em 0 0 0;margin-bottom:.5em;width:100%}.monaco-menu .monaco-action-bar.vertical .action-label.separator.text{padding:.7em 1em .1em 1em;font-weight:700;opacity:1}.monaco-menu .monaco-action-bar.vertical .action-label:hover{color:inherit}.monaco-menu .monaco-action-bar.vertical .menu-item-check{position:absolute;visibility:hidden;-webkit-mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC40MzEgMy4zMjNsLTguNDcgMTAtLjc5LS4wMzYtMy4zNS00Ljc3LjgxOC0uNTc0IDIuOTc4IDQuMjQgOC4wNTEtOS41MDYuNzY0LjY0NnoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") no-repeat 50% 56%/15px 15px;mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC40MzEgMy4zMjNsLTguNDcgMTAtLjc5LS4wMzYtMy4zNS00Ljc3LjgxOC0uNTc0IDIuOTc4IDQuMjQgOC4wNTEtOS41MDYuNzY0LjY0NnoiIGZpbGw9IiNDNUM1QzUiLz48L3N2Zz4=") no-repeat 50% 56%/15px 15px;width:1em;height:100%}.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check{visibility:visible}.context-view.monaco-menu-container{outline:0;border:none;-webkit-animation:fadeIn 83ms linear;animation:fadeIn 83ms linear}.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,.context-view.monaco-menu-container .monaco-action-bar.vertical :focus,.context-view.monaco-menu-container :focus{outline:0}.monaco-menu .monaco-action-bar.vertical .action-item{border:thin solid transparent}.hc-black .context-view.monaco-menu-container{-webkit-box-shadow:none;box-shadow:none}.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused{background:none}.menubar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:1;flex-shrink:1;-webkit-box-sizing:border-box;box-sizing:border-box;height:30px;overflow:hidden;-ms-flex-wrap:wrap;flex-wrap:wrap}.fullscreen .menubar{margin:0;padding:0 5px}.menubar>.menubar-menu-button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 8px;cursor:default;-webkit-app-region:no-drag;zoom:1;white-space:nowrap;outline:0}.menubar .menubar-menu-items-holder{position:absolute;left:0;opacity:1;z-index:2000}.menubar .menubar-menu-items-holder.monaco-menu-container{outline:0;border:none}.menubar .menubar-menu-items-holder.monaco-menu-container :focus{outline:0}.menubar .toolbar-toggle-more{background-position:50%;background-repeat:no-repeat;background-size:14px;width:20px;height:100%;display:inline-block;padding:0;-webkit-mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTkgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTE0IDhhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAweiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") no-repeat 50% 55%/14px 14px;mask:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTkgOGExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6TTE0IDhhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAweiIgZmlsbD0iI0M1QzVDNSIvPjwvc3ZnPg==") no-repeat 50% 55%/14px 14px}.context-view{position:absolute;z-index:2000}.monaco-view{height:100%;position:relative} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-47a06954.702f1fa1.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-47a06954.702f1fa1.css new file mode 100644 index 000000000..c4c2305b9 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-47a06954.702f1fa1.css @@ -0,0 +1 @@ +.el-tag[data-v-82ff0dae]{margin-left:10px}.details[data-v-82ff0dae]{margin-right:5px;color:#a7a7a7;cursor:pointer;vertical-align:middle} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4a5c704e.75ab2c7d.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4a5c704e.75ab2c7d.css new file mode 100644 index 000000000..381057a0a --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4a5c704e.75ab2c7d.css @@ -0,0 +1 @@ +.resources-node{list-style-type:none;padding:0;margin:0}.resources-node li{padding:4px 0}.resources-node li .ant-badge-not-a-wrapper{margin-top:-2px}.resources-node .el-button{margin-left:12px}.resource-field .field-info-item{display:-webkit-box;display:-ms-flexbox;display:flex}.resource-field .field-info-item .field-title{width:unset;-ms-flex-negative:0;flex-shrink:0}.resource-field .field-info-item .field-value .field-password{vertical-align:middle;line-height:17px}.resource-field .field-info-item .field-value .el-icon-view{margin-left:5px;cursor:pointer;color:#a2a2a2}.resource-field .field-info-item .field-value .active,.resource-field .field-info-item .field-value .el-icon-view:hover{color:#34c388}.resource-view .rule-wrapper .code,.resource-view .rule-wrapper .code-view,.resource-view .rule-wrapper .el-autocomplete,.resource-view .rule-wrapper .el-input,.resource-view .rule-wrapper .el-select,.resource-view .rule-wrapper .el-textarea{width:100%}.resource-view .rule-wrapper .code{font-size:13px;padding:4px;border:1px dashed #fff;-webkit-transition:all .3s;transition:all .3s;line-height:24px}.resource-view .rule-wrapper .code.code-border{border:1px dashed #fff}.resource-view .rule-wrapper .code.code-border:hover{border:1px dashed #d8d8d8}.resource-view .rule-wrapper .code code{word-break:break-word}.resource-view .rule-wrapper .icon,.resource-view .rule-wrapper .tips{margin-left:12px}.resource-view .rule-wrapper .tips{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px}.resource-view .rule-wrapper .line{width:95%;margin:30px auto 28px auto;background-color:#edeef2}.resource-view .detail-title-wrapper{margin:-28px -24px 24px;padding:10px 0}.resource-view .detail-title-wrapper .ant-card-body{padding:14px 32px}.resource-view .emq-list-card{margin-bottom:24px}.resource-view .metrics-wrapper{margin-top:-12px}.resource-view .metrics-card{color:#101010}.resource-view .metrics-card:not(.last-child){border-right:1px solid #d8d8d8}.resource-view .metrics-card .card-title{font-size:14px;height:36px;line-height:36px;font-weight:700}.resource-view .metrics-card .card-value{font-size:32px}.resource-view .metrics-card .card-unit{font-size:14px}.resource-view .metrics-card .card-desc{margin-top:8px;font-size:12px;color:#a2a2a2}.resource-view .field-title{width:110px}.resource-view .ant-badge-status-text{font-size:12px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4aeced56.6623c461.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4aeced56.6623c461.css new file mode 100644 index 000000000..e4f899f76 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-4aeced56.6623c461.css @@ -0,0 +1 @@ +.login{width:100vw;min-height:100vh;-webkit-box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08)}.login .ant-card-body{padding:0}.login .emq-title{margin-bottom:32px}.login .el-form-item{margin:42px 0}.login .logo-wrapper{background-image:url(../../static/img/emqx_banner.20c13f08.png);background-size:100%;background-repeat:no-repeat;position:relative;height:512px;border-radius:6px 0 0 6px;width:50%;float:left}.login .logo-wrapper .logo{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:10;text-align:center}.login .logo-wrapper .logo img{width:84px}.login .login-wrapper{width:50%;float:left;padding:24px;height:512px}.login .login-card{width:640px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);border-radius:6px}.login .oper-wrapper{margin-top:32px}.login .sub-btn{width:100%} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-53e9a7a2.b3cd5b9f.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-53e9a7a2.b3cd5b9f.css new file mode 100644 index 000000000..d232afde7 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-53e9a7a2.b3cd5b9f.css @@ -0,0 +1 @@ +.create-subscribe .el-input,.create-subscribe .el-select{width:100%}.client-details .connection .field-title{min-width:120px}.client-details .session .field-title{min-width:160px}.client-details .detail-card{margin-bottom:24px}.client-details .emq-title{margin-bottom:28px}.client-details .field-info-item{margin-bottom:5px}.client-details .subscriptions-header{float:right}.client-details .data-list{clear:both}.client-details .view-more{margin:20px 0 0 0}.client-details .more-info{margin-top:20px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-59e5d464.dbc1edc5.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-59e5d464.dbc1edc5.css new file mode 100644 index 000000000..3eefa494e --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-59e5d464.dbc1edc5.css @@ -0,0 +1 @@ +.node-basic-card{padding:10px}.node-basic-card .field-info.stats .field-title{width:130px}.node-basic-card .version-wrapper{width:100%;padding:8px 16px;border-radius:2px;background:#f8f8f8;font-size:14px}.node-basic-card .version-wrapper .version-title{color:#333;font-weight:bolder}.node-basic-card .basic-info{margin-top:20px;padding:0 16px}.node-basic-card .basic-info .node-form .el-form-item{margin-bottom:-6px}.node-basic-card .basic-info .node-form .el-form-item__label{color:#666}.node-basic-card .basic-info .node-form .form-item-value{color:#333}.node-basic-card .basic-info .form-btn{margin-top:20px;width:120px}.node-basic-card .basic-info .ant-badge{margin-top:-3px}.node-basic-card .basic-info .ant-badge .ant-badge-status-text{font-size:14px}.node-basic-card .basic-info .ant-badge .ant-badge-status-dot{width:8px;height:8px}.node-basic-card .basic-info .el-icon-question{margin-left:6px}.node .emq-title{margin-bottom:40px}.node .el-table .caret-wrapper{left:-8px}.node .el-row.stats-row{margin-bottom:20px}.node .page-header-footer{position:absolute;bottom:-14px}.node .page-header-footer .el-tabs__item{font-weight:400}.node .page-header-footer .el-tabs__item.is-active{font-weight:500}.node .page-header-footer .el-tabs__nav-wrap:after{height:0}.node .card-wrapper .emq-list-card{margin-bottom:24px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-5f0ec173.5b55e2a1.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-5f0ec173.5b55e2a1.css new file mode 100644 index 000000000..93a1eeaf7 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-5f0ec173.5b55e2a1.css @@ -0,0 +1 @@ +.websocket-item .el-form-item .el-form-item__label{padding:0}.websocket-item .el-row .el-input,.websocket-item .el-row .emq-select{width:100%}.websocket-item .emq-list-card{border-radius:2px;-webkit-box-shadow:none;box-shadow:none;border:none}.websocket-item .emq-list-card .el-card__body{padding:24px 32px}.websocket-item .websocket-header{background-color:#fff}.websocket-item .session-item{margin-right:12px}.websocket-item .session-btn{float:right}.websocket-item .connection-wrapper .el-form-item .el-form-item__label{padding:0}.websocket-item .conn-btn{min-width:90px}.websocket-item .el-input_icon{cursor:pointer}.websocket-item .emq-title{margin-bottom:24px}.websocket-item .line{background-color:#f1f1f1;margin:24px auto}.websocket-item .emq-list-card{margin-bottom:24px}.websocket-item .sub-item-wrapper{max-height:720px}.websocket-item .sub-item.ant-card{margin:0 20px 12px 20px}.websocket-item .sub-item.ant-card .create-at,.websocket-item .sub-item.ant-card .qos{font-size:12px;color:#888;margin-right:12px}.websocket-item .sub-item.ant-card .topic{font-size:16px;color:#000;margin:4px auto}.websocket-item .sub-item.ant-card .ant-card-body{padding:12px;position:relative}.websocket-item .sub-item.ant-card .close-btn{position:absolute;top:10px;right:10px;font-size:18px;cursor:pointer;color:#d8d8d8}.websocket-item .message-item-wrapper{max-height:2048px}.websocket-item .message-item.ant-card{margin:20px auto;position:relative}.websocket-item .message-item.ant-card:not(.message-out){border-left:4px solid #d8d8d8}.websocket-item .message-item.ant-card.message-out{border-right:4px solid #d8d8d8}.websocket-item .message-item.ant-card .ant-card-body{padding:6px;position:relative;color:#000}.websocket-item .message-item.ant-card .message-item-header{font-size:12px;color:#888}.websocket-item .message-item.ant-card .message-item-header>span{margin-right:12px}.websocket-item .message-item.ant-card .message-item-header .create-at{float:right}.websocket-item .message-item.ant-card .message-item-content{margin-top:6px;padding:6px}.websocket-item .footer-area{margin-top:20px}.websocket-item .message-btn{margin:10px auto}.websocket-item .message-btn .icon{margin-left:6px;cursor:pointer}.websocket{position:relative}.websocket .el-icon-plus,.websocket .el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{font-weight:600;overflow:visible}.websocket .el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.websocket .el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.websocket .el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.websocket .el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding:0 13px}.websocket #tab-add.el-tabs__item{width:43px;padding:0 13px}.websocket .el-badge__content{background:#f56c6c;-webkit-transform:scale(.8);transform:scale(.8);border:none}.websocket .el-badge__content.is-fixed{right:-14px}html:lang(zh) .websocket .el-tabs .el-tabs__item{width:86px;padding:0 13px}html:lang(zh) .websocket .el-tabs .el-tabs__item.is-active{padding:0 13px}html:lang(en) .websocket .el-tabs .el-tabs__item{width:76px;padding:0 13px}html:lang(en) .websocket .el-tabs .el-tabs__item.is-active{padding:0 13px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-69b6fda6.59698d74.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-69b6fda6.59698d74.css new file mode 100644 index 000000000..e671faf96 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-69b6fda6.59698d74.css @@ -0,0 +1 @@ +.node-basic-card{padding:10px}.node-basic-card .field-info.stats .field-title{width:130px}.node-basic-card .version-wrapper{width:100%;padding:8px 16px;border-radius:2px;background:#f8f8f8;font-size:14px}.node-basic-card .version-wrapper .version-title{color:#333;font-weight:bolder}.node-basic-card .basic-info{margin-top:20px;padding:0 16px}.node-basic-card .basic-info .node-form .el-form-item{margin-bottom:-6px}.node-basic-card .basic-info .node-form .el-form-item__label{color:#666}.node-basic-card .basic-info .node-form .form-item-value{color:#333}.node-basic-card .basic-info .form-btn{margin-top:20px;width:120px}.node-basic-card .basic-info .ant-badge{margin-top:-3px}.node-basic-card .basic-info .ant-badge .ant-badge-status-text{font-size:14px}.node-basic-card .basic-info .ant-badge .ant-badge-status-dot{width:8px;height:8px}.node-basic-card .basic-info .el-icon-question{margin-left:6px}.percentage-cards{margin-top:20px}.percentage-cards .doughnut-card{-webkit-transition:all .15s cubic-bezier(.645,.045,.355,1);transition:all .15s cubic-bezier(.645,.045,.355,1);border-radius:8px;height:255px}.percentage-cards .doughnut-card:hover{-webkit-box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);-webkit-transform:translateY(-1px);transform:translateY(-1px);border-color:#fff}.percentage-cards .doughnut-card .ant-card-body{padding:12px}.polyline-cards .big-card,.polyline-cards .polyline-card{-webkit-transition:all .15s cubic-bezier(.645,.045,.355,1);transition:all .15s cubic-bezier(.645,.045,.355,1);border-radius:8px;margin-top:20px;position:relative}.polyline-cards .big-card:hover,.polyline-cards .polyline-card:hover{-webkit-box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);-webkit-transform:translateY(-1px);transform:translateY(-1px);border-color:#fff}.polyline-cards .big-card .ant-card-body,.polyline-cards .polyline-card .ant-card-body{padding:12px}.polyline-cards .big-card .card-title,.polyline-cards .polyline-card .card-title{font-size:16px;color:#333;font-weight:700;margin:2px 0 10px 6px}.polyline-cards .enlarge-icon,.polyline-cards .shrink-icon{position:absolute;width:16px;height:16px;background-size:100% 100%;z-index:1;cursor:pointer}.polyline-cards .enlarge-icon{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6klEQVQ4T2Pct//4fwZsgPH/LCcHq3SsckiCjNQ24AoLM7uTnZ3Ra0I2w+ThLmBkYLjyn4FBh4GBgSRD4AawMLOL/fn7cx8DiYbADXBytGQ8dOicKLIh//4yObi4mL/F5x3GfQeOzQQpgIU43BBGhlu3b7JGpKeb/MZrADbJPXtOCt+9y/yJkGaQXkZiQnvmzDOsysp/+bB5h6ABIM2q6r9XMPxnUEOOYpjXCRpw7NgxoR8/GQ+ixw4sARI0AORF9NgBueTP35+viA4DbIZAXURcIMICGs0lYGGivAAOsP+MaVgzLTHRiM8AAK48hICWs2KMAAAAAElFTkSuQmCC) no-repeat;right:10px;bottom:10px}.polyline-cards .shrink-icon{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA+ElEQVQ4T8WTPYoCQRCF35sRBXM9xUZmKvgzGxh7CYU9wsZewUBzwcALGNjKgD/RRhN5hN18YcdxSrpRWWUYuiM7q4b6+lW91wQApQ4fp9N50es1v3XtcqibQRkTiOI4fdcQpQ4DUCagTINOY5gH5HK5rRaL3kqANwBRwS8FSRL3rQGa/gyh580lTUdWCm7ywvCrkpz/FLQS4heCsjXAzAyAPisi6adpNhcWOzAurPeSuShrwGY3yQKQDLvt+izXBRfPMx+xAeSNyFcATNhardqPMcpFgY77/8RqiBOg4Jeq97BdY+8ECLp1PiQWiOwA15zcfuYdQhwv4PGIO22pe14AAAAASUVORK5CYII=) no-repeat;right:15px;bottom:15px}.polyline-cards .big-card{height:480px}.polyline-cards .big-card .shrink-icon{visibility:hidden}.polyline-cards .big-card:hover .shrink-icon{visibility:visible}.polyline-cards .polyline-card{height:255px}.polyline-cards .polyline-card .enlarge-icon{visibility:hidden}.polyline-cards .polyline-card:hover .enlarge-icon{visibility:visible}.overview .status-count{text-align:center}.overview .flux-wrapper{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.overview .flux-wrapper .simple-line{-webkit-box-sizing:border-box;box-sizing:border-box;height:32px}.overview .license-card,.overview .node-wrapper{margin-top:20px;border-radius:8px}.overview .app-card{-webkit-transition:all .15s cubic-bezier(.645,.045,.355,1);transition:all .15s cubic-bezier(.645,.045,.355,1);border-radius:8px}.overview .app-card:hover{-webkit-box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);box-shadow:0 7px 14px rgba(50,50,93,.1),0 3px 6px rgba(0,0,0,.08);-webkit-transform:translateY(-1px);transform:translateY(-1px);border-color:#fff}.overview .app-card .ant-card-head{border-bottom:none;padding:0 16px}.overview .app-card .app-card-title{font-size:14px;color:rgba(0,0,0,.4)}.overview .app-card .ant-card-body{padding:16px 16px 0 16px}.overview .app-card .content{color:rgba(0,0,0,.85);min-height:90px;font-size:30px;padding-bottom:8px;border-bottom:1px dashed #e8e8e8;position:relative}.overview .app-card .content .unit{font-size:14px;margin-left:2px}.overview .app-card .content .charts{margin-top:6px}.overview .app-card .app-footer{padding:10px 0}.overview .app-card .app-footer .footer-item{color:rgba(0,0,0,.65)}.overview .app-card .app-footer .footer-item .item-value{color:rgba(0,0,0,.85);margin-left:12px}.overview .license-card .license-card-footer,.overview .node-wrapper .emq-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.overview .license-card .license-card-footer{margin-top:12px}.overview .license-card .license-card-footer .description{font-size:12px;color:#b2b2b2;line-height:1.4;width:440px}.overview .license-card .license-card-footer .oper{width:100px;text-align:center;font-size:14px}.overview .license-card .license-card-footer .oper .el-tag{display:block}.overview .license-field{list-style-type:none;padding-left:0}.overview .license-field .item{font-size:14px;color:#666;padding:6px 0}.overview .license-field .item .key{margin-right:24px}.overview .license-field .item .value{color:#333}.overview .license-field .item .content,.overview .license-field .item .value.broker{margin-top:6px}.overview .license-field .item .el-progress .el-progress__text{display:block;padding-left:0;margin-top:6px;margin-left:0;font-size:12px!important}.overview .el-progress .el-progress-bar{padding-right:0}.overview .el-progress.status-progress .el-progress-bar__inner,.overview .el-progress.status-progress .el-progress-bar__outer{border-radius:0}.overview .emq-title{margin-bottom:20px}.overview .data-list{min-height:300px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.overview .tip-title{font-size:18px}.overview .tip-title .el-icon-warning{color:#e6a23c}.overview .tip-title span{display:inline-block;margin-left:10px}.overview .tip-content{font-size:16px}.overview .tip-content p{word-break:break-word}.overview .tip-checkbox{margin-top:10px}.overview .tip-checkbox .el-checkbox{color:#aaa}.overview .tip-button{text-align:right} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-6c281630.05abdf4e.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-6c281630.05abdf4e.css new file mode 100644 index 000000000..b31bfac43 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-6c281630.05abdf4e.css @@ -0,0 +1 @@ +.not-found[data-v-16e0548e]{text-align:center;margin-top:40px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-73c7a756.0d6e7a8d.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-73c7a756.0d6e7a8d.css new file mode 100644 index 000000000..71e0d2460 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-73c7a756.0d6e7a8d.css @@ -0,0 +1 @@ +.custom-pagination{margin-top:10px}.custom-pagination a{-webkit-transition:all .3s ease;transition:all .3s ease;color:#fff;margin-right:10px;background:#34c388;display:inline-block;border-radius:4px;padding:5px 8px;border:1px solid #e6e6e6}.custom-pagination a:hover{color:#fff}.custom-pagination a.disabled{-webkit-transition:all .3s ease;transition:all .3s ease;color:#606266;background:transparent;cursor:not-allowed}.subscriptions .data-list{clear:both}.subscriptions .page-header-content-view .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.subscriptions .app-wrapper .search-wrapper{display:block;width:100%}.subscriptions .app-wrapper .search-wrapper .el-date-editor.el-input,.subscriptions .app-wrapper .search-wrapper .el-date-editor.el-input__inner,.subscriptions .app-wrapper .search-wrapper .el-select{width:100%}.subscriptions .app-wrapper .search-wrapper .col-oper{float:right}.subscriptions .app-wrapper .search-wrapper .show-more{margin-left:12px}.subscriptions .app-wrapper .search-wrapper .el-col-8{margin-bottom:20px}.subscriptions .app-wrapper .search-wrapper .el-col-8.form-item-col{margin-bottom:0}.subscriptions .app-wrapper .search-wrapper .form-item-row{margin-top:0}.subscriptions .app-wrapper .search-wrapper .form-item-row .el-select.match .el-input__inner{border-radius:4px 0 0 4px}.subscriptions .app-wrapper .search-wrapper .form-item-row .el-input .el-input__inner{border-radius:0 4px 4px 0} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a115fb5.ca6ff1a6.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a115fb5.ca6ff1a6.css new file mode 100644 index 000000000..39448056e --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a115fb5.ca6ff1a6.css @@ -0,0 +1 @@ +.backup .el-table{margin-bottom:40px}.backup .upload-backup{text-align:right} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a82b09c.24696130.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a82b09c.24696130.css new file mode 100644 index 000000000..004491f16 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7a82b09c.24696130.css @@ -0,0 +1 @@ +.plugins .plugin-item{position:relative;font-size:14px;margin:0;padding:24px 32px;background:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.plugins .plugin-item .logo{border-radius:4px;overflow:hidden}.plugins .plugin-item .name{color:#101010;font-size:16px;line-height:22px;margin-bottom:12px}.plugins .plugin-item .el-tooltip.tutorial{position:relative;top:1px}.plugins .plugin-item .description{color:rgba(0,0,0,.65);font-size:14px;line-height:22px;max-width:300px}.plugins .plugin-cards-wrapper .plugin-item{height:140px;margin-bottom:20px}.plugins .plugin-cards-wrapper .plugin-item .ant-badge-status-text{color:#101010;font-size:16px}.plugins .plugin-cards-wrapper .plugin-item .header{-webkit-box-flex:1;-ms-flex:1;flex:1;padding-left:20px}.plugins .plugin-cards-wrapper .plugin-item .header .type-version{margin-top:12px;font-style:italic}.plugins .plugin-cards-wrapper .plugin-item .header .el-tooltip.tutorial{left:5px}.plugins .plugin-cards-wrapper .oper{position:relative}.plugins .plugin-cards-wrapper .oper .el-button{min-width:64px;float:right}.plugins .plugin-cards-wrapper .oper .manage-btn{position:absolute;bottom:0;right:0}.plugins .plugin-list-wrapper .plugin-item{height:110px;border-bottom:1px solid #f1f1f1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.plugins .plugin-list-wrapper .plugin-item .header{-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5;padding-left:50px}.plugins .plugin-list-wrapper .plugin-item .header .el-tooltip.tutorial{left:2px}.plugins .plugin-list-wrapper .plugin-item .content{margin-left:40px;-webkit-box-flex:1;-ms-flex:1;flex:1}.plugins .plugin-list-wrapper .plugin-item .content .type,.plugins .plugin-list-wrapper .plugin-item .content .version{color:rgba(0,0,0,.55);margin-top:4px;margin-bottom:0;line-height:22px}.plugins .plugin-list-wrapper .plugin-item .state{height:18px;-webkit-box-flex:1;-ms-flex:1;flex:1}.plugins .plugin-list-wrapper .plugin-item .oper{-webkit-box-flex:50px;-ms-flex:50px;flex:50px}.plugins .search-wrapper{margin-bottom:30px}.plugins .search-wrapper .el-radio-button--small .el-radio-button__inner{font-size:13px}.plugins .search-wrapper .search-input .el-icon-loading,.plugins .search-wrapper .search-input .el-icon-search{position:relative;left:4px;top:7px}.plugins .null-plugins{min-height:130px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.plugins .tip-title{font-size:18px}.plugins .tip-title .el-icon-warning{color:#e6a23c}.plugins .tip-title span{display:inline-block;margin-left:10px}.plugins .tip-content{font-size:16px}.plugins .tip-content p{word-break:break-word}.plugins .tip-checkbox{margin-top:10px}.plugins .tip-checkbox .el-checkbox{color:#aaa}.plugins .tip-button{text-align:right} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7b01e2fb.d6669dc8.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7b01e2fb.d6669dc8.css new file mode 100644 index 000000000..b742c6401 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-7b01e2fb.d6669dc8.css @@ -0,0 +1 @@ +.config-form .show-more{text-align:center}.config-form .show-more a{display:inline-block;width:100%;position:relative;text-decoration:none;margin-top:10px}.config-form .show-more a:before{left:0}.config-form .show-more a:after,.config-form .show-more a:before{content:"";position:absolute;top:8px;z-index:9;width:46%;height:1px;background-color:#edeef2}.config-form .show-more a:after{right:0}.config-form .form-item-input .el-icon-close{visibility:hidden}.config-form .form-item-input:hover .el-icon-close{visibility:visible;cursor:pointer}.base-settings .base-form .el-form,.config-detail .no-form-margin{margin-top:0}.config-detail .form-margin{margin-top:32px}.config-detail .show-more{text-align:center}.config-detail .show-more span{display:inline-block;margin-right:55px}.config-detail .show-more a{display:inline-block;width:100%;position:relative;text-decoration:none;margin-top:10px}.config-detail .show-more a:before{left:0;width:44%}.config-detail .show-more a:after,.config-detail .show-more a:before{content:"";position:absolute;top:8px;z-index:9;height:1px;background-color:#edeef2}.config-detail .show-more a:after{right:0;width:49%}.zone-settings .el-tabs__item.is-active .delete-icon{visibility:hidden}.zone-settings .el-tabs__item.is-active:hover .delete-icon{visibility:visible}.zone-settings .label-box{position:relative}.zone-settings .label-box .delete-icon{position:absolute;cursor:pointer;right:-20px;top:0;color:#aaa}.zone-settings .label-box .delete-icon:hover{color:#23bd78}.zone-settings .label-box .hide-delete{display:none}.cluster-settings .emq-title{margin:0}.cluster-settings .cluster-form .join-status{display:inline-block;min-width:200px}.cluster-settings .cluster-form .join-status:not(.not-point):before{content:"";display:inline-block;height:8px;width:8px;margin-right:2px;border-radius:4px;background-color:transparent}.cluster-settings .cluster-form .join-status.is-join:before{background-color:#34c388}.cluster-settings .cluster-form .join-status.not-join:before{background-color:#afafaf}.cluster-settings .cluster-form .not-join__desc{color:#afafaf}.cluster-settings .cluster-form .node-oper+.node-oper{margin-left:10px}.cluster-settings .cluster-form .node-oper.danger{color:#f5222d}.listener-settings .return-button{color:#34c388;font-size:14px;cursor:pointer}.listener-settings .return-button i{font-weight:700}.listener-settings .delete-button{display:inline-block;color:red;font-size:14px;cursor:pointer}.listener-settings .el-col-offset-16{text-align:right}.settings .el-form .el-input.is-disabled .el-input__inner{color:#676767}.settings .el-form .el-col{min-height:60px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.settings .el-form .el-form-item{margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings .el-form .form-item-desc{font-size:13px;color:#676767;-webkit-box-flex:1;-ms-flex:1;flex:1}.settings .el-form .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.settings .el-form .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{color:transparent}.settings .button-group__center{margin-top:20px;margin-bottom:10px;text-align:right}.settings .not-settings{text-align:center;margin-top:150px}.settings .not-settings img{margin-bottom:50px}.settings .not-settings .confirm-btn{width:125px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-8ed2d5e8.b90bf6aa.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-8ed2d5e8.b90bf6aa.css new file mode 100644 index 000000000..bb51fa31d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-8ed2d5e8.b90bf6aa.css @@ -0,0 +1 @@ +.key-and-value-editor{font-size:12px!important}.key-and-value-editor .el-input{width:100%!important}.key-and-value-editor .el-input.key-input{width:120px!important}.key-and-value-editor .el-table__empty-block{min-height:40px}.file-editor .el-upload{width:100%;text-align:right}.file-editor .el-upload .file-icon{color:#34c388}.resource-dialog .line{width:100%;margin:10px auto 20px auto;background-color:#edeef2}.resource-dialog .show-more{text-align:center}.resource-dialog .show-more a{position:relative;text-decoration:none}.resource-dialog .show-more a:before{left:-215px}.resource-dialog .show-more a:after,.resource-dialog .show-more a:before{content:"";position:absolute;top:8px;z-index:9;width:200px;height:1px;background-color:#edeef2}.resource-dialog .show-more a:after{right:-215px}.resource-dialog .el-form-item .el-select{width:100%}.resource-dialog .el-form-item .el-select:not(.reset-width){width:330px}.resource-dialog .el-form-item .el-form-item__label{padding-bottom:0;font-size:12px}.resource-dialog .config-item-wrapper{min-height:100px}.resource-dialog .config-item-wrapper .params-loading-wrapper{padding:0 32px}.resource-dialog .config-item-wrapper .el-input,.resource-dialog .config-item-wrapper .el-select{width:200px!important} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-94b856f2.08867920.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-94b856f2.08867920.css new file mode 100644 index 000000000..d2bf2bd4a --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-94b856f2.08867920.css @@ -0,0 +1 @@ +.hljs{display:block;overflow-x:auto;padding:.5em;background:#002b36;color:#839496}.hljs-comment,.hljs-quote{color:#586e75}.hljs-addition,.hljs-keyword,.hljs-selector-tag{color:#859900}.hljs-doctag,.hljs-literal,.hljs-meta .hljs-meta-string,.hljs-number,.hljs-regexp,.hljs-string{color:#2aa198}.hljs-name,.hljs-section,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#268bd2}.hljs-attr,.hljs-attribute,.hljs-class .hljs-title,.hljs-template-variable,.hljs-type,.hljs-variable{color:#b58900}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-meta .hljs-keyword,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol{color:#cb4b16}.hljs-built_in,.hljs-deletion{color:#dc322f}.hljs-formula{background:#073642}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.code-view{line-height:1.3}.code-view.hljs{padding:20px;border-radius:2px}.rule-metrics-table .oper-wrapper .ctl-title{margin:10px auto;text-align:center}.rule-view .rule-wrapper .code,.rule-view .rule-wrapper .code-view,.rule-view .rule-wrapper .el-autocomplete,.rule-view .rule-wrapper .el-input,.rule-view .rule-wrapper .el-select,.rule-view .rule-wrapper .el-textarea{width:100%}.rule-view .rule-wrapper .code{font-size:13px;padding:4px;border:1px dashed #fff;-webkit-transition:all .3s;transition:all .3s;line-height:24px}.rule-view .rule-wrapper .code.code-border{border:1px dashed #fff}.rule-view .rule-wrapper .code.code-border:hover{border:1px dashed #d8d8d8}.rule-view .rule-wrapper .code code{word-break:break-word}.rule-view .rule-wrapper .icon,.rule-view .rule-wrapper .tips{margin-left:12px}.rule-view .rule-wrapper .tips{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:12px}.rule-view .rule-wrapper .line{width:95%;margin:30px auto 28px auto;background-color:#edeef2}.rule-view .detail-title-wrapper{margin:-28px -24px 24px;padding:10px 0}.rule-view .detail-title-wrapper .ant-card-body{padding:14px 32px}.rule-view .emq-list-card{margin-bottom:24px}.rule-view .metrics-wrapper{margin-top:-12px}.rule-view .metrics-card{color:#101010}.rule-view .metrics-card:not(.last-child){border-right:1px solid #d8d8d8}.rule-view .metrics-card .card-title{font-size:14px;height:36px;line-height:36px;font-weight:700}.rule-view .metrics-card .card-value{font-size:32px}.rule-view .metrics-card .card-unit{font-size:14px}.rule-view .metrics-card .card-desc{margin-top:8px;font-size:12px;color:#a2a2a2}.rule-view .field-title{width:100px}.rule-view .rule-metrics-table{margin-top:20px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a14add7e.58a5af04.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a14add7e.58a5af04.css new file mode 100644 index 000000000..c2255f0b3 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a14add7e.58a5af04.css @@ -0,0 +1 @@ +.mnesia-auth-table .emq-table-header{padding-bottom:3px}.mnesia-auth-table .add-form{display:block;width:100%}.mnesia-auth-table .add-form .el-select{width:100%}.mnesia-auth-table .add-form .col-oper .el-button{margin-left:12px}.mnesia-auth-table .data-list{clear:both}.mnesia-auth-table .col-oper{margin-top:4px}.acl-table-page .emq-table-header{padding-bottom:3px}.acl-table-page .add-form{display:block;width:100%}.acl-table-page .add-form .el-select{width:100%}.acl-table-page .add-form .col-oper .el-button{margin-left:12px}.acl-table-page .data-list{clear:both}.acl-table-page .col-oper{margin-top:13px}.acl-table-page .el-col-4,.acl-table-page .el-col-6{margin-top:9px}.jwt-authentication .monaco-container{height:200px}.jwt-authentication .el-date-editor.el-input,.jwt-authentication .el-date-editor.el-input__inner,.jwt-authentication .el-select{width:100%}.jwt-authentication .el-table{margin-top:40px}.jwt-authentication .jwt-payload-desc{font-size:14px;padding:12px;border-radius:4px;line-height:1.4;margin:16px 0;background:#f6f7fb}.auth-sasl .list-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:24px}.auth-sasl .list-header .title{color:#333;font-size:16px;font-weight:600}.auth-sasl .mechanism-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-bottom:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.auth-sasl .mechanism-box .label{display:inline-block;color:#757575;font-size:16px;margin-right:10px}.auth-sasl .mechanism-item .el-select{width:100%}.auth-sasl .key-items{position:relative}.auth-sasl .key-items .handle-icons{position:absolute;bottom:0;right:0;width:50px;height:32px;text-align:right;font-size:16px}.auth-sasl .key-items .handle-icons i{cursor:pointer;color:#34c388}.lw-client-details .el-col-16{padding-left:0}.lw-client-details .error-red{color:#f5222d}.lw-client-details .main-green{color:#34c388}.lw-client-details .main-black{color:#101010}.lw-client-details .light-gray{color:rgba(0,0,0,.45)}.lw-client-details .row-title{font-size:16px;font-weight:600}.lw-client-details .emq-list-card:first-child{margin-bottom:24px}.lw-client-details .emq-list-card:first-child .detail-header{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:15px}.lw-client-details .emq-list-card:first-child .detail-header .el-icon-arrow-left{font-weight:600}.lw-client-details .emq-list-card:first-child .detail-header .endpoint{display:inline-block;margin-left:20px}.lw-client-details .collapse-title{width:100%;font-size:14px}.lw-client-details .collapse-content{padding:20px;padding-bottom:0}.lw-client-details .collapse-content .row-titles{min-height:42px!important}.lw-client-details .collapse-content .data-type{display:inline-block}.lw-client-details .collapse-content .content-item-row{min-height:36px!important}.lw-client-details .collapse-content .content-item-row .row-value-item{display:inline-block;margin-right:10px}.lw-client-details .collapse-content .stop-button{margin-left:1px}.lw-client-details .collapse-content .stop-button:hover .stop-icon{background-color:#34c388}.lw-client-details .collapse-content .stop-button .stop-icon{display:inline-block;width:8px;height:8px;background-color:rgba(0,0,0,.65)}.lw-client-details .el-collapse-item__content{padding-bottom:0;font-size:14px}.lw-client-details .el-collapse-item__header{padding-left:12px;border-radius:2px}.lw-client-details .el-collapse-item__arrow{color:#34c388;font-size:14px;font-weight:600}.lw-client-details .el-collapse-item__wrap{padding-bottom:20px;background-color:#f8f9fc}.lw-client-details .create-object .el-select,.lw-client-details .el-date-editor.el-input,.lw-client-details .el-date-editor.el-input__inner,.lw-client-details .el-input-number--small{width:100%}.lw-clients .page-header{margin:0 0 20px 0}.lw-clients .page-header .current-clients{display:inline-block;color:#34c388;margin-left:10px}.lw-clients .lw-clients-header,.lw-clients .page-header .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.lw-clients .lw-clients-header{margin-bottom:24px;height:32px}.lw-clients .lw-clients-header .search-input .el-icon-loading,.lw-clients .lw-clients-header .search-input .el-icon-search{position:relative;left:4px;top:7px}.topic-metrics .el-table .expand-header{height:32px;line-height:32px;margin-bottom:20px}.topic-metrics .el-table .topic-qos-radio{float:right}.topic-metrics .el-table .message-card{height:112px;border-radius:4px;padding:6px 12px;color:#fff}.topic-metrics .el-table .message-card.in{background:-webkit-gradient(linear,left top,right top,from(#3e3ab4),to(#4c5ae0));background:linear-gradient(90deg,#3e3ab4,#4c5ae0)}.topic-metrics .el-table .message-card.out{background:-webkit-gradient(linear,left top,right top,from(#0c7cd1),to(#19bcc2));background:linear-gradient(90deg,#0c7cd1,#19bcc2)}.topic-metrics .el-table .message-card.drop{background:-webkit-gradient(linear,left top,right top,from(#00ac70),to(#34c388));background:linear-gradient(90deg,#00ac70,#34c388)}.topic-metrics .el-table .message-card .message-card--body{font-size:28px;height:80px;line-height:80px;text-align:center}.topic-metrics .el-table .message-card .message-rate{float:right} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a8ae90d8.35afa7a6.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a8ae90d8.35afa7a6.css new file mode 100644 index 000000000..f05a2dd75 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-a8ae90d8.35afa7a6.css @@ -0,0 +1 @@ +.modules .header-box .content[data-v-6f2e92f1],.modules .page-header-content-view .content[data-v-6f2e92f1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:830px}.modules .header-box .content .modules-num[data-v-6f2e92f1],.modules .page-header-content-view .content .modules-num[data-v-6f2e92f1]{display:inline-block;min-width:38px;padding:2px 10px;text-align:center;color:#fff;font-size:13px;border-radius:15px;background-color:#2f333e;margin:0 12px}.modules .el-card[data-v-6f2e92f1]{margin-bottom:20px}.modules .module-item[data-v-6f2e92f1]{position:relative;cursor:pointer}.modules .module-item .item-error-tip[data-v-6f2e92f1],.modules .module-item[data-v-6f2e92f1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.modules .module-item .item-error-tip[data-v-6f2e92f1]{position:absolute;top:0;left:0;width:100%;padding:5px 20px;background-color:#fff8e5;font-size:12px;border-left:5px solid #ffb900}.modules .module-item .item-error-tip .reconnect-btn[data-v-6f2e92f1]{width:40px;height:18px;line-height:8px;color:#f56e28;border:1px solid #f56e28;background-color:#fff8e5}.modules .module-item .left-box[data-v-6f2e92f1]{display:-webkit-box;display:-ms-flexbox;display:flex}.modules .module-item .item-img[data-v-6f2e92f1]{width:85px;height:85px;-ms-flex-negative:0;flex-shrink:0}.modules .module-item .item-content[data-v-6f2e92f1]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:20px;margin-right:10px;-ms-flex-item-align:start;align-self:flex-start}.modules .module-item .item-content .item-title[data-v-6f2e92f1]{color:#101010;font-size:16px;font-weight:700;word-break:break-word}.modules .module-item .item-content .item-des[data-v-6f2e92f1]{max-width:240px;color:rgba(0,0,0,.65);font-size:12px}.modules .module-item .item-handle[data-v-6f2e92f1]{height:85px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.modules .module-item .item-handle .handle-icons[data-v-6f2e92f1]{width:52px;height:28px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;font-size:20px;padding-right:2px}.modules .module-item .item-handle .handle-icons .open[data-v-6f2e92f1]{width:20px;color:#23bd78;font-size:28px;position:relative}.modules .module-item .item-handle .handle-icons .el-icon-caret-right[data-v-6f2e92f1]:before{position:absolute;left:-5px}.modules .module-item .item-handle .handle-icons .close[data-v-6f2e92f1]{color:red;line-height:28px}.modules .module-item .item-handle .handle-icons .el-icon-edit-outline[data-v-6f2e92f1]{line-height:28px}.modules .module-item .item-handle .start-btn[data-v-6f2e92f1]{width:52px;color:#23bd78;border:1px solid #23bd78;font-size:14px;background-color:#f6fcf8;margin-left:0}.modules .module-item .item-handle .know-more[data-v-6f2e92f1]{font-size:13px}.modules .search-input .el-icon-loading[data-v-6f2e92f1],.modules .search-input .el-icon-search[data-v-6f2e92f1]{position:relative;left:4px;top:7px}.modules .null-modules[data-v-6f2e92f1]{min-height:130px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.modules .item-box[data-v-6f2e92f1]{position:relative}.modules .item-box .delete-icon[data-v-6f2e92f1]{visibility:hidden}.modules .item-box:hover .delete-icon[data-v-6f2e92f1]{visibility:visible}.modules .delete-icon[data-v-6f2e92f1]{position:absolute;width:16px;height:16px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABcElEQVRYR+2WMU7DMBSGn3MLrgCXYGNDYqAzTKgLU/KsZKFblEekDIiu7FRCSL1AL1EuwQ0iJUGOHCmq7NjPgNohXjLEz//n//2yLeDIQxxZH2aA03Ygz/PLNE13/5kTqwNFUayEEE8AsEHERQgEEb0DwFXXdfdSyg/TGlYAIloDwFIXsSG0+K2qF0JskyS55gKoYrWDYXhDjMV18QIRNywANZmI2BAc8d4dV285EFxxLwBfJ0LEvQFcEKHiLAAbhG5hn3ZX4NghNBUYMjGeZk27LWvOEDIg2OLsFgwwhp6rX97nxHhTbAcOxPd6sQv9ZUOwAA7Foyjq74i2bdWJGQThDWASj+P4SwGUZXkeCuEFMCU+9DMUwgngI/4biEkAjngoxNR74BkAYr3wXgVu6LnrAjO04wURH1knIRG9AcAdALDELU58IuINC0BNVs+ypmlesyz7du3a9L+qqrO6rh+klKs/PYpDYGaA2YGTdeAH4UfVIZWshvAAAAAASUVORK5CYII=) no-repeat;background-size:100% 100%;top:3px;right:3px;cursor:pointer}.modules .stop-btn[data-v-6f2e92f1]{width:52px;color:red;border:1px solid red;font-size:14px;background-color:#fbf2f2}.modules .content[data-v-6f2e92f1]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.modules .modules-num[data-v-6f2e92f1]{margin-left:7px!important}.modules .item-handle[data-v-6f2e92f1]{cursor:default}.modules .item-handle i[data-v-6f2e92f1]{cursor:pointer}.modules .no-pointer[data-v-6f2e92f1]{cursor:default} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-cfe3eeda.d6a2593d.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-cfe3eeda.d6a2593d.css new file mode 100644 index 000000000..21fc9345d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-cfe3eeda.d6a2593d.css @@ -0,0 +1 @@ +.custom-pagination{margin-top:10px}.custom-pagination a{-webkit-transition:all .3s ease;transition:all .3s ease;color:#fff;margin-right:10px;background:#34c388;display:inline-block;border-radius:4px;padding:5px 8px;border:1px solid #e6e6e6}.custom-pagination a:hover{color:#fff}.custom-pagination a.disabled{-webkit-transition:all .3s ease;transition:all .3s ease;color:#606266;background:transparent;cursor:not-allowed}.clients .data-list{clear:both}.clients .page-header-content-view .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.clients .app-wrapper .search-wrapper{display:block;width:100%}.clients .app-wrapper .search-wrapper .el-date-editor.el-input,.clients .app-wrapper .search-wrapper .el-date-editor.el-input__inner,.clients .app-wrapper .search-wrapper .el-select{width:100%}.clients .app-wrapper .search-wrapper .col-oper{float:right}.clients .app-wrapper .search-wrapper .show-more{margin-left:12px;text-decoration:none}.clients .app-wrapper .search-wrapper .el-col-8{margin-bottom:20px}.clients .app-wrapper .search-wrapper .form-item-row{margin-top:0}.clients .app-wrapper .search-wrapper .form-item-row .el-select.comparator .el-input__inner{border-radius:4px 0 0 4px}.clients .app-wrapper .search-wrapper .form-item-row .el-date-editor .el-input__inner{border-radius:0 4px 4px 0} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-d3537170.0fcbc2f3.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-d3537170.0fcbc2f3.css new file mode 100644 index 000000000..8cd81d329 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-d3537170.0fcbc2f3.css @@ -0,0 +1 @@ +.stretch-height{width:100%;height:10px;background:#e6e6e6;cursor:row-resize;text-align:center}.stretch-height .el-icon-more{position:relative;top:-4px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-e7f1aeea.a0f2acee.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-e7f1aeea.a0f2acee.css new file mode 100644 index 000000000..04246dc8c --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-e7f1aeea.a0f2acee.css @@ -0,0 +1 @@ +.resources-node{list-style-type:none;padding:0;margin:0}.resources-node li{padding:4px 0}.resources-node li .ant-badge-not-a-wrapper{margin-top:-2px}.resources-node .el-button{margin-left:12px}.resources .emq-title{margin-bottom:20px}.resources .resource-node-wrapper .ant-card-body{padding:0 0 0 20px}.resources .expand-column .cell{visibility:hidden} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-vendors.57ed2864.css b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-vendors.57ed2864.css new file mode 100644 index 000000000..7be64dd84 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/css/chunk-vendors.57ed2864.css @@ -0,0 +1,7 @@ +/*! + * Waves v0.7.6 + * http://fian.my.id/Waves + * + * Copyright 2014-2018 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:100px;height:100px;margin-top:-50px;margin-left:-50px;opacity:0;background:rgba(0,0,0,.2);background:radial-gradient(rgba(0,0,0,.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,hsla(0,0%,100%,0) 70%);-webkit-transition:all .5s ease-out;transition:all .5s ease-out;-webkit-transition-property:-webkit-transform,opacity;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:scale(0) translate(0);transform:scale(0) translate(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background:hsla(0,0%,100%,.4);background:radial-gradient(hsla(0,0%,100%,.2) 0,hsla(0,0%,100%,.3) 40%,hsla(0,0%,100%,.4) 50%,hsla(0,0%,100%,.5) 60%,hsla(0,0%,100%,0) 70%)}.waves-effect.waves-classic .waves-ripple{background:rgba(0,0,0,.2)}.waves-effect.waves-classic.waves-light .waves-ripple{background:hsla(0,0%,100%,.4)}.waves-notransition{-webkit-transition:none!important;transition:none!important}.waves-button,.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 0)}.waves-button,.waves-button-input,.waves-button:hover,.waves-button:visited{white-space:nowrap;vertical-align:middle;cursor:pointer;border:none;outline:none;color:inherit;background-color:transparent;font-size:1em;line-height:1em;text-align:center;text-decoration:none;z-index:1}.waves-button{padding:.85em 1.1em;border-radius:.2em}.waves-button-input{margin:0;padding:.85em 1.1em}.waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.waves-input-wrapper.waves-button{padding:0}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%}.waves-float{-webkit-mask-image:none;-webkit-box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12);box-shadow:0 1px 1.5px 1px rgba(0,0,0,.12);-webkit-transition:all .3s;transition:all .3s}.waves-float:active{-webkit-box-shadow:0 8px 20px 1px rgba(0,0,0,.3);box-shadow:0 8px 20px 1px rgba(0,0,0,.3)}.waves-block{display:block}@font-face{font-family:Chinese Quote;src:local("PingFang SC"),local("SimSun");unicode-range:U+2018,U+2019,U+201c,U+201d}body,html{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);background-color:#fff}[tabindex="-1"]:focus{outline:none!important}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;color:rgba(0,0,0,.85);font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=number],input[type=password],input[type=text],textarea{-webkit-appearance:none}dl,ol,ul{margin-top:0;margin-bottom:1em}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#34c388;background-color:transparent;text-decoration:none;outline:none;cursor:pointer;-webkit-transition:color .3s;transition:color .3s;-webkit-text-decoration-skip:objects}a:focus{text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}a:hover{color:#59cf9a}a:active{color:#229c6d}a:active,a:hover{outline:0;text-decoration:none}a[disabled]{color:rgba(0,0,0,.25);cursor:not-allowed;pointer-events:none}code,kbd,pre,samp{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;color:rgba(0,0,0,.45);text-align:left;caption-side:bottom}th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5em;font-size:1.5em;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}::-moz-selection{background:#34c388;color:#fff}::selection{background:#34c388;color:#fff}.clearfix{zoom:1}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.anticon{display:inline-block;font-style:normal;vertical-align:-.125em;text-align:center;text-transform:none;line-height:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.anticon>*{line-height:1}.anticon svg{display:inline-block}.anticon:before{display:none}.anticon .anticon-icon{display:block}.anticon-spin,.anticon-spin:before{display:inline-block;-webkit-animation:loadingCircle 1s linear infinite;animation:loadingCircle 1s linear infinite}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.fade-appear.fade-appear-active,.fade-enter.fade-enter-active{-webkit-animation-name:antFadeIn;animation-name:antFadeIn;-webkit-animation-play-state:running;animation-play-state:running}.fade-leave.fade-leave-active{-webkit-animation-name:antFadeOut;animation-name:antFadeOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.fade-appear,.fade-enter{opacity:0}.fade-appear,.fade-enter,.fade-leave{-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@keyframes antFadeIn{0%{opacity:0}to{opacity:1}}@-webkit-keyframes antFadeOut{0%{opacity:1}to{opacity:0}}@keyframes antFadeOut{0%{opacity:1}to{opacity:0}}.move-up-appear,.move-up-enter,.move-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-up-appear.move-up-appear-active,.move-up-enter.move-up-enter-active{-webkit-animation-name:antMoveUpIn;animation-name:antMoveUpIn;-webkit-animation-play-state:running;animation-play-state:running}.move-up-leave.move-up-leave-active{-webkit-animation-name:antMoveUpOut;animation-name:antMoveUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-up-appear,.move-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-up-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-down-appear,.move-down-enter,.move-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-down-appear.move-down-appear-active,.move-down-enter.move-down-enter-active{-webkit-animation-name:antMoveDownIn;animation-name:antMoveDownIn;-webkit-animation-play-state:running;animation-play-state:running}.move-down-leave.move-down-leave-active{-webkit-animation-name:antMoveDownOut;animation-name:antMoveDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-down-appear,.move-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-down-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-left-appear,.move-left-enter,.move-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-left-appear.move-left-appear-active,.move-left-enter.move-left-enter-active{-webkit-animation-name:antMoveLeftIn;animation-name:antMoveLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.move-left-leave.move-left-leave-active{-webkit-animation-name:antMoveLeftOut;animation-name:antMoveLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-left-appear,.move-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-left-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}.move-right-appear,.move-right-enter,.move-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.move-right-appear.move-right-appear-active,.move-right-enter.move-right-enter-active{-webkit-animation-name:antMoveRightIn;animation-name:antMoveRightIn;-webkit-animation-play-state:running;animation-play-state:running}.move-right-leave.move-right-leave-active{-webkit-animation-name:antMoveRightOut;animation-name:antMoveRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.move-right-appear,.move-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.move-right-leave{-webkit-animation-timing-function:cubic-bezier(.6,.04,.98,.34);animation-timing-function:cubic-bezier(.6,.04,.98,.34)}@-webkit-keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveDownIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@keyframes antMoveDownOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}}@-webkit-keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@keyframes antMoveLeftIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}}@-webkit-keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes antMoveLeftOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@-webkit-keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes antMoveRightIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes antMoveRightOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes antMoveUpIn{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@-webkit-keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@keyframes antMoveUpOut{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(0);transform:translateY(0);opacity:1}to{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateY(-100%);transform:translateY(-100%);opacity:0}}@-webkit-keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingCircle{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}[ant-click-animating-without-extra-node],[ant-click-animating]{position:relative}.ant-click-animating-node,[ant-click-animating-without-extra-node]:after{content:"";position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;border-radius:inherit;border:0 solid #34c388;opacity:.2;-webkit-animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);animation:fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;display:block;pointer-events:none}@-webkit-keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@keyframes waveEffect{to{top:-6px;left:-6px;bottom:-6px;right:-6px;border-width:6px}}@-webkit-keyframes fadeEffect{to{opacity:0}}@keyframes fadeEffect{to{opacity:0}}.slide-up-appear,.slide-up-enter,.slide-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-up-appear.slide-up-appear-active,.slide-up-enter.slide-up-enter-active{-webkit-animation-name:antSlideUpIn;animation-name:antSlideUpIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-up-leave.slide-up-leave-active{-webkit-animation-name:antSlideUpOut;animation-name:antSlideUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-up-appear,.slide-up-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-up-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-down-appear,.slide-down-enter,.slide-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-down-appear.slide-down-appear-active,.slide-down-enter.slide-down-enter-active{-webkit-animation-name:antSlideDownIn;animation-name:antSlideDownIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-down-leave.slide-down-leave-active{-webkit-animation-name:antSlideDownOut;animation-name:antSlideDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-down-appear,.slide-down-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-down-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-left-appear,.slide-left-enter,.slide-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-left-appear.slide-left-appear-active,.slide-left-enter.slide-left-enter-active{-webkit-animation-name:antSlideLeftIn;animation-name:antSlideLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-left-leave.slide-left-leave-active{-webkit-animation-name:antSlideLeftOut;animation-name:antSlideLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-left-appear,.slide-left-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-left-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}.slide-right-appear,.slide-right-enter,.slide-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.slide-right-appear.slide-right-appear-active,.slide-right-enter.slide-right-enter-active{-webkit-animation-name:antSlideRightIn;animation-name:antSlideRightIn;-webkit-animation-play-state:running;animation-play-state:running}.slide-right-leave.slide-right-leave-active{-webkit-animation-name:antSlideRightOut;animation-name:antSlideRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.slide-right-appear,.slide-right-enter{opacity:0;-webkit-animation-timing-function:cubic-bezier(.23,1,.32,1);animation-timing-function:cubic-bezier(.23,1,.32,1)}.slide-right-leave{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06)}@-webkit-keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideUpIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideUpOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@keyframes antSlideDownIn{0%{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}to{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}}@-webkit-keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@keyframes antSlideDownOut{0%{opacity:1;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(1);transform:scaleY(1)}to{opacity:0;-webkit-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transform:scaleY(.8);transform:scaleY(.8)}}@-webkit-keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideLeftIn{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideLeftOut{0%{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@-webkit-keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes antSlideRightIn{0%{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}to{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}}@-webkit-keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}@keyframes antSlideRightOut{0%{opacity:1;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(1);transform:scaleX(1)}to{opacity:0;-webkit-transform-origin:100% 0;transform-origin:100% 0;-webkit-transform:scaleX(.8);transform:scaleX(.8)}}.swing-appear,.swing-enter{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.swing-appear.swing-appear-active,.swing-enter.swing-enter-active{-webkit-animation-name:antSwingIn;animation-name:antSwingIn;-webkit-animation-play-state:running;animation-play-state:running}@-webkit-keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}@keyframes antSwingIn{0%,to{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}40%{-webkit-transform:translateX(10px);transform:translateX(10px)}60%{-webkit-transform:translateX(-5px);transform:translateX(-5px)}80%{-webkit-transform:translateX(5px);transform:translateX(5px)}}.zoom-appear,.zoom-enter,.zoom-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-appear.zoom-appear-active,.zoom-enter.zoom-enter-active{-webkit-animation-name:antZoomIn;animation-name:antZoomIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-leave.zoom-leave-active{-webkit-animation-name:antZoomOut;animation-name:antZoomOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-appear,.zoom-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-appear,.zoom-big-enter,.zoom-big-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-appear.zoom-big-appear-active,.zoom-big-enter.zoom-big-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-leave.zoom-big-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-appear,.zoom-big-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-big-fast-appear,.zoom-big-fast-enter,.zoom-big-fast-leave{-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-big-fast-appear.zoom-big-fast-appear-active,.zoom-big-fast-enter.zoom-big-fast-enter-active{-webkit-animation-name:antZoomBigIn;animation-name:antZoomBigIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-big-fast-leave.zoom-big-fast-leave-active{-webkit-animation-name:antZoomBigOut;animation-name:antZoomBigOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-big-fast-appear,.zoom-big-fast-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-big-fast-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-up-appear,.zoom-up-enter,.zoom-up-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-up-appear.zoom-up-appear-active,.zoom-up-enter.zoom-up-enter-active{-webkit-animation-name:antZoomUpIn;animation-name:antZoomUpIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-up-leave.zoom-up-leave-active{-webkit-animation-name:antZoomUpOut;animation-name:antZoomUpOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-up-appear,.zoom-up-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-up-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-down-appear,.zoom-down-enter,.zoom-down-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-down-appear.zoom-down-appear-active,.zoom-down-enter.zoom-down-enter-active{-webkit-animation-name:antZoomDownIn;animation-name:antZoomDownIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-down-leave.zoom-down-leave-active{-webkit-animation-name:antZoomDownOut;animation-name:antZoomDownOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-down-appear,.zoom-down-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-down-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-left-appear,.zoom-left-enter,.zoom-left-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-left-appear.zoom-left-appear-active,.zoom-left-enter.zoom-left-enter-active{-webkit-animation-name:antZoomLeftIn;animation-name:antZoomLeftIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-left-leave.zoom-left-leave-active{-webkit-animation-name:antZoomLeftOut;animation-name:antZoomLeftOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-left-appear,.zoom-left-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-left-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.zoom-right-appear,.zoom-right-enter,.zoom-right-leave{-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-play-state:paused;animation-play-state:paused}.zoom-right-appear.zoom-right-appear-active,.zoom-right-enter.zoom-right-enter-active{-webkit-animation-name:antZoomRightIn;animation-name:antZoomRightIn;-webkit-animation-play-state:running;animation-play-state:running}.zoom-right-leave.zoom-right-leave-active{-webkit-animation-name:antZoomRightOut;animation-name:antZoomRightOut;-webkit-animation-play-state:running;animation-play-state:running;pointer-events:none}.zoom-right-appear,.zoom-right-enter{-webkit-transform:scale(0);transform:scale(0);-webkit-animation-timing-function:cubic-bezier(.08,.82,.17,1);animation-timing-function:cubic-bezier(.08,.82,.17,1)}.zoom-right-leave{-webkit-animation-timing-function:cubic-bezier(.78,.14,.15,.86);animation-timing-function:cubic-bezier(.78,.14,.15,.86)}@-webkit-keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomIn{0%{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@keyframes antZoomOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.2);transform:scale(.2)}}@-webkit-keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomBigIn{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomBigOut{0%{-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomUpIn{0%{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomUpOut{0%{-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 0;transform-origin:50% 0;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomLeftIn{0%{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomLeftOut{0%{-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomRightIn{0%{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomRightOut{0%{-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%;-webkit-transform:scale(.8);transform:scale(.8)}}@-webkit-keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@keyframes antZoomDownIn{0%{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}to{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}@keyframes antZoomDownOut{0%{-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(1);transform:scale(1)}to{opacity:0;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:scale(.8);transform:scale(.8)}}.ant-motion-collapse{overflow:hidden}.ant-motion-collapse-active{-webkit-transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important;transition:height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1)!important}.ant-drawer{position:fixed;top:0;width:0;height:100%;z-index:1000}.ant-drawer>*{-webkit-transition:-webkit-transform .3s cubic-bezier(.9,0,.3,.7);transition:-webkit-transform .3s cubic-bezier(.9,0,.3,.7);transition:transform .3s cubic-bezier(.9,0,.3,.7);transition:transform .3s cubic-bezier(.9,0,.3,.7),-webkit-transform .3s cubic-bezier(.9,0,.3,.7)}.ant-drawer-content-wrapper{position:fixed}.ant-drawer .ant-drawer-content{width:100%;height:100%}.ant-drawer-left,.ant-drawer-right{width:0;height:100%}.ant-drawer-left .ant-drawer-content-wrapper,.ant-drawer-right .ant-drawer-content-wrapper{height:100%}.ant-drawer-left.ant-drawer-open,.ant-drawer-right.ant-drawer-open{width:100%}.ant-drawer-left.ant-drawer-open.no-mask,.ant-drawer-right.ant-drawer-open.no-mask{width:0}.ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper{-webkit-box-shadow:2px 0 8px rgba(0,0,0,.15);box-shadow:2px 0 8px rgba(0,0,0,.15)}.ant-drawer-right .ant-drawer-content-wrapper{right:0}.ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper{-webkit-box-shadow:-2px 0 8px rgba(0,0,0,.15);box-shadow:-2px 0 8px rgba(0,0,0,.15)}.ant-drawer-bottom,.ant-drawer-top{width:100%;height:0%}.ant-drawer-bottom .ant-drawer-content-wrapper,.ant-drawer-top .ant-drawer-content-wrapper{width:100%}.ant-drawer-bottom.ant-drawer-open,.ant-drawer-top.ant-drawer-open{height:100%}.ant-drawer-bottom.ant-drawer-open.no-mask,.ant-drawer-top.ant-drawer-open.no-mask{height:0%}.ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.ant-drawer-bottom .ant-drawer-content-wrapper{bottom:0}.ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper{-webkit-box-shadow:0 -2px 8px rgba(0,0,0,.15);box-shadow:0 -2px 8px rgba(0,0,0,.15)}.ant-drawer.ant-drawer-open .ant-drawer-mask{opacity:.3;height:100%;-webkit-animation:antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1);animation:antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1);-webkit-transition:none;transition:none}.ant-drawer-title{margin:0;font-size:16px;line-height:22px;font-weight:500;color:rgba(0,0,0,.85)}.ant-drawer-content{position:relative;background-color:#fff;border:0;background-clip:padding-box;z-index:1}.ant-drawer-close{cursor:pointer;border:0;background:transparent;position:absolute;right:0;top:0;z-index:10;font-weight:700;line-height:1;text-decoration:none;-webkit-transition:color .3s;transition:color .3s;color:rgba(0,0,0,.45);outline:0;padding:0}.ant-drawer-close-x{display:block;font-style:normal;text-align:center;text-transform:none;text-rendering:auto;width:56px;height:56px;line-height:56px;font-size:16px}.ant-drawer-close:focus,.ant-drawer-close:hover{color:#444;text-decoration:none}.ant-drawer-header{padding:16px 24px;border-radius:4px 4px 0 0;background:#fff;color:rgba(0,0,0,.65);border-bottom:1px solid #e8e8e8}.ant-drawer-body{padding:24px;font-size:14px;line-height:1.5;word-wrap:break-word}.ant-drawer-mask{position:fixed;width:100%;height:0;opacity:0;background-color:rgba(0,0,0,.65);filter:alpha(opacity=50);-webkit-transition:opacity .3s linear,height 0s ease .3s;transition:opacity .3s linear,height 0s ease .3s}.ant-drawer-open{-webkit-transition:-webkit-transform .3s cubic-bezier(.7,.3,.1,1);transition:-webkit-transform .3s cubic-bezier(.7,.3,.1,1);transition:transform .3s cubic-bezier(.7,.3,.1,1);transition:transform .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1)}.ant-drawer-open-content{-webkit-box-shadow:0 4px 12px rgba(0,0,0,.15);box-shadow:0 4px 12px rgba(0,0,0,.15)}@-webkit-keyframes antdDrawerFadeIn{0%{opacity:0}to{opacity:.3}}@keyframes antdDrawerFadeIn{0%{opacity:0}to{opacity:.3}}.ant-btn{line-height:1.499;display:inline-block;font-weight:400;text-align:center;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:0 15px;font-size:14px;border-radius:4px;height:32px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);position:relative;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.015);box-shadow:0 2px 0 rgba(0,0,0,.015);color:rgba(0,0,0,.65);background-color:#fff;border-color:#d9d9d9}.ant-btn>.anticon{line-height:1}.ant-btn,.ant-btn:active,.ant-btn:focus{outline:0}.ant-btn:not([disabled]):hover{text-decoration:none}.ant-btn:not([disabled]):active{outline:0;-webkit-box-shadow:none;box-shadow:none}.ant-btn.disabled,.ant-btn[disabled]{cursor:not-allowed}.ant-btn.disabled>*,.ant-btn[disabled]>*{pointer-events:none}.ant-btn-lg{padding:0 15px;font-size:16px;border-radius:4px;height:40px}.ant-btn-sm{padding:0 7px;font-size:14px;border-radius:4px;height:24px}.ant-btn>a:only-child{color:currentColor}.ant-btn>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn:focus,.ant-btn:hover{color:#59cf9a;background-color:#fff;border-color:#59cf9a}.ant-btn:focus>a:only-child,.ant-btn:hover>a:only-child{color:currentColor}.ant-btn:focus>a:only-child:after,.ant-btn:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn.active,.ant-btn:active{color:#229c6d;background-color:#fff;border-color:#229c6d}.ant-btn.active>a:only-child,.ant-btn:active>a:only-child{color:currentColor}.ant-btn.active>a:only-child:after,.ant-btn:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn.disabled,.ant-btn.disabled.active,.ant-btn.disabled:active,.ant-btn.disabled:focus,.ant-btn.disabled:hover,.ant-btn[disabled],.ant-btn[disabled].active,.ant-btn[disabled]:active,.ant-btn[disabled]:focus,.ant-btn[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn.disabled.active>a:only-child,.ant-btn.disabled:active>a:only-child,.ant-btn.disabled:focus>a:only-child,.ant-btn.disabled:hover>a:only-child,.ant-btn.disabled>a:only-child,.ant-btn[disabled].active>a:only-child,.ant-btn[disabled]:active>a:only-child,.ant-btn[disabled]:focus>a:only-child,.ant-btn[disabled]:hover>a:only-child,.ant-btn[disabled]>a:only-child{color:currentColor}.ant-btn.disabled.active>a:only-child:after,.ant-btn.disabled:active>a:only-child:after,.ant-btn.disabled:focus>a:only-child:after,.ant-btn.disabled:hover>a:only-child:after,.ant-btn.disabled>a:only-child:after,.ant-btn[disabled].active>a:only-child:after,.ant-btn[disabled]:active>a:only-child:after,.ant-btn[disabled]:focus>a:only-child:after,.ant-btn[disabled]:hover>a:only-child:after,.ant-btn[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn.active,.ant-btn:active,.ant-btn:focus,.ant-btn:hover{background:#fff;text-decoration:none}.ant-btn>i,.ant-btn>span{pointer-events:none;display:inline-block}.ant-btn-primary{color:#fff;background-color:#34c388;border-color:#34c388;text-shadow:0 -1px 0 rgba(0,0,0,.12);-webkit-box-shadow:0 2px 0 rgba(0,0,0,.045);box-shadow:0 2px 0 rgba(0,0,0,.045)}.ant-btn-primary>a:only-child{color:currentColor}.ant-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-primary:focus,.ant-btn-primary:hover{color:#fff;background-color:#59cf9a;border-color:#59cf9a}.ant-btn-primary:focus>a:only-child,.ant-btn-primary:hover>a:only-child{color:currentColor}.ant-btn-primary:focus>a:only-child:after,.ant-btn-primary:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-primary.active,.ant-btn-primary:active{color:#fff;background-color:#229c6d;border-color:#229c6d}.ant-btn-primary.active>a:only-child,.ant-btn-primary:active>a:only-child{color:currentColor}.ant-btn-primary.active>a:only-child:after,.ant-btn-primary:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-primary.disabled,.ant-btn-primary.disabled.active,.ant-btn-primary.disabled:active,.ant-btn-primary.disabled:focus,.ant-btn-primary.disabled:hover,.ant-btn-primary[disabled],.ant-btn-primary[disabled].active,.ant-btn-primary[disabled]:active,.ant-btn-primary[disabled]:focus,.ant-btn-primary[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-primary.disabled.active>a:only-child,.ant-btn-primary.disabled:active>a:only-child,.ant-btn-primary.disabled:focus>a:only-child,.ant-btn-primary.disabled:hover>a:only-child,.ant-btn-primary.disabled>a:only-child,.ant-btn-primary[disabled].active>a:only-child,.ant-btn-primary[disabled]:active>a:only-child,.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-primary[disabled]>a:only-child{color:currentColor}.ant-btn-primary.disabled.active>a:only-child:after,.ant-btn-primary.disabled:active>a:only-child:after,.ant-btn-primary.disabled:focus>a:only-child:after,.ant-btn-primary.disabled:hover>a:only-child:after,.ant-btn-primary.disabled>a:only-child:after,.ant-btn-primary[disabled].active>a:only-child:after,.ant-btn-primary[disabled]:active>a:only-child:after,.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-primary[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child){border-right-color:#59cf9a;border-left-color:#59cf9a}.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled{border-color:#d9d9d9}.ant-btn-group .ant-btn-primary:first-child:not(:last-child){border-right-color:#59cf9a}.ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled]{border-right-color:#d9d9d9}.ant-btn-group .ant-btn-primary+.ant-btn-primary,.ant-btn-group .ant-btn-primary:last-child:not(:first-child){border-left-color:#59cf9a}.ant-btn-group .ant-btn-primary+.ant-btn-primary[disabled],.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled]{border-left-color:#d9d9d9}.ant-btn-ghost{color:rgba(0,0,0,.65);background-color:transparent;border-color:#d9d9d9}.ant-btn-ghost>a:only-child{color:currentColor}.ant-btn-ghost>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-ghost:focus,.ant-btn-ghost:hover{color:#59cf9a;background-color:transparent;border-color:#59cf9a}.ant-btn-ghost:focus>a:only-child,.ant-btn-ghost:hover>a:only-child{color:currentColor}.ant-btn-ghost:focus>a:only-child:after,.ant-btn-ghost:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-ghost.active,.ant-btn-ghost:active{color:#229c6d;background-color:transparent;border-color:#229c6d}.ant-btn-ghost.active>a:only-child,.ant-btn-ghost:active>a:only-child{color:currentColor}.ant-btn-ghost.active>a:only-child:after,.ant-btn-ghost:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-ghost.disabled,.ant-btn-ghost.disabled.active,.ant-btn-ghost.disabled:active,.ant-btn-ghost.disabled:focus,.ant-btn-ghost.disabled:hover,.ant-btn-ghost[disabled],.ant-btn-ghost[disabled].active,.ant-btn-ghost[disabled]:active,.ant-btn-ghost[disabled]:focus,.ant-btn-ghost[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-ghost.disabled.active>a:only-child,.ant-btn-ghost.disabled:active>a:only-child,.ant-btn-ghost.disabled:focus>a:only-child,.ant-btn-ghost.disabled:hover>a:only-child,.ant-btn-ghost.disabled>a:only-child,.ant-btn-ghost[disabled].active>a:only-child,.ant-btn-ghost[disabled]:active>a:only-child,.ant-btn-ghost[disabled]:focus>a:only-child,.ant-btn-ghost[disabled]:hover>a:only-child,.ant-btn-ghost[disabled]>a:only-child{color:currentColor}.ant-btn-ghost.disabled.active>a:only-child:after,.ant-btn-ghost.disabled:active>a:only-child:after,.ant-btn-ghost.disabled:focus>a:only-child:after,.ant-btn-ghost.disabled:hover>a:only-child:after,.ant-btn-ghost.disabled>a:only-child:after,.ant-btn-ghost[disabled].active>a:only-child:after,.ant-btn-ghost[disabled]:active>a:only-child:after,.ant-btn-ghost[disabled]:focus>a:only-child:after,.ant-btn-ghost[disabled]:hover>a:only-child:after,.ant-btn-ghost[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-dashed{color:rgba(0,0,0,.65);background-color:#fff;border-color:#d9d9d9;border-style:dashed}.ant-btn-dashed>a:only-child{color:currentColor}.ant-btn-dashed>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-dashed:focus,.ant-btn-dashed:hover{color:#59cf9a;background-color:#fff;border-color:#59cf9a}.ant-btn-dashed:focus>a:only-child,.ant-btn-dashed:hover>a:only-child{color:currentColor}.ant-btn-dashed:focus>a:only-child:after,.ant-btn-dashed:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-dashed.active,.ant-btn-dashed:active{color:#229c6d;background-color:#fff;border-color:#229c6d}.ant-btn-dashed.active>a:only-child,.ant-btn-dashed:active>a:only-child{color:currentColor}.ant-btn-dashed.active>a:only-child:after,.ant-btn-dashed:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-dashed.disabled,.ant-btn-dashed.disabled.active,.ant-btn-dashed.disabled:active,.ant-btn-dashed.disabled:focus,.ant-btn-dashed.disabled:hover,.ant-btn-dashed[disabled],.ant-btn-dashed[disabled].active,.ant-btn-dashed[disabled]:active,.ant-btn-dashed[disabled]:focus,.ant-btn-dashed[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-dashed.disabled.active>a:only-child,.ant-btn-dashed.disabled:active>a:only-child,.ant-btn-dashed.disabled:focus>a:only-child,.ant-btn-dashed.disabled:hover>a:only-child,.ant-btn-dashed.disabled>a:only-child,.ant-btn-dashed[disabled].active>a:only-child,.ant-btn-dashed[disabled]:active>a:only-child,.ant-btn-dashed[disabled]:focus>a:only-child,.ant-btn-dashed[disabled]:hover>a:only-child,.ant-btn-dashed[disabled]>a:only-child{color:currentColor}.ant-btn-dashed.disabled.active>a:only-child:after,.ant-btn-dashed.disabled:active>a:only-child:after,.ant-btn-dashed.disabled:focus>a:only-child:after,.ant-btn-dashed.disabled:hover>a:only-child:after,.ant-btn-dashed.disabled>a:only-child:after,.ant-btn-dashed[disabled].active>a:only-child:after,.ant-btn-dashed[disabled]:active>a:only-child:after,.ant-btn-dashed[disabled]:focus>a:only-child:after,.ant-btn-dashed[disabled]:hover>a:only-child:after,.ant-btn-dashed[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-danger{color:#f5222d;background-color:#f5f5f5;border-color:#d9d9d9}.ant-btn-danger>a:only-child{color:currentColor}.ant-btn-danger>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-danger:hover{color:#fff;background-color:#ff4d4f;border-color:#ff4d4f}.ant-btn-danger:hover>a:only-child{color:currentColor}.ant-btn-danger:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-danger:focus{color:#ff4d4f;background-color:#fff;border-color:#ff4d4f}.ant-btn-danger:focus>a:only-child{color:currentColor}.ant-btn-danger:focus>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-danger.active,.ant-btn-danger:active{color:#fff;background-color:#cf1322;border-color:#cf1322}.ant-btn-danger.active>a:only-child,.ant-btn-danger:active>a:only-child{color:currentColor}.ant-btn-danger.active>a:only-child:after,.ant-btn-danger:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-danger.disabled,.ant-btn-danger.disabled.active,.ant-btn-danger.disabled:active,.ant-btn-danger.disabled:focus,.ant-btn-danger.disabled:hover,.ant-btn-danger[disabled],.ant-btn-danger[disabled].active,.ant-btn-danger[disabled]:active,.ant-btn-danger[disabled]:focus,.ant-btn-danger[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-danger.disabled.active>a:only-child,.ant-btn-danger.disabled:active>a:only-child,.ant-btn-danger.disabled:focus>a:only-child,.ant-btn-danger.disabled:hover>a:only-child,.ant-btn-danger.disabled>a:only-child,.ant-btn-danger[disabled].active>a:only-child,.ant-btn-danger[disabled]:active>a:only-child,.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-danger[disabled]>a:only-child{color:currentColor}.ant-btn-danger.disabled.active>a:only-child:after,.ant-btn-danger.disabled:active>a:only-child:after,.ant-btn-danger.disabled:focus>a:only-child:after,.ant-btn-danger.disabled:hover>a:only-child:after,.ant-btn-danger.disabled>a:only-child:after,.ant-btn-danger[disabled].active>a:only-child:after,.ant-btn-danger[disabled]:active>a:only-child:after,.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-danger[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-circle,.ant-btn-circle-outline{width:32px;padding:0;font-size:16px;border-radius:50%;height:32px}.ant-btn-circle-outline.ant-btn-lg,.ant-btn-circle.ant-btn-lg{width:40px;padding:0;font-size:18px;border-radius:50%;height:40px}.ant-btn-circle-outline.ant-btn-sm,.ant-btn-circle.ant-btn-sm{width:24px;padding:0;font-size:14px;border-radius:50%;height:24px}.ant-btn:before{position:absolute;top:-1px;left:-1px;bottom:-1px;right:-1px;background:#fff;opacity:.35;content:"";border-radius:inherit;z-index:1;-webkit-transition:opacity .2s;transition:opacity .2s;pointer-events:none;display:none}.ant-btn .anticon{-webkit-transition:margin-left .3s cubic-bezier(.645,.045,.355,1);transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-btn .anticon.anticon-minus>svg,.ant-btn .anticon.anticon-plus>svg{shape-rendering:optimizeSpeed}.ant-btn.ant-btn-loading:before{display:block}.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only){padding-left:29px;pointer-events:none;position:relative}.ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon:not(:last-child){margin-left:-14px}.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only){padding-left:24px}.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon{margin-left:-17px}.ant-btn-group{display:inline-block}.ant-btn-group,.ant-btn-group>.ant-btn,.ant-btn-group>span>.ant-btn{position:relative}.ant-btn-group>.ant-btn.active,.ant-btn-group>.ant-btn:active,.ant-btn-group>.ant-btn:focus,.ant-btn-group>.ant-btn:hover,.ant-btn-group>span>.ant-btn.active,.ant-btn-group>span>.ant-btn:active,.ant-btn-group>span>.ant-btn:focus,.ant-btn-group>span>.ant-btn:hover{z-index:2}.ant-btn-group>.ant-btn:disabled,.ant-btn-group>span>.ant-btn:disabled{z-index:0}.ant-btn-group-lg>.ant-btn,.ant-btn-group-lg>span>.ant-btn{padding:0 15px;font-size:16px;border-radius:0;height:40px;line-height:38px}.ant-btn-group-sm>.ant-btn,.ant-btn-group-sm>span>.ant-btn{padding:0 7px;font-size:14px;border-radius:0;height:24px;line-height:22px}.ant-btn-group-sm>.ant-btn>.anticon,.ant-btn-group-sm>span>.ant-btn>.anticon{font-size:14px}.ant-btn+.ant-btn-group,.ant-btn-group+.ant-btn,.ant-btn-group+.ant-btn-group,.ant-btn-group .ant-btn+.ant-btn,.ant-btn-group .ant-btn+span,.ant-btn-group>span+span,.ant-btn-group span+.ant-btn{margin-left:-1px}.ant-btn-group .ant-btn-primary+.ant-btn:not(.ant-btn-primary):not([disabled]){border-left-color:transparent}.ant-btn-group .ant-btn{border-radius:0}.ant-btn-group>.ant-btn:first-child,.ant-btn-group>span:first-child>.ant-btn{margin-left:0}.ant-btn-group>.ant-btn:only-child,.ant-btn-group>span:only-child>.ant-btn{border-radius:4px}.ant-btn-group>.ant-btn:first-child:not(:last-child),.ant-btn-group>span:first-child:not(:last-child)>.ant-btn{border-bottom-left-radius:4px;border-top-left-radius:4px}.ant-btn-group>.ant-btn:last-child:not(:first-child),.ant-btn-group>span:last-child:not(:first-child)>.ant-btn{border-bottom-right-radius:4px;border-top-right-radius:4px}.ant-btn-group-sm>.ant-btn:only-child,.ant-btn-group-sm>span:only-child>.ant-btn{border-radius:4px}.ant-btn-group-sm>.ant-btn:first-child:not(:last-child),.ant-btn-group-sm>span:first-child:not(:last-child)>.ant-btn{border-bottom-left-radius:4px;border-top-left-radius:4px}.ant-btn-group-sm>.ant-btn:last-child:not(:first-child),.ant-btn-group-sm>span:last-child:not(:first-child)>.ant-btn{border-bottom-right-radius:4px;border-top-right-radius:4px}.ant-btn-group>.ant-btn-group{float:left}.ant-btn-group>.ant-btn-group:not(:first-child):not(:last-child)>.ant-btn{border-radius:0}.ant-btn-group>.ant-btn-group:first-child:not(:last-child)>.ant-btn:last-child{border-bottom-right-radius:0;border-top-right-radius:0;padding-right:8px}.ant-btn-group>.ant-btn-group:last-child:not(:first-child)>.ant-btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;padding-left:8px}.ant-btn:not(.ant-btn-circle):not(.ant-btn-circle-outline).ant-btn-icon-only{padding-left:8px;padding-right:8px}.ant-btn:active>span,.ant-btn:focus>span{position:relative}.ant-btn>.anticon+span,.ant-btn>span+.anticon{margin-left:8px}.ant-btn-background-ghost{background:transparent!important;border-color:#fff;color:#fff}.ant-btn-background-ghost.ant-btn-primary{color:#34c388;background-color:transparent;border-color:#34c388;text-shadow:none}.ant-btn-background-ghost.ant-btn-primary>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-primary:focus,.ant-btn-background-ghost.ant-btn-primary:hover{color:#59cf9a;background-color:transparent;border-color:#59cf9a}.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-primary.active,.ant-btn-background-ghost.ant-btn-primary:active{color:#229c6d;background-color:transparent;border-color:#229c6d}.ant-btn-background-ghost.ant-btn-primary.active>a:only-child,.ant-btn-background-ghost.ant-btn-primary:active>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-primary.disabled,.ant-btn-background-ghost.ant-btn-primary.disabled.active,.ant-btn-background-ghost.ant-btn-primary.disabled:active,.ant-btn-background-ghost.ant-btn-primary.disabled:focus,.ant-btn-background-ghost.ant-btn-primary.disabled:hover,.ant-btn-background-ghost.ant-btn-primary[disabled],.ant-btn-background-ghost.ant-btn-primary[disabled].active,.ant-btn-background-ghost.ant-btn-primary[disabled]:active,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-primary.disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary.disabled>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled].active>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-primary.disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary.disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled].active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-primary[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-danger{color:#f5222d;background-color:transparent;border-color:#f5222d;text-shadow:none}.ant-btn-background-ghost.ant-btn-danger>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-danger:focus,.ant-btn-background-ghost.ant-btn-danger:hover{color:#ff4d4f;background-color:transparent;border-color:#ff4d4f}.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:hover>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-danger.active,.ant-btn-background-ghost.ant-btn-danger:active{color:#cf1322;background-color:transparent;border-color:#cf1322}.ant-btn-background-ghost.ant-btn-danger.active>a:only-child,.ant-btn-background-ghost.ant-btn-danger:active>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger:active>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-background-ghost.ant-btn-danger.disabled,.ant-btn-background-ghost.ant-btn-danger.disabled.active,.ant-btn-background-ghost.ant-btn-danger.disabled:active,.ant-btn-background-ghost.ant-btn-danger.disabled:focus,.ant-btn-background-ghost.ant-btn-danger.disabled:hover,.ant-btn-background-ghost.ant-btn-danger[disabled],.ant-btn-background-ghost.ant-btn-danger[disabled].active,.ant-btn-background-ghost.ant-btn-danger[disabled]:active,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover{color:rgba(0,0,0,.25);background-color:#f5f5f5;border-color:#d9d9d9;text-shadow:none;-webkit-box-shadow:none;box-shadow:none}.ant-btn-background-ghost.ant-btn-danger.disabled.active>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:active>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger.disabled>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled].active>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child,.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child{color:currentColor}.ant-btn-background-ghost.ant-btn-danger.disabled.active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger.disabled>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled].active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:active>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:focus>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]:hover>a:only-child:after,.ant-btn-background-ghost.ant-btn-danger[disabled]>a:only-child:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:transparent}.ant-btn-two-chinese-chars:first-letter{letter-spacing:.34em}.ant-btn-two-chinese-chars>:not(.anticon){letter-spacing:.34em;margin-right:-.34em}.ant-btn-block{width:100%}.ant-btn:empty{vertical-align:top}a.ant-btn{line-height:30px}a.ant-btn-lg{line-height:38px}a.ant-btn-sm{line-height:22px}.ant-card{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;background:#fff;border-radius:2px;position:relative;-webkit-transition:all .3s;transition:all .3s}.ant-card-hoverable{cursor:pointer}.ant-card-hoverable:hover{-webkit-box-shadow:0 2px 8px rgba(0,0,0,.09);box-shadow:0 2px 8px rgba(0,0,0,.09);border-color:rgba(0,0,0,.09)}.ant-card-bordered{border:1px solid #e8e8e8}.ant-card-head{background:transparent;border-bottom:1px solid #e8e8e8;padding:0 24px;border-radius:2px 2px 0 0;zoom:1;margin-bottom:-1px;min-height:48px;font-size:16px;color:rgba(0,0,0,.85);font-weight:500}.ant-card-head:after,.ant-card-head:before{content:"";display:table}.ant-card-head:after{clear:both}.ant-card-head-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.ant-card-head-title{padding:16px 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;-webkit-box-flex:1;-ms-flex:1;flex:1;display:inline-block}.ant-card-head .ant-tabs{margin-bottom:-17px;clear:both;font-size:14px;color:rgba(0,0,0,.65);font-weight:400}.ant-card-head .ant-tabs-bar{border-bottom:1px solid #e8e8e8}.ant-card-extra{float:right;padding:16px 0;font-size:14px;color:rgba(0,0,0,.65);font-weight:400;margin-left:auto}.ant-card-body{padding:24px;zoom:1}.ant-card-body:after,.ant-card-body:before{content:"";display:table}.ant-card-body:after{clear:both}.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body{margin:-1px 0 0 -1px;padding:0}.ant-card-grid{border-radius:0;border:0;-webkit-box-shadow:1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,1px 0 0 0 #e8e8e8 inset,0 1px 0 0 #e8e8e8 inset;box-shadow:1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,inset 1px 0 0 0 #e8e8e8,inset 0 1px 0 0 #e8e8e8;width:33.33%;float:left;padding:24px;-webkit-transition:all .3s;transition:all .3s}.ant-card-grid:hover{position:relative;z-index:1;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15)}.ant-card-contain-tabs>.ant-card-head .ant-card-head-title{padding-bottom:0;min-height:32px}.ant-card-contain-tabs .ant-card-extra{padding-bottom:0}.ant-card-cover>*{width:100%;display:block}.ant-card-cover img{border-radius:2px 2px 0 0}.ant-card-actions{border-top:1px solid #e8e8e8;background:#fafafa;zoom:1;list-style:none;margin:0;padding:0}.ant-card-actions:after,.ant-card-actions:before{content:"";display:table}.ant-card-actions:after{clear:both}.ant-card-actions>li{float:left;text-align:center;margin:12px 0;color:rgba(0,0,0,.45)}.ant-card-actions>li>span{display:inline-block;font-size:14px;cursor:pointer;line-height:22px;min-width:32px;position:relative}.ant-card-actions>li>span:hover{color:#34c388;-webkit-transition:color .3s;transition:color .3s}.ant-card-actions>li>span>.anticon{font-size:16px;line-height:22px}.ant-card-actions>li>span a{color:rgba(0,0,0,.45);line-height:22px;display:inline-block;width:100%}.ant-card-actions>li>span a:hover{color:#34c388}.ant-card-actions>li:not(:last-child){border-right:1px solid #e8e8e8}.ant-card-wider-padding .ant-card-head{padding:0 32px}.ant-card-wider-padding .ant-card-body{padding:24px 32px}.ant-card-padding-transition .ant-card-body,.ant-card-padding-transition .ant-card-head{-webkit-transition:padding .3s;transition:padding .3s}.ant-card-type-inner .ant-card-head{padding:0 24px;background:#fafafa}.ant-card-type-inner .ant-card-head-title{padding:12px 0;font-size:14px}.ant-card-type-inner .ant-card-body{padding:16px 24px}.ant-card-type-inner .ant-card-extra{padding:13.5px 0}.ant-card-meta{margin:-4px 0;zoom:1}.ant-card-meta:after,.ant-card-meta:before{content:"";display:table}.ant-card-meta:after{clear:both}.ant-card-meta-avatar{padding-right:16px;float:left}.ant-card-meta-detail{overflow:hidden}.ant-card-meta-detail>div:not(:last-child){margin-bottom:8px}.ant-card-meta-title{font-size:16px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:rgba(0,0,0,.85);font-weight:500}.ant-card-meta-description{color:rgba(0,0,0,.45)}.ant-card-loading{overflow:hidden;position:relative}.ant-card-loading:after{position:absolute;bottom:0;left:0;width:100%;height:24px;background:#fff;content:""}.ant-card-loading .ant-card-body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ant-card-loading-content p{margin:0}.ant-card-loading-block{height:14px;margin:4px 0;border-radius:2px;background:-webkit-gradient(linear,left top,right top,from(rgba(207,216,220,.2)),color-stop(rgba(207,216,220,.4)),to(rgba(207,216,220,.2)));background:linear-gradient(90deg,rgba(207,216,220,.2),rgba(207,216,220,.4),rgba(207,216,220,.2));-webkit-animation:card-loading 1.4s ease infinite;animation:card-loading 1.4s ease infinite;background-size:600% 600%}@-webkit-keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}@keyframes card-loading{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container{height:40px}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-ink-bar{visibility:hidden}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab{margin:0;border:1px solid #e8e8e8;border-bottom:0;border-radius:4px 4px 0 0;background:#fafafa;margin-right:2px;padding:0 16px;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);line-height:38px}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active{background:#fff;border-color:#e8e8e8;color:#34c388;padding-bottom:1px}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-inactive{padding:0}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-wrap{margin-bottom:0}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x{color:rgba(0,0,0,.45);-webkit-transition:all .3s;transition:all .3s;font-size:12px;margin-left:3px;margin-right:-5px;overflow:hidden;vertical-align:middle;width:16px;height:16px;height:14px}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x:hover{color:rgba(0,0,0,.85)}.ant-tabs.ant-tabs-card .ant-tabs-card-content>.ant-tabs-tabpane,.ant-tabs.ant-tabs-editable-card .ant-tabs-card-content>.ant-tabs-tabpane{-webkit-transition:none!important;transition:none!important}.ant-tabs.ant-tabs-card .ant-tabs-card-content>.ant-tabs-tabpane-inactive,.ant-tabs.ant-tabs-editable-card .ant-tabs-card-content>.ant-tabs-tabpane-inactive{overflow:hidden}.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab:hover .anticon-close{opacity:1}.ant-tabs-extra-content{line-height:40px}.ant-tabs-extra-content .ant-tabs-new-tab{position:relative;width:20px;height:20px;line-height:20px;text-align:center;cursor:pointer;border-radius:2px;border:1px solid #e8e8e8;font-size:12px;color:rgba(0,0,0,.65);-webkit-transition:all .3s;transition:all .3s}.ant-tabs-extra-content .ant-tabs-new-tab:hover{color:#34c388;border-color:#34c388}.ant-tabs-extra-content .ant-tabs-new-tab svg{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto}.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-container,.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-container{height:auto}.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab,.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab{border-bottom:1px solid #e8e8e8;margin-bottom:8px}.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active,.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active{padding-bottom:4px}.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab:last-child,.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab:last-child{margin-bottom:8px}.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-new-tab,.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-new-tab{width:90%}.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-wrap{margin-right:0}.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab{border-right:0;border-radius:4px 0 0 4px;margin-right:1px}.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active{margin-right:-1px;padding-right:18px}.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-wrap{margin-left:0}.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab{border-left:0;border-radius:0 4px 4px 0;margin-left:1px}.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active{margin-left:-1px;padding-left:18px}.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab{border-bottom:1px solid #e8e8e8;border-top:0;border-radius:0 0 4px 4px}.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active{color:#34c388;padding-bottom:0;padding-top:1px}.ant-tabs{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;position:relative;overflow:hidden;zoom:1}.ant-tabs:after,.ant-tabs:before{content:"";display:table}.ant-tabs:after{clear:both}.ant-tabs-ink-bar{z-index:1;position:absolute;left:0;bottom:1px;-webkit-box-sizing:border-box;box-sizing:border-box;height:2px;background-color:#34c388;-webkit-transform-origin:0 0;transform-origin:0 0}.ant-tabs-bar{border-bottom:1px solid #e8e8e8;margin:0 0 16px 0;outline:none}.ant-tabs-bar,.ant-tabs-nav-container{-webkit-transition:padding .3s cubic-bezier(.645,.045,.355,1);transition:padding .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs-nav-container{overflow:hidden;font-size:14px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;white-space:nowrap;margin-bottom:-1px;zoom:1}.ant-tabs-nav-container:after,.ant-tabs-nav-container:before{content:"";display:table}.ant-tabs-nav-container:after{clear:both}.ant-tabs-nav-container-scrolling{padding-left:32px;padding-right:32px}.ant-tabs-bottom .ant-tabs-bottom-bar{margin-bottom:0;margin-top:16px;border-bottom:none;border-top:1px solid #e8e8e8}.ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-ink-bar{bottom:auto;top:1px}.ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-nav-container{margin-bottom:0;margin-top:-1px}.ant-tabs-tab-next,.ant-tabs-tab-prev{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:2;width:0;height:100%;cursor:pointer;border:0;background-color:transparent;position:absolute;text-align:center;color:rgba(0,0,0,.45);-webkit-transition:width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);transition:width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);opacity:0;pointer-events:none}.ant-tabs-tab-next.ant-tabs-tab-arrow-show,.ant-tabs-tab-prev.ant-tabs-tab-arrow-show{opacity:1;width:32px;height:100%;pointer-events:auto}.ant-tabs-tab-next:hover,.ant-tabs-tab-prev:hover{color:rgba(0,0,0,.65)}.ant-tabs-tab-next-icon,.ant-tabs-tab-prev-icon{font-style:normal;font-weight:700;font-variant:normal;line-height:inherit;vertical-align:baseline;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;text-transform:none}.ant-tabs-tab-next-icon-target,.ant-tabs-tab-prev-icon-target{display:block;display:inline-block;font-size:12px;font-size:10px\9;-webkit-transform:scale(.83333333) rotate(0deg);transform:scale(.83333333) rotate(0deg)}:root .ant-tabs-tab-next-icon-target,:root .ant-tabs-tab-prev-icon-target{font-size:12px}.ant-tabs-tab-btn-disabled{cursor:not-allowed}.ant-tabs-tab-btn-disabled,.ant-tabs-tab-btn-disabled:hover{color:rgba(0,0,0,.25)}.ant-tabs-tab-next{right:2px}.ant-tabs-tab-prev{left:0}:root .ant-tabs-tab-prev{-webkit-filter:none;filter:none}.ant-tabs-nav-wrap{overflow:hidden;margin-bottom:-1px}.ant-tabs-nav-scroll{overflow:hidden;white-space:nowrap}.ant-tabs-nav{-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:0;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);position:relative;margin:0;list-style:none;display:inline-block}.ant-tabs-nav:after,.ant-tabs-nav:before{display:table;content:" "}.ant-tabs-nav:after{clear:both}.ant-tabs-nav .ant-tabs-tab{display:inline-block;height:100%;margin:0 32px 0 0;padding:12px 16px;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1);cursor:pointer;text-decoration:none}.ant-tabs-nav .ant-tabs-tab:last-child{margin-right:0}.ant-tabs-nav .ant-tabs-tab:hover{color:#59cf9a}.ant-tabs-nav .ant-tabs-tab:active{color:#229c6d}.ant-tabs-nav .ant-tabs-tab .anticon{margin-right:8px}.ant-tabs-nav .ant-tabs-tab-disabled,.ant-tabs-nav .ant-tabs-tab-disabled:hover{cursor:not-allowed;color:rgba(0,0,0,.25)}.ant-tabs-nav .ant-tabs-tab-active{color:#34c388;font-weight:500}.ant-tabs .ant-tabs-large-bar .ant-tabs-nav-container{font-size:16px}.ant-tabs .ant-tabs-large-bar .ant-tabs-tab{padding:16px}.ant-tabs .ant-tabs-small-bar .ant-tabs-nav-container{font-size:14px}.ant-tabs .ant-tabs-small-bar .ant-tabs-tab{padding:8px 16px}.ant-tabs .ant-tabs-bottom-content,.ant-tabs .ant-tabs-top-content{width:100%}.ant-tabs .ant-tabs-bottom-content>.ant-tabs-tabpane,.ant-tabs .ant-tabs-top-content>.ant-tabs-tabpane{-ms-flex-negative:0;flex-shrink:0;width:100%;-webkit-transition:opacity .45s;transition:opacity .45s;opacity:1}.ant-tabs .ant-tabs-bottom-content>.ant-tabs-tabpane-inactive,.ant-tabs .ant-tabs-top-content>.ant-tabs-tabpane-inactive{opacity:0;height:0;padding:0!important;pointer-events:none}.ant-tabs .ant-tabs-bottom-content>.ant-tabs-tabpane-inactive input,.ant-tabs .ant-tabs-top-content>.ant-tabs-tabpane-inactive input{visibility:hidden}.ant-tabs .ant-tabs-bottom-content.ant-tabs-content-animated,.ant-tabs .ant-tabs-top-content.ant-tabs-content-animated{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;will-change:margin-left;-webkit-transition:margin-left .3s cubic-bezier(.645,.045,.355,1);transition:margin-left .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs .ant-tabs-left-bar,.ant-tabs .ant-tabs-right-bar{border-bottom:0;height:100%}.ant-tabs .ant-tabs-left-bar-tab-next,.ant-tabs .ant-tabs-left-bar-tab-prev,.ant-tabs .ant-tabs-right-bar-tab-next,.ant-tabs .ant-tabs-right-bar-tab-prev{width:32px;height:0;-webkit-transition:height .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);transition:height .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs .ant-tabs-left-bar-tab-next.ant-tabs-tab-arrow-show,.ant-tabs .ant-tabs-left-bar-tab-prev.ant-tabs-tab-arrow-show,.ant-tabs .ant-tabs-right-bar-tab-next.ant-tabs-tab-arrow-show,.ant-tabs .ant-tabs-right-bar-tab-prev.ant-tabs-tab-arrow-show{width:100%;height:32px}.ant-tabs .ant-tabs-left-bar .ant-tabs-tab,.ant-tabs .ant-tabs-right-bar .ant-tabs-tab{float:none;margin:0 0 16px 0;padding:8px 24px;display:block}.ant-tabs .ant-tabs-left-bar .ant-tabs-tab:last-child,.ant-tabs .ant-tabs-right-bar .ant-tabs-tab:last-child{margin-bottom:0}.ant-tabs .ant-tabs-left-bar .ant-tabs-extra-content,.ant-tabs .ant-tabs-right-bar .ant-tabs-extra-content{text-align:center}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-scroll,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-scroll{width:auto}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container,.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap{height:100%}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container{margin-bottom:0}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling{padding:32px 0}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap{margin-bottom:0}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav{width:100%}.ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar,.ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar{width:2px;top:0;left:auto;height:auto;bottom:auto}.ant-tabs .ant-tabs-left-bar .ant-tabs-tab-next,.ant-tabs .ant-tabs-right-bar .ant-tabs-tab-next{width:100%;bottom:0;height:32px}.ant-tabs .ant-tabs-left-bar .ant-tabs-tab-prev,.ant-tabs .ant-tabs-right-bar .ant-tabs-tab-prev{top:0;width:100%;height:32px}.ant-tabs .ant-tabs-left-content,.ant-tabs .ant-tabs-right-content{overflow:hidden;width:auto;margin-top:0!important}.ant-tabs .ant-tabs-left-bar{float:left;border-right:1px solid #e8e8e8;margin-right:-1px;margin-bottom:0}.ant-tabs .ant-tabs-left-bar .ant-tabs-tab{text-align:right}.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container,.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap{margin-right:-1px}.ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar{right:1px}.ant-tabs .ant-tabs-left-content{padding-left:24px;border-left:1px solid #e8e8e8}.ant-tabs .ant-tabs-right-bar{float:right;border-left:1px solid #e8e8e8;margin-left:-1px;margin-bottom:0}.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container,.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap{margin-left:-1px}.ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar{left:1px}.ant-tabs .ant-tabs-right-content{padding-right:24px;border-right:1px solid #e8e8e8}.ant-tabs-bottom .ant-tabs-ink-bar-animated,.ant-tabs-top .ant-tabs-ink-bar-animated{-webkit-transition:width .3s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:width .3s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs-left .ant-tabs-ink-bar-animated,.ant-tabs-right .ant-tabs-ink-bar-animated{-webkit-transition:height .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:height .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),height .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),height .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)}.ant-tabs-no-animation>.ant-tabs-content>.ant-tabs-content-animated,.no-flex>.ant-tabs-content>.ant-tabs-content-animated{-webkit-transform:none!important;transform:none!important;margin-left:0!important}.ant-tabs-no-animation>.ant-tabs-content>.ant-tabs-tabpane-inactive,.no-flex>.ant-tabs-content>.ant-tabs-tabpane-inactive{display:none}.ant-tabs-left-content>.ant-tabs-content-animated,.ant-tabs-right-content>.ant-tabs-content-animated{-webkit-transform:none!important;transform:none!important;margin-left:0!important}.ant-tabs-left-content>.ant-tabs-tabpane-inactive,.ant-tabs-right-content>.ant-tabs-tabpane-inactive{display:none}.ant-badge{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;position:relative;display:inline-block;line-height:1;color:unset}.ant-badge-count{top:-10px;height:20px;border-radius:10px;min-width:20px;background:#f5222d;color:#fff;line-height:20px;text-align:center;padding:0 6px;font-size:12px;font-weight:400;white-space:nowrap;-webkit-box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px #fff;z-index:10}.ant-badge-count a,.ant-badge-count a:hover{color:#fff}.ant-badge-multiple-words{padding:0 8px}.ant-badge-dot{top:-3px;height:6px;width:6px;border-radius:100%;background:#f5222d;z-index:10;-webkit-box-shadow:0 0 0 1px #fff;box-shadow:0 0 0 1px #fff}.ant-badge-count,.ant-badge-dot,.ant-badge .ant-scroll-number-custom-component{position:absolute;right:0;-webkit-transform:translateX(50%);transform:translateX(50%);-webkit-transform-origin:100%;transform-origin:100%}.ant-badge .ant-scroll-number-custom-component{-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%)}.ant-badge-status{line-height:inherit;vertical-align:baseline}.ant-badge-status-dot{width:6px;height:6px;display:inline-block;border-radius:50%;vertical-align:middle;position:relative;top:-1px}.ant-badge-status-success{background-color:#52c41a}.ant-badge-status-processing{background-color:#1890ff;position:relative}.ant-badge-status-processing:after{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%;border:1px solid #1890ff;content:"";-webkit-animation:antStatusProcessing 1.2s ease-in-out infinite;animation:antStatusProcessing 1.2s ease-in-out infinite}.ant-badge-status-default{background-color:#d9d9d9}.ant-badge-status-error{background-color:#f5222d}.ant-badge-status-warning{background-color:#faad14}.ant-badge-status-text{color:rgba(0,0,0,.65);font-size:14px;margin-left:8px}.ant-badge-zoom-appear,.ant-badge-zoom-enter{-webkit-animation:antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);animation:antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);-webkit-animation-fill-mode:both;animation-fill-mode:both}.ant-badge-zoom-leave{-webkit-animation:antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);animation:antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);-webkit-animation-fill-mode:both;animation-fill-mode:both}.ant-badge-not-a-wrapper{vertical-align:middle}.ant-badge-not-a-wrapper .ant-scroll-number{top:auto;display:block;position:relative}.ant-badge-not-a-wrapper .ant-badge-count{-webkit-transform:none;transform:none}@-webkit-keyframes antStatusProcessing{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.5}to{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}@keyframes antStatusProcessing{0%{-webkit-transform:scale(.8);transform:scale(.8);opacity:.5}to{-webkit-transform:scale(2.4);transform:scale(2.4);opacity:0}}.ant-scroll-number{overflow:hidden}.ant-scroll-number-only{display:inline-block;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);height:20px}.ant-scroll-number-only>p{height:20px;margin:0}@-webkit-keyframes antZoomBadgeIn{0%{opacity:0;-webkit-transform:scale(0) translateX(50%);transform:scale(0) translateX(50%)}to{-webkit-transform:scale(1) translateX(50%);transform:scale(1) translateX(50%)}}@keyframes antZoomBadgeIn{0%{opacity:0;-webkit-transform:scale(0) translateX(50%);transform:scale(0) translateX(50%)}to{-webkit-transform:scale(1) translateX(50%);transform:scale(1) translateX(50%)}}@-webkit-keyframes antZoomBadgeOut{0%{-webkit-transform:scale(1) translateX(50%);transform:scale(1) translateX(50%)}to{opacity:0;-webkit-transform:scale(0) translateX(50%);transform:scale(0) translateX(50%)}}@keyframes antZoomBadgeOut{0%{-webkit-transform:scale(1) translateX(50%);transform:scale(1) translateX(50%)}to{opacity:0;-webkit-transform:scale(0) translateX(50%);transform:scale(0) translateX(50%)}}.ant-skeleton{display:table;width:100%}.ant-skeleton-header{display:table-cell;vertical-align:top;padding-right:16px}.ant-skeleton-header .ant-skeleton-avatar{display:inline-block;vertical-align:top;background:#f2f2f2;width:32px;height:32px;line-height:32px}.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle{border-radius:50%}.ant-skeleton-header .ant-skeleton-avatar-lg{width:40px;height:40px;line-height:40px}.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle{border-radius:50%}.ant-skeleton-header .ant-skeleton-avatar-sm{width:24px;height:24px;line-height:24px}.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle{border-radius:50%}.ant-skeleton-content{display:table-cell;vertical-align:top;width:100%}.ant-skeleton-content .ant-skeleton-title{margin-top:16px;height:16px;width:100%;background:#f2f2f2}.ant-skeleton-content .ant-skeleton-title+.ant-skeleton-paragraph{margin-top:24px}.ant-skeleton-content .ant-skeleton-paragraph>li{height:16px;background:#f2f2f2;list-style:none;width:100%}.ant-skeleton-content .ant-skeleton-paragraph>li:last-child:not(:first-child):not(:nth-child(2)){width:61%}.ant-skeleton-content .ant-skeleton-paragraph>li+li{margin-top:16px}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title{margin-top:12px}.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title+.ant-skeleton-paragraph{margin-top:28px}.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar,.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph>li,.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);-webkit-animation:ant-skeleton-loading 1.4s ease infinite;animation:ant-skeleton-loading 1.4s ease infinite;background-size:400% 100%}@-webkit-keyframes ant-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}@keyframes ant-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.ant-breadcrumb{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;color:rgba(0,0,0,.45);font-size:14px}.ant-breadcrumb .anticon{font-size:14px}.ant-breadcrumb a{color:rgba(0,0,0,.45);-webkit-transition:color .3s;transition:color .3s}.ant-breadcrumb a:hover{color:#59cf9a}.ant-breadcrumb>span:last-child{color:rgba(0,0,0,.65)}.ant-breadcrumb>span:last-child .ant-breadcrumb-separator{display:none}.ant-breadcrumb-separator{margin:0 8px;color:rgba(0,0,0,.45)}.ant-breadcrumb-link>.anticon+span{margin-left:4px}#nprogress{pointer-events:none}#nprogress .bar{background:#29d;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;-webkit-box-shadow:0 0 10px #29d,0 0 5px #29d;box-shadow:0 0 10px #29d,0 0 5px #29d;opacity:1;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;-webkit-box-sizing:border-box;box-sizing:border-box;border:2px solid transparent;border-top-color:#29d;border-left-color:#29d;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.ant-menu{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;outline:none;margin-bottom:0;padding-left:0;list-style:none;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);color:rgba(0,0,0,.65);background:#fff;line-height:0;-webkit-transition:background .3s,width .2s;transition:background .3s,width .2s;zoom:1}.ant-menu:after,.ant-menu:before{content:"";display:table}.ant-menu:after{clear:both}.ant-menu ol,.ant-menu ul{list-style:none;margin:0;padding:0}.ant-menu-hidden{display:none}.ant-menu-item-group-title{color:rgba(0,0,0,.45);font-size:14px;line-height:1.5;padding:8px 16px;-webkit-transition:all .3s;transition:all .3s}.ant-menu-submenu,.ant-menu-submenu-inline{-webkit-transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);transition:border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-item:active,.ant-menu-submenu-title:active{background:#f0fff6}.ant-menu-submenu .ant-menu-sub{cursor:auto;-webkit-transition:background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item>a{display:block;color:rgba(0,0,0,.65)}.ant-menu-item>a:hover{color:#34c388}.ant-menu-item>a:focus{text-decoration:none}.ant-menu-item>a:before{position:absolute;background-color:transparent;top:0;left:0;bottom:0;right:0;content:""}.ant-menu-item-divider{height:1px;overflow:hidden;background-color:#e8e8e8;line-height:0}.ant-menu-item-active,.ant-menu-item:hover,.ant-menu-submenu-active,.ant-menu-submenu-title:hover,.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open{color:#34c388}.ant-menu-horizontal .ant-menu-item,.ant-menu-horizontal .ant-menu-submenu{margin-top:-1px}.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu .ant-menu-submenu-title:hover{background-color:transparent}.ant-menu-item-selected,.ant-menu-item-selected>a,.ant-menu-item-selected>a:hover{color:#34c388}.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected{background-color:#f0fff6}.ant-menu-inline,.ant-menu-vertical,.ant-menu-vertical-left{border-right:1px solid #e8e8e8}.ant-menu-vertical-right{border-left:1px solid #e8e8e8}.ant-menu-vertical-left.ant-menu-sub,.ant-menu-vertical-right.ant-menu-sub,.ant-menu-vertical.ant-menu-sub{border-right:0;padding:0;-webkit-transform-origin:0 0;transform-origin:0 0}.ant-menu-vertical-left.ant-menu-sub .ant-menu-item,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item,.ant-menu-vertical.ant-menu-sub .ant-menu-item{border-right:0;margin-left:0;left:0}.ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after,.ant-menu-vertical.ant-menu-sub .ant-menu-item:after{border-right:0}.ant-menu-vertical-left.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-left.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-item,.ant-menu-vertical-right.ant-menu-sub>.ant-menu-submenu,.ant-menu-vertical.ant-menu-sub>.ant-menu-item,.ant-menu-vertical.ant-menu-sub>.ant-menu-submenu{-webkit-transform-origin:0 0;transform-origin:0 0}.ant-menu-horizontal.ant-menu-sub,.ant-menu-vertical-left.ant-menu-sub,.ant-menu-vertical-right.ant-menu-sub,.ant-menu-vertical.ant-menu-sub{min-width:160px}.ant-menu-item,.ant-menu-submenu-title{cursor:pointer;margin:0;padding:0 20px;position:relative;display:block;white-space:nowrap;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .anticon,.ant-menu-submenu-title .anticon{min-width:14px;margin-right:10px;font-size:14px;-webkit-transition:font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1);transition:font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-item .anticon+span,.ant-menu-submenu-title .anticon+span{-webkit-transition:opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1);transition:opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1);opacity:1}.ant-menu>.ant-menu-item-divider{height:1px;margin:1px 0;overflow:hidden;padding:0;line-height:0;background-color:#e8e8e8}.ant-menu-submenu-popup{position:absolute;border-radius:4px;z-index:1050;background:#fff}.ant-menu-submenu-popup .submenu-title-wrapper{padding-right:20px}.ant-menu-submenu-popup:before{position:absolute;top:-7px;left:0;right:0;bottom:0;content:" ";opacity:.0001}.ant-menu-submenu>.ant-menu{background-color:#fff;border-radius:4px}.ant-menu-submenu>.ant-menu-submenu-title:after{-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow{-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);position:absolute;top:50%;right:16px;width:10px}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{content:"";position:absolute;vertical-align:baseline;background:#fff;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.65)),to(rgba(0,0,0,.65)));background-image:linear-gradient(90deg,rgba(0,0,0,.65),rgba(0,0,0,.65));width:6px;height:1.5px;border-radius:2px;-webkit-transition:background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);transition:background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{-webkit-transform:rotate(45deg) translateY(-2px);transform:rotate(45deg) translateY(-2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{-webkit-transform:rotate(-45deg) translateY(2px);transform:rotate(-45deg) translateY(2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-inline>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-left>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical-right>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after,.ant-menu-submenu-vertical>.ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before{background:-webkit-gradient(linear,left top,right top,from(#34c388),to(#34c388));background:linear-gradient(90deg,#34c388,#34c388)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{-webkit-transform:rotate(-45deg) translateX(2px);transform:rotate(-45deg) translateX(2px)}.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{-webkit-transform:rotate(45deg) translateX(-2px);transform:rotate(45deg) translateX(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow{-webkit-transform:translateY(-2px);transform:translateY(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:after{-webkit-transform:rotate(-45deg) translateX(-2px);transform:rotate(-45deg) translateX(-2px)}.ant-menu-submenu-open.ant-menu-submenu-inline>.ant-menu-submenu-title .ant-menu-submenu-arrow:before{-webkit-transform:rotate(45deg) translateX(2px);transform:rotate(45deg) translateX(2px)}.ant-menu-vertical-left .ant-menu-submenu-selected,.ant-menu-vertical-left .ant-menu-submenu-selected>a,.ant-menu-vertical-right .ant-menu-submenu-selected,.ant-menu-vertical-right .ant-menu-submenu-selected>a,.ant-menu-vertical .ant-menu-submenu-selected,.ant-menu-vertical .ant-menu-submenu-selected>a{color:#34c388}.ant-menu-horizontal{border:0;border-bottom:1px solid #e8e8e8;-webkit-box-shadow:none;box-shadow:none;line-height:46px;white-space:nowrap}.ant-menu-horizontal>.ant-menu-item,.ant-menu-horizontal>.ant-menu-submenu{position:relative;top:1px;display:inline-block;vertical-align:bottom;border-bottom:2px solid transparent}.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover{border-bottom:2px solid #34c388;color:#34c388}.ant-menu-horizontal>.ant-menu-item>a{display:block;color:rgba(0,0,0,.65)}.ant-menu-horizontal>.ant-menu-item>a:hover{color:#34c388}.ant-menu-horizontal>.ant-menu-item>a:before{bottom:-2px}.ant-menu-horizontal>.ant-menu-item-selected>a{color:#34c388}.ant-menu-horizontal:after{content:" ";display:block;height:0;clear:both}.ant-menu-inline .ant-menu-item,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-right .ant-menu-item,.ant-menu-vertical .ant-menu-item{position:relative}.ant-menu-inline .ant-menu-item:after,.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-vertical .ant-menu-item:after{content:"";position:absolute;right:0;top:0;bottom:0;border-right:3px solid #34c388;-webkit-transform:scaleY(.0001);transform:scaleY(.0001);opacity:0;-webkit-transition:opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);transition:opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);transition:transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);transition:transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1)}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title,.ant-menu-vertical-left .ant-menu-item,.ant-menu-vertical-left .ant-menu-submenu-title,.ant-menu-vertical-right .ant-menu-item,.ant-menu-vertical-right .ant-menu-submenu-title,.ant-menu-vertical .ant-menu-item,.ant-menu-vertical .ant-menu-submenu-title{padding:0 16px;font-size:14px;line-height:40px;height:40px;margin-top:4px;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis}.ant-menu-inline .ant-menu-submenu,.ant-menu-vertical-left .ant-menu-submenu,.ant-menu-vertical-right .ant-menu-submenu,.ant-menu-vertical .ant-menu-submenu{padding-bottom:.01px}.ant-menu-inline .ant-menu-item:not(:last-child),.ant-menu-vertical-left .ant-menu-item:not(:last-child),.ant-menu-vertical-right .ant-menu-item:not(:last-child),.ant-menu-vertical .ant-menu-item:not(:last-child){margin-bottom:8px}.ant-menu-inline>.ant-menu-item,.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-left>.ant-menu-item,.ant-menu-vertical-left>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical-right>.ant-menu-item,.ant-menu-vertical-right>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-vertical>.ant-menu-item,.ant-menu-vertical>.ant-menu-submenu>.ant-menu-submenu-title{line-height:40px;height:40px}.ant-menu-inline{width:100%}.ant-menu-inline .ant-menu-item-selected:after,.ant-menu-inline .ant-menu-selected:after{-webkit-transition:opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);transition:opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);transition:transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1);transition:transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1)}.ant-menu-inline .ant-menu-item,.ant-menu-inline .ant-menu-submenu-title{width:calc(100% + 1px)}.ant-menu-inline .ant-menu-submenu-title{padding-right:34px}.ant-menu-inline-collapsed{width:80px}.ant-menu-inline-collapsed>.ant-menu-item,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title{left:0;text-overflow:clip;padding:0 32px!important}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-item .ant-menu-submenu-arrow,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .ant-menu-submenu-arrow{display:none}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon,.ant-menu-inline-collapsed>.ant-menu-item .anticon,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon{font-size:16px;line-height:40px;margin:0}.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-item .anticon+span,.ant-menu-inline-collapsed>.ant-menu-item-group>.ant-menu-item-group-list>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span,.ant-menu-inline-collapsed>.ant-menu-item .anticon+span,.ant-menu-inline-collapsed>.ant-menu-submenu>.ant-menu-submenu-title .anticon+span{max-width:0;display:inline-block;opacity:0}.ant-menu-inline-collapsed-tooltip{pointer-events:none}.ant-menu-inline-collapsed-tooltip .anticon{display:none}.ant-menu-inline-collapsed-tooltip a{color:hsla(0,0%,100%,.85)}.ant-menu-inline-collapsed .ant-menu-item-group-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:4px;padding-right:4px}.ant-menu-item-group-list{margin:0;padding:0}.ant-menu-item-group-list .ant-menu-item,.ant-menu-item-group-list .ant-menu-submenu-title{padding:0 16px 0 28px}.ant-menu-root.ant-menu-inline,.ant-menu-root.ant-menu-vertical,.ant-menu-root.ant-menu-vertical-left,.ant-menu-root.ant-menu-vertical-right,.ant-menu-sub.ant-menu-inline{-webkit-box-shadow:none;box-shadow:none}.ant-menu-sub.ant-menu-inline{padding:0;border:0;border-radius:0}.ant-menu-sub.ant-menu-inline>.ant-menu-item,.ant-menu-sub.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{line-height:40px;height:40px;list-style-type:disc;list-style-position:inside}.ant-menu-sub.ant-menu-inline .ant-menu-item-group-title{padding-left:32px}.ant-menu-item-disabled,.ant-menu-submenu-disabled{color:rgba(0,0,0,.25)!important;cursor:not-allowed;background:none;border-color:transparent!important}.ant-menu-item-disabled>a,.ant-menu-submenu-disabled>a{color:rgba(0,0,0,.25)!important;pointer-events:none}.ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-submenu-disabled>.ant-menu-submenu-title{color:rgba(0,0,0,.25)!important;cursor:not-allowed}.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:rgba(0,0,0,.25)!important}.ant-menu-dark,.ant-menu-dark .ant-menu-sub{color:hsla(0,0%,100%,.65);background:#001529}.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow{opacity:.45;-webkit-transition:all .3s;transition:all .3s}.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark.ant-menu-submenu-popup{background:transparent}.ant-menu-dark .ant-menu-inline.ant-menu-sub{background:#000c17;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.45) inset;box-shadow:inset 0 2px 8px rgba(0,0,0,.45)}.ant-menu-dark.ant-menu-horizontal{border-bottom:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item,.ant-menu-dark.ant-menu-horizontal>.ant-menu-submenu{border-color:#001529;border-bottom:0;top:0;margin-top:0}.ant-menu-dark.ant-menu-horizontal>.ant-menu-item>a:before{bottom:0}.ant-menu-dark .ant-menu-item,.ant-menu-dark .ant-menu-item-group-title,.ant-menu-dark .ant-menu-item>a{color:hsla(0,0%,100%,.65)}.ant-menu-dark.ant-menu-inline,.ant-menu-dark.ant-menu-vertical,.ant-menu-dark.ant-menu-vertical-left,.ant-menu-dark.ant-menu-vertical-right{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item,.ant-menu-dark.ant-menu-vertical .ant-menu-item{border-right:0;margin-left:0;left:0}.ant-menu-dark.ant-menu-inline .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after,.ant-menu-dark.ant-menu-vertical .ant-menu-item:after{border-right:0}.ant-menu-dark.ant-menu-inline .ant-menu-item,.ant-menu-dark.ant-menu-inline .ant-menu-submenu-title{width:100%}.ant-menu-dark .ant-menu-item-active,.ant-menu-dark .ant-menu-item:hover,.ant-menu-dark .ant-menu-submenu-active,.ant-menu-dark .ant-menu-submenu-open,.ant-menu-dark .ant-menu-submenu-selected,.ant-menu-dark .ant-menu-submenu-title:hover{background-color:transparent;color:#fff}.ant-menu-dark .ant-menu-item-active>a,.ant-menu-dark .ant-menu-item:hover>a,.ant-menu-dark .ant-menu-submenu-active>a,.ant-menu-dark .ant-menu-submenu-open>a,.ant-menu-dark .ant-menu-submenu-selected>a,.ant-menu-dark .ant-menu-submenu-title:hover>a{color:#fff}.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow{opacity:1}.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-active>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-open>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-selected>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title:hover>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-title:hover>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:#fff}.ant-menu-dark .ant-menu-item-selected{border-right:0;color:#fff}.ant-menu-dark .ant-menu-item-selected:after{border-right:0}.ant-menu-dark .ant-menu-item-selected>a,.ant-menu-dark .ant-menu-item-selected>a:hover{color:#fff}.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,.ant-menu.ant-menu-dark .ant-menu-item-selected{background-color:#34c388}.ant-menu-dark .ant-menu-item-disabled,.ant-menu-dark .ant-menu-item-disabled>a,.ant-menu-dark .ant-menu-submenu-disabled,.ant-menu-dark .ant-menu-submenu-disabled>a{opacity:.8;color:hsla(0,0%,100%,.35)!important}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title{color:hsla(0,0%,100%,.35)!important}.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-item-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:after,.ant-menu-dark .ant-menu-submenu-disabled>.ant-menu-submenu-title>.ant-menu-submenu-arrow:before{background:hsla(0,0%,100%,.35)!important}.ant-tooltip{font-family:Chinese Quote,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:14px;font-variant:tabular-nums;line-height:1.5;color:rgba(0,0,0,.65);-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;list-style:none;position:absolute;z-index:1060;display:block;visibility:visible;max-width:250px}.ant-tooltip-hidden{display:none}.ant-tooltip-placement-top,.ant-tooltip-placement-topLeft,.ant-tooltip-placement-topRight{padding-bottom:8px}.ant-tooltip-placement-right,.ant-tooltip-placement-rightBottom,.ant-tooltip-placement-rightTop{padding-left:8px}.ant-tooltip-placement-bottom,.ant-tooltip-placement-bottomLeft,.ant-tooltip-placement-bottomRight{padding-top:8px}.ant-tooltip-placement-left,.ant-tooltip-placement-leftBottom,.ant-tooltip-placement-leftTop{padding-right:8px}.ant-tooltip-inner{padding:6px 8px;color:#fff;text-align:left;text-decoration:none;background-color:rgba(0,0,0,.75);border-radius:4px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.15);box-shadow:0 2px 8px rgba(0,0,0,.15);min-height:32px;word-wrap:break-word}.ant-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.ant-tooltip-placement-top .ant-tooltip-arrow,.ant-tooltip-placement-topLeft .ant-tooltip-arrow,.ant-tooltip-placement-topRight .ant-tooltip-arrow{bottom:3px;border-width:5px 5px 0;border-top-color:rgba(0,0,0,.75)}.ant-tooltip-placement-top .ant-tooltip-arrow{left:50%;margin-left:-5px}.ant-tooltip-placement-topLeft .ant-tooltip-arrow{left:16px}.ant-tooltip-placement-topRight .ant-tooltip-arrow{right:16px}.ant-tooltip-placement-right .ant-tooltip-arrow,.ant-tooltip-placement-rightBottom .ant-tooltip-arrow,.ant-tooltip-placement-rightTop .ant-tooltip-arrow{left:3px;border-width:5px 5px 5px 0;border-right-color:rgba(0,0,0,.75)}.ant-tooltip-placement-right .ant-tooltip-arrow{top:50%;margin-top:-5px}.ant-tooltip-placement-rightTop .ant-tooltip-arrow{top:8px}.ant-tooltip-placement-rightBottom .ant-tooltip-arrow{bottom:8px}.ant-tooltip-placement-left .ant-tooltip-arrow,.ant-tooltip-placement-leftBottom .ant-tooltip-arrow,.ant-tooltip-placement-leftTop .ant-tooltip-arrow{right:3px;border-width:5px 0 5px 5px;border-left-color:rgba(0,0,0,.75)}.ant-tooltip-placement-left .ant-tooltip-arrow{top:50%;margin-top:-5px}.ant-tooltip-placement-leftTop .ant-tooltip-arrow{top:8px}.ant-tooltip-placement-leftBottom .ant-tooltip-arrow{bottom:8px}.ant-tooltip-placement-bottom .ant-tooltip-arrow,.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow,.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{top:3px;border-width:0 5px 5px;border-bottom-color:rgba(0,0,0,.75)}.ant-tooltip-placement-bottom .ant-tooltip-arrow{left:50%;margin-left:-5px}.ant-tooltip-placement-bottomLeft .ant-tooltip-arrow{left:16px}.ant-tooltip-placement-bottomRight .ant-tooltip-arrow{right:16px} \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/editor.worker.js b/apps/emqx_enterprise_dashboard/priv/www/static/editor.worker.js new file mode 100644 index 000000000..84af613fc --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/editor.worker.js @@ -0,0 +1,6 @@ +(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s="e500")})({"30db":function(e,t,n){"use strict";(function(e,r){n.d(t,"c",function(){return p}),n.d(t,"b",function(){return g}),n.d(t,"a",function(){return v});var i="en",o=!1,s=!1,u=!1,a=!1,l=void 0,h=void 0,f="undefined"!==typeof e&&"undefined"!==typeof e.versions&&"undefined"!==typeof e.versions.electron&&"renderer"===e.type;if("object"!==typeof navigator||f){if("object"===typeof e){o="win32"===e.platform,s="darwin"===e.platform,u="linux"===e.platform,l=i,i;var c=Object({VUE_APP_BUILD_ENV:"emqx",NODE_ENV:"production",BASE_URL:"/"})["VSCODE_NLS_CONFIG"];if(c)try{var d=JSON.parse(c),m=d.availableLanguages["*"];l=d.locale,m||i,d._translationsConfigFile}catch(y){}!0}}else h=navigator.userAgent,o=h.indexOf("Windows")>=0,s=h.indexOf("Macintosh")>=0,u=h.indexOf("Linux")>=0,a=!0,l=navigator.language,l;var p=o,g=a,_="object"===typeof self?self:"object"===typeof r?r:{},v=_}).call(this,n("f28c"),n("c8ba"))},5110:function(e,t,n){(function(e){ +/*! +Copyright (c) 2014 Taylor Hakes +Copyright (c) 2014 Forbes Lindesay + */ +(function(e,t){t()})(0,function(){"use strict";function t(e){var t=this.constructor;return this.then(function(n){return t.resolve(e()).then(function(){return n})},function(n){return t.resolve(e()).then(function(){return t.reject(n)})})}var n=setTimeout;function r(){}function i(e,t){return function(){e.apply(t,arguments)}}function o(e){if(!(this instanceof o))throw new TypeError("Promises must be constructed via new");if("function"!==typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],f(e,this)}function s(e,t){while(3===e._state)e=e._value;0!==e._state?(e._handled=!0,o._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var r;try{r=n(e._value)}catch(i){return void a(t.promise,i)}u(t.promise,r)}else(1===e._state?u:a)(t.promise,e._value)})):e._deferreds.push(t)}function u(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"===typeof t||"function"===typeof t)){var n=t.then;if(t instanceof o)return e._state=3,e._value=t,void l(e);if("function"===typeof n)return void f(i(n,t),e)}e._state=1,e._value=t,l(e)}catch(r){a(e,r)}}function a(e,t){e._state=2,e._value=t,l(e)}function l(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;tr?e[a]=o[u++]:u>i?e[a]=o[s++]:t(o[u],o[s])<0?e[a]=o[u++]:e[a]=o[s++]}function M(e,t,n,r,i){if(!(r<=n)){var o=n+(r-n)/2|0;M(e,t,n,o,i),M(e,t,o+1,r,i),t(e[o],e[o+1])<=0||P(e,t,n,o,r,i)}}var T=function(){function e(e,t,n,r){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=r}return e.prototype.getOriginalEnd=function(){return this.originalStart+this.originalLength},e.prototype.getModifiedEnd=function(){return this.modifiedStart+this.modifiedLength},e}();function O(e){return{getLength:function(){return e.length},getElementAtIndex:function(t){return e.charCodeAt(t)}}}function x(e,t,n){return new F(O(e),O(t)).ComputeDiff(n)}var I,R=function(){function e(){}return e.Assert=function(e,t){if(!e)throw new Error(t)},e}(),k=function(){function e(){}return e.Copy=function(e,t,n,r,i){for(var o=0;o0||this.m_modifiedCount>0)&&this.m_changes.push(new T(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=Number.MAX_VALUE,this.m_modifiedStart=Number.MAX_VALUE},e.prototype.AddOriginalElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++},e.prototype.AddModifiedElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++},e.prototype.getChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes},e.prototype.getReverseChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes},e}(),F=function(){function e(e,t,n){void 0===n&&(n=null),this.OriginalSequence=e,this.ModifiedSequence=t,this.ContinueProcessingPredicate=n,this.m_forwardHistory=[],this.m_reverseHistory=[]}return e.prototype.ElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.OriginalElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.OriginalSequence.getElementAtIndex(t)},e.prototype.ModifiedElementsAreEqual=function(e,t){return this.ModifiedSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.ComputeDiff=function(e){return this._ComputeDiff(0,this.OriginalSequence.getLength()-1,0,this.ModifiedSequence.getLength()-1,e)},e.prototype._ComputeDiff=function(e,t,n,r,i){var o=[!1],s=this.ComputeDiffRecursive(e,t,n,r,o);return i?this.PrettifyChanges(s):s},e.prototype.ComputeDiffRecursive=function(e,t,n,r,i){i[0]=!1;while(e<=t&&n<=r&&this.ElementsAreEqual(e,n))e++,n++;while(t>=e&&r>=n&&this.ElementsAreEqual(t,r))t--,r--;if(e>t||n>r){var o=void 0;return n<=r?(R.Assert(e===t+1,"originalStart should only be one more than originalEnd"),o=[new T(e,0,n,r-n+1)]):e<=t?(R.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),o=[new T(e,t-e+1,n,0)]):(R.Assert(e===t+1,"originalStart should only be one more than originalEnd"),R.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),o=[]),o}var s=[0],u=[0],a=this.ComputeRecursionPoint(e,t,n,r,s,u,i),l=s[0],h=u[0];if(null!==a)return a;if(!i[0]){var f=this.ComputeDiffRecursive(e,l,n,h,i),c=[];return c=i[0]?[new T(l+1,t-(l+1)+1,h+1,r-(h+1)+1)]:this.ComputeDiffRecursive(l+1,t,h+1,r,i),this.ConcatenateChanges(f,c)}return[new T(e,t-e+1,n,r-n+1)]},e.prototype.WALKTRACE=function(e,t,n,r,i,o,s,u,a,l,h,f,c,d,m,p,g,_){var v,y=null,b=null,C=new D,L=t,N=n,E=c[0]-p[0]-r,S=Number.MIN_VALUE,w=this.m_forwardHistory.length-1;do{v=E+e,v===L||v=0&&(a=this.m_forwardHistory[w],e=a[0],L=1,N=a.length-1)}while(--w>=-1);if(y=C.getReverseChanges(),_[0]){var A=c[0]+1,P=p[0]+1;if(null!==y&&y.length>0){var M=y[y.length-1];A=Math.max(A,M.getOriginalEnd()),P=Math.max(P,M.getModifiedEnd())}b=[new T(A,f-A+1,P,m-P+1)]}else{C=new D,L=o,N=s,E=c[0]-p[0]-u,S=Number.MAX_VALUE,w=g?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{v=E+i,v===L||v=l[v+1]?(h=l[v+1]-1,d=h-E-u,h>S&&C.MarkNextChange(),S=h+1,C.AddOriginalElement(h+1,d+1),E=v+1-i):(h=l[v-1],d=h-E-u,h>S&&C.MarkNextChange(),S=h,C.AddModifiedElement(h+1,d+1),E=v-1-i),w>=0&&(l=this.m_reverseHistory[w],i=l[0],L=1,N=l.length-1)}while(--w>=-1);b=C.getChanges()}return this.ConcatenateChanges(y,b)},e.prototype.ComputeRecursionPoint=function(e,t,n,r,i,o,s){var u,a=0,l=0,h=0,f=0,c=0,d=0;e--,n--,i[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];var m,p,g=t-e+(r-n),_=g+1,v=new Array(_),y=new Array(_),b=r-n,C=t-e,L=e-n,N=t-r,E=C-b,S=E%2===0;for(v[b]=e,y[C]=t,s[0]=!1,u=1;u<=g/2+1;u++){var w=0,A=0;for(h=this.ClipDiagonalBound(b-u,u,b,_),f=this.ClipDiagonalBound(b+u,u,b,_),m=h;m<=f;m+=2){a=m===h||mw+A&&(w=a,A=l),!S&&Math.abs(m-C)<=u-1&&a>=y[m])return i[0]=a,o[0]=l,p<=y[m]&&U>0&&u<=U+1?this.WALKTRACE(b,h,f,L,C,c,d,N,v,y,a,t,i,l,r,o,S,s):null}var P=(w-e+(A-n)-u)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(w,this.OriginalSequence,P))return s[0]=!0,i[0]=w,o[0]=A,P>0&&U>0&&u<=U+1?this.WALKTRACE(b,h,f,L,C,c,d,N,v,y,a,t,i,l,r,o,S,s):(e++,n++,[new T(e,t-e+1,n,r-n+1)]);for(c=this.ClipDiagonalBound(C-u,u,C,_),d=this.ClipDiagonalBound(C+u,u,C,_),m=c;m<=d;m+=2){a=m===c||m=y[m+1]?y[m+1]-1:y[m-1],l=a-(m-C)-N,p=a;while(a>e&&l>n&&this.ElementsAreEqual(a,l))a--,l--;if(y[m]=a,S&&Math.abs(m-b)<=u&&a<=v[m])return i[0]=a,o[0]=l,p>=v[m]&&U>0&&u<=U+1?this.WALKTRACE(b,h,f,L,C,c,d,N,v,y,a,t,i,l,r,o,S,s):null}if(u<=U){var M=new Array(f-h+2);M[0]=b-h+1,k.Copy(v,h,M,1,f-h+1),this.m_forwardHistory.push(M),M=new Array(d-c+2),M[0]=C-c+1,k.Copy(y,c,M,1,d-c+1),this.m_reverseHistory.push(M)}}return this.WALKTRACE(b,h,f,L,C,c,d,N,v,y,a,t,i,l,r,o,S,s)},e.prototype.PrettifyChanges=function(e){for(var t=0;t0,s=n.modifiedLength>0;while(n.originalStart+n.originalLength=0;t--){n=e[t],r=0,i=0;if(t>0){var a=e[t-1];a.originalLength>0&&(r=a.originalStart+a.originalLength),a.modifiedLength>0&&(i=a.modifiedStart+a.modifiedLength)}o=n.originalLength>0,s=n.modifiedLength>0;for(var l=0,h=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength),f=1;;f++){var c=n.originalStart-f,d=n.modifiedStart-f;if(ch&&(h=m,l=f)}n.originalStart-=l,n.modifiedStart-=l}return e},e.prototype._OriginalIsBoundary=function(e){if(e<=0||e>=this.OriginalSequence.getLength()-1)return!0;var t=this.OriginalSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._OriginalRegionIsBoundary=function(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1},e.prototype._ModifiedIsBoundary=function(e){if(e<=0||e>=this.ModifiedSequence.getLength()-1)return!0;var t=this.ModifiedSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._ModifiedRegionIsBoundary=function(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1},e.prototype._boundaryScore=function(e,t,n,r){var i=this._OriginalRegionIsBoundary(e,t)?1:0,o=this._ModifiedRegionIsBoundary(n,r)?1:0;return i+o},e.prototype.ConcatenateChanges=function(e,t){var n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){var r=new Array(e.length+t.length-1);return k.Copy(e,0,r,0,e.length-1),r[e.length-1]=n[0],k.Copy(t,1,r,e.length,t.length-1),r}r=new Array(e.length+t.length);return k.Copy(e,0,r,0,e.length),k.Copy(t,0,r,e.length,t.length),r},e.prototype.ChangesOverlap=function(e,t,n){if(R.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),R.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){var r=e.originalStart,i=e.originalLength,o=e.modifiedStart,s=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(i=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(s=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new T(r,i,o,s),!0}return n[0]=null,!1},e.prototype.ClipDiagonalBound=function(e,t,n,r){if(e>=0&&e=n?q:{done:!1,value:e[t++]}}}}function o(t){return t?Array.isArray(t)?e.fromArray(t):t:e.empty()}function s(e,t){return{next:function(){var n=e.next();return n.done?q:{done:!1,value:t(n.value)}}}}function u(e,t){return{next:function(){while(1){var n=e.next();if(n.done)return q;if(t(n.value))return{done:!1,value:n.value}}}}}function a(e,t){for(var n=e.next();!n.done;n=e.next())t(n.value)}function l(e,t){void 0===t&&(t=Number.POSITIVE_INFINITY);var n=[];if(0===t)return n;for(var r=0,i=e.next();!i.done;i=e.next())if(n.push(i.value),++r>=t)break;return n}function h(){for(var e=[],t=0;t=e.length)return q;var t=e[n],r=t.next();return r.done?(n++,this.next()):r}}}e.empty=n,e.single=r,e.fromArray=i,e.from=o,e.map=s,e.filter=u,e.forEach=a,e.collect=l,e.concat=h})(I||(I={}));var V,B=function(){function e(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=e.length),void 0===r&&(r=t-1),this.items=e,this.start=t,this.end=n,this.index=r}return e.prototype.first=function(){return this.index=this.start,this.current()},e.prototype.next=function(){return this.index=Math.min(this.index+1,this.end),this.current()},e.prototype.current=function(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]},e}(),j=(function(e){function t(t,n,r,i){return void 0===n&&(n=0),void 0===r&&(r=t.length),void 0===i&&(i=n-1),e.call(this,t,n,r,i)||this}K(t,e),t.prototype.current=function(){return e.prototype.current.call(this)},t.prototype.previous=function(){return this.index=Math.max(this.index-1,this.start-1),this.current()},t.prototype.first=function(){return this.index=this.start,this.current()},t.prototype.last=function(){return this.index=this.end-1,this.current()},t.prototype.parent=function(){return null}}(B),function(){function e(e,t){this.iterator=e,this.fn=t}e.prototype.next=function(){return this.fn(this.iterator.next())}}(),function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),Y=/^\w[\w\d+.-]*$/,W=/^\//,H=/^\/\//,G=!0;function Q(e,t){if(!e.scheme){if(t||G)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');console.warn('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}')}if(e.scheme&&!Y.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!W.test(e.path))throw new 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(H.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function z(e,t){return t||G?e||J:(e||(console.trace("BAD uri lacks scheme, falling back to file-scheme."),e="file"),e)}function X(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==$&&(t=$+t):t=$;break}return t}var J="",$="/",Z=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,ee=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"===typeof e?(this.scheme=e.scheme||J,this.authority=e.authority||J,this.path=e.path||J,this.query=e.query||J,this.fragment=e.fragment||J):(this.scheme=z(e,o),this.authority=t||J,this.path=X(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Q(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&("string"===typeof t.authority&&"string"===typeof t.fragment&&"string"===typeof t.path&&"string"===typeof t.query&&"string"===typeof t.scheme&&"function"===typeof t.fsPath&&"function"===typeof t.with&&"function"===typeof t.toString)},Object.defineProperty(e.prototype,"fsPath",{get:function(){return se(this)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=J),void 0===n?n=this.authority:null===n&&(n=J),void 0===r?r=this.path:null===r&&(r=J),void 0===i?i=this.query:null===i&&(i=J),void 0===o?o=this.fragment:null===o&&(o=J),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new ne(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=Z.exec(e);return n?new ne(n[2]||J,decodeURIComponent(n[4]||J),decodeURIComponent(n[5]||J),decodeURIComponent(n[7]||J),decodeURIComponent(n[9]||J),t):new ne(J,J,J,J,J)},e.file=function(e){var t=J;if(y["c"]&&(e=e.replace(/\\/g,$)),e[0]===$&&e[1]===$){var n=e.indexOf($,2);-1===n?(t=e.substring(2),e=$):(t=e.substring(2,n),e=e.substring(n)||$)}return new ne("file",t,e,J,J)},e.from=function(e){return new ne(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),ue(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new ne(t);return n._formatted=t.external,n._fsPath=t._sep===te?t.fsPath:null,n}return t},e}(),te=y["c"]?1:void 0,ne=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return j(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=se(this)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?ue(this,!0):(this._formatted||(this._formatted=ue(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=te),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},t}(ee),re=(V={},V[58]="%3A",V[47]="%2F",V[63]="%3F",V[35]="%23",V[91]="%5B",V[93]="%5D",V[64]="%40",V[33]="%21",V[36]="%24",V[38]="%26",V[39]="%27",V[40]="%28",V[41]="%29",V[42]="%2A",V[43]="%2B",V[44]="%2C",V[59]="%3B",V[61]="%3D",V[32]="%20",V);function ie(e,t){for(var n=void 0,r=-1,i=0;i=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var s=re[o];void 0!==s?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=s):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function oe(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?e.path[1].toLowerCase()+e.path.substr(2):e.path,y["c"]&&(t=t.replace(/\//g,"\\")),t}function ue(e,t){var n=t?oe:ie,r="",i=e.scheme,o=e.authority,s=e.path,u=e.query,a=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=$,r+=$),o){var l=o.indexOf("@");if(-1!==l){var h=o.substr(0,l);o=o.substr(l+1),l=h.indexOf(":"),-1===l?r+=n(h,!1):(r+=n(h.substr(0,l),!1),r+=":",r+=n(h.substr(l+1),!1)),r+="@"}o=o.toLowerCase(),l=o.indexOf(":"),-1===l?r+=n(o,!1):(r+=n(o.substr(0,l),!1),r+=o.substr(l))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){var f=s.charCodeAt(1);f>=65&&f<=90&&(s="/"+String.fromCharCode(f+32)+":"+s.substr(3))}else if(s.length>=2&&58===s.charCodeAt(1)){f=s.charCodeAt(0);f>=65&&f<=90&&(s=String.fromCharCode(f+32)+":"+s.substr(2))}r+=n(s,!0)}return u&&(r+="?",r+=n(u,!1)),a&&(r+="#",r+=t?a:ie(a,!1)),r}var ae=function(){function e(e,t){this.lineNumber=e,this.column=t}return e.prototype.with=function(t,n){return void 0===t&&(t=this.lineNumber),void 0===n&&(n=this.column),t===this.lineNumber&&n===this.column?this:new e(t,n)},e.prototype.delta=function(e,t){return void 0===e&&(e=0),void 0===t&&(t=0),this.with(this.lineNumber+e,this.column+t)},e.prototype.equals=function(t){return e.equals(this,t)},e.equals=function(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column},e.prototype.isBefore=function(t){return e.isBefore(this,t)},e.isBefore=function(e,t){return e.lineNumbern||e===n&&t>r?(this.startLineNumber=n,this.startColumn=r,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=r)}return e.prototype.isEmpty=function(){return e.isEmpty(this)},e.isEmpty=function(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn},e.prototype.containsPosition=function(t){return e.containsPosition(this,t)},e.containsPosition=function(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.columne.endColumn))},e.prototype.containsRange=function(t){return e.containsRange(this,t)},e.containsRange=function(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn)))},e.prototype.strictContainsRange=function(t){return e.strictContainsRange(this,t)},e.strictContainsRange=function(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)))},e.prototype.plusRange=function(t){return e.plusRange(this,t)},e.plusRange=function(t,n){var r,i,o,s;return n.startLineNumbert.endLineNumber?(o=n.endLineNumber,s=n.endColumn):n.endLineNumber===t.endLineNumber?(o=n.endLineNumber,s=Math.max(n.endColumn,t.endColumn)):(o=t.endLineNumber,s=t.endColumn),new e(r,i,o,s)},e.prototype.intersectRanges=function(t){return e.intersectRanges(this,t)},e.intersectRanges=function(t,n){var r=t.startLineNumber,i=t.startColumn,o=t.endLineNumber,s=t.endColumn,u=n.startLineNumber,a=n.startColumn,l=n.endLineNumber,h=n.endColumn;return rl?(o=l,s=h):o===l&&(s=Math.min(s,h)),r>o?null:r===o&&i>s?null:new e(r,i,o,s)},e.prototype.equalsRange=function(t){return e.equalsRange(this,t)},e.equalsRange=function(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn},e.prototype.getEndPosition=function(){return new ae(this.endLineNumber,this.endColumn)},e.prototype.getStartPosition=function(){return new ae(this.startLineNumber,this.startColumn)},e.prototype.toString=function(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"},e.prototype.setEndPosition=function(t,n){return new e(this.startLineNumber,this.startColumn,t,n)},e.prototype.setStartPosition=function(t,n){return new e(t,n,this.endLineNumber,this.endColumn)},e.prototype.collapseToStart=function(){return e.collapseToStart(this)},e.collapseToStart=function(t){return new e(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)},e.fromPositions=function(t,n){return void 0===n&&(n=t),new e(t.lineNumber,t.column,n.lineNumber,n.column)},e.lift=function(t){return t?new e(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null},e.isIRange=function(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn},e.areIntersectingOrTouching=function(e,t){return!(e.endLineNumbere.startLineNumber},e}();function he(e){for(var t=0,n=e.length;t=0;n--){var r=e.charCodeAt(n);if(32!==r&&9!==r)return n}return-1}String.fromCharCode(65279);var ce=5e3,de=3;function me(e,t,n,r){var i=new F(e,t,n);return i.ComputeDiff(r)}var pe=function(){function e(t){for(var n=[],r=[],i=0,o=t.length;i1&&m>1){var p=f.charCodeAt(d-2),g=c.charCodeAt(m-2);if(p!==g)break;d--,m--}(d>1||m>1)&&this._pushTrimWhitespaceCharChange(i,o+1,1,d,s+1,1,m);var _=pe._getLastNonBlankColumn(f,1),v=pe._getLastNonBlankColumn(c,1),y=f.length+1,b=c.length+1;while(_255?255:0|e}function Ne(e){return e<0?0:e>4294967295?4294967295:0|e}var Ee=function(){function e(e,t){this.index=e,this.remainder=t}return e}(),Se=function(){function e(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}return e.prototype.getCount=function(){return this.values.length},e.prototype.insertValues=function(e,t){e=Ne(e);var n=this.values,r=this.prefixSum,i=t.length;return 0!==i&&(this.values=new Uint32Array(n.length+i),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+i),this.values.set(t,e),e-1=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.changeValue=function(e,t){return e=Ne(e),t=Ne(t),this.values[e]!==t&&(this.values[e]=t,e-1=n.length)return!1;var i=n.length-e;return t>=i&&(t=i),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.getTotalValue=function(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)},e.prototype.getAccumulatedValue=function(e){return e<0?0:(e=Ne(e),this._getAccumulatedValue(e))},e.prototype._getAccumulatedValue=function(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];var t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(var n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]},e.prototype.getIndexOf=function(e){e=Math.floor(e),this.getTotalValue();var t=0,n=this.values.length-1,r=0,i=0,o=0;while(t<=n)if(r=t+(n-t)/2|0,i=this.prefixSum[r],o=i-this.values[r],e=i))break;t=r+1}return new Ee(r,e-o)},e}(),we=(function(){function e(e){this._cacheAccumulatedValueStart=0,this._cache=null,this._actual=new Se(e),this._bustCache()}e.prototype._bustCache=function(){this._cacheAccumulatedValueStart=0,this._cache=null},e.prototype.insertValues=function(e,t){this._actual.insertValues(e,t)&&this._bustCache()},e.prototype.changeValue=function(e,t){this._actual.changeValue(e,t)&&this._bustCache()},e.prototype.removeValues=function(e,t){this._actual.removeValues(e,t)&&this._bustCache()},e.prototype.getTotalValue=function(){return this._actual.getTotalValue()},e.prototype.getAccumulatedValue=function(e){return this._actual.getAccumulatedValue(e)},e.prototype.getIndexOf=function(e){if(e=Math.floor(e),null!==this._cache){var t=e-this._cacheAccumulatedValueStart;if(t>=0&&t/?";function Pe(e){void 0===e&&(e="");for(var t="(-?\\d*\\.\\d\\w*)|([^",n=0,r=Ae;n=0||(t+="\\"+i)}return t+="\\s]+)",new RegExp(t,"g")}var Me=Pe();function Te(e){var t=Me;if(e&&e instanceof RegExp)if(e.global)t=e;else{var n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}function Oe(e,t,n,r){var i,o=e-1-r,s=n.lastIndexOf(" ",o-1)+1;t.lastIndex=s;while(i=t.exec(n)){var u=i.index||0;if(u<=o&&t.lastIndex>=o)return{word:i[0],startColumn:r+1+u,endColumn:r+1+t.lastIndex}}return null}function xe(e,t,n,r){var i,o=e-1-r;t.lastIndex=0;while(i=t.exec(n)){var s=i.index||0;if(s>o)return null;if(t.lastIndex>=o)return{word:i[0],startColumn:r+1+s,endColumn:r+1+t.lastIndex}}return null}function Ie(e,t,n,r){t.lastIndex=0;var i=t.exec(n);if(!i)return null;var o=i[0].indexOf(" ")>=0?xe(e,t,n,r):Oe(e,t,n,r);return t.lastIndex=0,o}var Re=function(){function e(t){var n=Le(t);this._defaultValue=n,this._asciiMap=e._createAsciiMap(n),this._map=new Map}return e._createAsciiMap=function(e){for(var t=new Uint8Array(256),n=0;n<256;n++)t[n]=e;return t},e.prototype.set=function(e,t){var n=Le(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)},e.prototype.get=function(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue},e}(),ke=(function(){function e(){this._actual=new Re(0)}e.prototype.add=function(e){this._actual.set(e,1)},e.prototype.has=function(e){return 1===this._actual.get(e)}}(),function(){function e(e){for(var t=0,n=0,r=0,i=e.length;rt&&(t=u),s>n&&(n=s),a>n&&(n=a)}t++,n++;var l=new Ce(n,t,0);for(r=0,i=e.length;r=this._maxCharCode?0:this._states.get(e,t)},e}()),Ue=null;function De(){return null===Ue&&(Ue=new ke([[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]])),Ue}var Fe=null;function Ke(){if(null===Fe){Fe=new Re(0);for(var e=" \t<>'\"、。。、,.:;?!@#$%&*‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…",t=0;tr);if(r>0){var a=t.charCodeAt(r-1),l=t.charCodeAt(o);(40===a&&41===l||91===a&&93===l||123===a&&125===l)&&o--}return{range:{startLineNumber:n,startColumn:r+1,endLineNumber:n,endColumn:o+2},url:t.substring(r,o+1)}},e.computeLinks=function(t,n){void 0===n&&(n=De());for(var r=Ke(),i=[],o=1,s=t.getLineCount();o<=s;o++){var u=t.getLineContent(o),a=u.length,l=0,h=0,f=0,c=1,d=!1,m=!1,p=!1;while(l=0?(r+=n?1:-1,r<0?r=e.length-1:r%=e.length,e[r]):null},e.INSTANCE=new e,e}();n("5110");function je(e){var t,n=this,r=!1;return function(){return r?t:(r=!0,t=e.apply(n,arguments),t)}}var Ye,We=function(){function e(t){this.element=t,this.next=e.Undefined,this.prev=e.Undefined}return e.Undefined=new e(void 0),e}(),He=function(){function e(){this._first=We.Undefined,this._last=We.Undefined,this._size=0}return Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),e.prototype.isEmpty=function(){return this._first===We.Undefined},e.prototype.clear=function(){this._first=We.Undefined,this._last=We.Undefined,this._size=0},e.prototype.unshift=function(e){return this._insert(e,!1)},e.prototype.push=function(e){return this._insert(e,!0)},e.prototype._insert=function(e,t){var n=this,r=new We(e);if(this._first===We.Undefined)this._first=r,this._last=r;else if(t){var i=this._last;this._last=r,r.prev=i,i.next=r}else{var o=this._first;this._first=r,r.next=o,o.prev=r}this._size+=1;var s=!1;return function(){s||(s=!0,n._remove(r))}},e.prototype.shift=function(){if(this._first!==We.Undefined){var e=this._first.element;return this._remove(this._first),e}},e.prototype.pop=function(){if(this._last!==We.Undefined){var e=this._last.element;return this._remove(this._last),e}},e.prototype._remove=function(e){if(e.prev!==We.Undefined&&e.next!==We.Undefined){var t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===We.Undefined&&e.next===We.Undefined?(this._first=We.Undefined,this._last=We.Undefined):e.next===We.Undefined?(this._last=this._last.prev,this._last.next=We.Undefined):e.prev===We.Undefined&&(this._first=this._first.next,this._first.prev=We.Undefined);this._size-=1},e.prototype.iterator=function(){var e,t=this._first;return{next:function(){return t===We.Undefined?q:(e?e.value=t.element:e={done:!1,value:t.element},t=t.next,e)}}},e.prototype.toArray=function(){for(var e=[],t=this._first;t!==We.Undefined;t=t.next)e.push(t.element);return e},e}(),Ge=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();(function(e){function t(e){return function(t,n,r){void 0===n&&(n=null);var i,o=!1;return i=e(function(e){if(!o)return i?i.dispose():o=!0,t.call(n,e)},null,r),o&&i.dispose(),i}}function n(e,t){return a(function(n,r,i){return void 0===r&&(r=null),e(function(e){return n.call(r,t(e))},null,i)})}function r(e,t){return a(function(n,r,i){return void 0===r&&(r=null),e(function(e){t(e),n.call(r,e)},null,i)})}function i(e,t){return a(function(n,r,i){return void 0===r&&(r=null),e(function(e){return t(e)&&n.call(r,e)},null,i)})}function o(e){return e}function s(){for(var e=[],t=0;t1)&&l.fire(e),a=0},n)})},onLastListenerRemove:function(){o.dispose()}});return l.event}function h(e){var r=(new Date).getTime();return n(t(e),function(e){return(new Date).getTime()-r})}function f(e){var t,n=!0;return i(e,function(e){var r=n||e!==t;return n=!1,t=e,r})}function c(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=[]);var r=n.slice(),i=e(function(e){r?r.push(e):s.fire(e)}),o=function(){r&&r.forEach(function(e){return s.fire(e)}),r=null},s=new Je({onFirstListenerAdd:function(){i||(i=e(function(e){return s.fire(e)}))},onFirstListenerDidAdd:function(){r&&(t?setTimeout(o):o())},onLastListenerRemove:function(){i&&i.dispose(),i=null}});return s.event}e.None=function(){return v.None},e.once=t,e.map=n,e.forEach=r,e.filter=i,e.signal=o,e.any=s,e.reduce=u,e.snapshot=a,e.debounce=l,e.stopwatch=h,e.latch=f,e.buffer=c;var d=function(){function e(e){this.event=e}return e.prototype.map=function(t){return new e(n(this.event,t))},e.prototype.forEach=function(t){return new e(r(this.event,t))},e.prototype.filter=function(t){return new e(i(this.event,t))},e.prototype.reduce=function(t,n){return new e(u(this.event,t,n))},e.prototype.latch=function(){return new e(f(this.event))},e.prototype.on=function(e,t,n){return this.event(e,t,n)},e.prototype.once=function(e,n,r){return t(this.event)(e,n,r)},e}();function m(e){return new d(e)}function g(e,t,n){void 0===n&&(n=function(e){return e});var r=function(){for(var e=[],t=0;t0?new Xe(this._options&&this._options.leakWarningThreshold):void 0}return Object.defineProperty(e.prototype,"event",{get:function(){var t=this;return this._event||(this._event=function(n,r,i){t._listeners||(t._listeners=new He);var o=t._listeners.isEmpty();o&&t._options&&t._options.onFirstListenerAdd&&t._options.onFirstListenerAdd(t);var s,u,a=t._listeners.push(r?[n,r]:n);return o&&t._options&&t._options.onFirstListenerDidAdd&&t._options.onFirstListenerDidAdd(t),t._options&&t._options.onListenerDidAdd&&t._options.onListenerDidAdd(t,n,r),t._leakageMon&&(s=t._leakageMon.check(t._listeners.size)),u={dispose:function(){if(s&&s(),u.dispose=e._noop,!t._disposed&&(a(),t._options&&t._options.onLastListenerRemove)){var n=t._listeners&&!t._listeners.isEmpty();n||t._options.onLastListenerRemove(t)}}},i instanceof _?i.add(u):Array.isArray(i)&&i.push(u),u}),this._event},enumerable:!0,configurable:!0}),e.prototype.fire=function(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new He);for(var t=this._listeners.iterator(),n=t.next();!n.done;n=t.next())this._deliveryQueue.push([n.value,e]);while(this._deliveryQueue.size>0){var r=this._deliveryQueue.shift(),i=r[0],s=r[1];try{"function"===typeof i?i.call(void 0,s):i[0].call(i[1],s)}catch(n){o(n)}}}},e.prototype.dispose=function(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0},e._noop=function(){},e}(),$e=(function(e){function t(t){var n=e.call(this,t)||this;return n._isPaused=0,n._eventQueue=new He,n._mergeFn=t&&t.merge,n}Ge(t,e),t.prototype.pause=function(){this._isPaused++},t.prototype.resume=function(){if(0!==this._isPaused&&0===--this._isPaused)if(this._mergeFn){var t=this._eventQueue.toArray();this._eventQueue.clear(),e.prototype.fire.call(this,this._mergeFn(t))}else while(!this._isPaused&&0!==this._eventQueue.size)e.prototype.fire.call(this,this._eventQueue.shift())},t.prototype.fire=function(t){this._listeners&&(0!==this._isPaused?this._eventQueue.push(t):e.prototype.fire.call(this,t))}}(Je),function(){function e(){var e=this;this.hasListeners=!1,this.events=[],this.emitter=new Je({onFirstListenerAdd:function(){return e.onFirstListenerAdd()},onLastListenerRemove:function(){return e.onLastListenerRemove()}})}Object.defineProperty(e.prototype,"event",{get:function(){return this.emitter.event},enumerable:!0,configurable:!0}),e.prototype.add=function(e){var t=this,n={event:e,listener:null};this.events.push(n),this.hasListeners&&this.hook(n);var r=function(){t.hasListeners&&t.unhook(n);var e=t.events.indexOf(n);t.events.splice(e,1)};return g(je(r))},e.prototype.onFirstListenerAdd=function(){var e=this;this.hasListeners=!0,this.events.forEach(function(t){return e.hook(t)})},e.prototype.onLastListenerRemove=function(){var e=this;this.hasListeners=!1,this.events.forEach(function(t){return e.unhook(t)})},e.prototype.hook=function(e){var t=this;e.listener=e.event(function(e){return t.emitter.fire(e)})},e.prototype.unhook=function(e){e.listener&&e.listener.dispose(),e.listener=null},e.prototype.dispose=function(){this.emitter.dispose()}}(),function(){function e(){this.buffers=[]}e.prototype.wrapEvent=function(e){var t=this;return function(n,r,i){return e(function(e){var i=t.buffers[t.buffers.length-1];i?i.push(function(){return n.call(r,e)}):n.call(r,e)},void 0,i)}},e.prototype.bufferEvents=function(e){var t=[];this.buffers.push(t);var n=e();return this.buffers.pop(),t.forEach(function(e){return e()}),n}}(),function(){function e(){var e=this;this.listening=!1,this.inputEvent=Ye.None,this.inputEventListener=v.None,this.emitter=new Je({onFirstListenerDidAdd:function(){e.listening=!0,e.inputEventListener=e.inputEvent(e.emitter.fire,e.emitter)},onLastListenerRemove:function(){e.listening=!1,e.inputEventListener.dispose()}}),this.event=this.emitter.event}Object.defineProperty(e.prototype,"input",{set:function(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this.inputEventListener.dispose(),this.emitter.dispose()}}(),Object.freeze(function(e,t){var n=setTimeout(e.bind(t),0);return{dispose:function(){clearTimeout(n)}}}));(function(e){function t(t){return t===e.None||t===e.Cancelled||(t instanceof et||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Ye.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:$e})})(Qe||(Qe={}));var Ze,et=function(){function e(){this._isCancelled=!1,this._emitter=null}return e.prototype.cancel=function(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))},Object.defineProperty(e.prototype,"isCancellationRequested",{get:function(){return this._isCancelled},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCancellationRequested",{get:function(){return this._isCancelled?$e:(this._emitter||(this._emitter=new Je),this._emitter.event)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._emitter&&(this._emitter.dispose(),this._emitter=null)},e}(),tt=function(){function e(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token||(this._token=new et),this._token},enumerable:!0,configurable:!0}),e.prototype.cancel=function(){this._token?this._token instanceof et&&this._token.cancel():this._token=Qe.Cancelled},e.prototype.dispose=function(){this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof et&&this._token.dispose():this._token=Qe.None},e}(),nt=function(){function e(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}return e.prototype.define=function(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e},e.prototype.keyCodeToStr=function(e){return this._keyCodeToStr[e]},e.prototype.strToKeyCode=function(e){return this._strToKeyCode[e.toLowerCase()]||0},e}(),rt=new nt,it=new nt,ot=new nt;function st(e,t){var n=(65535&t)<<16>>>0;return(e|n)>>>0}(function(){function e(e,t,n,r){void 0===n&&(n=t),void 0===r&&(r=n),rt.define(e,t),it.define(e,n),ot.define(e,r)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")})(),function(e){function t(e){return rt.keyCodeToStr(e)}function n(e){return rt.strToKeyCode(e)}function r(e){return it.keyCodeToStr(e)}function i(e){return ot.keyCodeToStr(e)}function o(e){return it.strToKeyCode(e)||ot.strToKeyCode(e)}e.toString=t,e.fromString=n,e.toUserSettingsUS=r,e.toUserSettingsGeneral=i,e.fromUserSettings=o}(Ze||(Ze={}));(function(){function e(e,t,n,r,i){this.ctrlKey=e,this.shiftKey=t,this.altKey=n,this.metaKey=r,this.keyCode=i}e.prototype.equals=function(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode},e.prototype.isModifierKey=function(){return 0===this.keyCode||5===this.keyCode||57===this.keyCode||6===this.keyCode||4===this.keyCode},e.prototype.toChord=function(){return new Dt([this])},e.prototype.isDuplicateModifierCase=function(){return this.ctrlKey&&5===this.keyCode||this.shiftKey&&4===this.keyCode||this.altKey&&6===this.keyCode||this.metaKey&&57===this.keyCode}})();var ut,at,lt,ht,ft,ct,dt,mt,pt,gt,_t,vt,yt,bt,Ct,Lt,Nt,Et,St,wt,At,Pt,Mt,Tt,Ot,xt,It,Rt,kt,Ut,Dt=function(){function e(e){if(0===e.length)throw l("parts");this.parts=e}return e.prototype.equals=function(e){if(null===e)return!1;if(this.parts.length!==e.parts.length)return!1;for(var t=0;t "+this.positionLineNumber+","+this.positionColumn+"]"},t.prototype.equalsSelection=function(e){return t.selectionsEqual(this,e)},t.selectionsEqual=function(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn},t.prototype.getDirection=function(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1},t.prototype.setEndPosition=function(e,n){return 0===this.getDirection()?new t(this.startLineNumber,this.startColumn,e,n):new t(e,n,this.startLineNumber,this.startColumn)},t.prototype.getPosition=function(){return new ae(this.positionLineNumber,this.positionColumn)},t.prototype.setStartPosition=function(e,n){return 0===this.getDirection()?new t(e,n,this.endLineNumber,this.endColumn):new t(this.endLineNumber,this.endColumn,e,n)},t.fromPositions=function(e,n){return void 0===n&&(n=e),new t(e.lineNumber,e.column,n.lineNumber,n.column)},t.liftSelection=function(e){return new t(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)},t.selectionsArrEqual=function(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(var n=0,r=e.length;n=r._lines.length?q:(n=r._lines[i],s=r._wordenize(n,e),o=0,i+=1,u())};return{next:u}},t.prototype.getLineWords=function(e,t){for(var n=this._lines[e-1],r=this._wordenize(n,t),i=[],o=0,s=r;othis._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,r=!0;else{var i=this._lines[t-1].length+1;n<1?(n=1,r=!0):n>i&&(n=i,r=!0)}return r?{lineNumber:t,column:n}:e},t}(we),Wt=function(){function e(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}return e.prototype.dispose=function(){this._models=Object.create(null)},e.prototype._getModel=function(e){return this._models[e]},e.prototype._getModels=function(){var e=this,t=[];return Object.keys(this._models).forEach(function(n){return t.push(e._models[n])}),t},e.prototype.acceptNewModel=function(e){this._models[e.url]=new Yt(ee.parse(e.url),e.lines,e.EOL,e.versionId)},e.prototype.acceptModelChanged=function(e,t){if(this._models[e]){var n=this._models[e];n.onEvents(t)}},e.prototype.acceptRemovedModel=function(e){this._models[e]&&delete this._models[e]},e.prototype.computeDiff=function(e,t,n){var r=this._getModel(e),i=this._getModel(t);if(!r||!i)return Promise.resolve(null);var o=r.getLinesContent(),s=i.getLinesContent(),u=new be(o,s,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0}),a=u.computeDiff(),l=!(a.length>0)&&this._modelsAreIdentical(r,i);return Promise.resolve({identical:l,changes:a})},e.prototype._modelsAreIdentical=function(e,t){var n=e.getLineCount(),r=t.getLineCount();if(n!==r)return!1;for(var i=1;i<=n;i++){var o=e.getLineContent(i),s=t.getLineContent(i);if(o!==s)return!1}return!0},e.prototype.computeMoreMinimalEdits=function(t,n){var r=this._getModel(t);if(!r)return Promise.resolve(n);var i=[],o=void 0;n=A(n,function(e,t){if(e.range&&t.range)return le.compareRangesUsingStarts(e.range,t.range);var n=e.range?0:1,r=t.range?0:1;return n-r});for(var s=0,u=n;se._diffLimit)i.push({range:l,text:h});else for(var d=x(c,h,!1),m=r.offsetAt(le.lift(l).getStartPosition()),p=0,g=d;p1)for(var n=1;n*wJ^hwJul$EDC9$6pSIygC#pV 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
    %#5t+7yTm^Z{)9pPFdh-)p? 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.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}")}catch(a){console&&console.log(a)}}!function(a){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(a,0);else{var h=function(){document.removeEventListener("DOMContentLoaded",h,!1),a()};document.addEventListener("DOMContentLoaded",h,!1)}else document.attachEvent&&(c=a,i=v.document,o=!1,(z=function(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(z,50)}l()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,l())});function l(){o||(o=!0,c())}var c,i,o,z}(function(){var a,h;(a=document.createElement("div")).innerHTML=l,l=null,(h=a.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",function(a,h){h.firstChild?function(a,h){h.parentNode.insertBefore(a,h)}(a,h.firstChild):h.appendChild(a)}(h,document.body))})}(window); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.svg b/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.svg new file mode 100644 index 000000000..bb47f2b06 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.svg @@ -0,0 +1,941 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.ttf b/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0f9ae5816a99b005af9cf4f54e54aab58e6de5e1 GIT binary patch literal 73776 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 nEc8Poi$TE$mUOaeu&4z9DLMnqBq2 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 C=iS}_ literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.woff2 b/apps/emqx_enterprise_dashboard/priv/www/static/iconfont/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8e29ad4663aceb60a690b42bdf51d4ac742096fd GIT binary patch literal 32800 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 D2D?WH literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/auth_sasl.9724eec3.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/auth_sasl.9724eec3.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd403b9f9ce073e89e697dbd772dec5abc79775 GIT binary patch literal 13129 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/delayed_publish.b0b58640.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/delayed_publish.b0b58640.png new file mode 100644 index 0000000000000000000000000000000000000000..9e305fb6a58646d05f9b8be1b3f2b8ef837f2497 GIT binary patch literal 10050 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 {9uHTJtF!*rukgvl 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 \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_jwt.402c6a38.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_jwt.402c6a38.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c7ebee6bf7d7b9b8b253752540933f81e15d80 GIT binary patch literal 6461 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_mnesia.cee137cc.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_auth_mnesia.cee137cc.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4e6cde73725544db6f5bc7bd6b60adbe385075 GIT binary patch literal 9926 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󃫥J0p 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_cassa.82e8858e.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_cassa.82e8858e.png new file mode 100644 index 0000000000000000000000000000000000000000..eb81bc053a0c0c040446ddbc2f0b171c82400ebe GIT binary patch literal 11637 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_mysql.a3615766.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_mysql.a3615766.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf9c054c742ee75a4fe996a263ed6a72e69c81c GIT binary patch literal 5557 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󃫥J0p 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_timescale.5f750079.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_backend_timescale.5f750079.png new file mode 100644 index 0000000000000000000000000000000000000000..7d657a5e9e32ad37b1e268d4cee1b8931caebca7 GIT binary patch literal 48755 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≪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 DE7DXf literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_banner.20c13f08.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_banner.20c13f08.png new file mode 100644 index 0000000000000000000000000000000000000000..6354d6ea9845b355634842892e49f072de46f44f GIT binary patch literal 145216 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

    )3o8t^9-n8$@u=T}aD;whhN5>8D4t9cGX~do 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sasl.11e2cd6a.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sasl.11e2cd6a.png new file mode 100644 index 0000000000000000000000000000000000000000..c7274dd1691b310f5e1c90f0f4bd75a47fa21c3e GIT binary patch literal 5894 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sn.2d9d907b.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_sn.2d9d907b.png new file mode 100644 index 0000000000000000000000000000000000000000..a48b1f60d7c95a0160925eb493d45942e7348511 GIT binary patch literal 5118 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_stomp.14cf6644.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_stomp.14cf6644.png new file mode 100644 index 0000000000000000000000000000000000000000..27f9669faeb554f602a61c2aa6490d9e04d7c659 GIT binary patch literal 4360 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_web_hook.a0bd461e.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_web_hook.a0bd461e.png new file mode 100644 index 0000000000000000000000000000000000000000..77d81d1de2ece2d008cf8d3bc44865f6ac971b85 GIT binary patch literal 6127 zcmb`L^-~mp6335j3F%JhmJWfVk)w|;kw%)MLpr2Oy6cdVj#ELpj&6|dIvT0x`xoB4 zA9i4r>b&k&wYFdRn)hR1e!1zId zn1J9Jew((3g2NHYI0fX5G(#>bBO=lc5&1dW=kMWda|ZJlX>ZTE47^=l%@S+uv<>ne z7PB4q+u0^vqgT;J2C4p9R*@ch!&0a$gRG3)orKC9f*YeDpaxLEB~J-KO=3W(*kIAe zAOVSz00PX?LtIGA{1(c{L^6@RtXV7}%;>l(GRT8Tcg&5bNxdNqSjqqjqJobZfE02* zW+W_n;AZM5kqi+^Br`qIN9BMNLuBO-zy6mZzvc;AqXhP7)QWOpQB~^!;v{CHg*|Fn zx~}|rU0tvt5ymf%jB*RSUmmOV%j$)(hzVZr6s1fAbMv-~JZmuQ(1@wqR|i*InYUT5Th(FikPA?5*-XSs(I{T$d;5}!(`p&a^qG1GTW0(^0_Kex<6@}D)gkIXGH3VT;fB%#Ir1W;gjzv*wDdGdVG&EiB&9o$~j4fG! z`d&t$qy84ENVUeK#yfe2v7==@Gw!rJ&!q8yJG32|cO`GI5{1kUG}1f0h%?wZvuN?? z-ySDVx*WAcnESBx#Rq4|Iop3T&M;p8izoil=OBJLgzZcy^jqRrVm4QnY>-~hY^i|% zRhRW=1)bcdZO%B(lj*|0&6OKnG5x>7pfDKQVM8sk$UWM{#r5QmMf0kEy*wE0sf(~4 zRxKYuX4{%)9-cLH)3Y zu`Ah?&nhUGI#=@)b91_=UIEH0<>zygI8OzZb0C{VBdU{!2D!yCHbBC}@ zTi&Agxy#Oe8Y@IZ zLL3PaWX=otq7Qj84yr zj{WYA2{!=`Z2>&9e2HS&!r5`+rZ243sL>ORFn)?tSm?FrykmaqK~VTAL`OUdhb!IKmZlW&I!S zt15;OkL|kEj!a|{5U0KG81jhbRgteH#)d43CG8vP3C=ALDYL|OS~K@ zIo?}KUe5WQwm#G$S6nN;1K&>1Dmw~B?ot$QCdjAllv7hTsk=5dRgh@vUuNn(0*)0ZC1+xqnMR7EEkOIg&m@xj3~1cMKq5hGL)1sIt|qY`^vt+Ibuk@P_=zIrqrOKYnRS z60$l0J4-(%hmM>J+a;oEmVs*8@ycyJep;%@=NOO;i<(@$^=wdWyxpYKVT@(7IuUk; z_zZxp{p!9dA+y!nG-+PO&Am5=B}e=6K)1)_T5+l0rbWJ@k}WDq;65Sa`KmD?f5`?} z*mA0fx>@0Re7=!v5lB82wA@Uyx878t2~a-6{_F$?6J=JjT?*XStA~+L%{OqoCezP3 zJzL6y>QyT$%*XB@&Q=e@p_&bGxw+KXn3#o%@!wYEXFed!GO}MhLx@+38A$TgtlXlW zO{TWi_~FvuNI6rL60ekXjY93cZ?AJ)8ylL82BJQHd(NFCCN|gMTz>P(Z;<#{*kZpx0+025u_okoCoWGVtpZ5m%DzsM;n?;lf40#}$c= z=V^zLSg_;${e6??5My)Yd31an!b36L_k5j2icIEsr{~O0y{M)y2MtG%N9UrDBCW-y zv3@eyuoGl@*n6cY`8VEh3!iocK5{eYnTSqc#O1sq*dZY^`8qGReI5Q)R(x#b77?_4 zbTq=MNum1aZveKn4bet8*q;dl`T>q*79|9f^Q)T4O!)%OeNulp*}M zIf{1whCV{+9EKbGxZ&U9x_hAO4A31Uj$%LK*=u3VU2C9OGz(p;aQVa9*4J=P@Y+G6 z!X2eBt$hTOep8DJX9%aSm?`{ZtfApC@Wf!s%KmIfmj{rBID*KvkEL8 z>j*uCx7Z|ng31<}1QAh6Y>I}}a?U{;5J0GLZ~vd*lIx@3 zBB@Sqim5{mU?zQ~=&t0~2l6s>JWBTG3FB6~9N;;~^?v`|I>pj=U#63#_Eb=TbX65+ z&v307%qKRnPQ&Y{!F<(^n3`)1`tj;M{=73@h!){ffAz$RQy1!NE^l6Iz%mTJ;PZUy z{&0!OI?j7j4h=k=t{KTkwjD2>h|a{ILhhOiB#5ijJ2Kw?jNzwwNy^^*=S*iH403%0jIz%c7cpl@b=Yu2HwdCoZvGlokspq%b0{Rzmp}eD(x~=;vUFn`avKBLQ1pnGw~JQ>il?~ zN=LO;Gl-fH;`7(BuJdDNjWx_~j|IChQ92+o$n3IYO_2TdWaa{CP6Ex@1a~#5Xuhb% zEzsS~ssJ+lv1sjgGLw^q$6l9LDq3~GUq%0Bbzpi5qIr zusQaS9jN^QxZqq)+=L-{$2#U`)dE~^u-$i`TibC$0X&`;q0d%orJB7AEJMODB(pnGr;~>qFE#+AFi=e!ZMZwpEZ|U_bczP=#V5W#>>K|J zcC@!XtRaJj4)e7rW4?PR4r^Tz&Ll^3wHwY-Q`V4TnHa$Sy!rfrxIV*RcP0N8&1ujz z*fc4I^Vk$L2(~|G07iAni-fmNm$Jvq{D3`s_wNQ?1;zLRzShR{_udzbyqiyd!Qp*H zbR&rwnFMnqvvytq-dAWJP{wikz(V@&C$aGNIQ%nDaYVHMsVCDFAZ=$ep8JP;oiQUf zx%%#Jh>K_~T?1WZ$xbR-6w9a$q;vV7&mhTkE3R@ByQ8_WVVoFR93H~1eR73Geavx- zgQGhnYULKN-B*>m1#LtB(qT_=1D8s{l)_F1)u?L_RuK(xx4DI2*VR zGwiQ1N1T)}|FEkCcnM_I`QtaNetLO^c|Jdi zDLEgw8tNdSM)48;8y47ZDIsvK%w;al!0Ymyp|va3)@vkP{2If>WgaUOQ?<_+mC~N zk$x!$$%l{QEDXQmDMyRoI;#^%mQVWPYJ^6DMk<|AzJ^z$pFc9*M$H&a8FYL1i=j0H9g5s>DSLgBXsFZZtn!7N) z#2D`Uk6zq=A4BzIS$W^15kNH0|LxMq%s%ALWUiOgLu?;7#WaddgsXT!cdr$}EvARn zJN3DHfw&snR@-(QAr|@TgiTOMj%SrOW@4+JarD_8)*~`V!TEGeEgbv1RF*upq*>U7 z6BB%=9_Fy&;HqCnEw9a;6^e23Sg11kt&=CF&*g@<_u~AGzDkc4Yoibd&mfeKI?KDh z7hffj;yHci{rZipp}i=MXg#2xX+KMT`^;tS)hiu+%OcB1pAk){rPJJBeTDC<#biH> zm{MX)eJ9}ywJiy>Qaw8gD+LO1eanUIqq(>Ncz*NaG`S`ZsZ=5=6I{9dkRzj|=_YLZ zA%p5%LHqI>8Gio9L6V91Ux7Mtg$fC674hJVRr_R92~AhIE_GjWZ(riE$7BCjO;NkmUaAHbZB$mc4z!C8pL$t83I4~ z6ycFxqr2L92z4ia<88d9DDv-IfqQvYP#$2T$qS1U37mDSrkqj1PkX??DJCaT)y$)z={b1@HuEf3k1!;Y8 z&rFxMCSfA7?jKKK^n3pO0&JV7!ZYi? zv9h1vErho+*-Nxy-z_$|PY&$G{z2u4ORoDu5<~=Ggvi6ixZ_=>LAoRos0=sY~?l}lbd&UKS1{& zL3{w1l)mN{KX)e$6qioUOJuM$}fTFZ6aEp{zD9m}c1g zZK1`b0Al=P^W^-MfFhbtmRPVA+xlKbOx;Q;Q4_bk_^(->bm|cr+a_?WKc0$MiT^D} zT1Df+T(*(h=2xIA&oX?)bUar~UEjS{6X5YFCN@?ZP`)E?bB~*J;JLet1Xm1ACB9a)Kl(0hXuTm53 zru+ZY7$A6Dy2J)H@Q}gjm^=g)8=WqF49=7ypu*mH8!QJm^$f_%es+h;+*C~9EA2Y( zZtxz~mLg$GSzGA3fwbGBo$2|nD!d$W8kQ?@rYQUtB>cnf&R-7`$tTM6jsW2~6UdwB5nz<2o)du{Z+QZ$oic3%Yo^2kiM&_;<5o^huOfYv1dD z*C+&j^t46uR3bLamcTMjOz`!8pX?x6zv~VBW!-w8$t`c@pYoA>*Pk=E%;Y%@Q3d=l zFBt>kh(68zdfGtjzy_w}tqOIumywV7K zx8j0%^!;q|QDD}2%?oq%PA_6rs`-bJ2v~fY$gmJiVg`jn1FR!F%-wKeQe>^-T$m#;+xdS_aX2E~A$F$7$QXc}Ek z?(H<^D0$A)k6Y(92@w6H>F7302v^M7dF1mBMyQs13yd$UJgP|&(j1NEVy9s*>a=sjbQiuKe3v?`4k#ky+F$3})i3 z3wXic=-LhuaOv%e|GNj^6``M4+hNen%$6`fn~u~Y8jnkIWsW-s)3}7@o(#B0ME578 z9kf!8N%?wr>J7O%|IpgqgG;!Jm8hx@E4iOUBmM5DrKVmCq^qJ|_7pHefJU`Ubt9ICMc})Dkmb#{4DLnSAB#yl38*aV8^4D}%a~&l zXe4@ql!P*m(|dknr9QQ_iI37#4S>N|+1;!wJ2b15GN+8pf(0m2TxkUW@*tKnS;(wJ z)}ihhH0o;G&w_RP{xL1$mWR;F!H^(4KymLMH{Q-&VV*bt$DdO)|G!N6e+Jht_)ikb V8QWKn{r?C)Kt%y0Un^%3`X8>3+hPC! literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/gbt32960_protocol.9ea5fd31.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/gbt32960_protocol.9ea5fd31.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6a41209b6edc2bd80e1438f6e95d0819a10b0a GIT binary patch literal 6665 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 Ydd_sDL5!Jyza4;zf~I`EtYz5$04-AIHvj+t literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/hot_confs.957f5817.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/hot_confs.957f5817.png new file mode 100644 index 0000000000000000000000000000000000000000..098fe316e9e9ad8965d3f9f1aca00a81288f81ff GIT binary patch literal 11527 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/internal_acl.aca28594.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/internal_acl.aca28594.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6620b1d5410f795a01e13818c180f9d5cfdd80 GIT binary patch literal 5432 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 MG|;HLegDb-0P?Z{t^fc4 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/jt808_protocol.28a1a87c.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/jt808_protocol.28a1a87c.png new file mode 100644 index 0000000000000000000000000000000000000000..9329bafcd0c0b6c48fe0703a8d5f6e46233f8810 GIT binary patch literal 5484 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 CJ)edE literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/jwt_authentication.402c6a38.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/jwt_authentication.402c6a38.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c7ebee6bf7d7b9b8b253752540933f81e15d80 GIT binary patch literal 6461 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/kafka_consumer.e4c070e2.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/kafka_consumer.e4c070e2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd34d69c60a40732941344208b12c0f4ba8207fb GIT binary patch literal 10202 zcmeIYRZv__)HXW61O|5qKDY&UcL@+Y5MZz*xCVz{3GNWw3GTcE_uvj8xD4*@F8|K= z*H`EIT%M{kRa0}ZcTca~z1HeSc9^=V0wx+M8VCf!e5)v{2?8NN|9v6IAP|Tkpwb`s zL2%YokOozbk?(;(j0taLrL;W|j(ku&h^Eh1x{WShf-7(U>ZprYo0aS)3kKMSGsP{*f}!?s619L;uz@p*Vn%ZVs9 z_U41z*hp)Q=e(HNcKro$)#E!HChqC_QHA)boUt^cZeS)LENsyKSHtoIR_B!P+r`efmb5oHJv~Lv<|l={o-llu zv-MX)0|PmW4jq|@h=|1|osujXzvvR#4TEV)XLIha$o8`ztdV9t(Z4N@8MmG{G)T+W zK0_VvFPX#P^@;WUc6mMz*MI$&O(APEZi0{u;^Mo?-2vRnp7>9Qc zs%HMy+06cGQQ5ulzB`}jjuDl&%eJg)`$b4ViasqJ8F z{Yf%exV+9P?#Kbmb+gUiKd?QT`L4zNC1Zon&AZ9-LjK<6PQfiD_#N551O+w289c*$ z;0t_iEpZi31=zkqF4|G0jfF7DigO(tNUv(X=)xys_r>kryT zAOVeru`Jfx$L+fX1V=FmHw(RwC|2$4q`q&}w6;b&T5Jj7cevMJneVkdfRJmC<=D37b9?`N8vc4}QHrkbYUmCn4NFZT1nkMv)Ro_jt|G@k1hr41- zRO;?<4PqDk!ed0TqI~ONstk=!n z*C&N;zl$Zj9v`4nEG290;liCyp0s~`PFefXT_y)1rVwGc1)I%zGNpwBORDVw=kjo_ z(1|Gyjs8Lorb|Plzmk$vDwLxry1goEo-tC;ww|qIplIRlU`d>6Tqx^fZ7 zdtx236wMc7B3DFWG#idDT%j#Mt~9Y`|ILfjqe;vzls zd1?%mNxVG96L|}c|EK1>-Ky;Obd_xCqf@R~P#PR9@3gU6kS&DvcVFf|o9?#QaRMVWbAK&(($r8XC%i@z! zLj53)tXXd>r2Hv}%LZ5hy?`2sB1ZZ=AcXgvQoaywYsh$KNr>#xf> z=wB)f%M$h6-5WEkLyH|_v0JD!a5tcSdN}D|X10=`P*M6DQTio4Co+O0;S00O%4-t! z91tN3EJY~+lE-Z}q#l)47pRmxM_P{ACnd@6Z=XE4J$mwY#~h1F*fJU2cYdquhR9NBgtyRG$lymB_xbVdt1 zFzGnE|1X1GW4+~H2W03FiyBH~bx4&ErMjIj%KoE!F!QHCIXQoB>+L<3nj0PaesCUL zgESgqGa>%0AGgnf_PyzoyHfxBbr{xEld^!a_a&;&KO*MZi|YkBIpUIeW%n;oOzJ%I1IY>!ygyxZHj zur@kLez10yr)R4!YR1Kh-6!E5l*pQW&6|_m?qdG~Ri^v=ad0l>?Ps|?%;otu^~I7= z{81exQ@g+S(+D!fI&23!4ds!O#0F5PvAWY9Uk9bQYVl`D@YTOssh(oB_Y}Rac-?$Z*}_&g+(+rVNyTe> z%e0OhY(D&>7rh{3B>9LjS@_OsR&~Bx_@ij+cOja0GeW629hpRI85{)|HmXJ!xaiAU zw$t+6RDO@&mQzcQznpi7)tTag^Uo=)Y8+s_j(OLczZLLqEx%6~uOcpZ zmUvx}sc$e$^z_g!Wc3?=xP4qKd?#^VWBNvze}@BSqr&tf}GKf-hqcB$+=|{1ZRWrpB4s z(eF?Z@xG6@49!*=PP$_oPmQUa4LUB@!8miEgj3txw~z5GJ6X%*d>OtoS<4x8-r%5^ zTn{Nn(q(i#erkE&DDJP_ImL@#ujz!Ny#=?&B@9&UD7_MHr>Bn)5uLsUi;=GsMv>*q zkE1AgQkIq0f7h+G)M)lPDs@Ys55lWML;A8%wg+I5g1HSMMG<$pU3!NCjN((M$15#C zA;)(Z-?GG-HN5oG=AdbA)gOEJQjf)o-%jq@_OGKp@RjNQVWi@~x0mXX*RQvg^D)}X zt`KYRMnH5@W_Y!6ySY(t|FZeLn<>v%L&T}m0xnx1AEnQ0@<)9gDZd?}<`qLGpx?;v z_ES2@a`~}$Xr$l{uO-gr6wMsWN4)>|WfO9ifx7vEv+5%x6Vh=!3sWf=dViS-?+(Et zV6k?4e)JTh0-)2KLx8 z_B59l6xyGU7Ofxl8#wTYgo(bK_+Uf!oXZCX6)G_1iGXS{FbUC^#@4DI_iD~Dp$^dG7qLd^9Qsi1@2q^nCkaESK5WF$UhZTcFWh&$O$R^An@}>cf}8MYl9wP@SQ9OQ`Gpx1!WGAi>wccG+zFa1~J_C{-WG zSyBj&dOJ1&0lz}AsmP{shG7`Ch#d%KM+svfa)*;&l7IWXVYjFeMHqc%nBGwLlLvXQ(6A2R- zKg)L7V!4GW%&S1qt@}w9>iojRQv~`|cr^RAm#s5fL}|_56k!0>s#N&q`Xbr*TJ!Px zC?VyR=d7^xusLUYQ^&J{*NUQo)%poJD%6JTf+L0E?|o;8<A(YWF1XP;5F5QEyrbV|#o95zf$t=j2QDg6lZ zELk0m+d7-g;s)5tD_WjwXwFEe$Ek(*(9Jhm2Rdig3;$bbz=2epw=*0al9f2~umMbeAr`N8WBQZaZ5 z>nrQ0&59pXwYt@NlZEjtH-%jO>l=9%)U#|s_TQW`|%RniryK*Ng<`Ehv3;#O7bi4=Fh_m zC8C${mn&VH#K>kV7oL515!Kds_6pvMN3NLpq2>A~CLN_3bGF?AaUW*mc5j`u_kW2X zii5QS?%^**J1=MN9Xepunr5V;p9O;gKWJf|{w+|x2S4t=H&zt;755%lrp}&B&3!-j z3cZD~tV-;T1TuhRwIfs59gOjhUr^w(jYmaBq{{Y&6E=*jT-Ng5@8;28!W)d0{rI+~ zD;R6vckpA2DFL*s?hOOuYeWPgYGp+6bJ>IRJb6ns@s?Ne)kbx|k#@fyJDo`#O(CLW zT&X9w*wBxc{GJeZIds0(idSrI8&{3J`r$ipND?QIdyjstF~_O87u4`Dv(2ej`kYLz zBAkP(L2fr|{X{PG<7-HSsOPzQoi*-4xRI96`|%-0!4^)uI&?%lId#*gI^#+PcGmsR zYtArHhmQ@86I|^4Zue8nLj#S)4M$BI(ITM+I|OKNWa+!RiW_H869x38y%hi+E20zK z>~wRSUFVcbn?G(bhakQ3j8yD-(Q?R%na)59YUU>~5eeR*7@J)2TqNA=z8&>+V8|5v zI)lYzI{6uZ<_t)-{ijrZwF$SU1qPd4LFhep_RwP)(3T)9X%e3?8vn$KOUC0zU6PIt zt!QhS5xx);(}(N}#dq(hkBfY7PpR(#fT49g`PgVGCRUtDfj-ONNqsB@gq8){k2@`K zo43ellpoztt1Sw~q-B<56;Fyk{md5shdA3$$@?Bw_{R7d7n9<;d4!rPX%u3Dx3CQ! z;2p0rY%@A!j`D9TbRw>hUNK}dAYox3B5sKS*g?!~iAs`625+KA18)xn!~|=A!gDI` zL&LSQ)n<2UGMq9g~?FDZIMW8J0)K*MC$RMP$2Nxn#IwFiiFj8y7YaKc-3XH zmwA}L&eiT6B42nU9x?|lt;~ruizp7VIwHVg@T_p$X^cc#=vb(K{`_|?mux!28GWO^ z7M$2AbV-%>t@U1Z-nCwWIYXT-xQBJM}MDdbXyL0KSYe}2i z?j+0J>1PFM#E%l5leCb5(#TW`lq!>L(}R?_Cf?$ag7YOrZ0r~uBhwA`3Y;BUfYAA3 z1<@88RJEJArc{ZLk<8!TOJF`_W_VA2gS zR_MZ+iM*4-{evHwqmUNv8l?pggUM6oj`s+RSSoGiN1rur-Jrz?bnIVxKa!&<{O;{3 zCu0A|K=TT16PB#_*>+by1lUL6^2EB!#kKCFhwHMO(JnbOgJT|yAz%<4l~#XLO6-5| zbHwW<8)aDlvPKlk=;8v&9!}S#DlnEU;b1lHA>L2Fz|ibsg%g{36ZvKl3e{5-_Rb(Q z_O{jov$o%=%n>!%2mf!x^xpwZ2Su3sp;(eR2x@E>;LQ~UfmRQ)l&(X!s)q%j}oj$CXA2Ev>$}Y5KzJ^5*ghoh{ zrA`z#nl7L@_@CybOA$Lw_fl@l_3(79`PGnt_{|NHee@iL&-zo)yZM7Nv_f0!M`x97 zj_o3Sq~Gq(VnLO#ruA%mJ=kcK;o~OH&C|`V+nJXbQvUF%uo=I1mc^kUh+=Q~>&v}w zGjdT4rerj&${SKRlmq*NZV_Z=@pT> zM%KssPsM$0uVnLXa@&DlasNlDQjY8XR6$(cvSu&EEj22_2*O)L%>vVA@e4I4ttPZA zlass04(;!++ZBPdrbAUs3|`y*{&INMs>F_Zcdp&9s$EJj=8O8RxcHaFH3D;Zhm}1X zzHhW16$G5koTI^nNX|7q^=dBvb!k`fR~oe`S&U^AMn({a*=RbCf2~y3ZggCGk)TRC zfHtl&00}41xmHQlY*qEq`}`4*1t~~AY_YsA(LK?%y?Dx%=M{15nY^B}bJ_hPCG5KY zxxUN`IFkzg77VLjk@7Kfm!eKjMMs1tW!AAdqGNu-TaflJBkML0d9NLie* zMup{5AgY5+nca-rp~>GhG4FVb#{~n&rAm2eK(|Xd+Vw!tr4NvZA`8}Q`#yV{aqtO7^$bb9-ROIkL=)>r@>nX>TKSx*;M z!n5do>jEE%fvOKV28$O9d#(#A??1o(R`;=Bh}YxP5e*fSFZZ}XHF(Crc7G9{ncBBy zrI`k;wRCoEut+Z0F^U~Bz*lm~h9gcc>~L(W-{2PIfJS6UNCD6A>R5^?FV+98Cc^be z;UNB!D99r|wQypz*ge}fLBj7jUHoPN8w#y5d-OZ=y|@xid+B^|xjQ#Az+FwG@ul&| zg~un|b;b`r(s>*&2@Tttn+@zUwwHVV_rQY_3n%$+;(2ef=(6bN(U)&blJ&tAEI2q-T3BD9>?IE`M6hPSo^qP_7Ckl zV?H^!JZE?KJQNjwi7!l=Yq1YBZb8OAba;p#clE1$F|5#c_4;)AVV#!I2p=bQmOD$P z_3I4-o-X^Q6D4!a{>@({ zXf`$A!g_v&EuBeRJo@?wF4HPB9(oG4k-Z|l4{qIN(_gqx`MzTj#3yHS=(N`eTP zHDx8Df1@Z2>lWusW0n^7*t|NqNEJ5Ay)!}8U&TzBv>2(kCHtP!qB$icscF&!Ev5M_ zl3{%Ol)IOXVb*(6r^}VF5$n2RLQapnxvJLZjuHH)GSA&9a-Br@+@Z4vl zsKDIldJZn^jF`HR5r25@n7k>#S^Yu!D<6;|^-XK9y(*|G1wHdl|2`K+Nmxe_>;BWL z>>r0tJLYftDIF|6tT2bC1iC2|s$9pjK83lx=bM-72)3YkU2?^@@m^HJs>m+w@bq&( zO!xBE%4R`C%M#F_av7LKMZfp;6?Zr>k}^RQ38a#D)lzx0>Mg(eK?P`krz3fq4e6S8 zr3-CP{1d?1OFw&3bnK6&w)k^P*qM1&2T1hL)ds|)%#O_{>bfM{18b!!)b^-rxa)$#;; zbm?t6TF(F4s`dIaA^nBHrezGy4h2};>$AHk(0GTV1-gdSl5C_upyAW+e?Py6LbtTQ zC>8SlH+KUmj}fSCqa&p{x_ZYzold!0v_a3d)z^44lGC0ZOeyjVTf> zoTe36x0Sd>60P3<`*28!bs9 zKEC_Qn@wL66KZN7My3G&j9B_xOCdz>dZ2saq=hD6pyO+}2LhFkYxO-|hxRv$vYhH) zXTu|;2R~e=7MDG4>3dam0ILXyGZko0f?LU`2{Rt*{icw3KtmT=UgFdej=&YzoOqI%ze}4pRQ|Y#{vQ zvC+3aB1U(U?s1`4O+0tAn}2_*VkfMA6q=K9%!KVjtY0qpzF2+YJ#MzRPZ~Q+kb@jw z!1i#Zq2YhVonq~*uHv-0lXBEuSQD!WMvUDp?OJa1&G6f`PShv9$cz2Yf-2*N0zMdn z>T8>lcO-qcIEP=Iw-*-_-pP}Y__##(APhg%a@a-O0YdoibH3TmIr7Wz{ZK8X`+cx=~j(!s(8f zE!Mu@)w(<6YO9g)+R7R>yA?TY4JlIy6m?=*CB8zzJj|Y?SMnw%ATMt)-!4+Df3{h-K_;8>OfRiXHiC`=SivMOD8EjnZGCQ7( zC}e}sQVqV-Y>kkR^1DF4(8?3$`vwH_e%@7_9Mlc^P;-s|P9S8Vyo>ZB3BjU}d~86| zEL71W<*}!Eg^ZlGkCp9|jl&aseX?Rvnz@9$!`_D3 z87NIO{sSn)_VemiNp?ooCyOV1;}vdZA&d|vkf=^yw#TQ<}ubN#sD`?0bAlcg;BNXA)FdApqmeKf&++GzUsZAGPM)&-!}*s7MLCKN4g49* z7qWlq$s|s^MbPwgy=Zm5ILXu?ZDQWnO~H+~zOkF*mJ#r^&bj6D@rR*zNS@q6P^jdh zuzE_Pzv!&vHg_p(@Q-pov+OAfLRiiYC%iMjsLrP&rX!ZmmZ0P${!ABpRs;zFXcF>S zfo+cf*_|9HlKh5P_!N^3Na-HSXzQwA^&iujo^AA{AM8|Rl1_W9hg(j5?(S|A7_mwF zVXjqkz#1jL-q8I`8YR2JEBK|8@Ug+}=lK@vfD_dQQ=tEjai@0Ky2VV}*`qT&OoTsF zDO1>WPtGo^6*#wquzFdQcxo@qU}!ShEIOqs_>AueDUk2cXjZKdo%HKOTTZB!le>%R zJ)P!=*Wfc+D_O-A40ab==j2tXd|xSpf{BLDNWJ$&!QL(L8N|e*Ns*wc!&@0~+pOfg zhifv)#5#7oT$+F$Ss(v)Zve8MbGgDpRp>a{F2l#w#03z4H@7B-M8t-LjwA`t_)6-s z1Lk0pN3#>}@*wLk+Em8abUqvEz)>zcXXyW9V)EH7sCbMNE`+CsW{7@)0ls56zzH>Z zxk?**&9ppA47IJN%ISH*C!$GpzGPtF!5thJz|jb) z{0?}d1S;W5?03zZ#}VVX_!I4Ozxl=h2)|kGt#@o^Z5>XK-m08-^C}ENb?4uR4gk)U zb7nEp;}q(=h@NNTo_!9Uy8&;~cq{^B-avpf;Mgu}F3|i;o=IX$50qrp<5p3m8nXTu zA`gd>XPy0#^|~sad{9fpbE9b+U{rFHYco^(FqMS?>}a%=X^XH*d^A;TGFA=n81nRZ ziqPE+5~~S+tAo_J34zH=PMa+pj|n?gyRje9LRm3eMVv{G=4%!?+RE9ZBW*LL`)^0q zAUTw=-T0OT53IW0g^6@xQsZJPth2)XOP(%$wI#J*Z^paWo!;t^Z-TNIpv%eY ziHU^Ea&JB{a!H_maqR`@S3V(~joai~ci;6j`#b}Fhg?8{R?@GkV5(>o>B)q6G*iZk zXr;MopDk`MnJ?{@cM#krl+hx;dUfC|y0>T5<1GHm>@kp805|jSj4R9MpO_+k$W}Mf z3m;Bo<$yCZ2#WjM6BOiUa0Ph-&N9+@To#`zG8myG9$iapZFZF1uqEBPJF>II?dwdW zDOVxQzpZ*3NNCS%Ij4B=mfej7jwVsH2$&J^z$x-RaK$PZjx2caJZfSh{u@<5zp7(3@l<;<_hKuar>R%OCl_tiO8dD%GL{=%+)s z@$+#l2Ji#OkC8(G-|K(s!b^&fQ2=B9!xdHW4Yw{^%IPVj?IGCOx0A{luzFJi%FgqM z-h7A+#vpqOD^Vw8)+ranBo|d_bjoEp`yI0cgtiqOXH&Jhfw|GARtOl93zVOxPpx^` z&G87?^rzg6SN&ZfCXBVNA6RX|(A%9+CMi(Q>TluJac1BCE_vUzb1H15d<3*jhs3vY8W=#RA5p6pGXb-Zm*(Cd55HI0a+5$gZ-B|i zq8_cvPv|b}WJC_YFzoHo6h1rAVEtN0@u%kp2hC5b?<*_EU5fUnZImd81BCv0=R6nY zVY83=eX;~(Er~$SV*;$)Sa@u#dbstH?89Wjts^rS0t2)W7YfwJOj<-0c@(Ti=`YpQ zE&%tYP!?C(v$E3L4-5>}+|w+mi!Plmsg@T7UaJ^87xsn#57UT(LHpaMo!$DWotxbZ z$HD%MI@BK#38^}!pEGw^3yk2&u@m|l!W00!y}}ZYCWr`b{U_0U6;kMtlq3QEU??9k z8ia5HyghJkG=|HC1K>BDSnd*kTFKvEfsAQQc9z8eCjhEpz6#4K1m~0zXfh{T^oe=VKT$tce~Cw-#2^VLc@w-7jttcKYmiSGPJ;gbmN1dxyxfZE z!ZulaP}YBoNwN_Vu{zCp>VtqBru~ z-PSKCWH#m=PwyDy3#i?$np7JDp;beW#F)^E!W)Geqk2|@^%;NtvNJS`le~PezDGQy z=j`#*3h{``pZ11U1p8{mLG^=F_sjQ3ugh?4iF<>M#epA}$f0soXJ2s%M)3k#_V#1j zM|%wNK^SzRQXHE>+u_tzM`^E5YZd{Q^R(>WH9+4+*(PoeI`!&*O=o%^RBsN0oFR-3 zHBWZy{FPh$1uJxI3*#}}!Vu9G#WwICa=&|c7xMp_Hu- z9a49D5MN&0_N3FH;s6AUSEtBz#Y9-KC+TDoaJan}-@ljeqLe`2Q?+cj8yr-7JVNTV ziu+G(nPREGlOZCl#HOrgD(KC8JAtacUE+08!R?6}2g{0v?#KXPEF+0#tR z2>j{&<0KRv;KA9c60`SObB9g0Au&NVwv)|xR2P>)92;X_CuY?!QNXfDHVKrIzi%Mq#AmyAbdJIy8{f}!_4UVlZ9otabG%?Mc(6{ z|4nzfs!YID9*>&&8%4Bgv&hN8sM!;&1bNyugkS2Zqsp+eEckI z3qb2jM=OQWHK_-AiOse9Ol^s7-Tbq5d1~~a?NMGc-Q3Kj9L%Tva?*yzb5s0x-X!3u zVdyv29Pd5k z<&t?x)3gF!LR-RL<>HmFr)&QsTAGadMoEICYVqIq)bpCmaF zM7NURA|61&PBSz5Oom4PR+2;caPTu%v;*93!q5E&)8;qs(M-6A0E;qhr%ypJCYA20 zse=m`1GZ#EPUF`q;@l)%j>Vovlg>6rnEg@|O85bz)AdqiP?jJu*^wSwxh)!}Z3&_8 zOE2Lo`f?a;zEi#u<)yHVTirmH;V#{6oGf%JDhU0o*7Nkp?OpB!)@VbK#erP`$^s#n zpxqxpJ0m-)V_4*d24J4l#H$NOL~3r8;cQjg$x{l9@Sq6mQ9~MylF;4UT1zFT zWGAXf1Ae~jgUlchN6=@)?Uo>G4qtxkX`&99W>(_izc|FfZUQne*5cs03F~4s33D?W zl+7bHIuze82$PWHS~v%aFqnDBnKjry;IfQ7fH)v*r6yIz2!w0oK@Zl}kJ2Gx3Y~2d zSJf_Ua6)~Ms<+N;4YZlj;5QL#|Hy3;iqxh0v-Q2}n1xzWyb%8Of?v$oZ+jT7lPGEt z@m@ejTYQ=3HsdcEb^v4-=p=)ehzES%CdbiT7t-G#(yE z%0zO&?BGHh8X4Pra=}L(ZUrJF=FPIpT2`BmOBa7sLK>Y+1-yKA94%F8A6tikv^C9{ z&i4eK_aRyfUs9-1g60WiL_SJGz@JLo?EMlz(SbBOsgf+{{oTpm1}2&-RYSivLp!^* zeW_j2Z#Q6RG3P1ea0;*WW@IPw)3m!!-kn&R>5Va1WdgS&B|yZj{|wVjH6<=SoUDtG_D%k|&QheP4}s%DKB zTEu2Q^U>>0|a;}V@&R}KSYV5Ha>Q`XHK$d7Ay^qjx4q< zs;g`|-M`_KL2pRS_IX%Z9odU*6idb4B|Q7Phwg$m{W7v(hkTvaF=rBRzKj^Q)b0&? zggl!m+M-TFv5Y*(y!g`6WR<_5o(HYVW?A+bpsAv<<#Me8Z4hCXM7bz8#kn0J)7YxaQziZ)WkoACSKP!|rzing7Z!RS+qtu@! z%|CR>+WAMajCvlZkc+=khDzqO(lJ?9!6%@Ce4UH*kw2!Y5B-pw`B+Nk^;mx!dxB;? z&@;|xINE@`y4u^ZL<8AX_#`J;UCPJ=7cm>9>&S)~1qoM+LwNk0?fra`H($t#?r~9G z?&2ZouSGXMYlJk~mna)rJ{ButP? zf8D^l(BB`}r?lsvJRis<;isu`)vA;8(A#OAV(Oa+a{T5uvUN^A7M&6&?L}O8F)*w8 zuLY2#Ac)gxacChihL=rR8Ip)xB@0lJ`OjGZ8jFb}%ZjVB`6Ia6-AZj-vHiAK&P_dtMeJy4$vk4xAyzB|ON`a{X)wW10vGEJ6D6KAj@Sd+K){D+np6=s{S zc5+)yiL|$j9R{c=!Z7hU|JukPv7^z?o~EhnpQYk#lu&@!=ELY@$-#)kJ47r^sF z!G*&vL36YrsQH2;ESGU?5@v98&B^peB zTg-9Iy$O|QCDnIa8|>L+snpDw-y@$~f}$+44a)*f-r+kwlmP5(M(_WrwGZp?XFlKZ zz7rCOUJxVsJUH zlJlCSWlh`+!!V9X4e5ghdKZSFQeka=fLW1(wR-OL#NzaW_l+_Sd9J6KGcvcuWsK^l zi+;T6TxC=K@^wj1KQS|MKIX9Ut_2|l%S{Kh{*qB-$tdL7qDk(xBl(aWsqceR{HZfu zq@uy&(RS5dg1U55NqJbN&lrx?>WepaBeTM_jxun0y$F)18|341Rkk#nXY@%k`qn^u z`Xzn6DttJjfH#8&j1zmammT4}d%grs8YeQGVpDwLFWRjC`MYm`>L&M2J1|%|g~@0? zCR3^T#IB3F+V7hF1jWr&EE=^hpYjvApwHdBz1LgyrTUou#IX<^>XGA7rQ)jb9PMT7 zfeo#6pJ>-4?zCG&`q2V-Bwpjnk{&!9O*u!R zwBX4-@_SYz6^*m{R0TftX;ikgIXXWf#>+-o9FA2>A&Ru(JKN&vM-C&?{kW-t1Ow?` zmw^=G~K-u6GOVy{M0&gviUJ{3)i51B5uQYbe08f>ZyH&d{YBhWsU{p_G!))~W z@BKTIqI@b#6s!7jmKh-4FgbJ18mFW5ok`Rw-)1}K7-*OKZ&k;If>p{l@qyrCm0FJB zD~UPBkkIKgT&J;$4|^PccV)={JGj9waoC@kc8ua%h{{l3$NOA)JlE&Y%SP(*)9Zye z#}l(SRQUyNa0~zFr@Sp~&XOoWN!zY6vbXvg?w#1`-Llu+eLCYVB|98`a|vZeY||H! zQ}46$lRDZfr?N^(A&5tP@d4O-{ZNWrS_kz3B31g|D-f|?YwX5~@UJozeCk~K{D49B zNzLG{kHUGm1!d@O`;f*=C~H0Rn8J+)#MD2MA#KO|<3Y)Y%HNLt$e8yvdr}!QK^ftq z`*x*;4=8!EM$Hu&49L6Jn*LthH~i1iTcQ?Bv_WmAe02d%Gg7E|B86x)>^KNhJO24f zq-|ZssLE5DOB{D%%Py+(J#R~W^e}YxaRIQG0W3T6AERQK2z;ym-Rj!Sq^VwvlR+S@ zq?My~V{rd)#46X4BkYTGgV@QBgI2r;YFO2M%8^1{F*&XmD$tu+RH{&-abEh1o`>w2 z#~rV9nr-%7{dZnG$Wzc6PI+u<)yMOgL+u`WRqwdCc%T-BdE(UHo}VMI?!eoQ>+R$n zT#`Uaa?kHQ8cHuDS;LdlUsa%ls5;2w>lAS?e3a<~ff1zX5Y*wo@Ffbjf%v3wi--^Q z`E1c_Zrv0Fh4zX$QLPPz$34Q+a*+weK!JyGr&=)cmb*RJ$k?6nRv$}9pf_kD7J}Zm!Z^duGox|tIU;3WwKyoU~-YfYK6klJ# zal*3ZVEbdDkkL4ujjt8U9uz-``{l3{R%gq}45zAIgW=;&f!>G~RHDOA`L@zfOC}gW z53dlK*nL7e4t(2~00&|JIgljyLEP);ti!GcY80l5b6AK&9Ns&|OZ5Gn&oGUAULIs) zidMRDa0i`&s=$+^0$r zC;`)M=WuBij^ISIIvUFx<5=YqyX|XmzfG$@`Pqq$aCO7h$ul-TS|C$|_NNufzWFY$ zR?MH!HD@f^WUY{s;w*yk?sKklDcTJA2;EK^fZ*x0$fowQSG~+S`+7n61ao*9*|6;H zbsrNflfO$84VGO>I|#qXX{n{!H6@cHsPTQTG%NbgP&JFxgsg?0b)C$jp%-0+B~#yM zc2+?*$@Vg+b&7CnOWkJ#%EP6ny8%2KU@(Vg@G~4 zw1e^1U}>rwx)3h)BJp>C->Z$ESTy#DBxkmUIJkgnIIXqvpiV+PI)&Fg7mOS|^Bf~5 zrut0>7;}{;RWHnFC^i;ycv?javBc8T`wf%e=nY-;UK|U9eyHv~0+vTS|91!C6PgN< zC8dfuf56ov+K!Fgii?g9ntZiEpWUsIJn}b2GUReoGEuVW=SN_x<{`~oXX)oMK6$hm z5|!C&RAe-43sr#JIHDNSG7G}v!DjX#ppv?6=?`+YVLpAG3jWXSAo|_{G?^))Rmp}6 zKOCcu*dm8=gPQML-qa-0KEVf+c6XzTrfaYLRWI>Qz^)HBewv(tpWG zhF_cbRS!ViX*7c4k$oE`fym5FCP6lC*QB-w5p0O%=C zwFSjE^7oU6H|HZ9-J2L!G%#s7jRC7C6gkRoE{}vyWFD4WRce1qC;8kEOiUBIt;|=n z^M@Y8iUiDYp4D}X&r)%UG1hJLyrxA#FWt0T#i+9*f7(w9vnD70kc4!HBi#sqUdzjx z7?XG7_*30o_g#eRX}M}WlU8>a$YX#@sx*s*dw?QC0RcF{s&n4T`#Sv7V=Nm-*6L;8 zh#Ph3WnBXh#OG8+waA;N5ivpU*72djZWVKY5ifCKynaAD;7jm0`$FPib-GZN>CN?R z8k*VHLeJjXv%D{u=q>Vfccvzw-A8q7wDF zRE>|TcO>cit%lw1R&b6}$68>Oq43rb>tVhUYFfa&fTQvI-#D!p;Jf@#ECaFx{~!hG zgr@Ofa(mk_>AklDjN0tgT^|$4yll-wD|>%dEOZlDzRBWRU?XlRK_+t$wUsKb%_33# zfV=a3HsZg|aF37DCq<>FQFS65N~q^8qf$hIL*q6)Wn;u#82r$dD6&@w-293eVIE9l zCsIK|R9XMFeSUNX=ypDs1^SfZwCId0o)gW`T>*tw+wpE!f~=%Li>Ga9T&j1uzPqEIBvZL|n?)xvA)_$NzS>eu zL|sZ-%lp%rr&2HzU5IPqBZQh%({hd)3ST;G)LOKls8+qA@l(DW1HbEWiPg6MGGy+d zyO03?>J#fs-jJZ*N2-^qEq8k)zVzwk@e0RMXrUn!x>HM%n6^{{8!~0Nq^ct`{rF&g ze!Dtz>Rl7&^$>bJ9sQf|&%3%LQJT>AVdx+*zSKE4KIHxqsQ_{g~&8NV`9tRKK;vm7-E?wJoF0c$^l>Ye;t{1 z)Tj;Ps#u4A@0g6;p;6TbU^DwgNw$4TKWObIT zDd=WPtNRs_QLtqh{4}D1E`JI_zl$UZkDNFIO5`Bx zj;{aSvH~LOdfd}^sTcsTA?B28IR9nj=~Xy&{J&^^_=+_0Rw_$X{}1D|Ef3&HCbBEpOjDou%uH!n=?=qE{P%`x42P8HlMnWrDaqY| zav-4OU;soClhKozj6zT_uv0jukCp>v8%Ui<{2AP9s+@$@XuAAs*__RwrY!0A*`d!` ze}u(?etl|Y6VL1S(f!fm;nj;4_t$2ZA$Ls@pAAd@H$ZFv5D#3ChRv9V@ZWJ100B$@ zM1XYig0QKk#%ayq=fK#905A+@gFpo-%9ZP;0>GQ5|GRh!41p<2#e_-#;7uiO;0;AM zFhFWB1x^3}-t++(0zgov1pv7*L}`$K*f2mYCJX>hkp+OvNxY=dK~w;sBslM zKkrp2F#-et3KRl>s7y(K;8>e|94;^n-XS-@|8?kpY=jEZ33+H#h5U9c^B|3>{<)SH zA!hjD*nE9y%p|no7b+vkE@Ea+p32@YswA)Jib^WES|i1T;)OdrC&v1y78VzAai#YM zHVR`TG+K!O1o}Eq zh3&mosQmP_+|OCk{4ETeQhV&|%6i(~Y`Fvmx`E)NKjo!=mbF-J3NGUm>9crQc5O%Y zj*RaQv^wXUZm8i?FPCknURHWn-afGOXnWn|+*ZaTkD)+5lc~^Rra>U{fuN}V?));( zwYQmkb|=zM8nXVxyT)i_T2a-=jnKrT2+Dgt}7YAo|JyiaaHGYC;$sLj`db zZx>lJJ((qk%TXXO{i*#;PoK|`zpLku1@MbbkfoOYpxDyN8KEP^Fs4FqZrP&_vn6Pe z%qN)$3;dS9Y)Xg;;K4Ji8DOL@U~n5^{dbkhewlRg!M^#Qo5&Y+(4-=XPMiWBa*OpQ zHqo`2pT80&5c~l-1B*Py+W&GPi^^UQI}f~CB1Bd6a`LiV%`WLmfi{^Uks9c!(woGL zuuo=ZVP5*x7RJ(mxWCSoRgS!;3tA9~Ie6O8<8^T*jH-09N#G_&`wNSdf~iU*jcyLI zLm#XSK9E*(!}$EQG9VSgK}FHnTwkYj9o`PK(l=(|IMo3LCIh3MzSP^b#qd{g%sEkw zzXi3SO8dW4z7B3cA_ zLi_gLi*k<8Me`*$t@1(qVg@{7omCoX+Hso0DmpuMNX_oyHJ{4WgVpYz24Sh}eD8dGx>_Bm<|&bSA|~n(WQh{2CqWDp?Rj?fM3y z>#Z~P=!i2mmae^oxeXW}gtz3iwVHO5DK zuR2OmcER|V2wGJC>h+rHVzG*acZ!_`u^<0(WWnwP+89`Wye5m;6~uV7tS<8Hdv%pE;X9^u+`P|DP?nkCP19K8%p59_#ZsS46XNXgbEDx zfVeFp5uSR8@OzZk0qNiM+E$t>%?44&zh^&|VBY-DemS8&DF(M{94z}5z)$b83}1I~ z%u^tk_u;4h-IXpb1CR?vM_Vy|)NR?lcPi%*&QBu9ITW%YOfm9>sg5PvDIWZH(Eu1k z2A&Us2>9!8wj|PD06|naV4#HoB>bNYH=HZDaB9%Q0u116>BWTs-VPDv!r4LxCx;>c zxdG0XNP2k2{@{>A24c&@>5&M)bnpX!iIw1tVKWKD1X0Dp3Bm*>LCqCp0*3bm5fyd{5(w4e&#N;|*nfoe&Pe zYWQLAh0H#@KPd1-#O>^2hlB7lJeMPPBF6v!I-FAmAlPO}cm1q{pUbL{L&c~v;CjnD zG58Wb6h8Gm&E1<4flVr>3;|@G`e$ER66wkx;1-ORRW0U+UNPu{nyHtaWDhhFo3MXQ z3&Qt@FoF%a-=%9LJ=1@q2|%Gx=U;-?n|*(r3Ix5s?ATRee!MS;quHsSp94t}B`px; zJ=ijmlnzF{-T2{UVBQ=rMU*++%QM3uEQyfH264q%8(MROzWD}d1V%s0R#mLkUT(Rn{;vJ6U2vrnK!>ypuMrRIz@X@UM>rwmm?Q#C+| zHMd!*pb~x27rpoYKy3u&0!zOK@yJh+|;|V;PguX;& z#h1LDqjV;+Fke(kge!W^0!O435A}DM?-6RRgr#P=K=>if{*NI)%53tIvhT;$$wNRL zeF(Bn5mu{LWNF-Ff2Igh22o?t>x-|}>-CNM#FmeXEsmb+UacEhhySsGtq~00GP_Rb zz8^{5E|O^D@schqzHX9>OTV+QK-{Q#A1R%4coVoMfsoet?=i zSIt9X>+l4+SjQ3gBktXdN;#x^f93wKo@=8RIt$-v@z;1{`7dqi_3QhI`dcN3iJdq8 zdhK0ub82JsI2g2sA1zTwND>Ok)w5*lPE14jPf;d&+o%^!0>o%(Q_{&T`8!nMjG5@} z@X?{5DSB{`&|eB}>$<*; zi!88TCMsZml&Z@NQdnKvn5L!5?Em{N*q{^hOO zDed=}wX|@lM~X?s#LtzRJ*(yVlvbv*1l1i8GwspfBbJ9EgVBrii)%5j^cLKV<3vI# z=EjwoPY-AB4-Z1-h;)m{>Wf5UN(Wq@8Y9m4p>FmOROBULAKZ*mqNio_JO6Moqa~QujVuNlRF| z+zuvF>ZHx$EZ+2O?;QYWWa}}wRAQwQ4?X&ScTwgC7g=6}pG9ckaWrcW42YwuePf}t z+1^On^z=6F&sXhP&cksj?4dZHs()$A8un-)!6P0Ku9b$PGoJk|%j<&4mxEPO)Vt>n zE6uI3Zu8Zorw~UQL3-5ySFiVXx{Q|vFJXhhrZ*#R>p^%)uCq6l;#Vvj zumtMl0~51cJ3&2YvXK!m>v3koHsuiqu6|2{9486d{&>Dox+G4~boOy?79P5>kW(Mh&<8 zG^dXLOjY?Ui$^fsvRa*)U@yV7y6n7h6yf(p$8 z;U2gdmL6XUjv@>3&#g9uV_@?~aXPny<-qulSQ$__m+f_D&y~047OdOIxP|oyQ?lMq z%jA1p*J&qv)(wE(xlvKkmXOZBOflLO=?qu&>x&6I!?}&iDcXzI_oD`TfSSj>uSzuM zlJ~RryOrTChER%zczK9y6~9jPL{poDiihbIv*15!Nai-1i?I2cr(pL$o_y-Mz*h)T z)cUMCr7;;wF(y!)Lt(+Qu?Lz!oP_sXwMsGe=^_B&me5qDpS+bB#SX;(M^e0D!9IK4 zy{_$frrgK&=78Z(0aWFO#Ib3Bv#{#hXuL;dZW>gpcW_yv`qU$!@BJqqf!Vg!{5J3_ zzva6hx4go9-tSmDHzH}N%2TBJ{%ZB~u9wcA#_Ja2ldhKPp>amX)=LHh-fB_QP^bjk z>|lSFac0c73-EYR7bh%kFSc8};;_8LQ{aYCsD&K1w@QXR7aVHJu0&T=Hw4&e9*kFW z?rt+_HDc$`5&ej)8K9Pmre6a zf^NDKp~;cFHvADDnTg3d;StpJNQAg28TQ1P)^=R24F0tIQR~NQ08oMa+Yr4RbBAy; zazPx*g{{G)f#9xrrW9pr?9ZR{p7e(JND;O!(fR2Zkb3kZqr$Q$&CDY^D&LYPoU(`| z&nb*R^y>7|vG9Z~8rdA`*#2ZkG}aM|MX1Nhp+Ae5aP%WhY-=l^=id8sMRL1oIbpV9 z0c$?x4(&&~HuED25wen6QtD}h0)ox)S=i_Z5RU&dF&c1Xpb!W(Tqp*iqA4H(Tj1`; zLb-GtCH99P2XdJ^QuCnJ;VBNURz^>Hj-=YVB;7x-QLKBok%IgsQvsP{7R>> zjyd@VR?@BHe-fSC{|StPm!P2e$)DO`^Qtg9N3+wbpYKWM3mA_#>R4+CYImMSyeIcCtO!s@(E8yBT$A3o=78}8e)Le7Uz zMac53R&BOb_N$8BGf=#@Q2Nadj*522TMwG%Cxw9yOK2ZN&Mx$CZm~#g#^RiwXz!?U zgn`u^&q>UJX?NSr=gl)XrhVWKWZm#Gdo|e?RYxR=F9$L~2GNMU=T75! zN8{xPlo>rK{MhMzOD^k&f^>*G7=f)Qen8Izq>YN#q<*z-^C)u>r8%h=U5vUT?}GO1vJ!p*3SqI$B1(Q|9^S<)LMo2@MDlTu8ZmH-lU9Gs$igzb8$ zWKcx6{5*p3Hk*MF=?Tkywjtgb)zN=5bmp9G&%NnPRtON~N+Vk{t{sg?gv)mkou7Ua zMvQ24)MM}wYpaH!MFj3rl(f2kCE`;$+DnQdsVDp~;aP8X2N%el zhK38$wdPmUVN**kwHnsFC2S|Lyz(X!-=IcIP=T`h$LQetw&@*;jBBtwniXBg$Eba{ zO@eH$A(M?BuWC`djGX@L`cF3yvA+yIg|rer<89k03^XbiwBvq+zg1_%K@ z?5sGfx>@|#V^()&9aw5h>tWB6>$H9Svz6BfFIA##$_4>V?F@8uELMFM!TId07l2}3 zhF1uWM?80eI_bjNR<~axqVyq&p)K-9KaRT@%Qi$MWz*j^Cs^j^JO9xWfgFklGm~Pq zPeRvwZaQh}|7^89vt3z6Yoq7uM)K-1D4|Wpk0CQRSqT+Ma7|W5|0`WSSjJ){iXctP8-Qc+H(gjs>nYDqbav7oRM(PFlm0#{?BOz?{O!x9xd_+$ zekibtJylUSIqUU#*(>}D`KD3WSm~Ih6Z`OxYQ7{ill{EFMh+*PCF#;kEy5(_*N^_X zKK)r5v8PFt^0TTotBk8Adjxq@`yGa?k>Pxe+vN{APhJ^z#wwz*#rH!KSrN{(14BGb z7W@r!V^BQG&CB{210CpT3~I1h8l|a(ZIfm8SilBx5X}hw&i#+Cu6+u>Xp@AUcqTRa zd)@%`o*q(@QoRNl2RBcGcX-~?IbH5~E-PODGbF)^i261<3oOi*omCg?(ypl=eKq@) zd7+3oCz&nR5cApQdz`y?;v{-Z z-o-=`_W0mXG>+oL`htD+Rw0z<-5(oyQ2wh{-!;~KJ?gW>mN)axE~Nj^I1K)!XQ0Xt zolH$1El-`QxV}G7bDs4Co%xrVK>g5qXC8RGc0)O*Oy?bRi>0*d zo$EoeE}Q@(?);whNM9&}IVT1*K#MgukWF~Gfzr0M&&ti!mJ?QwuuAPXQJEt6iHaZ} z2Vu3=IdcRS^LX2HK%Bvo3XjJv#`?`gVHMdwq>@$p8B%A^kwISA^S!kj7DAzQ%^N~$ zo$$4&+}C)y@R#O4N*t|cg{hyHd6VbjF?x}lokjk&Kp^^alouM|4IWzoZ(1`z6-Nk( ze0|PKpZT=L%<@7Kngm>QLyKw#5U=nKB&HiVvxc)KKdslkY{|KHJvX@CWhi20EPqeQ zdfNb_@#|(UTOyq+O=SOSh_-K7Sew4KP|{?g$yD#D7COZ^ zet)}Sr^^y>ZM@iaXH@F-D_-?jO#Wr-dV6q;ek`Y5OYFN4hKUos#Vzx!=*v^rv&~@J zTAp^t3+2jRejZ32Y%!OEd`2_4$y%r(ytg(LsV;I6n6w>(R}bT^S-C2Y@-6oN^u|q1 zn~f}&59>K>R`h`lQO#=!!(@{4J}ce2w_{C}nY&U#jtC=gpCf;7YQQIC3F8`bt@vcM zb`t|0pP4{!=7md*EJ2E4eL(T>GC1WkPf;e_<`zGKrRWo_RCn>u2V(YAUo3LHN6&QP zv3B&wr@Du(;*#dCv?JfIu@d8ov)fAR%9NXr&mV2h>%|3x&1A$S&`L-Vi5k)vSy$x} zE&hQN_C4Nnemi14sfP_(s^pQbz4FA3zDe)G6EWpFA{1)3a8I5RwtLxeU15#c&tf=0 z6KaRA!r)PcdJ0yFx)c3}osy(7*n+UB<3CO^-5}qNOzW#0?kKO|tNE<+ulVjuZj~GO zF0h}+ot^5p`v2~zij;-=R2Uxa_WD?fmA5{+HwRf+Lhk0u-}t;;G-;tNA;--qJEhP{ z%T2v4GnLZ)ioR{D44Vet2>LU<nl^&TvNxxR z-5pRek!biPn}9#Wl+HDE3_mA{lrqrT7PE$y)yM19qy8R$9~%SpUTx4lUNVoJNAo`t z^BZvIIDARQ^LBaO@>OzbaA`RFrZrJL_D!P_<*)E9`epUZ!NmyS!XW%&%` z`$nsQkZ(3P3K0-TMjvtQA+cHd`8Q`}6WTC3by~vFV8DTf5Lo)rZy@H_Wi_LsJYkL> zhly)g+j~$~hl})R((cf_)+bYw-%Yw?xF%wSe*lAZY-0;x+bYKSyQxiDBO#p5-dCRQln7O9%3!e=*FBv zYWYS^^XJV+dMX#+#2VR3p8nMYxdSq@i+}(CeYT+4bXX@$Nys>*R8#8*dXZ^AK&j{# zYZ%<#3?j^`$M>sI8g0<>iqA}OZD3tcKct{UkasTtbG}93zWiFE)z`!~AYZ%cTwwL9 z|DVPj_%J|CNzRC|2w@^cho~|Irb2pfwQ(xnW!_Bd*nnWLf_^t`GR3 z=9-Sc!VZ~|wV0?o(W~R=(yko->YPXA2s{{M*NK{%m{k zGY?CsU`r%pQ*QpIMqPDxuAszRzmo}D0j%Q*#C0LK~H=vXbbnKH%;l z;Z!97dfpnnXAgnCt{Brje(PFDfcynI0IQQ^^9?6LzvlbPHkO0`6Yak6&pP{S9eUF4 z#+j9=%=SrE8H+HOoq}eITjeJ~W)i;nsw$j+HlW`GIUa-@>FY&|r-w3YjdaOh7gV`3 ze85_j55rZ%R~=3?g+;8QDx;kIUPyM|fw;Pp?|FS?--({LX*8eb84g;~o;V%il^E9# zR4F&2UX;8JhXn_%sdt)T`|e-&5-*=Iotm$@2LgKhn)N&g4O5iVUUCv0GPiPpZT~3W zjmpZrt`DlAtK6*HzT@V7x&cwX%&=PbR-P6dnfN3+=-+}cnr=34D70T(3)MmL`szbC=yGgV5(f1f%`Stlq8mGgaY4UrT>irUc~M zu3-Bc*JTVXhV0_}R?};;sce(R3pAylsk}!syjRJ+Nw>`hnDGIjNr+PEnS2Y`G+N=qkkE|KcY^e*|ejcx2Og9#jY|6%W<0ii^Qx#kHb>1Zy zb(}y=1R^)$!_|aWaz2v8ii*90qcwOh{q%&Ex+rzB zev-R-Qt;iG)op#y#iKvJh2l&~m!e5*s*{6{O{#;Vp*2BX+2XPxhFsS?R{TVytdNCg=xn;5QX1_)V|}s%bqU*rY_=)HHptFYx8|t>@(AH zMq!fsYekDm!|-kM+-a@yMR_)M>eKwkM01QCuG8g;iYV*8IK1;qrWvmZvqOiU6?dyr z(~b`agQrH*D^x;H#shbs7Bezpe9sZ=J-tv6Re4?SGVk7aTC~9>*!!uwGicI#g5!l~ zLK?C5v}TX-!3Ph-THT2OCIgI)-ve4OeX;2G-F25jg15bQwcsGT<=f0X)j~6VPMzaV z;v7+m-Frv4VqWL4PF9~{2DWOyWMc^0Dl}drp0k#h1bwQ)w=AdJ*Qk^|(!NYgwz@wx zh&E4?%bh{ndq*-pb!O${$R_hZMXg=g(PeF{DdS6}DRz!aQeKbv<-=!v-~b z>oH&EjK#Cx5417yIh*_xC(ehIq=GgG*C4{DRyYaQ?%Z33Pi#6YO$)c%1+ie|Ea9k& z8cil~;Utl-?C|{u-`K|(zp7cPDYzQ6yuY?u%SEGnkO&z&c!s#}%F;+qayt|4XnxDy zq-bzmEIR)uM|w~=1+hl=8qy1Fb`@X7&V)t zB8MCww!}-;f)a!hd@QoMSW~!Vf&%?v&tL&4SLt&&z90zb2LF0F&CFVWk6LlZIz-cL@?QIKdqf+V3b%}Mj_h6vC*lqdsmKO)~&{B{F zRF6~d0sy2Rlw_rJe1V51n7-+S6a_rxCTY>fj@x?fWDVkF8Pft#m%y zH2;suUoUswLe?o+^3aq?xZg|+2uKQa1N%ZXSa2Z#QsqEVK6HXX$$Wlu{nBMokFWNt zHGw7OYc1A^0c^$aVfNv$_5hXM(p#B)B}o~jI>7)^rl~;{=!G-?r~{0i1y$-|V~9~Y zMf{e8Npo-nYEXe7bc~pj#{<L@bA&Ws==pQb3Mi{tFHrZDfy(%~;dzvYD3$z6i#kVi6LG-QMw*<7KaZUNdwWxw?q$n zI{CZ_XEajBQN3?h8KfuZtpk*M=37Wftg2CDEgrXfpPUB`3eaeBdvMBYSGpryqosD* zVH!=|){t}0VhKDjp82skzVIYX@p7rao;> z-_e=vm{*vr3wZPS!6jM>EimUAu45a^-SIDjW>vrW3lE`g03JwpZ`yRBq@X!}y05}# z^;pIh*9|9cgPO-5xz9-gO+8ntc=t3tLz3?L?tDUrF zWe$BtYJyJ1Y55#BN5c8ft+(c5jSwcrKySR`zurNd~x%}|N|*V?9OYxLNSo54H` zhLrE|V8j;8%IaN!@Dt)##MB=*MQ?Pm>v;G+3j+TNHy*XhLWUQ8GIg<}t0USiqi7@) z9&7Y(E1p98tJ2P;G%_@t@77ApK}h$t7I?n9LU?vssk#uGGC~3M08q@tlAfr)=`c6Q z* z;pCh=PXdm9%Z@GqWJ<1!=YjhepK5Tk=g)@X`Dn`1F3$2QcrN@8;Ex~%)q9UFYk>5v znGj6`-f?4;yz3mFYB;<(q6M{HR)tH`W@b7YB6?S3(H}8`V>$-$_6Vyd9i9XZ#z~^! z9}&{x;(tRrb;IO$8b&Wbng|}Fu7}scShl`nzvOTxk+evC_ukdu;ntxA?1EuKP!TTi zZm~5{{VKGcx4w*Vm`Qx1PK?=Ha)bwhSoV^sI6c5lKlH^#LBtVOugiO9$|q}*?Jh-9 zUD)rD2UiWIc=M}bv;H0_SaJ}ol)v&-mNIl#n`?*_Syoew@)t@5s_z{$GO-Oy?nk6y zVb(ORyZn6H(`(e87v=dltrod+B=VJr<~o#Nul5PvudS~uKvac^jWK`)L)L$&OSvJj zDf`hvt&L1AsoG>W(bp_qm2Kd>38+uf?7bd0M7ClaD|GG^9F7s0a*sP{Va0`D7b%+< z8&m`FK&|q=#;O0U?PXBxk(X}5@EaqcVj6&+$m->0(fR^5Dc9U|DOUkn#hje%zh8hc zy=b-ai&Xh+ee`1OE2jQxsWpB9|DypY(;_ENb9@2Sgf#laFIu{L>pku- zt!hZ1XQQ0I8~DEsBDOR0i`fN9;Hq{`!oX>6AiQ&}G_lS50BiFHg7t>+z&YPYMWWV& ze+fm7roxIqV6AOCtXhLvhf8m9p}>{I<3g{i3(2xMoA<+aM+$wr_j!zs52XSr<)cA7 z<70nb|BR6DscIO$uB;He4kzr2vzYhbxeE(BKG?-cH4B!5>5qJVeq`M&62A`#5q7PT z+-*+px0k-z-6(-rOuQ5Bx@XV&=S8OFDo&7uqyCWRGiMW|!MyNh&&v_Rbj~!uc?EPK zO3=LBo~2vbGKua~vXmf~Sgg3z6*%Pk2Ru3^#e#x~Jffqm?#mU1!&iMF0xuX?z&fAYx1HAP|(tAq#ZXz~R` z`KKT8o;PHaeiynEh|U|zhBXwN^`;Np4Y7_8%Y_B0N~Ib zbmRgLvb)139vB`2k41G91vVdT{taK-*ae!KIyBu#Ie6GUY_oi!@Kf%w?k3is&T)6EV=OShYf2AfZFdwka z>BTtT+ti4CkacyA-8oDUw!P|e4@!KHt0>NJ4Gz!ZN6cE6XU+DZ*S0$fFUPbwD~~!+ z8m%=2(u3X}aC&Ae3{?iW5td;U0DqCNmNK&9w_k7zmG>P zR4Gf8|Gkm4dsL#b5m(7XCp$)NWO88Hmm;Ia`d7n*o&AY^#l(h8)NVyZpHqfI;7;O) z-EVS{)r6)W&)9io5A$gQjgniGyIY579G^F0J?__vc?cel#X^u7m>!@q$!~b~%_hA) z(cOq1_A7EuR^_p>7|E(Y5qc<65!zM7o~wTX6O*gQ@0=)a&075S7E9JQFNJ@-@A*!T zwA$oDDbu=yz#UpR9^oOUwbA5%@HnXt<-&8KX$7**)?koQ>d~d?*dL-UiZv8O-OH zNSziuV-3dm=54`DI<>Kuv+qaVTRQU55& zTXMhWIu~NmCXK4OHIsqYcW7n9-y6HrN-{2&t*MBrjvabM97YnLjl)#ggG^3&mgjd> zeT3{4wkMqpe$qgAg=wr$e8xm4e5C5qtLaHV?$XDZeM0qz#Q-!#uQ!qcx_{yK_m^T7 zl1k_P&^91%xV0pE{9%{eswzBJ3m+T7jgpH@+8xeLWnXKezGJHUv{=ihx_fRS4v8@; z)&Ez?Ii$Tz_k-DKn#wcQH3uBhaqbN(5Inb7Vk2JLR{D^+HPz)Ih9SnC(|R0=>>e;j z7!x!ZK^`?(@>M<0e_V(ch&E@`&N`ty=C?jXh1FS%^RQ1&e8<1@ zC!^pIyO4BV!8Bg31)-WoXGd0#qP=U3m5)9wG=BPmn_+H6|`0G~q2R1GI$7loE z^^IDLY&g9NK1-4j?nnGm(B~O!XnAuP=1;r{@vSjsp#fs=XvD6a7%|v1y#cD5g_&oc zZUbZCCB^+hjb&ovT{z#jaEk{f9Qnl=6=?R%y4!-icudib_$X0BT7_^p9D4Pk7^0X>Ln-pJhDvTLxV`We+KpzF@>0in1=NS`|5)x-wE5 zXIiDeSq7ko!-u-`7wsjjxs$>T|0n*@_EXaKj#_fxJJ#k6w`Q-w*~8i&$I8ABJ9YWF z){Zxl&t7k)g0CFRle(u!qjy*pMjIGnFHzL@%L%Lv^J9x}e)WUM@#w(KC;y-bdudU= zx7rxWIW#LYNiE+naxm*zHeB9AO`LpH0d+=`C3s?Q$k{JNy{|R%oFOAClIu?_60qCVvB`2yu-|D z+sc)*V#?G1j0?*kMWK_yENjRTfSKLsQ6DZy{|A;qPn;j{8nK7uV^}zplbC@t;0?I0 zpYH0uk*E&iF_XzkCq3dfY4sdTB?Ffz?p{x?oz%agBzxYIy?Vz^OYS}rBDaXY*h!|M zH$KAS9%OrzrD+=9)Sn6X<$lA;XG;;h zmm1#ryx)OFApkU9n{zVzkc3(_3ENg6ZQ<>GZNZZ-dMA;V*!FdIODgPaFNzVdw&uRa z;cco;KPZ)!;)u(u3W)SE#%S1Ai&hfPfQi(>hDupcc6n=C_9F+aW;x8=u_*E%-NR{bz|jkC)opPTOG<}N(GK7?DY~cIg2O37#N)Fdh9cbV7%7ZxbCx|& zy%uDS#JDP4lvtt1U{O>6-?5^X&PvVeb%t?Q#B5-mBFmrUc#_`mJ+RmKZW zgW-hgOU@(D2@x9bA$ZqIagBlEG;a21sv;>a^B4zhusZ&^8T&HEwR{cRr*glGV?TVe zqAF19267(KoiCtE(}n$sa_@nduHXS2~IOl z0mI zD;jyk_7Ue3$`zg`Bnl->84}DSCn(!{_yNpnGyFA~n-|B5?!v)c6)9`n7PxuBB zcDSqAn=1Fk3Zl}6*5#iv+tC@|q|qfNQdBX)F~08tcP4U`zjVKq3;Mk|dZoR3Zb*>Y z`v_|9NO#|Oc{>(#zOcQEwB(CQH5T-LAePcg!eP6!6)MQS4qYF6nu`|Ju5T;N1o9jK z4IIz-nQ)cA44t(WwP(E0kL&~a=G@n+*hHV}9&GH0)B2_&Ho;BOsFNm&_C_w_y8ex{ zYyB&9V+2Xs&IeFERVpgSOkq1S&a)T)jbN$4BwZz^Stv*1BypXW6wUkLmbPy}LTUuG z$KVcw7}|zWHq)ra0xbTWQ_5BR6*J4KJS-!88oCYV;WMv53#!FGygtux9kEMk$`JJ` z_aCxfOpNl`39hcD#Su1n59Q3Aiy$WE1Y70{U+bTxWh^jy7b>uA@S{%Wn{T?)#)!u4|8?diWAWJe~ z^m?Dg*QJ1$G=}xnQ6D}`>}^v-H;k<@G#9;hu26rq=g7kft4qzNiw}+`%sFPF+?M38 zu>yIV@NIdMTUly(-^Z~k|Ij@kPaW(QwG{gF<$iWRFKazut7jp4zV{DnUwe63E=5NA z-c<8D>3HNbkGR}O%qDtaG?!O&vbX20XeU+C{mxxz?Xb7Zo+lE^qBsV@4DN=G34B1S z!#GaP!(Jhg6I9fTk8#DQ%h0;6>H{B-m2EnS7>$#hwy7PnpUgO8Liiz_jAjr>ZDq#s9zhf19Rn&%kyYXEJ3jFwM)K OD?mvOEL$yY9`+wQMUa00 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/mqtt_subscriber.6a7d014d.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/mqtt_subscriber.6a7d014d.png new file mode 100644 index 0000000000000000000000000000000000000000..5473fb770544dace8d945e006d30fb195e2dc262 GIT binary patch literal 5342 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 z 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/pgsql_authentication.079ce8f3.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/pgsql_authentication.079ce8f3.png new file mode 100644 index 0000000000000000000000000000000000000000..03f80a2696cceed2650055f67324ea5112deb9cd GIT binary patch literal 9594 zcmcIqMOz$9vmJbby9OAN;O+z+oM6FS1HlRI65Kt=AcF^YhruV+ZkY z38K@As{0na&e|d)R3wgp0bw`LS0*PnSO4$J`mP;k6u!ey0k0`Xf5T5fD4QxyVWsf<9JWjk zT)O8Qc6!U#;WDbY5ConZzYs8wOIEV>n?n?vLw|3cojDHkWdz zm7bpd#5dog7zo}!zd4$p3c)zCILlnQj>E{H2K1tSGh{_32-NNHMX;KzArLRiwux-^ zy2E6Kh{Vp7>xw@TUkZ9$ep;?u6zW9Z+)xhk^Ro(!{p#R(u%o#@J1?c8q-0rN%31oP zCkYziDt&nl^-U9w#-tE5(g+tL~Jm(H4v-dO3}V4;O5K~<{&1BhEXnFZ#8emB_nxBe=6SB z8mTPI0~0dd$+daH#XFmNtN6iC5}j{!2dQ*l+PVm+qdz45FaL-youlYy8^(Qy_-V=S!0=|WZvVm1g~IWfL@P&%*O z#9AbgvP7@EV&S0e_2p&3`I@^R zeL%@$nd5g@6oTup9Bylk$wT$mDRmxQfYNxUsJO*ciXomEza|{^wbSlMK_!h(m$^~% zib;Qr$r)#=9oM!ycMqmG2wiWUg&aM(Y>0~L`uT3U*d@Kesy$D15fblu^0&)8o!{k< zRIv7Lw4IaPneUQ8ANEUPu=pVH2^9T2b%676E=$-)@hb@i@ciZyBvRSEy{8|TSH%K))%Kh$^Cwfbo(AiAe?k@m+0)b0TVE*CuoDp8SbDa>#fjfx zvuP?!*vBy6u*X~_M=Usz@3Z~q4Hjs#Ba}t2O)_QEPIdE{OV;ZeGBri1`frPN+kj1k zfcaP|Gk9fixF>q(-b1z7@0;3O*0b!tI9<45ZN1n`!QXjA6;t#YXNwRrXGZp5TvZCC z!=8ae5j%>ZELPT64B!>inE+*P%LAfnlFVwpZc&W-_SJ_?uD3Y<>;9g~m=S333j zhJoLq25LTqLWycm$>Lel?b)(iAac8m)+QpC?OaAOv+frP$%rtz*$Pb2Y+k9D_2usu zgb=Ha2iKA&^$NFNloKI6@pY%29uY0B(&3Fo^󃫥J0p zR&{)4VP5nNXrO45xSO7;RWLskm9Z4DQelQH%@lXWYblbEc>SVztxx(1bZl+j0I%iF zlxkxfPUj*^8*O=CTxePvy|z1F@8j&?#97Q9-l%1R;iwg({SJY3RO9?~Lqa;!fGMqa0X%Cmn#M`1eZi)(!ALabT)p=%FV=V%`D;0HDUN)z*UF`QJ7L_j z$Rr~7x5QDMz@I|MQ^MtFCY#Y_7!5F5Yko$B@WZMbYU(NC%`I804OSpthLPOZ>FXA6 zx~mB)WYot0p#9C@aEqyi!6Hg|Yu9HkuFR9X6KhsZJ<>2IHf}b1a3VZf4A52i4%ibc z^D-a9C%9Nsc<^5(71H>-^jyLKKbrPH7VYK5WyjSppxby>;CXY%$m;NU1GDXFxT6H~ z1B10eEtAiqj^^)Gj8N7I%`2WompNrrUR0x7vejye$5~pYa=-LDmHnQzxd}8ISe!>H;8iuS3BTWkoYKh|U5L<)P8i>a6)F}D_weO=RZ^>xG@toM- zQ7^9Dj#Lq`Kd=2Y(Gh;LrLP2{Fhh0m>?B4_y69l{Y_n0Fq33_%@pZ2@QI3@w*-ky! zR!WkMNbTeItaxUXjcI=M(q!ypKCgF}I!)>WGDx@zKDA`(7`Kfr_d&41D0HpC2YE-T z=SM7+A6-zCH5m*g4F9=u{qnj-w=7>-Vt2m>rtnR^2NJ%vyTU!n?5_jya*zd z3*t_^?>80bdhfMWrCm*;Bvukk6kwg4k3l%Q9BM^c%JBoDKP*O`Q>K@2HIV#4h^>x0 z5mOb4P#E1tTa-W~kp`J3Pk9$fR1wPXfC%hsss3-topC)MziRB;D?y_mMc;a-WI+li zG$B{|Oz_&EQoRoM4iD8v8g7F*m;jOAal2|t%3hpN6I1z=ms2Wd2@rFU-QdX`x_E@i zA7#<7y|Qa7DF2fanI>B{6_+cXJ8WSR7-58rL zugzLJsXB0M7(Nk)5@_taxR&!@o^6UWpmWKO!y;aZCxZ6^(Iv^%4RjG5wlaI}oa*>+ zEWzOF>dD*{wZT7d&lG3gOPV0N~L$iTKq<9&M}o zS=#~!Uf{&v-PJFO+%l-#Sa7#gLDTmX- zHAmO5wp5wvY8dQ0Utff~ zmqGe0U7@`DR?h}L{(9gPYmTFt#p-JqL#pp4d4#zqCNWR|+00mwQ$U(0^P&$#>F_HZ` zpwKEWf-3<{1ah@yPmGU$wY*a=(E7~-4i*PEd+ELFTwQQH{$S_$*pgIa%KkMn%}x+u zF!{sI@PV5tAwin>H+5{f=;C-(KN~6VQjhe9q9KA2zCY~%BT{~}t%-ybXzeL>Rxrq& ze1>Hvp-gRIROycPU{xrSvLE<+SgQlZISW+B2J+~@o9dRDk1srxeE^fIby^niY(xO+ zlNF?$(Yt;`mnOL3T&b%*`#4j^x}WVsEGQ5!0pT+Mb?hP;oadRx`)c30YPIs|DI(0< z`HvGj)`w0oX4|ahgFU;Ma8K}bUAgMyUmN^&)fo_TnGGBPBs@VU8&$^>{{p0C1jtsS z=}b&$k}(;sxA`Kpw&mD;ViS3Ja|>cEkb@?_gdGTo06Lj zW&0`o!g!dIBUp+DCyX!>MFtRr1Xrz8Ui71ODORAH7akaj~Z-aA+TE zYW8D(B+)F|r>!4{M{u??)uO=Zj(53MHWN_F8oQ?j*LLutQL;o#`zX*Q!Cn2 zXFn?Z%`9QBp(SVm{%aHoC=CIgT~cQu63%EfkESR9Tm#^a@aV=?nhUtm+pgX|q+0YH zH7~(s%lY#2iAxnnt0Ma}ekg2TU*5aQ{>XuU+@_K32;D+8{UgqCm08&Wl)kbaM_gck zTeryMYBI9U^AZ@y>`709fTyH_N?Vvp>z%CNlO0Lj`$ZwGC=y&^vt?{;P?8wq;`?;3 zJjpt;uK0DEKHe35--aS=II%mmMnmII;30^n(>azL`?%38>R?c}`UFC;s5`@8-k9uf z!J2Y$VKaz*s+a-GEOh{*V&UyyaL&`+4E}K*m47hqL7&yfugQE6z?~Q&Fb8q9Q#hR? zMh?mmvEm9kf~(8WIR!NEGC8EEwIH9_apo!b27qR5F}EgWQ|L{^KY!Wn87E*C^I0&M zyyN|9vC%O#0#fSibBEH8;}oQxPq{@()^*jJItYo-uA*OH?NbtyqiUt+C`MtCP<)+1 zR5t^0X)XL5{MVGN?461SR}aR{-AvOLdev=CVbxq{&uaCK7S61Xq3w$zaAQ;+)F@VS zpth0gMA)H)hl48 zHO5n!WAZCokS`Z^WZ9tY(M&UVWm8=o)TD^>kB$Rg{g*p|t5;-HK&J4#ZLlr<-ITfz z3QQ%=#|%XBF5vfX8kj5LcRfeAMo1`@Dxeh816c>AA^i#_t9ChRD5zQ5NwoqZ4*!XZ zV`z<+j-}8bW#oh<$_OA`E_T7Ro|vJCWD2Ns6>B7mQxXskv`R|u8v7_CJ=e)@esP&z zS`oH3v_NU>92CT?Uu3*xdwnigXii~y^t0GNyU8l!k1rhd6@YYGKpEByyonF7^&t*I zbnA;j$ds-15T3`FL33B&$g+=w3-&@_Hd_RhZdGT2kT5tH5q(AB#c zbX{%I`pFryVcg2k2U~{q>BbnbgB~Z0`mE}xE+!{pMMcqh{bRVBdR#T22B8YYlrctx zXk_aPdA)ZIM<@uJfxq|f9BPq1I~eiAlVFu~-Eu@nCLVvoxNln z+oS%-@zcBbtKJfYXHnWF_AvfMnv{d8Zkv=Of_qNww?F#K?#A;K8D;O>^@vW1+&_)S zc5Dsl&qqXW`xtHdKf;29lggQ=KR*0%6%3Kd7G(RV)G2erSxL_BGwNR(;f_?(aBSA- zHIh>VNTvO>X^&y8qy7NgkdiJMk9z-ERZNwr;6@Gn;z=g$<3bc%oxxrIY~p@1Ni9~dWFQKb`X)Kf zTYUEC;SI%xK5j6LP~_z!ct=LzKeD5`Wtnpb7!R3!ebHQ?-B z?qT{`qNcH*&&_^~*6W>Jm<}h5ZUKkDpdp}umA(EGlnhM z(i|JguIog^&W|Yh2OQu*L$GL`t#^IR%Sd%|MKoJ#+U>KOAieNZ90UJY$DgCHQgLix zXd$q9p~2RZzsNWV1Z&$;wam}iFvkEV)r*FhAa92zq>=&*qbK0t*Tp@5J0S#G$$Lz> zhkJMtR9S2oA|@FFG8*@g`4Igh2(Fa>w%V-LiF%CxOF9|A@?;@l)){^ZG(pyO1|e%( zR*@rYjC3{ou|%UYb6v`E2pz!I-yhRNc>p_e7*z{>dwQ_-+zw}gL&=}VsenN#R$0|i zqAM!*M~sx~;`Up1SWPs|u;7Cj?ukI#XrxZyrIBe_Q~e{s-p|fOIsmK$NB^cat_Ky3e|^ zbCyH_$-Q5M0Q*^cbH{=I$V0&H${DigTGih49h-)_u6*G_08S~>j2N@x9=?@i&xU=* z6Pt<5pLZG6(zWu*a71mxu9<36QHPU3p-1cpGH~o8L|p4PKceybH$)hdmA4^Y+94Y81K*4i3 zX*{Hw+&bhQ(L5g-+x&%(PO9^o@~6^BzmwOkX!`pI@cp-5huIKdzV5Olt+rP%)kegM zr{YJY^$m<&f3T(I*nJ_pdB*kN3UsxXnLC&gLA}uM`6#y+8k~KXxuP z`aH%svNz+p(!u+8OqRM)zU1}~Lyn0%lQTQn;l-c`|GKAFkH^Bc5*7)yW1v66zN-PA z7)mTVSP$bXCk+3cU9LFd-&wbLo_!`=EU(6WoxH~ans){i@_aw!qJEnJ-?DDquQFz3 zJcBWb!=d8v9gI`>nb6RV7!1e#UKm1+-gT7Vv$F|%F0flmb**^Zbn^ShmM4CW`6sYOP^+| zl$*=qK%p#ag(^n`wyVagCgYhJH@)>v(GvyjpT>CmApVS9#QCZ83K!^p|IuvK`fKGS zC8mXfP#WnJZvnp@PHlW+p-^jaON|##u3VseE(Z1(p71jrjOla#-e`IXA**%;YR8`q zIpS5q!aH}*L%xZQ*W1!5I3L|PmF@;)@N1AMcGi8sC|r@UyDq&nXQ8*#)Kl|=1r0Kd zVgqvRM9Sw=T!1I;&=sFl=~^U$MYp-(M1Tm<lO90)lVXKjxSjtQ%oKA}Y#!Xg-ebP*3o54`%d)rKIk9MAJ9&3}I{bnY+&p0mNSjyb_ZgaN#-sAlI z`L6%F7)7s%?0`m-mAa5mozWG}A(t_un4 z4y#*J`zgX66Y1=mAN`t-_^+2=^@*hDqe-Q648z13!d;62eycVpp{h=Rxau1S+dzRy zi)8bn{>HhLb7jF3J7z9kAxXrw(pNZEG%<~RCSx-Nk9)`u_FtB4pbhu}l!S#j@ zXl~`xx!NWz4qN=O%QY^A3>8bLU` zL^`3#nsMeYts*rN6z`unE~AyXPN8>v82&YGSuJAIDF^W=4(YK5O4z_}!3DE{i?^># z6vgn|pQQFQ8iL3W!XC>u<1v?_&TegsWe#yr^5ITC#-Y&C6xTif#6d050nT2NM2R9O?GSx|`eH{#nh1iQAXF1CK zHj<8@(zz!+X;6_z>%vdabDKL=qiuJ?OEmA=CPkyccfokW*A?^29V+;T)0>LF;z;~< z`*HsAhijoy?7P}NyVMF&#LXb=qhBuz5NiJ?DL3&i?Or_nK8_v@LEm5JdiZC4pU|@4 z$(K>G>zqt((ITqmWpA#kMbNJyJ$kWIIoKCKNsmuyehP*E$H7dy=L*@ydZo-<<3UTg z;@k(1=J6I{%1C)fgLNU#C^3$Ab=e}qKtt#W&PFyy_u7HDy=*vZg+i&>b>GkS+?<|} z$XrhSuLg>sjBiasXf7Do)s$FPa{8$e#psa@O#ac84$H~6%GH{W z=ARq>q`J;S?+NLU;Pk~DcYv|(RdZz=ablCA8~SGX{`>6nG>MX!me76A1GSvqJ$b5X zsg!mu82>Q$eJL6oxdxi8%#_inE*_?9|%_t zT(&e}GuVvET6R2R^qA)@e1BfgqTeC|b355?_gi-YL!yQs);#Wf{#};ZZPTfDEBb@o zYk8%k3m&d^FHfF!is(>}=2CfVmWG-ZK3@AstJ=DD9y>-^0@JBbBwf^u|cqFt0-YpI< z53lN-eUcS9`Fx4~=`M6UJaXGA36gm<{bR&IxEC!RV zD?`hZ&@u0Dq#yOvJGzgkiWBAJlLg9on6G~GS2g2##(RTb29uTqV#0LZPg*MPfIDw| z)#N&r_yY_Lk3nvzil=;f1ndsyo*V|@j77dZlQUY(;&aGI<0_HP8)#Kv?Ra8H8s|fK zUaEIDOFHLGIRlo;Pr`jPAW<9~QKeU-s1hjFZ^wTP-z%s9|7C5zk1~6qQ0xd9SHqU! zA>l|`OEYgzAgbHnXEY=5ukB#a#LSuCcY*N!MaG}YqZL()CtFto24U|1ZDt%bLGRm; zM}$ko!hSbp@$~oaUpm$!!HF;M5$>K-XvbgQpM?qLNk`{5X{mob zp;#A`y(IRh0Ay-KoXcAlDGHlHx4ki2*Y}<34NoTp7E+qTJs+jYP?d0g%3x34E3wtW zld`XnQ+W`@&`aoMoE#slJ>X3d9XU7X)$<#7b@VRL z@X5$VBY~)>D(crp3IYl{lh`tcP_fg0%=LU#h_SP2{!ftyr z*-FMF{?}Y_$HHIp>j${2npP?E*5Qy~*w2B&6WB7{hzok}WKy0aOSuu=t;wvzZP*Kg z52m`F4jEp#5EG(sL69wS0&?$cfRQY!6J;u1`5Z3c zc42LFWK!cfDaN*yg~`Hd0vxqRuecctQ>Ow_v;@#o&J?J^DtVx;s27eB^fH;u=1)zc zN!JMXL$4zfr^nSe0n3VdsvqpJizC5CH_m1P4?xV%^(BjR({jb|k806jBQ>F>VyPoI z!62Yc;V>V|*zHSU)XbDyInhr^+pz?i&cI$?UIdX_M8zZ#VQlZQO}-YzZ7AWvP6 z_~Mqzgv8vI$&J=u>YE;KvAa^z{8AQ3OuR0>W4oH4abnrR8#Qb*X%OZr>>5CaswVzQl|nIh zxn@f>R6cD(s5B~9vWsRW>i6f#K3AU{w8C=gYy13 z*5$IEJCj9)V4F1iA3;=p!zbMz!$ZFFa0-t{>n+9tmB@-yi*I@2pSILPBo2Y)!f}oS| zM|}q0vo^zEWQj)+Z{4-SW;GH0l1##@_-M?)TRTS8JUCF*1U-KsTI7#pOI`dzX$3Uh z?OgY+{VMzt_qc<@74=!$SaGFt4M5u2deJj``fB}F_27@Fcn3Sf$&Lcv3nxA8!t@6e zx-qEiXOEfqdJRm$L25Y@6D>0>3S>KpQfQ?PsoSLR%_B;m&BeK;a-Cu#hwEg;K`A5* zdp1QO;IYpvEYl1a{(5Fb8MQg2@SpdZn&eBl5FJx<9LGYefZG{cn;hj+*nhr<41Fdm hp^E$e0VsJzIB0c|t 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/retainer.a07ffddf.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/retainer.a07ffddf.png new file mode 100644 index 0000000000000000000000000000000000000000..d879765f81d41dba225c03f55f54f722f2d8844d GIT binary patch literal 4265 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/sasl_authentication.11e2cd6a.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/sasl_authentication.11e2cd6a.png new file mode 100644 index 0000000000000000000000000000000000000000..c7274dd1691b310f5e1c90f0f4bd75a47fa21c3e GIT binary patch literal 5894 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/stomp_protocol.14cf6644.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/stomp_protocol.14cf6644.png new file mode 100644 index 0000000000000000000000000000000000000000..27f9669faeb554f602a61c2aa6490d9e04d7c659 GIT binary patch literal 4360 zcmeI0=Q|q=+lLb&Mnlck3PGtAdshi!)QnN7twyY(R;{Yo#3n+m+N;HFSM91%YFBHk zqDIZ!sL|BZ_aAuwfaiEVT)*?%?>vs{+jS+N47F)#*l7R&0PO=Eq{&~V{ohc5|K^s~ z_qTrm^fS>`2h@#o?f?Mv?;jx5%z}XXHo-Z}vkdhw=U*0d%{vD&pcstRG}EzFMS@)P zGF9Y}oE~Q6AZ{*lwaoZm$2_^>?8(^U%QT}j*LW=?KNl4>m;Hw6WKaoj_Oy zwYi{a?mFfA(DVBiBNf;Eiw?Z{pO;ZQ;UB6|5|Ej6uLuO7yIdoZMaexgRtvV?dUhMLEebndf3Od`GY9jYrbdF^G z==)&Q)2Vq~6Vl9|W0y$@x(i3iBjd#pY0f9Fb}z_)IuyT0Se~l@^sm&_s7|U(21Wge z)bw1k5Ms!w*?^^OSjn~bbEjELSKA}j$$n}kI^DH%W0ce{8Y+KyTtV146NaVs(X*eT zg6)rUolje7^NM!*DtRu6i-b+Xmu0;firE@{F*{L?LrhmEB2`eC@j3qM2&v+li>c9icazS%d#Vt2?ckC5%bE8_&fF9*S)2JuU4sMN7KF!-1>XR_>Mc@ByltbI0Z7@Nte5am7N-cUk zeL5-OLsyo|Hz=ULBbUF7Ou+0TNnDG&=`7-l1hyL)w4uost|l@$MBg#jaPJ#?T#B^p zm1BoFA0d&PK<33WiqEupWK%8IlK(homu>diS>vIZ_MUuLOS|WwXKVWOHeH6ONWYdZ z;oZ~${T}$ug=)-V?3m#|MdNv^xIr+U;p&J9Cas1aPLa--dLu#D%19BlqfM6fmTy=f zi^mi$J7Uy*>tnj?8Q1fTrM!jj>?$4BPPW~u68@S2H>!<{{pfdZ^QCNYkOs&y5FELk zcX&GQ_G_O*MMuv?_e1LoFAM%ghh*n&8%$%LawdOZ-oJb2O&?Q5Lm4d5B$4C+c7$ub ztbPutnfYz`w}dbrWnWhIMPESKI09~@d@~fYT+Ev1^=clcngHG}TwQX1NZw%79UVPj z;$U%szLL^xkWGs=87ma$+%Di|PlfaKF^lTOPZ0zfdHh!detHpbT z=D0r4_4}BYayNy+FVQJsg=O-PXQrL_ULG5t1o!B(fV^qQekb3}sP}fyf^4OfG`%Ws z+Dygfa`+S^+`I2ynYG`s|5)&yZ|8SnjryV=0LAG7=Swe0hx3aPB#b$#?DyK!&b@Ab z@JTR~YoU^dUY~dj{|u`#StT#pe)lWFdO9iEC#nX`Jwsl7>h{Au*q5bQnM8)S4yOQf zN(^H0cze*)-VAYD7Z$od#7i7runnht&$@0RWChAS7X;|_>4#7!m`usJhV`wqpoJ}d zH{?bj0UP4**t*e!nLE=`OA4f0&T?O+JiQ$3p2SJ`pZqn;k*85zB+`g3zx#Hqt&x4@ zjWtP{IPbs6t(wlm*mss_>CG5)b~Bt=E2_dL#Ek!Z2}YP1qhtwbS$KALL^kLNw_uk~E@P{X$UnN@gv&Fi5efTeg|Q<@bcieNkXfIV zcFoT)=19VSwgc_<@b}x6;=44T*gjsT2ca6b8yf(9Cqv2KM7NlYrrK^-iN@h7Z>#?~ z>bra**tzkXf3AJ2?MBh&@z(Un9^(}HtA}R$oT{)NXa5~69oX3ELeKr#7c`Ed8emeg z$9g(}1cI>mOC@`S<13#lZT?J#eerwoPAwVBSryB})8UA9=boqn?c`|g%aquze-EPO zD6RG%O%pXMEFF%rvvYejE^6yZd1C5j-P>|ZK{8s_DWlgxd>c@oD#E6JX?XuKpo)a$ zF=)u&UPv}HP$KXL6y{X5acpC#dU>~pIq7-A1JJd()QI3AXgLceG;^-uMlN?S*j*Ac zjgl5G)#h=3bR|MtP)^w|C_m53Yo^n*anWD!`um>w^HZlSC3m4#1M!>2VrQwsS^=AU z6J5BU!PaBrmo=$ciMx2Yp3D~7v^fh(|7lV%#^FVF4vFfY}5Jh6fmdc5}~+WW66)-3m6rxkDYn z?g}kGCpPV=8rIi}*zDNDI?nQx^n5qQOva zk-)>2z(oR!f#y(zc@zZyX0>v5a?!;Sb9b41s#B7ypy9caof@k!T0BB5aH3VlwkeFu zIl0ZAG0f_3w^9$Uu8;Krvg+Z{TpS}AB7zqz=DY6v=Wo+LG)@fvy;+ch&gUDkqs=H&@bO1u;8 z+8)=?(46entzbH}zIGNg7+zJR@(`19L<&?LsI;Djqh6#$GLUcJqrr<4h-bek9LLGR z+oD!dZ0?VIT||_KmuD(Fvc)*n*ghv0Gm->Z4HQ7LdCty8mDi z?q4H5`EaSb2$U>v&vVeu2Gbq2fjL(g_i1bS(Wl)?e zQKC?`?^NOQHLGB*5}hzw1qR^_Pjw$1)LbPXvMvlx9^%rVvF`e|pH^{wLumx3N3g{lJB_(9+r=LQ!c7BO~v~6Z`Xp2&bQjD^H?~Zog zJV;fuk`+Q%AO+B^YiE8}YgdsYWq2%^$zinSkK3GFSc=_>>sXTI5d7_JeYL&h{rxp` zA?n`pq=h42xn(J#uC{@zycPo+5$6o$k`cF6Yhz1b)~jR=drOh2`c}0J<<^{q*h+0G z&Y15puSpED?*oR(P8F+>vVsx`YfnvOJo7cG+jV-P6BKSU=j=B)7FeL@6a@gXs+Vt` z!4k;~l4rbQNrCX#$b>Bo*KZ9YfIE{`ZnnfXzI0k;WA7#T^khMm#$1^;bnb>=0_i1Sf*D&k#;Td>=QLd(eF$qyK{Phy}djS zglV8;rIP5s_-7AW>-tlwGb$t7w^;dg?{6bU?>Lu!sI<1dEqT~blK3acTu#0)pR zt%;I0zu;9y#ZEA>#9yPVikTYi-qReN-w0N=U=SM};hKxs4iZ?w7WouDpv$V9NBGwm z1<|skrv!`~bk;f6%6`6G5P`3%>OMne~ zm37&s+?bVRKleCY?tl(p0Fy?YPt z8OSs}uj&q!S}CYTI0lzR!(Aa0ta0=0GoSH;SL~hIA-0 z!XKA3y~Fdr3E5{FNlFhta1+S3X*TKul8T7s1E}L|D6Z|thr3G_zz#LfxF`7CHUe2# ztq_fJ7P`HpR&&&AvnDR9w>rcUWf!MnbF26pHVWKq`Kt4gqXH7ncSIlW%YP}1JTGrn z(kD3fQ+7$5NNuOJ_)fBCH@1G2SNC7PwQ1$6)as_W0o^?P2~va1-Ztz;P)k|PHjUi) z7IAe{HB*b5CL#l;Wd+EAVY^mRe!NJ#c|iJ>9cZDV=mCi)vuvIoP!FID{t?z4 zEiDy%kW|Yuk&h>MXHju2j|$(bR4(>j&kBzKl@>5-7{Az-`vIL5*|*j)ti6ucKbZwW z_l(wLvvkPj&4J2QS`nHROR_NXqNM@pEh8IHE(6K*Q1F*g%HR9c_hgr?8UmYuwB)Bq zVK=sCrA^ong>3GMP-no$sn;%LQdni_&%R0{fQ(Y~gpM;H7*n7cJ^&uMKk0>E@tGg#bUYfQ{)AgjC(C zN_4%HGfe4Bs!pl`tLOz16RfF)-08mo7VXd$>K&JLR42mhavjpMTVL~r zgbhVa1nHGw zz4RqbLW~EcF2}SmMewt1IH4#^cQtHjF(&X(Noz0J8XkCWz`xAi8(D|TYG@bVy>byB z;VIB`&{T4-bf>0cPik=>Z(0AG=9 zUC?4Rr@w~~hpi%I9%H6yp?`JX+@(E|N?N7BsLxmJ06o*HfralLRBK@N$?Cjql0@;r!LGwbYDpaYYsLNQRTY+@$%a8{{Ad!s~EGdt5Rft26vxtwyd0R<0X+2 z?N=RX5kj36d&OgZKSSqN;#JAKq6lZ@TMTBoX7Fc3LT{eYl2=J{*!lgBwjvk` z(Gih!gti$_>N)LSX`M{uV0&*nnA5SdnDNr{y7kk)-(MTz_ z!$-W~ga?7tnoSn>9lwWHBaUyGc3sniSr&6OzAB%BV@o>rh&EzJX{&$8kDgYUQl?&= z)@%|p8Rr=z5))7q{7*JBPd=S(Mk6=JOi4%BqLO;He;qD~@Sk;!)(y1ZzWYPKTre9% zH{X0a_A2y~+{i&xBq$Teay2x+%DC%dK~p3qLH8bFj7|@J%2?K%-)&iavp>_Tygn)C z0d9)2kLQeRBlsTHg{V zIxSEdOHeGu-lC!uhdjK5^6J(No_hR{k%e-Da9qZ`O?;Tqp1Pku`r`+Ps@k6AQ=_u= zexgfk2Nb5wd9gWhtj>RTW{?ONZm6|DCxUtMI&d8SR;@6(Mw9J& znz^rGpk4O)>>{fK)(m$hSBRjJH4IImE=Jy=)q&fv(fE8lt&qw zszl{_V3~BmTcfvB9HDO*78VwY@9)+=9+WOHwX}@e7hM+Z(=qsIb8NsM1<81PocGID zbct*NO=nb)!%nE2$SDHrv482bo2!4cJ6+mIoUp2sTfPI!Re!C5vu%I2M!9?AL#3$r z%xZb#{*T4ed#-rBLnT3%+OHdCa`D@=iGP))xKA#`kMO_d<#pL@zmytEEb0~TOzkJ{ z&CqyLo=2AxWIQs3qz}-1v&xRyMddx5EdKW~{h&S3Zq&b;c(!|5@ZWhyqKRJ# zkY+y(deqew_a?q;$~Iz9(}AZbUpHOJfZc98G5Lnz&~z_3yz+b1pQUR(W5^5Ph_0>C zQ=Pd$%F6+KPrOrl1m`YB&a`NJhCv!GL!R8I7?Hsla2JqG?cL31zz``ORuaIM79S7x z6WI_NL3iQp_NZt3A~`iooo~`cR_qr=B7}bkq$;`jrD=v@-~sEgJlZDec#YuBcV;<; zNL0NlOQikFqB^Hjq3#mm#A9~EA6B$adrdKdofkBv4|2ms;@7WD1tjTCsE)I0yDoR@ zk7oV#QEEm^=>OQ-!*?#Frxubzf^ruxU9n1g9oe9yO3uCw7o0;M&dG{Nf=Y7uPYO+) z9#1K-+&QPglN1$(LFd@{KLo-M(Mv|Bgd5kofQ{7+nB6Pyv|3Su(Fdg-`IwvHz8g>i zd4Kiu6y(hm?5yv5oQlK{uiF9{%BQj^U+x0nYS(XCzTNQgBtjm!JbGzE${$)2UR3US za+GBSwFMrC;H0ruBZE14(|_O~{@S;~p6T%5gjD(N3C8T32Sg`{?%h#c7J~0yAbxtf7fLKKy^|sr|tV=0VGndBwKaNs3iMVs>i@E1{VX>M|yfRi4~cy zEn`y0(U}dAscxTxzp6!-RNRpazZn+!%w>$`o_Y<)dSCo%{qD|-W_5J8|i-yFpQnw5KiDDVjKaX<|Te}LAb?zS=2(*|m>T>4*MfIGR9xV2U**I*+&=vs3K6O-GvYW$AE?%G zMMI$f`gaal^qMJ_ln-h2pOE6mCCx%HXeH~ki=F7#^)h9LUN^j)>Z)I>x*v=~=|Nhl z29i!&9q^+Xm{OK7`$_y+2lhHJ7<>Sr%KGPOeXPZr{05B^e z^$WD+KM-TB5gA^9H73M%#(QS$b4d5T`Etl)VQ_3~U773eqI>Di~l@-ae##(6B|K07zUQ`NwD>?8Q2ePxur&Zj2^ z%ZCT{e(Ul|9j3(K)UqvIU-{E<1iZnvvOf$(zHLT6%+B zt44&hZoyN4<2+#NbAul9Wx~jMEa@+N6c`R|x94&0ySEWlU=N9n)?jRruVvDa8YjLa z;uwjj{-FAke3vas+WJ82Fj2ryZ_6lZ11FSf+(qagAG4EV3OF^9+6G{YjzllR9lP}6Ul z@7;g9hX{zUGOqT?Y+$P_{wj*ei3MsQNu1R+4%HO-yG;5LgJxU6M)uybx{_iOlkBjA zO5GA>cMj8Ap1)qJ^QXF@RI}x(=THiOlII6ygy>&&V;M8OP$0HeU`<0$dfGOIA%2P- zcJlq6M%%@#5}@Kv{Wv6@%yIMU!z8=g;|WJHt$eMbhTbCZFn_`K#mr~y=M@VN0`|A4 zz%4Q|PfabQ#=>6kBTX2LVn6SRXnstdd9PMW&dRayJkT{j4GHR8#&$Ny*OnUh|7>B%y`hK^XB8v* zecdg3TtDvUQt6~3g0`Qz^0!CnJA23JI}B(XWXTCl2FC1E@5De)7A&>vaHE}P`pcZwSmQiPvIUltFG$L{%p3UOn65!SWxq2rItCiY4 z&}pMs;+9oOi_hAN6`u*p^1)oWPx^VLwka+ysPIm6_9Tdyol$Ews zh<)X0r*)=XoR-9@+I~gdAI_7mqgidlMA`shlI*Dt9*2WN$uw}IzCd%%euaFg!dVt- z;|{7RbK~;awr&PH|7?hl$b5uxZzedYWw`ZeWMTf_mKZPDq}655zat>Y`qa{I{Ax3I}|4k62$c?)U8r4|UDRn@{Mh?B;yxrli}%eD^h}EGlG& zkyyXRQP9f$4f6mEE^FIs%M+!mt=}|pmPHxSsN=GuzUiX=$JA1mcmExhDNb@VHwNzJ z0O6DV9Tcg&P2`zYTT^z@`@f`J{I2A(wX2{1>;bD-K;#bL?x> zX#r^x*i*Eb5|Ozz>*G6f|dGvG1tFLQuZkr(1AP}BTe_| zAvkAD)f+mFWcHD16A9Bm!1&q|qw;N(NeqpXf&zv4NcT#`{i2m`7qOu<)BdWP)r#D- zhBcV&gM$)Hw!NPlgDWetFYL$LFKr$g{+nB2DkB1j(482x-C`!b^VX5IMrNEHws!sK zC^pUgyikeS=m@`L6bKlU>$yMkb(E7>QbDgZB;Vd+icNe|{kq(G*7r=Vk`~*Oto#^S zWGK2tqmWeiFo7V>zHYr~+hGy+tK1Ojg9(h`vxeGiZD`fV&Nb*u5KrLld~#Z5Cj_rS zpG!IK!m{tJC<7;qiYEPmKla0v__agPg{fxoJ?*wx7+S~SS%@sg)s}mHFAehC^^mz^ z?oWzML&yhO*t;KT46RLQzMN0VXDy&T21Bn6y?>IlTHXwyyFPx7qlv%bbq^FeQxWC{8vRL2$!l!VL86j2ene}J^%pFT21B3QKjTSkABWd7e{)_7Q61@D zZZuOnAb3>BPLr$O$)=vw!YIDB*UgOQslvackeH)PZ;E)x`9ZMZ1dqZYs9hahWj1{~ z*%{xmR`XxpJuGPv@-N%nCtHA9zu;k4%I)3F*>F7Gxc)(3-@YAZD?gk(0|$TH9$=Hy zL88}Oa;;!*BovsJKqakU{C4EQI|J|J4M({h!N^Y?mWDMN>(4o3vUMkAkkOJnC508a zICSB0+b$Qw#iQuZxf}Jr0Sk_TmpS~(JtKBylhhkz_&MLp-1uS*0bKZ7RJvyy{VpJt z-TB3^@?CzOW2I}W9a>3w{jA+nDfEegMmhR*3!T=7Ldk-XOiw4ZHw}K!j-Aoxd}*aX zRK;Z%kN(%9GRyVKgf>%U=WDXc>D-JI|C9NS#}k5BeXcfLVJ6>?vo9ig5$I)%<&3on zS}B!$$QaYLlSh~w>sxN&qe0ZW68NUo-4i!~C_wYSZJ_tXh%9*oF3Apinf<5`k>7Bw z5U9fSonucvg8#45527Rs&C(Tp*k#|-ApI!PrWS9IW9TuC%gtczQF^nmeBq1ubGDz2+LwL+_5rjL*{9 z5im2AFCDAzeZ)3*NY2&g2?YejG7NAw3dnTfz9s3u9K8`L83Ppi6p+mw}nkq;J;0#FTE`WJexcNWkJ1}c% z+ebW$m6{Ij?WrJVk%^SNNhiGp>oMfg&qHf9t11MUJLOvz;S?0P#2l+-OM4WU;8BT|<4W!R7nM`tD(di!84?5)iy<}j45_iMuWeTkC;b zFy}uPj06M%(Z8xh12?dzuChF+@(1e%2*etw^5n6;FPM;JAI~=C-CI@ojHjM+D2y8_ z&(dj39WSazD_W!QW?)nGZ^uczN2b1@yRJ`L;S$vercki7P**c~IY}?MD_Qk@8MNl6 zX!rohm6tRb2;2~f-Bp#k*5b6jlQ?lZ@y+55;&ICkfw)kbo}Lzbe(G~c47x<6cn+p{ zeZtCai^32f2s=#uNSjwt9t5Fg;zEOlsX0MlS12{7>$(6Fgc^aiyF!gdOF>}qQU~;5(wifT&o$z+BS)6o<;joFwkf_ZmFMQ_@|Wu_ zPp&}RVMAA<6yAEu-p4ekYaGtECrQw9dCC&Vs+WkeO@YYMh}kblN8&)-H9f9Boney4$wh1~{%eK$J8K%N zd}vT|dn}#YB6?%sl2DGbl`Uze+kFJ5__kiJIaFmnzUX2$OZj=k`F_G=;ZDOrKt)HyM*1=$~peI4nw-I|p z)pAXes_FLl8EJ<&D=xq~68SLWB#(OY_Fw=4y;n$RE)VLBm~9!5z#hISzB>pVtRi*L z(0A;-`H=(+ErA>cev;f~pE2XuwW2H-{K?dU*=(??Dhd!@v|Qx{V$~FUO~bifdFw4f zVj^XM)l=ERtldMMDDHj#bg>v~ex$J9dPwF_AkSN0S^U^9><%LQZG6xEUh>n+RiHm47v7cVIxVGW2)0qU zOVQeI$2LxS+MqTw$0)MlM)y;>9$D?*?pXbIFLD~w}a?3ZNW^+cV| z$}Ya&(rHdRJ0*`Z$j*j4{%R{|hqj^rS&j~NtY4H_XF|)rd`1c3y%i|IQhVFJS!WG3 z)%q2+ZsZ)tY$2Bqd+m1}Ojc+1qebXyXvkMXtO*)g zOwzW@d8_&)Pw1}Ilx+BE>N-1h?pv5&@N)~X@n@;m&nY`F+3BcfqAv41^(Q6CjH#FL zq{A|u!Qn$rH|MWFMyX>K7)O8lb#>-d4&GDmY0iG|qd#%{7k!i2jI6xz`=69&<~3YX z&XVFk-Dt?;KoEN4EIZlNW<3ir@wMfdl>pBz9s+S(ZTW2eE1$}YTs;LhG^cRi$-~4# z&ZWAVLtXF8MaLEs2g>UEvK8W*Lzb9lP)S|>Y{$~iTJ8mIr$Lw-igcUrvwQb#(Dt7N z48b`O;L-4rIetRS$U^vwiusU+;l|fb-%vtpMVt>!U!Sjg)lH2rwl;Gi*gqonx#MO6 z`=TXXY2|a2rH9%bgpd=@9%UJ3M7$iFiQn!+_~5b6_|`GqY(zD+Y0|Ud&3;WcIFuh; zZkYARibH82PKJFbQs?5nU)Qhq>kcz-8sow_TkdPVJ~vjFj5Czjc{1@BO}prDVKoqG z_kdQF-P>FT))2H3OwL$KNEF3K-at0R1sK)i)L>`Bfw#5XuKwfOMsw_MWVrG^7uTd> zdVGUlJOhTex7c~ol@im#lk{hFlT?5@-CxQ02uhv%j@eP=w2w{V_-~~srZD-f{Dxc7 z4ZftfR8y+##yjQxJ)1%by^}Va6R$*OX5;a1#ErtOl|kVCHx+m(@xfiXjGYHJ5UJN6 zuFhEni*l_k>Bfq!=1(*xQmcQoLfzf*G8(W%DjOb#f~*mS`!~}UU_9y(|3p_qr}jNj zrs14>>rRFH$KbRRiaEwRdoPFE0mH1px+v*`JEAPG|4eTGxa_+LdBFJEWXw4mlxm?zt&baT|7AEBa# zG!5U(EadKDpC23h10PcLNzc(vy*^+R{z4V$Syfc^%*x)W-zkGi?G4FnWMdEyRBx7x z^!*aGMIR|Af;7!uc8LZ##va}DeMl3Mx>ze5(ZS1ACIjCZmXtZIMgi(6jDY_=BJ4xjkFzNN+-C}jV zq98IdU-{)4(EGAp#o?K`WztcwjvE7_A@p?YMFkx{cymRft_@Hu<4_Nv&__A_P3+7*F_ zlSJZa#B*{*nOhI9`>;vzUZ{#r?{Rc`{m5| zwG^MPm{(=KF~(1``T%kuw=7!WAs7nXHa8S1+liIG7BE3|uB+kVOr`Sq-bk<(A& z@-Vt}o|QZquef2BbaYjSGE@U2tFr&P?I+*)#`N7{Z6WK15%PFJO=f}7)ID*(HbK$J zn=a^hMeh|-(9d#UCwWnGk>|GrPlp& z*a_JtP~YIX9U!IdeR@l%&OjcmAG)b~`8(!9eM@%(nbf2B(bV_^wyozCu5rcX+xzXg z2T8IjHO1dtl4&>%R^lWNY!lM-cg=}4*4{;~9sOFr2Afnq z4NEJUqvmiM+Bte(BMeh-{pvGU*f3e&uMe}kSIHH(YQU)JJxDBTF8o=uaE!zxQKiGq^2`o$o=-TZX_WnJ z6y!rVh>FbEjGjqSzH7`fZeKH*W}sN)MleBd()f<;b-@$Fv}O-)e81TG*uUk))Lotc zDHO;J@huV=|DaD%ljNdkZ}c^sc`W>aWH!1pSf-)QMd93J+o>|j_XM8ddlxC+x9ik% zX|4jMg%ZLqij7!AzI~J~cjfMW$;}5B6VyZn@#VtYxbs!-o%c)b;}`%073K#r)wKrzmkEOi9znQLhdxw?WDrzyg1nZWRG3k9CM}h%hCN6 zdd6ZK_SGwV5m_(Yuo;%Fk%W2YIt}k>H7T59EiN}80r$C)jaorK;%KCm2CQma6h;2m z)s>fg^?mglOy=D<7lMdGk&4~Ctmt|@)*g3W7y~UaR#mgn@KGDgS*jG(`qjjY$dTAt zWc0!E{!R&NL!~2prY;6u&fsHD_VVo$XK&41Vqcun%Pb+M+hSCnz1QH#m3v{y`M zwZkm!X>!i_boBJBiQ2~};^8$76VvT9x#N3x2FAE$M7Aq&#T66o-y@8kr5!1>I<}V4 zHS+K#y>PuLPi)BA3WytNN~TZOp5IkwdyeC5i2eq&k! zY%k-_uFSMn!Xk|Kp~exe*%ktoxl9srfvp_7X}OXpm_i=4@*?ROm0X8CUVab2J4+Dc=z&V6#EO$xEu`(|*C~r^h zzE#ZWdn%c(#uKX=crn$rb{k16QqZ?pqmUhM>GYMoVK9?NqWEVyysd(0_@mN>f6Qho zri}x9lZR#>g*xLd9{psm9&^$9YPVfNx+0YUUy{=EK|TJC$y?@--zHmK%CSK|-wlX+ zuK#pB85#X<>-KrPKA_@G_d?@CqNxV6MpB1lzdj=eJBJr8mU2pPf)v|rc#$xznL#z} zW#`6S?l5xfaiIe25IQk#7ROe{17jO6|7}?Vm_H;%4I(Zo07?^%^Ph5|xokEekO1M=q~}CZzG+<-*kV>YaH9 zqc>klIQEMLymsywieu%#vZ);N~HYcBRnpI^iNZ zOy=k2vw^;=u?s`3PA8kNll(iI z*sl{$&{3uV_jZC%@?aB5-1LBahG*iFYpKptvcS5_=0-;D3C-e;raye+{@}!5(AbMb z9-O6qc*mady(poNF%z^a4wuPb*)7J#=5IFlPFQn{57JicoredFP6`gg;kk>8R`3sk5JUa% z(ik4{DIG;k_iScxltSs}H7{<{{EY@Q!PpYQm^wJfQMKV=eX~q5czWCXF}l`vyCJ-E zxmI4?>;Cq(i~7^0eS*ZCi(z+b7Ym*01(_$JFO6Z7O^+^?-any2o-s=CzEr?!rT`Hu zvg5Uv*l7aHJPvH%IIEJxgZE|k)5kgA#ZC2XCjAO@RxH+Y;x0b~TG;q~ip{8>w3Hq6 z5%Q(>Wo@m9$9PxcQM`-EsLn<;_cJLQD8FN8c2y3q;ebsvo4z7AfetS=a}9MK=7VZ} zoma$|8nmqVFIK2S8kIZd+n(cjz2+$$S=gm}+Hq7dYu=v^(2L+qqH8`;reHx>CKcEyw29E|MgxpBj zV>8aa)fOkO`-?`ut&w_~jth}D_LStfPP`ifzPjo^KEi8B{WSpuN#dD9RKn-NJ~*!V z=mz+zIdg{uj2yemLYHWt&I>M^rR|5^s`hu;+mNN`xL76x&qxI0WA}2|-(?7h1N;t+ zF<#N>|*t)JYBYOMe zcgqJvC>FA^BQ3ci$$ry|MWc)I=pNRq#i#6q5u#t?-yUQiIpbk9M0hwo8)<&leXu`t zW1qJ%NY7JPzuS*3QQ0RNm5OyAfaFmaJLQ2{+Sr(xe9i($vLZZ~pgq72re~z&^Fmb9 zX@HS;b9+d0RjKb+OPwGG&j+XOl@E1T0yHivNx*n?na-fCOcBK4oVclJ%f@gWVg}5R zX1ixXrt`z*$TU%twDy^zl?1?{s!5GI`<7Bh{J7hlm=NvEEl)})?=3V)<4MU%mC)!q zs&dQ6Q!t&TVP%Zv?=lyn!${{ys>J$WCmr_OLT!@?y2p(Mt*S`>s%>$G9~@T^Jwm*k zQAEc@3z@Jvw!8u1w+pnIs2H2ec#~wPCUf) z6K9u-^QY))2LP5wIf~GG+8ETdoPKiXSEs{uI@zekuT&r0n0Cd|#8&>bQmb!^Oflb# zcGZCJ6R%HW&QGsuJ(@@I{eJ#bg7$Z7N#55pKdhgQP^d*5L4#03V1OTTp}t>ai}k$} z#!}$!(oNqbSAx&cALMT&&UWte;+iD~N6Tl1bLT$4fS4=4WpC32OY!3*p#0mXi$qRs z2MD|LNfEyP%VQAa9-x!o<8&v3a>i2t1;SEk$^fB$^B9m`!Eg0AL7`57eadaMj2ex& z4*bWjKh1=IVO9!&$PpoA^cn^C-o~pjJiTw4CwGvfW3CH z-+&7g$^>))ruYX}A=Fd=klO!@4+xnh4ZzlB+GXb;_=zq10wjE}e;j=SBL2WVBD7#S!u zN(BTKv}tvppys~{)H(gwR|Q0FDzLhj<18qOP+cG-|H}`mvQXLi_ZGe!hXLPrhqlc0 z&tUl2b}Fdi0?aM|7CGa|!4WT-Uwohjf*%Etr})|uVB{`<*;G^y1~94!WJG@FJ;2Ne z(0n&l01BiDP+N*Ri%kE%4&`V3P7mb96W}B!zr^i2!18N=WpW!bfW>?ui*)oKkbq$; z@<8fbz5g0W4IRKczaZ-?5Yz)8c{MCe9>_O-z&kxdERdPaK$tu_)VTm0^gud9k@W&* lQ^3)GVE%uJX6WTLL7Q3GI_d;H;7}5zqNw?#QvOBQe*uP48#@31 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/topic_metrics.ee87579d.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/topic_metrics.ee87579d.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1ef973ca6395690f9b8b6a9d715ef120caab13 GIT binary patch literal 10218 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/topic_rewrite.676de860.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/topic_rewrite.676de860.png new file mode 100644 index 0000000000000000000000000000000000000000..70c0914379fbdda58d7b50f584476f18b933bf01 GIT binary patch literal 7171 zcmeHMS5VW@mrgqDN5+lq=lA*-ULAb0YPeLigX3(7@A5G zkWT0c(g`3PLJREgUmkX5A9nU}XZIoVo4NN+?m6GN_k7g+Ha+|3PRZ0 z>TdB}Vbve8cwrlf#H4!5hQjtoDMCi%#-kN-?@T`>&}f5rT;G;m?AI+cK8W)w>xY5B zG(NEYwlM9-${+~C3!V^=$4xj0LZpGgiTyS#5C(Wi-FaY@8h0V<+GytP@R}mL6RO4Sn;t$t)uG7wemcynd7-|`d8^W?pzBjmOVlmgEIk$Y z?&*!|uHkPdC4bpn+(A=6NP2 z;E2-N$EYegZ$)bpFzlPvnHWKhlB;f@;e$1deFz$5C3b&VcGjl18*|Ymv58Tflvy!&A1e?g)`87eyx=c%=;-?6a%31G z3qEu=u393xu^C7ibyr`)HY;n-Zbh47djiu)61Qxgs(P&*({aO(^*6&rAVSEZHi~w$ zm}D9IaQ08+>%}R0@z)@Zhhf=`45@_OjOC98s~B^Fp>yJx>}wDN#lR3$&6_jn^1|GE z6;m@w+3X*@>s&8r8qBtmlz+I3lk*z9lvUku;6~_f1 z!PDx|?#PTk`+>r5hoFHDn!t)HS0mN5tZGe{g0QB4k%VIZ%kIbWx>bNHmw

    vO18m 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 Ww-29r5DmQQfi%^0R7;huUj7IFzB_XO literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/app.235bfefd.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/app.235bfefd.js new file mode 100644 index 000000000..8194f084e --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/app.235bfefd.js @@ -0,0 +1 @@ +(function(e){function n(n){for(var a,r,o=n[0],c=n[1],l=n[2],u=0,h=[];u0&&void 0!==arguments[0]?arguments[0]:{};return s["a"].post("/auth",e,{params:{_t:!1,_m:!1}})}function o(){return s["a"].get("/brokers")}function c(){return l.apply(this,arguments)}function l(){return l=Object(r["a"])(regeneratorRuntime.mark(function e(){var n,t,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,o();case 2:return n=e.sent,t={},n.forEach(function(e){t[e.node]=e}),e.next=7,s["a"].get("/nodes");case 7:return r=e.sent,e.abrupt("return",r.map(function(e){var n=t[e.name]||{};return Object(a["a"])({},n,e)}));case 9:case"end":return e.stop()}},e)})),l.apply(this,arguments)}function u(){return h.apply(this,arguments)}function h(){return h=Object(r["a"])(regeneratorRuntime.mark(function e(){var n,t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,s["a"].get("/alarms/activated");case 2:return n=e.sent,t=[],n.forEach(function(e){var n=e.node,a=e.alarms;a.forEach(function(e){e.node=n,t.push(e)})}),e.abrupt("return",t);case 6:case"end":return e.stop()}},e)})),h.apply(this,arguments)}function d(){return p.apply(this,arguments)}function p(){return p=Object(r["a"])(regeneratorRuntime.mark(function e(){var n,t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,s["a"].get("/alarms/deactivated");case 2:return n=e.sent,t=[],n.forEach(function(e){var n=e.node,a=e.alarms;a.forEach(function(e){e.node=n,t.push(e)})}),e.abrupt("return",t);case 6:case"end":return e.stop()}},e)})),p.apply(this,arguments)}},"2dbd":function(e){e.exports={en:{ruleEngineTutorial:"https://docs.emqx.io/en/enterprise/latest/rule/rule-engine.html",restAPI:"https://docs.emqx.io/en/enterprise/latest/advanced/http-api.html",schemaTutorial:"https://docs.emqx.io/en/enterprise/latest/rule/schema-registry.html",auth:"https://docs.emqx.io/en/enterprise/latest/advanced/auth.html",mnesia:"https://docs.emqx.io/en/broker/latest/advanced/auth-mnesia.html",authJWT:"https://docs.emqx.io/en/broker/latest/advanced/auth-jwt.html"},zh:{ruleEngineTutorial:"https://docs.emqx.cn/cn/enterprise/latest/rule/rule-engine.html",restAPI:"https://docs.emqx.cn/cn/enterprise/latest/advanced/http-api.html",schemaTutorial:"https://docs.emqx.cn/cn/enterprise/latest/rule/schema-registry.html",auth:"https://docs.emqx.cn/cn/enterprise/latest/advanced/auth.html",mnesia:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-mnesia.html",authJWT:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-jwt.html"}}},"2f20":function(e,n,t){"use strict";t.r(n),n["default"]={topic:{zh:"主题",en:"Topic"}}},3274:function(e){e.exports={base:{baseURL:"/api/v4",httpTimeout:15e3,publicPath:"/",hide:{routes:["usersAcl"],children:[]}},cloud:{baseURL:"/dashboard",publicPath:"/",hide:{routes:["monitor","analysis","alerts","plugins","modules","setting","general","schemas"],children:["nav-header","navbar.user","monitor.connections","monitor.license","rules.schema"]}}}},"3ad0":function(e,n,t){"use strict";t.r(n),n["default"]={basic:{zh:"基础设置",en:"Basic"},cluster:{zh:"集群设置",en:"Cluster"},clusterInfo:{zh:"集群信息",en:"Cluster Info"},zone:{zh:"Zone 列表",en:"Zone"},errorRange:{zh:"填写错误:数值范围为 {min} - {max}",en:"Fill in the error: the number range is {min} - {max}"},errorType:{zh:"类型错误:请填写 {type} 类型",en:"Type error: please enter {type}"},errorUnit:{zh:"单位错误:请填写 {unit} 单位",en:"Unit error: please enter {unit}"},pleaseEnter:{zh:"请输入",en:"Please enter"},pleaseSelect:{zh:"请选择",en:"Please select"},cancelConfirm:{zh:"是否取消本次修改?",en:"You have unsaved changes, confirm cancel?"},noSaveConfirm:{zh:"当前配置未保存,是否离开并放弃?",en:"You have unsaved changes, give up and proceed?"},confirm:{zh:"确认信息",en:"Confirm"},remove:{zh:"移除",en:"Remove"},removeConfirm:{zh:"是否移除该节点?",en:"This will remove the current node. Continue?"},removeSuccess:{zh:"移除成功",en:"Remove Success"},no:{zh:"不",en:"NO"},setting:{zh:"设置",en:"Setting"},serverSetting:{zh:"服务器设置",en:"Server settings"},basicSetting:{zh:"基础设置",en:"Basic Settings"},mqtt:{zh:"MQTT 协议{0}",en:"MQTT Protocol {0}"},functional:{zh:"功能",en:"Function"},enable_acl:{zh:"是否启用 ACL 检查",en:"Enable ACL check"},acl_nomatch:{zh:"ACL 未命中时允许或拒绝通过验证",en:"Allow or deny if no ACL rules matched"},acl_deny_action:{zh:"ACL 被拒绝时的处理动作",en:"The action when acl check reject current operation"},allow_anonymous:{zh:"如果未加载身份验证插件,则默认情况下允许匿名身份验证。建议在生产部署中禁用该选项!",en:"Allow anonymous authentication by default if no auth plugins loaded. Disable the option in production deployment"},retry_interval:{zh:"QoS 1/2 消息传递的重试间隔",en:"Retry interval for QoS1/2 message delivering"},mqtt_ignore_loop_deliver:{zh:"是否忽略消息循环传递,常用于消息桥接(对于 MQTT v3.1.1)",en:"Whether to ignore loop delivery of messages (for MQTT v3.1.1)"},mqueue_store_qos0:{zh:"是否将 QoS0 的消息存储在队列中",en:"Whether to enqueue QoS0 messages"},flapping_banned_expiry_interval:{zh:"连接的 flapping 到期时间",en:"Flapping expiry interval for connections"},flapping_threshold:{zh:"每分钟的状态更改次数,指定用于检测连接是否开始 flapping 的阈值",en:"The times of state change per minute, specifying the threshold which is used to detect if the connection starts flapping"},mqtt_max_packet_size:{zh:"最大 MQTT 数据包大小",en:"Maximum MQTT packet size allowed"},mqtt_max_clientid_len:{zh:"MQTT 客户端 ID 的长度限制",en:"Maximum length of MQTT clientid allowed"},mqtt_max_topic_levels:{zh:"主题层级限制,0 表示没有限制层级",en:"Maximum topic levels allowed, 0 means no limit"},mqtt_max_qos_allowed:{zh:"最大 QoS",en:"Maximum QoS allowed"},mqtt_max_topic_alias:{zh:"最大主题别名数量,0 表示不支持主题别名",en:"Maximum Topic Alias, 0 means no topic alias supported"},mqtt_retain_available:{zh:"是否启用 Retain 消息",en:"Whether the Server supports MQTT retained messages"},mqtt_wildcard_subscription:{zh:"是否启用通配符订阅",en:"Whether the Server supports MQTT Wildcard Subscriptions"},mqtt_shared_subscription:{zh:"是否启用共享订阅",en:"Whether the Server supports MQTT Shared Subscriptions"},hibernate_after:{zh:"闲置后进入休眠状态的时间",en:"Hibernate after a duration of idle state"},acl_cache_max_size:{zh:"可以为客户端缓存最大的 ACL 数量",en:"The maximum count of ACL entries can be cached for a client"},acl_cache_ttl:{zh:"ACL 缓存后将被删除的时间",en:"The time after which an ACL cache entry will be deleted"},enable_acl_cache:{zh:"是否启用 ACL 缓存",en:"Whether to enable ACL cache"},flapping_detect_policy:{zh:"指定全局的 flapping detect 策略",en:"Specify the global flapping detect policy"},mqtt_strict_mode:{zh:"是否在严格模式下解析 MQTT 帧",en:"Whether to parse the MQTT frame in strict mode"},invite:{zh:"邀请",en:"Invite"},inviteSuccess:{zh:"邀请成功",en:"Invite Success"},clusterType:{zh:"集群方式",en:"Cluster Type"},currentNode:{zh:"当前节点",en:"Current Node"},nodeRequired:{zh:"请输入节点名称",en:"Please enter the node name"},dnsName:{zh:"DNS 名称",en:"DNS"},app:{zh:"节点前缀",en:"Node Prefix"},app_desc:{zh:"用于自动使用 IP 地址构造节点名称如:${name}@127.0.0.1",en:"Used to automatically construct a node name using an IP address: ${name}@127.0.0.1"},addr:{zh:"组播地址",en:"Multicast Address"},ports:{zh:"端口列表",en:"Ports"},iface:{zh:"多播地址",en:"Iface"},ttl:{zh:"多播 TTL",en:"TTL"},loop:{zh:"循环多播",en:"Loop"},server:{zh:"Etcd 服务器",en:"Etcd Server"},prefix:{zh:"路径前缀",en:"Path Prefix"},prefix_desc:{zh:"用于构造节点路径,路径为 v2/keys///",en:"Used to construct a node path with v2/keys///"},apiserver:{zh:"k8s 服务器列表",en:""},service_name:{zh:"服务器名称",en:"Service Name"},address_type:{zh:"地址类型",en:"Address Type"},address_type_desc:{zh:"用于从 k8s 服务中提取主机名",en:"Used to get hostname from the k8s service"},app_name:{zh:"节点前缀",en:"App Name"},app_name_desc:{zh:"用于构造节点名称",en:"Used to construct the node name"},namespace:{zh:"k8s 命名空间",en:"k8s Namespace"},suffix:{zh:"主机后缀",en:"Suffix"},manual:{zh:"手动集群",en:"Manual cluster"},dns:{zh:"DNS A 记录自动集群",en:"DNS A record automatic cluster"},static:{zh:"静态节点列表自动集群",en:"Static node list automatic cluster"},mcast:{zh:"UDP 组播自动集群",en:"UDP multicast automatic cluster"},etcd:{zh:"通过 etcd 自动集群",en:"By etcd automatic cluster"},k8s:{zh:"Kubernetes 服务自动集群",en:"Kubernetes service automatic cluster"},joined:{zh:"已加入",en:"Joined"},notJoined:{zh:"待加入",en:"Waiting to join"},zoneName:{zh:"Zone 名字",en:"Zone Name"},zoneNameTip:{zh:"名字不能为空!",en:"The name cannot be empty!"},listeners:{zh:"监听器",en:"Listeners"},monitorAlarm:{zh:"监控告警",en:"Monitor Alarm"},actions:{zh:"动作",en:"Actions"},size_limit:{zh:"大小限制",en:"Size Limit"},validity_period:{zh:"有效期",en:"Validity period"},check_interval:{zh:"CPU 占用率检查周期",en:"CPU usage check cycle"},process_high_watermark:{zh:"当前进程数量占进程最大数量的百分比超过该值时将触发告警",en:"\n When the percentage of the current number of processes to the maximum number\n of processes exceeds this value, an alarm will be triggered"},process_low_watermark:{zh:"当前进程数量占进程最大数量的百分比回落到该值以下时将触发告警",en:"\n An alarm will be triggered when the percentage of the current number of\n processes in the maximum number of processes falls below this value"},busy_dist_port:{zh:"指定是否启用集群 RPC 通道拥塞监控",en:"Specify whether to enable cluster RPC channel congestion monitoring"},busy_port:{zh:"指定是否启用进程间消息通道拥塞监控",en:"Specify whether to enable inter-process message channel congestion monitoring"},large_heap:{zh:"启用堆栈大小监控并在进程执行垃圾回收后堆栈大小仍大于设定值时触发告警,0 表示禁用此监控",en:"\n Enable stack size monitoring and trigger an alarm when the stack size is\n still greater than the set value after the process is garbage collected, 0 means disable this monitoring"},long_gc:{zh:"启用垃圾回收时间监控并在回收时间超过设定值时触发告警,0 表示禁用此监控",en:"\n Enable garbage collection time monitoring and trigger an alarm\n when the collection time exceeds the set value, 0 means disable this monitoring"},long_schedule:{zh:"启用进程调度时间监控并在调度时间超过设定值时触发告警,0 表示禁用此监控",en:"\n Enable process scheduling time monitoring and trigger an alarm when the\n scheduling time exceeds the set value, 0 means disable this monitoring"},cpu_check_interval:{zh:"CPU 占用率检查周期",en:"CPU usage check cycle"},cpu_high_watermark:{zh:"CPU 占用率超过该值时将触发告警",en:"An alarm will be triggered when the CPU usage exceeds this value"},cpu_low_watermark:{zh:"CPU 占用率回落到该值以下时将清除告警",en:"The alarm will be cleared when the CPU usage falls below this value"},mem_check_interval:{zh:"内存占用率检查周期",en:"Memory usage check cycle"},procmem_high_watermark:{zh:"EMQ X 为单个进程分配的内存占系统内存的百分比超过该值时将触发告警",en:"\n EMQ X will trigger an alarm when the percentage of system\n memory allocated by EMQ X for a single process exceeds this value"},sysmem_high_watermark:{zh:"EMQ X 为所有进程分配的内存占系统内存的百分比超过该值时将触发告警",en:"\n EMQ X will trigger an alarm when the percentage of system\n memory allocated by EMQ X for all processes exceeds this value"},listenerName:{zh:"监听器名字",en:"Listener Name"},listenerType:{zh:"监听类型",en:"Listener Type"},broker_session_locking_strategy:{zh:"会话锁策略。保证集群中 Client ID 在集群中的创建会话的唯一性。\n all 表示全集群锁,leader 表示仅主节点锁,quorum 多数节点锁,local 表仅当前节点锁",en:"Session locking policy. Ensure the uniqueness of the Client ID creation session in the cluster.\n All represents the total set group lock, the leader represents the master node lock only,\n the quorum majority node lock only, and the local table only the current node lock\n "},broker_shared_dispatch_ack_enabled:{zh:"共享订阅开启内部派发 ACK",en:"Shared subscriptions enable internal distribution ACK"},broker_shared_subscription_strategy:{zh:"共享订阅派发策略",en:"Shared subscription distribution policies"},broker_sys_heartbeat:{zh:"Broker 健康状态发布间隔",en:"Broker Health status publish interval"},broker_sys_interval:{zh:"Broker 统计信息发布间隔",en:"Broker statistics release interval"},confirmUpdateListener:{zh:"应用设置将重新启动监听器,该操作将导致当前活跃连接断开,是否继续?",en:"\n Applying settings will restart the listener.\n This operation will cause the current active connection to be disconnected.\n Do you want to continue?"},isOpened:{zh:"是否开启",en:"Is Started"},isStopListener:{zh:"确定停止监听器:",en:"Are you sure to stop the listener:"},isDeleteListener:{zh:"确认删除该监听器?",en:"Are you sure to delete this listener?"},isDeleteZone:{zh:"确认删除该 Zone?",en:"Are you sure to delete this Zone?"},returnList:{zh:"返回列表",en:"Back"},portRangeTip:{zh:"端口不能为负数且不能大于 65535",en:"The port cannot be negative and cannot be greater than 65535"},openModuleTip:{zh:"开启热配置后,EMQ X 将从配置文件中拷贝一份配置副本,所有可在 Dashboard 修改的配置都会持久化到磁盘中。\n
    如果修改配置文件将会覆盖热配置,请谨慎使用。",en:"After enabling hot configuration, EMQ X will copy a configuration from the configuration file,
    \n and all configurations that can be modified on the Dashboard will be persisted to the disk.
    \n If modifying the configuration file will overwrite the hot configuration, please use it with caution."}}},"407c":function(e,n,t){},"52af":function(e,n,t){"use strict";var a=t("d82d"),r=t.n(a);r.a},"56d7":function(e,n,t){"use strict";t.r(n);t("cadf"),t("551c"),t("f751"),t("097d");var a=t("2b0e"),r=(t("db4d"),t("5c96")),s=t.n(r),i=t("fd01"),o=t.n(i),c=t("a925"),l=t("4897"),u=t.n(l),h=t("12cb"),d=(t("7f7f"),t("0c63")),p=t("9571"),m=t("cdeb"),f=t("a071"),z=t("1fd5"),b=t("2fc4"),g=(t("a4e9"),t("4650"),t("0ab2"),t("dbad"),t("e975"),function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("el-select",e._g(e._b({staticClass:"emq-select",attrs:{value:e.rawValue},on:{change:e.selectChange}},"el-select",e.$attrs,!1),e.$listeners),[e._t("default",e._l(e.options,function(n,a){return t("el-option",{key:a,attrs:{value:n[e.fieldName.value],label:n[e.fieldName.label],disabled:e.isDisabled(n)}},[e._t("option",null,{item:n})],2)}))],2)}),v=[],_=(t("6762"),t("2fdb"),t("96cf"),t("3b8d")),k=(t("7514"),t("6b54"),t("1f75")),y={name:"EmqSelect",components:{},props:{value:{required:!0},field:{type:Object,required:!0},fieldName:{type:Object,default:function(){return{label:"label",value:"value"}}},disabledItem:{type:Array,default:function(){return[]}},refresh:{type:Boolean}},data:function(){return{options:[],parserField:{}}},computed:{rawValue:{get:function(){return"boolean"===typeof this.value?this.value.toString():this.value},set:function(e){var n=null,t=this.fieldName.value,a=this.options.find(function(n){return n[t]===e});a&&this.parserField[t]&&(n="true"===e),this.$emit("update:value",n)}}},watch:{refresh:function(e){e&&this.loadData()},field:{handler:function(){this.loadData()},deep:!0}},created:function(){this.loadData()},methods:{selectChange:function(e){this.$emit("selectChange",e)},loadData:function(){var e=Object(_["a"])(regeneratorRuntime.mark(function e(){var n,t,a,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.getOptions();case 2:n=e.sent,this.parserField={},t=this.fieldName.value,a=this.fieldName.label,this.options=n.map(function(e){var n=e[t],s=e[a];return"boolean"===typeof n&&(r.parserField[t]="boolean",e[t]=n.toString(),"boolean"===typeof s&&(e[a]=s.toString())),e}),this.$emit("update:refresh",!1);case 8:case"end":return e.stop()}},e,this)}));function n(){return e.apply(this,arguments)}return n}(),isDisabled:function(e){return this.disabledItem.includes(e[this.fieldName.value])},getOptions:function(){var e=Object(_["a"])(regeneratorRuntime.mark(function e(){var n,t,a,r,s,i;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(n=this.field,t=n.api,a=n.url,r=n.options,s=n.list,i=[],!r){e.next=6;break}i=r,e.next=20;break;case 6:if(!s){e.next=10;break}i=s.map(function(e){return{label:e,value:e}}),e.next=20;break;case 10:if(!t){e.next=16;break}return e.next=13,t();case 13:i=e.sent,e.next=20;break;case 16:if(!a){e.next=20;break}return e.next=19,k["a"].get(a);case 19:i=e.sent;case 20:return e.abrupt("return",i);case 21:case"end":return e.stop()}},e,this)}));function n(){return e.apply(this,arguments)}return n}()}},S=y,T=(t("581f"),t("2877")),w=Object(T["a"])(S,g,v,!1,null,null,null),C=w.exports,A=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"page-header"},[t("div",{staticClass:"page-header-content"},[e._t("default")],2)])},x=[],E={name:"PageHeader"},P=E,q=(t("201a"),Object(T["a"])(P,A,x,!1,null,null,null)),D=q.exports,M=t("90b9"),N=function(e){var n=d["a"].createFromIconfontCN({scriptUrl:"/static/iconfont/iconfont.js"});e.component(p["a"].name,p["a"]),e.component(m["a"].name,m["a"]),e.component(f["a"].name,f["a"]),e.component(z["a"].name,z["a"]),e.component(b["a"].name,b["a"]),e.component(b["a"].Item.name,b["a"].Item),e.component("IconFont",n),e.component(C.name,C),e.component(D.name,D),e.prototype.$hasShow=M["j"]},L={bind:function(e,n){var t=e;"success"===n.arg?t._v_clipboard_success=n.value:"error"===n.arg?t._v_clipboard_error=n.value:t=Object(M["b"])(t,n)},update:function(e,n){"success"===n.arg?e._v_clipboard_success=n.value:"error"===n.arg?e._v_clipboard_error=n.value:(e._v_clipboard.text=function(){return n.value},e._v_clipboard.action=function(){return"copy"})},unbind:function(e,n){"success"===n.arg?delete e._v_clipboard_success:"error"===n.arg?delete e._v_clipboard_error:(e._v_clipboard.destroy(),delete e._v_clipboard)}},O=function(e){e.directive("clipboard",L)},R=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},I=[],j={data:function(){return{}}},U=j,B=Object(T["a"])(U,R,I,!1,null,null,null),$=B.exports,Q=t("e26c"),F=t("a47b");t("7cde"),t("7796"),t("78b1");a["default"].config.productionTip=!1,a["default"].use(c["a"]),a["default"].use(N),a["default"].use(s.a),a["default"].use(o.a),a["default"].use(O);var K=new c["a"]({locale:F["a"].state.lang,messages:h["default"]});u.a.i18n(function(e,n){return K.t(e,n)}),new a["default"]({router:Q["a"],store:F["a"],i18n:K,render:function(e){return e($)}}).$mount("#app")},"581f":function(e,n,t){"use strict";var a=t("407c"),r=t.n(a);r.a},"5a4e":function(e,n,t){"use strict";var a=t("9ec4"),r=t.n(a);r.a},6388:function(e,n,t){"use strict";t.r(n),n["default"]={__not:["默认是80","默认是60","默认80","默认60","莱森斯信息"],shareSubscription:{zh:"共享订阅",en:"Share Subscription"},subscription:{zh:"订阅",en:"Subscriptions"},retained:{zh:"保留消息",en:"Retained"},connectionsTips:{zh:"当前活跃连接数",en:"Currently active connections"},view:{zh:"查看",en:"View"},viewMore:{zh:"查看详情",en:"View More"},systemTime:{zh:"系统时间",en:"System Time"},uptime:{zh:"运行时长",en:"Uptime"},currentConnection:{zh:"连接",en:"Connections"},nodeState:{zh:"节点状态",en:"Node State"},running:{zh:"运行中",en:"Running"},stopped:{zh:"已停止",en:"Stopped"},memory:{zh:"内存",en:"Memory"},maxFds:{zh:"最大文件句柄",en:"Max Fds"},process:{zh:"进程",en:"Process"},load:{zh:"负载",en:"Load"},monitor:{zh:"监控",en:"Monitor"},nodeName:{zh:"节点名称",en:"Node Name"},nodeData:{zh:"节点数据",en:"Node"},currentNodeInfo:{zh:"当前节点信息如下",en:"Current node info"},basicInfo:{zh:"基础信息",en:"Basic Info"},metric:{zh:"度量指标",en:"Metric"},configuration:{zh:"配置信息",en:"Configuration"},version:{zh:"版本信息",en:"Version"},basic:{zh:"基础信息",en:"Basic"},listener:{zh:"监听器",en:"Listener"},ListeningPorts:{zh:"当前监听端口列表",en:"Listening address and ports"},listenerProtocol:{zh:"监听协议",en:"Protocol"},listenerAddress:{zh:"监听地址",en:"Address"},connectCurrentAndMax:{zh:"连接 (当前/最大)",en:"Connect (Current/Max)"},current:{zh:"当前",en:"Current"},maximum:{zh:"最大",en:"Maximum"},dataList:{zh:"数据列表",en:"Data List"},packetStatisticsOfNodes:{zh:"节点的报文信息, 消息统计与流量收发统计",en:"Packet statistics of nodes、Message I/O Statistics"},mqttPackages:{zh:"报文",en:"Packages"},messageNumber:{zh:"消息数",en:"Messages"},traffic:{zh:"流量收发(字节)",en:"Byte"},client:{zh:"客户端",en:"Client"},session:{zh:"会话",en:"Session"},mainConfiguration:{zh:"节点主要配置",en:"Main Configuration"},brokerStatus:{zh:"服务器状态",en:"Broker status"},nodesNun:{zh:"节点数",en:"Nodes"},numberOfNodesInCluster:{zh:"集群中节点数",en:"Nodes"},messageOut:{zh:"消息发出",en:"Message Out"},strip:{zh:"条",en:"strip"},second:{zh:"秒",en:"second"},currentMessageOutRate:{zh:"当前消息发出速度",en:"Current message-out rate"},messageIn:{zh:"消息流入",en:"Message In"},currentMessageInRate:{zh:"当前消息流入速度",en:"Current message-in rate"},subscriptionNumber:{zh:"订阅数",en:"Subscriptions"},topicNumber:{zh:"集群订阅关系数",en:"Topics"},connection:{zh:"连接",en:"Connection"},connectionNumber:{zh:"连接数",en:"Connections"},maxConnections:{zh:"连接数峰值",en:"Max connections"},noData:{zh:"暂无数据",en:"No data"},customer:{zh:"签发对象",en:"Customer"},numberOfConnectionLines:{zh:"License 使用情况",en:"License usage"},issuanceOfEmail:{zh:"签发邮箱",en:"Issuance of email"},issuedAt:{zh:"签发时间",en:"Issued At"},expireAt:{zh:"到期时间",en:"Expire At"},beforeTheCertificateExpires:{zh:"证书到期前 EMQ 将通过邮件通知签发邮箱,请留意信息接收以免错过续期时间对业务造成影响。",en:"EMQ will issue mailbox through email notification before the certificate expires. Please pay attention to receiving information so as not to miss the renewal time, which will affect the business."},forTrialEdition:{zh:"当前 License 为试用版",en:"The license is trial edition"},license:{zh:"License 信息",en:"License"},trialEdition:{zh:"试用版",en:"Trial Edition"},messageDrop:{zh:"消息丢弃",en:"Message Drop"},topics:{zh:"主题",en:"Topics"},Subscription:{zh:"订阅",en:"Subscription"},message:{zh:"消息",en:"Message"},rate:{zh:"速率",en:"Rate"},notPromptAgain:{zh:"不再提示",en:"don't prompt again"},licenseExpiryTip:{zh:'\n 您的试用 License 已过期,请\n
    更新 License \n 或联系销售人员更新 License。\n ',en:'\n Your license has expired. Please\n update license\n or contact our customer services for an updated license.\n '},licenseEvaluationTip:{zh:'\n 当前正在使用评估 License,限制为10个连接。请\n 升级 License
    如已购买\n License,请 替换 正式的 License。\n ',en:'\n You are now using the 10-connection evaluation license.
    Please\n upgrade license.\n If you already applied offcial license,
    please replace with your official license.\n '},konw:{zh:"知道了",en:"I knew"},expired:{zh:"过期",en:"Expired"},noSubscribers:{zh:"无订阅者",en:"No Subscribers"},receivedMsg:{zh:"消息接收",en:"Received"},sentMsg:{zh:"消息发送",en:"Sent"},droppedMsg:{zh:"消息丢弃",en:"Dropped"}}},"63c9":function(e,n,t){"use strict";t.r(n),n["default"]={modules:{zh:"模块管理",en:"Modules Manage"},name:{zh:"模块名称",en:"Name"},enable:{zh:"启用",en:"Enable"},disable:{zh:"停用",en:"Disable"},enabled:{zh:"已启用",en:"Enabled"},disabled:{zh:"已停用",en:"Disabled"},description:{zh:"描述",en:"Description"},searchTip:{zh:"搜索模块...",en:"Search modules..."},reconnect:{zh:"重连",en:"Reconnect"},moduleEdit:{zh:"模块编辑",en:"Module Edit"},moduleAdd:{zh:"模块添加",en:"Module Add"},moduleAddSuccess:{zh:"模块添加成功!",en:"Module Add Successfully!"},moduleEditSuccess:{zh:"模块编辑成功!",en:"Module Edit Successfully!"},select:{zh:"选择",en:"Select"},added:{zh:"已添加",en:"Added"},guide:{zh:"使用指引",en:"Usage Guide"},readMore:{zh:"了解更多",en:"Read More"},run:{zh:"启动",en:"Run"},stop:{zh:"停止",en:"Stop"},noData:{zh:"暂无数据",en:"No data"},stopSuccess:{zh:"停止成功",en:"Stop Success"},startSuccess:{zh:"开启成功",en:"Start Success"},thisActionWillStopTheModule:{zh:"此操作将停止该模块,确认继续?",en:"Confirm to stop the Module?"},thisActionWillDeleteTheModule:{zh:"此操作将删除该模块,确认继续?",en:"Confirm to delete the Module?"},authentication:{zh:"认证鉴权",en:"Authentication"},protocols:{zh:"协议接入",en:"Protocols"},messagePublish:{zh:"消息下发",en:"Message Publish"},extension:{zh:"多语言扩展",en:"Extensions"},monitor:{zh:"运维监控",en:"DevOps"},localModules:{zh:"内部模块",en:"Local Modules"},configuration:{zh:"配置信息",en:"Configuration"},listener:{zh:"监听器",en:"Listeners"},addListener:{zh:"添加监听器",en:"Add Listener"},editListener:{zh:"编辑监听器",en:"Edit Listener"},edit:{zh:"编辑",en:"Edit"},remove:{zh:"移除",en:"Remove"},listen_on:{zh:"监听地址",en:"Listener"},listener_type:{zh:"监听类型",en:"Listener Type"},acceptors:{zh:"接收器个数",en:"Acceptors"},active_n:{zh:"Active",en:"Active"},max_conn_rate:{zh:"每秒最大连接数",en:"Max CPS"},max_connections:{zh:"最大连接数",en:"Max Connections"},emptyListenerTip:{zh:"请添加监听器!",en:"Please add Listener!"},fileTip:{zh:"请上传文件",en:"Please upload File"},noNeedAddConfigTip:{zh:"此模块无需配置相关信息!",en:"No configuration information is required for this module!"},continueCommit:{zh:"继续提交",en:"Submit"},editTip:{zh:"应用更改将会短暂重启当前模块,可能会造成数据丢失或服务中断,请确保在不影响业务的情况下提交更改。",en:"\n Applying changes will immediately restart the current module which may cause data loss\n or service interruption. Please make sure to submit the changes without affecting the business."},auth:{zh:"认证",en:"Authentication"},confirmDelete:{zh:"确认删除?",en:"Confirm Delete?"},listNull:{zh:"列表为空,请调整过滤条件再试",en:"Empty. Please change the filter and try again"},allow:{zh:"允许",en:"Allow"},deny:{zh:"不允许",en:"Deny"},action:{zh:"主题动作",en:"Action"},isAllow:{zh:"是否允许",en:"Allowed"},useModulesTip:{zh:'EMQ X 提供了丰富的模块用于替换插件,建议您前往使用 模块。',en:'EMQ X provides a wealth of Modules to replace Plugin,\n it is recommended that you go to use Modules.'},searchClient:{zh:"请输入 IMEI",en:"Please input IMEI"},enhancedAuth:{zh:"增强认证",en:"Enhanced Auth"},mechanism:{zh:"认证机制",en:"Authentication mechanism"},addAuth:{zh:"创建认证信息",en:"Add Auth"},editAuth:{zh:"编辑认证信息",en:"Edit Auth"},viewAuth:{zh:"查看认证信息",en:"View Auth"},iterationCount:{zh:"迭代次数",en:"Iteration Count"},iterationCountTip:{zh:"必须为正整数",en:"Must be a positive integer"},serverKey:{zh:"服务密钥",en:"Server key"},storedKey:{zh:"存储密钥",en:"Stored key"},dataType:{zh:"数据类型",en:"Data Type"},lwClientOffline:{zh:"当前客户端已下线",en:"The current client is offline"},requestTimeout:{zh:"请求超时",en:"Request timed out"}}},"65ae":function(e,n,t){"use strict";var a=t("daf2"),r=t.n(a);r.a},"713e":function(e,n,t){"use strict";t.r(n),n["default"]={currentSubs:{zh:"当前订阅主题列表",en:"Current Subscriptions"},topic:{zh:"主题",en:"Topic"},share:{zh:"共享订阅",en:"Share"}}},7796:function(e,n,t){},"78b1":function(e,n,t){},"7a58":function(e,n,t){"use strict";t.r(n),n["default"]={metricsTip:{zh:"数据统计为实时刷新数据,包含自添加以来全部统计数据",en:"The metrics are real-time refresh data, including all statistics since the addition"},enable:{zh:"启用",en:"Enable"},addTopic:{zh:"添加主题",en:"Add Topic"},details:{zh:"详情数据",en:"Details"},messageIn:{zh:"消息流入",en:"Message In"},messageOut:{zh:"消息流出",en:"Message Out"},messageDrop:{zh:"消息丢弃",en:"Message Drop"},messageInDesc:{zh:"(消息流入速率)",en:"(message in rate)"},messageOutDesc:{zh:"(消息流出速率)",en:"(message out rate)"},messageDropDesc:{zh:"(消息丢弃速率)",en:"(message drop rate)"},rateItem:{zh:"{0} 条/秒",en:"{0} / second"},rate:{zh:"(速率)",en:"(rate)"}}},"7a64":function(e,n,t){"use strict";t.r(n),n["default"]={__not:[],key:{zh:"键",en:"Key"},objectKey:{zh:"对象键",en:"Key"},value:{zh:"值",en:"Value"},add:{zh:"添加",en:"Add"},delete:{zh:"删除",en:"Delete"},left:{zh:"左侧",en:"Left"},monitor:{zh:"监控",en:"Monitor"},connect:{zh:"连接",en:"Connections"},usersAcl:{zh:"认证鉴权",en:"Users & ACL"},clients:{zh:"客户端",en:"Clients"},topics:{zh:"主题",en:"Topics"},subscriptions:{zh:"订阅",en:"Subscriptions"},schemas:{zh:"编解码",en:"Schema Registry"},rule:{zh:"规则",en:"Rule"},rules:{zh:"规则引擎",en:"Rule Engine"},resources:{zh:"资源",en:"Resources"},analysis:{zh:"统计分析",en:"Analysis"},topic_metrics:{zh:"主题监控",en:"Topic metrics"},alerts:{zh:"告警",en:"Alarm"},plugins:{zh:"插件",en:"Plugin"},modules:{zh:"模块",en:"Modules"},tool:{zh:"工具",en:"Tool"},websocket:{zh:"Websocket",en:"Websocket"},general:{zh:"通用",en:"General"},application:{zh:"应用",en:"Application"},blacklist:{zh:"黑名单",en:"Blacklist"},backup:{zh:"备份",en:"Backup"},users:{zh:"用户",en:"Users"},setting:{zh:"设置",en:"Setting"},node:{zh:"节点数据",en:"Node"},ruleCreate:{zh:"创建规则",en:"Rule Create"},schemaCreate:{zh:"创建编解码",en:"Schema Create"},settings:{zh:"系统设置",en:"Settings"},usingDocuments:{zh:"使用文档",en:"Documents"},applicationManagement:{zh:"应用管理",en:"Application"},usersManagement:{zh:"用户管理",en:"Users"},logOut:{zh:"退出登录",en:"Log out"},notLoggedIn:{zh:"未登录",en:"Not logged in"},theSystemHas:{zh:"系统有",en:"The system has"},noteAlertClickView:{zh:"条告警,点击查看",en:"alerts, Click to view"},noWarning:{zh:"暂无告警",en:"No alarm"},loggedOut:{zh:"已退出登录",en:"Logged out"},whetherToLogOutOrNot:{zh:"是否退出登录?",en:"Confirm to logout"},signOut:{zh:"退出",en:"Logout"},selectModules:{zh:"选择模块",en:"Modules Select"},trace:{zh:"在线 Trace",en:"Online Trace"}}},"7cde":function(e,n,t){},"7ffd":function(e,n,t){"use strict";t.r(n),n["default"]={__not:[],listNull:{zh:"列表为空,请调整过滤条件再试",en:"Empty. Please change the filter and try again"},unit:{zh:"个插件",en:""},plugin:{zh:"插件",en:"Plugin"},numberOfPlugIns:{zh:"插件数量",en:"Number of plugins"},numPlugins:{zh:"个插件",en:"Plugins"},running:{zh:"运行中",en:"Running"},individual:{zh:"个",en:""},stop:{zh:"停 止",en:"Stop"},stopped:{zh:"已停止",en:"Stopped"},pluginsList:{zh:"插件列表",en:"Plugins"},selectNode:{zh:"节点选择",en:"Node"},all:{zh:"全部",en:"All"},startRunning:{zh:"启 动",en:"Run"},config:{zh:"配置",en:"config"},tutorial:{zh:"使用文档",en:"Tutorial"},pluginName:{zh:"插件名称",en:"Name"},version:{zh:"版本",en:"Version"},describe:{zh:"描述",en:"Description"},type:{zh:"类型",en:"Type"},state:{zh:"状态",en:"State"},authentication:{zh:"认证",en:"Auth"},backend:{zh:"持久化",en:"Backend"},bridge:{zh:"桥接",en:"Bridge"},protocol:{zh:"协议",en:"Protocol"},feature:{zh:"功能",en:"Feature"},other:{zh:"其他",en:"Other"},thisActionWillStopThePlugIn:{zh:"此操作将停止该插件,确认继续?",en:"Confirm to stops the plugin?"},runSuccess:{zh:"开启成功",en:"Run Success"},runFailed:{zh:"开启失败",en:"Run Failed"},stopSuccess:{zh:"停止成功",en:"Stop Success"},pluginTips:{zh:"该功能仅做调试使用,配置将在 Broker 重启后将丢失,请将配置写入相应配置文件",en:"The module is only used for debugging or testing, and the configuration will be lost when broker restart"},configuration:{zh:"配置信息",en:"Configuration"},save:{zh:"保存",en:"Save"},updateSuccessful:{zh:"更新成功",en:"Update Successful"},pluginBeforeSaveTips:{zh:"你的更改将不被保存,确认继续?",en:"Your changes will not be saved. Confirm to continue?"},pleaseEnter:{zh:"请输入",en:"Please enter"},searchByName:{zh:"按插件名称搜索",en:"Search by plugin name"},manage:{zh:"管理",en:"Manage"},authClientidRequired:{zh:"请填写 Client ID 和密码",en:"Client ID or Password is required"},confirmDelete:{zh:"确认删除?",en:"Confirm Delete?"},algorithm:{zh:"加密算法",en:"Algorithm"},payloadDesc:{zh:"启用 verify_claims 时有效, 可以使用 %u,%c 占位符分别替换输入的 username 和 clientid,详见",en:"It is valid when verify_claims is enabled. You can use% u and% c placeholders to replace the entered user name and clientid respectively. For details, see"},jwtDoc:{zh:"JWT 认证",en:"JWT Authentication"},dataDesc:{zh:"一行一组数据,使用逗号分割 username,clientid",en:"One line is a set of data, separated by comma username,clientid"},secret:{zh:"密钥或私钥",en:"Secret or Private key"},secretRequired:{zh:"请输入 Secret",en:"Secret is required"},payloadRequired:{zh:"请输入 Payload 模版",en:"Payload template is required"},dataRequired:{zh:"请填写 Payload 数据",en:"Payload data is required"},leaveTokenPage:{zh:"离开页面后当前输入的配置与生成的 TOKEN 信息均不再保留,确认离开?",en:"After leaving the page, the currently entered configuration and generated TOKEN information are no longer retained. Continue?"},usernameOrClientid:{zh:"用户名或 Client ID",en:"Username or Client ID"},username:{zh:"用户名",en:"Username"},mnesiaTip:{zh:"默认使用 Username,以 auth.mnesia.as 配置为准",en:"Username is used by default, but follow the auth.mnesia.as configuration"},authMnesiaRequired:{zh:"请填写完整的认证信息",en:"Authentication information is required"},auth:{zh:"认证",en:"Authentication"},isAllow:{zh:"是否允许",en:"Allowed"},allow:{zh:"允许",en:"Allow"},deny:{zh:"不允许",en:"Deny"},aclMnesiaRequired:{zh:"请填写完整的 ACL 信息",en:"ACL information is required"},action:{zh:"主题动作",en:"Action"},allUsers:{zh:"全部用户",en:"All Users"}}},"90b9":function(e,n,t){"use strict";t("3b2b"),t("6762"),t("2fdb"),t("28a5"),t("4917"),t("7f7f"),t("6b54"),t("a481");var a=t("768b"),r=(t("ffc1"),t("55dd"),t("7618")),s=(t("456d"),t("ac6a"),t("b311")),i=t.n(s),o=t("db05"),c=t.n(o),l=t("2e8e"),u=t.n(l),h=t("5c96"),d=t("a47b"),p=t("e26c"),m=t("12cb"),f=t("db41"),z=t("2dbd"),b=z.en,g=z.zh,v=f.zh,_=f.en;t.d(n,"e",function(){return S}),t.d(n,"p",function(){return T}),t.d(n,"a",function(){return w}),t.d(n,"c",function(){return A}),t.d(n,"l",function(){return x}),t.d(n,"g",function(){return E}),t.d(n,"i",function(){return P}),t.d(n,"b",function(){return q}),t.d(n,"o",function(){return D}),t.d(n,"j",function(){return M}),t.d(n,"h",function(){return N}),t.d(n,"k",function(){return L}),t.d(n,"d",function(){return O}),t.d(n,"n",function(){return R}),t.d(n,"m",function(){return I}),t.d(n,"f",function(){return j}),t.d(n,"q",function(){return U}),t.d(n,"r",function(){return B});var k=d["a"].state.lang,y=m["default"][k];function S(){return d["a"].state.user}function T(){d["a"].dispatch("UPDATE_USER_INFO",{logOut:!0}),p["a"].push({path:"/login",query:{to:p["a"].fullPath}})}var w=function(e){return e.then(function(e){return e}).catch(function(e){return null})};function C(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=d["a"].state.lang,t=void 0===n?"zh":n;return Object.keys(e).forEach(function(n){var a=e[n];"object"===Object(r["a"])(a)&&("en"in a&&"zh"in a?e[n]=a[t]:C(a))}),e}function A(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e)return e;var a=d["a"].state.lang,r=void 0===a?"zh":a,s=Array.isArray(e);if("boolean"===typeof n&&(t=n,n=[]),s)e.forEach(function(e){if(t)return C(e);n.forEach(function(n){e[n]&&(e[n]=e[n][r])})});else{if(t)return C(e);n.forEach(function(n){e[n]&&(e[n]=e[n][r])})}return e}function x(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=[],r={},s={},i={},o=0,c=Object.entries(e);o")},bindAttributes:{type:C,field:"select"===A||"cfgselect"===A?E:void 0,placeholder:q,rows:"textarea"===C?5:0},key:u,type:C,elType:A,value:d||"configs"!==n?d:"",order:y,oneObjOfArray:"array"===A?s:{},extraConfigs:"cfgselect"===A?i:{}}),r[u]=[];var D="zh"===k?"请输入":"Field required",M="zh"===k?"请选择":"Please select",N="zh"===k?"请添加":"Please Add";if(T&&("array"===A?r[u].push({required:!0,message:N}):r[u].push({required:!0,message:"input"===A?D:M})),f){var L=f.map(function(e){return"boolean"===typeof e?e.toString():e});r[u].push({type:"enum",enum:L})}}}return t=t.sort(function(e,n){return e.order-n.order}),{form:t,rules:r}}function E(e){var n=d["a"].state.lang,t=void 0===n?"zh":n,a="zh"===t?g:b;return a[e]||"/"}function P(e){var n=d["a"].state.lang,t=void 0===n?"zh":n,a="zh"===t?v:_;return a[e]||""}var q=function(e,n){var t=new i.a(e,{text:function(){return n.value},acttion:function(){return"copy"}});return t.on("success",function(n){var t=e._v_clipboard_success;t&&t(n)}),t.on("error",function(n){var t=e._v_clipboard_error;t&&t(n)}),e._v_clipboard=t,e},D=function(e){var n=c.a.format(e),t=n.replace(/= ~/g,"=~").replace(/\n/g,"!#!"),a=t.match(/SELECT!#!(.+)!#!FROM/);if(a){var r=a[1];if(r){var s=r.replace(/(!#!|\s)/g," ").split(/[,,]/).join(", ");t=t.replace(r,"".concat(s))}}return t.replace(/!#!/g,"\n\r")},M=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=d["a"].state.config.hide||{routes:[],children:[]};return!e||!(n.routes.includes(e)||n.children.includes(e))},N=function(e,n){var t=new RegExp("".concat(n,"=([^&]*)"),"i"),a=e.match(t)[1];return decodeURIComponent(a)},L=function(e,n,t){return new Promise(function(a,r){try{var s=e.filter(function(e){if(e[n]){var a=e[n].toLowerCase().replace(/\s+/g,""),r=t.toLocaleLowerCase().replace(/\s+/g,"");return a.match(r)}return null});return a(s)}catch(i){return r(i)}})},O=function(e){var n=1e3,t=["K","M","G","T"],a=Math.round(e%n/100),r=Math.round(e/n),s=0;while(r>n)a=Math.round(r%n/100),r=Math.round(r/n),s+=1;return"".concat(r,".").concat(a).concat(t[s],"B")};function R(e){var n=e.replace(/\"/g,""),t=["message.publish","message.deliver","message.acked","message.dropped","client.connected","client.disconnected","client.subscribe","client.unsubscribe"],r=null;return t.forEach(function(e){var t=e.split("."),s=Object(a["a"])(t,2),i=s[0],o=s[1],c=new RegExp("".concat(i,"\\.").concat(o),"gim");n.match(c)&&(r=n.match(c))}),r}function I(e,n){var t={"message.publish":"","message.deliver":"$events/message_delivered","message.acked":"$events/message_acked","message.dropped":"$events/message_dropped","client.connected":"$events/client_connected","client.disconnected":"$events/client_disconnected","client.subscribe":"$events/session_subscribed","client.unsubscribe":"$events/session_unsubscribed"},a=t[n],r=e.replace(/\"/g,"");try{var s=u.a.parse(r);return""===a&&(s.value.where=null,a="#"),s.value.from.value[0].value.value.value='"'.concat(a,'"'),u.a.stringify(s)}catch(i){h["Message"].error(i.toString())}}function j(e){var n=Math.floor(e/1e3),t=Math.floor(n/86400),a=n%86400,r=Math.floor(a/3600),s=Math.floor(n%3600/60),i=n%60;return[t,r,s,i].map(function(e){return e>10?e:"0".concat(e)}).join(":")}var U=function(e,n,t){var a=/^[0-9a-zA-Z_:]{1,64}$/;n?n.length>64?t(new Error(y.RuleEngine.id_len_tip)):a.test(n)?t():t(new Error(y.RuleEngine.id_char_tip)):t(new Error(y.RuleEngine.pleaseEnter))},B=function(e,n,t){if(n){var a=n.includes(":")?n.split(":")[1]:n,r=parseInt(a,10);r>65535||r<=0?t(new Error(y.Settings.portRangeTip)):t()}else t(new Error(y.RuleEngine.pleaseEnter))}},"9cfb":function(e,n,t){"use strict";t.r(n),n["default"]={__not:[],maxSix:{zh:"最大支持 6 个连接",en:"Maximum support for 6 connection"},defaultConnection:{zh:"默认连接",en:"Default"},connectionName:{zh:"新连接",en:"New"},connectionConfiguration:{zh:"连接配置",en:"Connection"},protocolType:{zh:"协议类型",en:"Protocol Type"},host:{zh:"主机名",en:"Host"},port:{zh:"端口",en:"Port"},mountPoint:{zh:"挂载点",en:"Mountpoint"},randomGeneration:{zh:"随机生成",en:"Random"},connected:{zh:"已连接",en:"Connected"},inConnection:{zh:"连接中",en:"Connecting"},disconnected:{zh:"已断开连接",en:"Disconnected"},connect:{zh:"连接",en:"Connect"},cancelConnection:{zh:"取消连接",en:"Cancel connection"},disconnect:{zh:"断开连接",en:"Disconnect"},Subscription:{zh:"订阅",en:"Subscription"},Subscribe:{zh:"订阅",en:"Subscribe"},time:{zh:"时间",en:"Time"},publish:{zh:"发布",en:"Publish"},received:{zh:"已接收",en:"Received"},clear:{zh:"清除",en:"Clear"},published:{zh:"已发送",en:"Published"},pleaseEnter:{zh:"请输入",en:"Please enter"},rangeError:{zh:"范围错误",en:"range error"},clientNotConnected:{zh:"客户端未连接",en:"Client not connected"},subscriptionFailure:{zh:"订阅失败",en:"Subscription failure"},publishingFailure:{zh:"发布失败",en:"Publishing failure"},connectionDisconnected:{zh:"连接已断开",en:"connection disconnected"}}},"9ec4":function(e,n,t){},a47b:function(e,n,t){"use strict";var a=t("768b"),r=(t("ac4d"),t("8a81"),t("ac6a"),t("75fc")),s=t("cebc"),i=(t("6762"),t("2fdb"),t("2b0e")),o=t("2f62"),c=t("3274");i["default"].use(o["a"]);function l(e){return["en","zh"].includes(e)?e:""}function u(){var e=l(navigator.language.substr(0,2)),n=l(localStorage.getItem("language")),t=(window.EMQX_CONFIG||{}).language;return n||t||e||"en"}function h(){var e="emqx",n=c[e]||c.base;return Object(s["a"])({},c.base,n)}function d(){return JSON.parse(localStorage.getItem("navTabs"))||[]}function p(){var e=localStorage.getItem("leftBarCollapse");return null!==e&&JSON.parse(e)}n["a"]=new o["a"].Store({state:{loading:!1,user:JSON.parse(localStorage.user||sessionStorage.user||"{}")||{},lang:u(),leftBarCollapse:p(),alertCount:0,config:h(),navTabs:d(),selectedModule:JSON.parse(localStorage.getItem("selectedModule"))||{}},actions:{UPDATE_MODULE:function(e,n){var t=e.commit;localStorage.setItem("selectedModule",JSON.stringify(n)),t("UPDATE_MODULE",n)},UPDATE_CONFIG:function(e,n){var t=e.commit;t("UPDATE_CONFIG",n)},SET_ALERT_COUNT:function(e){var n=e.commit,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;n("SET_ALERT_COUNT",t)},SET_LANGUAGE:function(e){var n=e.commit,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en";localStorage.setItem("language",t),n("SET_LANGUAGE",t),setTimeout(function(){location.reload()},400)},SET_LEFT_BAR_COLLAPSE:function(e){var n=e.commit,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];n("SET_LEFT_BAR_COLLAPSE",!!t)},UPDATE_USER_INFO:function(e){var n=e.commit,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.logOut,r=void 0!==a&&a,s=t.remember;r?(localStorage.removeItem("user"),sessionStorage.removeItem("user")):s?localStorage.setItem("user",JSON.stringify(t)):sessionStorage.setItem("user",JSON.stringify(t)),n("UPDATE_USER_INFO",r?{}:t)},LOADING:function(e){var n=e.commit,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];n("LOADING",t)},ADD_NAV_TABS:function(e,n){var t=e.commit;t("ADD_NAV_TABS",n)},REMOVE_NAV_TABS:function(e,n){var t=e.commit,s=e.state,i=Object(r["a"])(s.navTabs),o=!0,c=!1,l=void 0;try{for(var u,h=i.entries()[Symbol.iterator]();!(o=(u=h.next()).done);o=!0){var d=Object(a["a"])(u.value,2),p=d[0],m=d[1];if(m.url===n.url){i.splice(p,1);break}}}catch(f){c=!0,l=f}finally{try{o||null==h.return||h.return()}finally{if(c)throw l}}return t("REMOVE_NAV_TABS",i),i}},mutations:{UPDATE_MODULE:function(e,n){e.selectedModule=n},UPDATE_CONFIG:function(e,n){e.config=n},SET_ALERT_COUNT:function(e,n){e.alertCount=n},UPDATE_USER_INFO:function(e,n){e.user=n},LOADING:function(e,n){e.loading=n},SET_LEFT_BAR_COLLAPSE:function(e,n){e.leftBarCollapse=n,localStorage.setItem("leftBarCollapse",n)},SET_LANGUAGE:function(e,n){e.lang=n},ADD_NAV_TABS:function(e,n){e.navTabs.push(n),localStorage.setItem("navTabs",JSON.stringify(e.navTabs))},REMOVE_NAV_TABS:function(e,n){e.navTabs=n,localStorage.setItem("navTabs",JSON.stringify(e.navTabs))}}})},ab41:function(e,n,t){"use strict";t.r(n),n["default"]={__not:[],userCreate:{zh:"https://docs.emqx.cn/cn/broker/latest/advanced/cli.html#admins-%E5%91%BD%E4%BB%A4",en:"https://docs.emqx.io/en/broker/latest/advanced/cli.html#admins-command"},loginUserAccount:{zh:"使用 Dashboard 用户登录",en:"Login using Dashboard accounts"},forgetPassword:{zh:"忘记密码?",en:"Forget the password?"},signIn:{zh:"登录",en:"Sign in"},userName:{zh:"用户名",en:"Username"},password:{zh:"密码",en:"Password"},remember:{zh:"记住",en:"remember"},resourcesNotFound:{zh:"资源未找到",en:"Resources not found"},loging:{zh:"登录中...",en:"logging in..."},copied:{zh:"复制成功!",en:"Copied!"},copy:{zh:"复制",en:"Copy"},generate:{zh:"生成",en:"Generate"},warning:{zh:"警告",en:"Warning"},view:{zh:"详情",en:"View"},detail:{zh:"详情",en:"View"},edit:{zh:"编辑",en:"Edit"},homePage:{zh:"首页",en:"Home"},save:{zh:"保存",en:"Save"},apply:{zh:"应用",en:"Apply"},create:{zh:"创建",en:"Create"},cancel:{zh:"取消",en:"Cancel"},confirm:{zh:"确定",en:"Confirm"},add:{zh:"添加",en:"Add"},delete:{zh:"删除",en:"Delete"},saveSuccess:{zh:"保存成功",en:"Save Success"},applySuccess:{zh:"应用成功",en:"Apply Success"},createSuccess:{zh:"创建成功",en:"Create Success"},deleteSuccess:{zh:"删除成功",en:"Delete Success"},viewMore:{zh:"查看更多",en:"View More"},collapse:{zh:"收起",en:"Collapse"},next:{zh:"下一页",en:"Next"},prev:{zh:"上一页",en:"Previous"},editSuccess:{zh:"编辑成功",en:"Edit Success"},day:{zh:"天",en:"day | days"},year:{zh:"年",en:"year | years"},enableSuccess:{zh:"启用成功",en:"Enable Success"},disabledSuccess:{zh:"停用成功",en:"Disable Success"},select:{zh:"选择",en:"Select"},manage:{zh:"管理",en:"Manage"},tips:{zh:"提示",en:"Tips"},operateSuccess:{zh:"操作成功",en:"Successful operation"}}},c690:function(e,n,t){"use strict";t.r(n),n["default"]={__not:["应用为调用","认证凭证,通过","可查询","调整","集群信息,对设备进行管理操作","请求一组数据","密码长度为三到三十二位","密码长度为三到三十二位","取消修改密码,删除密码数据"],confirmDelete:{zh:"确认删除应用?",en:"Confirm delete?"},applicationIsCalled:{zh:"应用为调用 REST API 认证凭证,通过 REST API 可查询、调整 EMQ X 集群信息,对设备进行管理操作",en:"In order to invoke the certificate of REST API, the application can query and adjust EMQ X cluster information through REST API, and manage and operate the equipment"},appId:{zh:"应用 ID",en:"AppID"},application:{zh:"应用",en:"Application"},productDocumentation:{zh:"产品文档",en:"Document"},appName:{zh:"应用名称",en:"App Name"},expireAt:{zh:"到期时间",en:"Expire At"},remark:{zh:"备注",en:"Remark"},isEnabled:{zh:"是否启用",en:"Is Enabled"},enabled:{zh:"启用",en:"Enabled"},edit:{zh:"编辑",en:"Edit"},delete:{zh:"删除",en:"Delete"},editApp:{zh:"编辑应用",en:"Edit"},createApp:{zh:"创建应用",en:"Create App"},secret:{zh:"密钥",en:"Secret"},disabled:{zh:"不启用",en:"Disabled"},pleaseEnterAppName:{zh:"请输入应用名称",en:"Please enter the app name."},pleaseEnterTheAppId:{zh:"请输入应用 ID",en:"Please enter the appid"},pleaseChoose:{zh:"请选择",en:"Please select"},pleaseEnter:{zh:"请输入",en:"Please enter"},neverExpire:{zh:"永不过期",en:"Never expire"},editorialSuccess:{zh:"编辑成功",en:"Edit Success"},successfulAppCreation:{zh:"创建应用成功",en:"Successful app creation"},determineToDeleteTheApp:{zh:"确定删除该应用",en:"Determine to delete the app"},successfulDeletion:{zh:"删除成功",en:"Successful deletion"},cancelConfirm:{zh:"是否取消本次修改?",en:"You have unsaved changes, confirm cancel?"},confirm:{zh:"确认信息",en:"Confirm"},no:{zh:"不",en:"NO"},user:{zh:"用户",en:"Users"},manageDashboardUsers:{zh:"Dashboard 登录管理用户",en:"Manage Dashboard users"},userName:{zh:"用户名",en:"Username"},editorUser:{zh:"编辑用户",en:"Edit"},creatingUser:{zh:"创建用户",en:"Create"},oldPassword:{zh:"旧密码",en:"Old password"},password:{zh:"密码",en:"Password"},newPassword:{zh:"新密码",en:"New password"},confirmPassword:{zh:"确认新密码",en:"Confirm password"},dontChangePassword:{zh:"不修改密码",en:"Dot change password"},changePassword:{zh:"修改密码",en:"Change Password"},pleaseEnterYourPasswordAgain:{zh:"请再次输入密码",en:"Please enter your password again."},confirmNotMatch:{zh:"两次输入密码不一致",en:"Two inputs don't match!"},twoInconsistenciesInPasswordInput:{zh:"两次输入密码不一致",en:"Two inconsistencies in password input"},enterOneUserName:{zh:"请输入用户名",en:"Please enter username"},pleaseEnterNotes:{zh:"请输入备注",en:"Please enter notes"},pleaseEnterPassword:{zh:"请输入密码",en:"Please enter password"},pleaseEnterNewPassword:{zh:"请输入新密码",en:"Please enter new password"},pleaseEnterAConfirmationPassword:{zh:"请输入确认密码",en:"Please enter confirm password."},createUserSuccess:{zh:"创建用户成功",en:"Create User Success"},determineToDeleteTheUser:{zh:"确定删除该用户",en:"Confirm to delete the user"},passwordLength:{zh:"密码长度为 3~32 位",en:"Password length is 3~32"},confirmDeleteUser:{zh:"确认删除该用户?",en:"Confirm delete?"},blacklistTips:{zh:"通过黑名单禁止客户端建立连接,该功能适用于管理少量客户端,客户端认证请使用",en:"The blacklist prohibits clients from establishing connections. This function is suitable for managing a small number of clients. For client authentication, view"},authDocs:{zh:"认证文档",en:"authentication document"},blacklist:{zh:"黑名单",en:"Blacklist"},createBlacklist:{zh:"创建黑名单",en:"Create"},determineToDeleteTheBlacklist:{zh:"确定删除该黑名单",en:"Determine to delete the blacklist"},createBlacklistSuccess:{zh:"创建黑名单成功",en:"Create Blacklist Success"},who:{zh:"禁用值",en:"Value"},as:{zh:"禁用属性",en:"Property"},reason:{zh:"原因",en:"Reason"},desc:{zh:"描述",en:"Description"},until:{zh:"到期时间",en:"Until"},enterWho:{zh:"请输入禁用值",en:"Please enter value"},enterAs:{zh:"请选择禁用属性",en:"Please select property"}}},cf43:function(e,n,t){},d6c8:function(e,n,t){"use strict";t.r(n),n["default"]={__not:["此操作将停用并删除该资源,确认继续","规则要处理的主题,支持","主题通配符","规则引擎使用说起来语句配置二面消息流与设备事件的处理规则,内置多种灵活的数据处理方案"],foldDetails:{zh:"折叠详情",en:"Fold Details"},showDetails:{zh:"详细信息",en:"Show Details"},node:{zh:"节点",en:"Node"},view:{zh:"点击查看",en:"View"},hide:{zh:"点击收起",en:"Hide"},detailedMetrics:{zh:"详细统计",en:"Detailed metrics"},actionMetricsTips:{zh:"节点上的动作统计信息",en:"Metrics on nodes"},detailedStatus:{zh:"详细状态",en:"Detailed status"},resourceStatusTips:{zh:"节点上的资源状态信息",en:"Resource status on nodes"},status:{zh:"状态",en:"Status"},ruleEnabled:{zh:"已启动",en:"Enabled"},ruleDisabled:{zh:"已停止",en:"Disabled"},resourceStatus:{zh:"资源状态",en:"Status"},deleteResource:{zh:"此操作将停用并删除该资源,确认继续?",en:"This operation will disable and delete the resource"},createResources:{zh:"创建资源",en:"Create"},editResources:{zh:"编辑资源",en:"Edit"},editResourceTips:{zh:"确定修改该资源相关配置信息?",en:"Are you sure to modify the configuration information of this resource?"},resourceTypes:{zh:"资源类型",en:"Types"},resourceName:{zh:"资源名称",en:"Resource Name"},testConnection:{zh:"测试连接",en:"Test"},remark:{zh:"备注",en:"Remark"},pleaseEnter:{zh:"请输入",en:"Please enter"},pleaseChoose:{zh:"请选择",en:"Please select"},resourceAvailable:{zh:"资源可用",en:"available"},actionType:{zh:"动作类型",en:"Action Type"},edit:{zh:"编辑",en:"Edit"},delete:{zh:"删除",en:"Delete"},remove:{zh:"移除",en:"Remove"},success:{zh:"成功",en:"Success"},fail:{zh:"失败",en:"Fail"},addAction:{zh:"添加动作",en:"Add action"},addActions:{zh:"新增动作",en:"Add Action"},editActions:{zh:"编辑动作",en:"Edit Action"},useOfResources:{zh:"使用资源",en:"Use of resources"},createNew:{zh:"新建",en:"Create"},all:{zh:"全部",en:"All"},totalResources:{zh:"全部资源",en:"Resources"},resources:{zh:"资源",en:"Resources"},state:{zh:"状态",en:"State"},reconnect:{zh:"重连",en:"Reconnect"},successfulDeletion:{zh:"删除成功",en:"Successful deletion"},details:{zh:"详情",en:"Details"},basicInfo:{zh:"基本信息",en:"Basic Info"},available:{zh:"可用",en:"available"},notAvailable:{zh:"不可用",en:"Not available"},instructions:{zh:"资源说明",en:"Instructions"},configuration:{zh:"配置信息",en:"Configuration"},ruleEngine:{zh:"规则引擎",en:"Rule Engine"},createRules:{zh:"创建规则",en:"Create Rules"},condition:{zh:"条件",en:"Condition"},definingRuleConditionsAndDataProcessing:{zh:"使用 SQL 设定规则,对消息数据筛选、编解码、变型,灵活地将处理后的数据无缝转发至数据库、流处理、API 网关等数据目的地",en:"Use SQL to set rules to filter, encode, decode, and modify message data, and seamlessly forward processed data to data destinations such as databases, stream processing, and API gateways"},triggerEvent:{zh:"触发事件",en:"Trigger Event"},topic:{zh:"主题",en:"Topic"},selectFiled:{zh:"查询字段",en:"Select field"},sqlInput:{zh:"SQL 输入",en:"SQL"},availableField:{zh:"可用字段",en:"Available field"},selectConditions:{zh:"筛选条件",en:"Conditions"},sqlTest:{zh:"SQL 测试",en:"SQL Test"},inputMetadata:{zh:"输入元数据进行 SQL 匹配测试",en:"Input metadata for SQL test"},testOutput:{zh:"测试输出",en:"Result"},currentEventAvailableField:{zh:"当前事件可用字段",en:"Current Event Available Field"},upgradeTip:{zh:"升级提示",en:"Upgrade Tip"},jsonDecodeUpgrade:{zh:"当前版本取消对 payload 的自动 JSON 解码,选择 payload 中的字段请使用 json_decode 解码,如 SQL 示例。",en:"The current version cancels the automatic JSON decoding of the payload. Select the field in the payload and use json_decode to decode it, as in the SQL example."},exampleSql:{zh:"规则 SQL 示例",en:"SQL Example"},responseAction:{zh:"响应动作",en:"Action"},processingMessagesForHitRules:{zh:"处理命中规则的消息",en:"Processing messages for hit rules"},pleaseSelectTheTriggerEvent:{zh:"请选择触发事件",en:"Please select the trigger event"},pleaseEnterTheTopic:{zh:"请输入主题",en:"Please enter the topic"},pleaseEnterTheSelectField:{zh:"请输入查询字段",en:"Please enter the select field"},pleaseEnterTheSQL:{zh:"请输入 SQL 语句",en:"Please enter the SQL field"},nullCharacterError:{zh:"空字符错误",en:"Null character error"},fieldFillingError:{zh:"字段填写错误",en:"field required"},pleaseAddAResponseAction:{zh:"请添加响应动作",en:"Please add a action"},createSuccess:{zh:"创建成功",en:"Create Success"},editSuccess:{zh:"编辑成功",en:"Edit Success"},resultIsEmpty:{zh:"输出为空",en:"Result is empty"},checkForErrors:{zh:"请检查 SQL 语句",en:"SQL is error"},quickStart:{zh:"快速开始",en:"Quick Start"},productDocumentation:{zh:"产品文档",en:"Document"},monitor:{zh:"监控",en:"Monitor"},describe:{zh:"描述",en:"Description"},ruleMetrics:{zh:"规则统计",en:"Metrics"},matched:{zh:"命中次数",en:"matched"},second:{zh:"秒",en:"second"},times:{zh:"次",en:"matched"},currentSpeed:{zh:"当前速度",en:"Current Speed"},maximumSpeed:{zh:"最大执行速度",en:"Maximum speed"},last5MinutesSpeed:{zh:"最近5分钟执行速度",en:"Last 5 minutes speed"},actionMetrics:{zh:"动作统计",en:"Action metrics"},deleteRuleConfirm:{zh:"此操作将停用并删除该规则,确认继续?",en:"This operation will disable and delete the rule"},runningMetrics:{zh:"运行统计",en:"Metrics"},numberOfHits:{zh:"命中次数",en:"Hits"},numberOfRulesExecutedAfterEnabling:{zh:"规则启用后的执行次数",en:"Number of rules hits after enabling"},averageExecutionSpeedInTheLast5Minutes:{zh:"最近5分钟平均执行速度",en:"Average speed in the last 5 minutes"},rule:{zh:"规则",en:"Rule"},messageProcessingForHitRules:{zh:"命中规则的消息处理方式",en:"Message processing for rule data"},clientid_doc:{en:"Current MQTT clientid",zh:"当前客户端 MQTT clientid"},username_doc:{en:"Current MQTT username",zh:"当前客户端 MQTT username"},event_doc:{en:"Trigger event name",zh:"触发事件名称"},id_doc:{en:"MQTT message id",zh:"MQTT message id"},payload_doc:{en:"The payload, if in JSON format, will be automatically decoded, and the object information will be obtained by using payload.x in SQL",zh:"消息内容, 如果是 JSON 格式将自动解码, 在 SQL 中使用 payload.x 获取对象信息"},peername_doc:{en:"Client peer host",zh:"客户端网络地址"},qos_doc:{en:"Enumeration of message QoS 0,1,2",zh:"消息 QoS 0,1,2 中枚举"},timestamp_doc:{en:"Timestamp(millisecond)",zh:"当前毫秒级时间戳"},topic_doc:{en:"Currently MQTT topic can be filtered by wildcards in SQL. When multiple topics are included in subscribe and unsubscribe, only the first one will be obtained here. To obtain all topics, please use topic_filters",zh:"当前 MQTT 主题, SQL 中可以使用通配符进行筛选.\nSubscribe 与 Unsubscribe 请求中包含多个主题时, 这里只会获取到第一个, 如需获取全部请使用 topic_filters"},node_doc:{en:"Node name of the trigger event",zh:"触发事件的节点名称"},message_delivered:{en:"message delivered",zh:"消息投递"},message_acked:{en:"message acked",zh:"消息应答"},message_dropped:{en:"message dropped",zh:"消息丢弃"},client_connected:{en:"client connected",zh:"连接建立"},client_disconnected:{en:"client disconnected",zh:"连接断开"},session_subscribed:{en:"session subscribed",zh:"会话订阅"},session_unsubscribed:{en:"session unsubscribed",zh:"会话取消订阅"},parse_confirm:{en:"Detected incompatible old SQL syntax, confirm to automatically convert it to the new version?",zh:"检测到不兼容的旧版 SQL 语法,是否自动转换为新版语法?"},fallbackAction:{en:"Fallback Actions",zh:"失败备选动作"},fallbackActionCreate:{en:"Set the action that will be performed when an action execution error occurs (optional)",zh:"设置发生动作执行错误时将执行的动作(可选)"},fallbackActionTip:{en:"Action to be performed when the action execution error",zh:"动作执行错误时将执行的操作"},data_persist:{zh:"数据持久化",en:"Data persist"},offline_msgs:{zh:"离线消息",en:"Offline messages"},data_forward:{zh:"数据转发",en:"Data forward"},debug:{zh:"调试",en:"Debug"},server_side_subscription:{zh:"代理订阅",en:"Server side subscription"},resourceID:{zh:"资源 ID",en:"Resource ID"},resourceDes:{zh:"描述",en:"Description"},id_len_tip:{zh:"最长64位",en:"The longest 64"},id_char_tip:{zh:"仅支持数字、字母、下划线和冒号",en:"Only Numbers, letters, underscores, and colons are supported"},ruleID:{zh:"规则 ID",en:"Rule ID"},resourceSelectTip:{zh:"下拉选项优先显示资源描述信息,没有描述信息则显示资源 ID,选中后显示的值为其 ID",en:"The drag-and-drop option gives priority to the resource description information,\n if there is no description information, the resource ID is displayed, but the relative ID displayed after selection"}}},d82d:function(e,n,t){},d8f3:function(e,n,t){"use strict";var a=t("1205"),r=t.n(a);r.a},daf2:function(e,n,t){},db41:function(e){e.exports={en:{emqx_auth_clientid:"https://docs.emqx.io/en/broker/latest/advanced/auth-clientid.html",emqx_auth_username:"https://docs.emqx.io/en/broker/latest/advanced/auth-username.html",emqx_auth_http:"https://docs.emqx.io/en/broker/latest/advanced/auth-http.html",emqx_auth_jwt:"https://docs.emqx.io/en/broker/latest/advanced/auth-jwt.html",emqx_auth_ldap:"https://docs.emqx.io/en/broker/latest/advanced/auth-ldap.html",emqx_auth_mnesia:"https://docs.emqx.io/en/broker/latest/advanced/auth-mnesia.html",emqx_auth_mongo:"https://docs.emqx.io/en/broker/latest/advanced/auth-mongodb.html",emqx_auth_mysql:"https://docs.emqx.io/en/broker/latest/advanced/auth-mysql.html",emqx_auth_pgsql:"https://docs.emqx.io/en/broker/latest/advanced/auth-postgresql.html",emqx_auth_redis:"https://docs.emqx.io/en/broker/latest/advanced/auth-redis.html",emqx_dashboard:"https://docs.emqx.io/en/broker/latest/getting-started/dashboard.html",emqx_extension_hook:"https://docs.emqx.io/en/broker/latest/advanced/lang-lua.html",emqx_rule_engine:"https://docs.emqx.io/en/broker/latest/rule/rule-engine.html"},zh:{emqx_auth_clientid:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-clientid.html",emqx_auth_username:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-username.html",emqx_auth_http:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-http.html",emqx_auth_jwt:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-jwt.html",emqx_auth_ldap:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-ldap.html",emqx_auth_mnesia:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-mnesia.html",emqx_auth_mongo:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-mongodb.html",emqx_auth_mysql:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-mysql.html",emqx_auth_pgsql:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-postgresql.html",emqx_auth_redis:"https://docs.emqx.cn/cn/broker/latest/advanced/auth-redis.html",emqx_dashboard:"https://docs.emqx.cn/cn/broker/latest/getting-started/dashboard.html",emqx_extension_hook:"https://docs.emqx.cn/cn/broker/latest/advanced/lang-lua.html",emqx_rule_engine:"https://docs.emqx.cn/cn/broker/latest/rule/rule-engine.html"}}},e26c:function(e,n,t){"use strict";var a,r=t("2b0e"),s=t("8c4f"),i=t("a47b"),o=(t("ac6a"),function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("el-container",{staticClass:"layout",staticStyle:{"min-height":"100vh"}},[t("el-aside",{attrs:{width:"auto"}},[t("left-bar")],1),t("el-main",{staticStyle:{margin:"0",padding:"0"},style:e.elMainStyle},[e.$hasShow("nav-header")?t("el-header",{staticStyle:{height:"80px",padding:"0"}},[t("nav-header"),t("nav-tabs")],1):e._e(),t("div",{style:{minHeight:"360px",minWidth:"600px",overflowX:"hidden"}},[t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[t("keep-alive",[e.$route.meta.keepAlive?t("router-view"):e._e()],1)],1),t("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[e.$route.meta.keepAlive?e._e():t("router-view")],1)],1)],1)],1)}),c=[],l=function(){var e=this,n=e.$createElement,a=e._self._c||n;return a("div",{staticClass:"left-bar",style:{width:e.leftBarCollapse?"80px":"200px"}},[a("div",{staticClass:"logo",style:{paddingLeft:e.leftBarCollapse?"6px":"20px"}},[a("img",{staticClass:"logo-img",attrs:{src:t("05da"),alt:"logo"}})]),a("a-menu",{staticClass:"menu-wrapper",attrs:{"default-selected-keys":e.defaultSelectedKeys,"selected-keys":e.defaultSelectedKeys,"open-keys":e.defaultOpenKeys,mode:"inline",theme:"dark","inline-collapsed":e.leftBarCollapse},on:{"update:openKeys":function(n){e.defaultOpenKeys=n},"update:open-keys":function(n){e.defaultOpenKeys=n},click:e.handleClick}},[e._l(e.menus,function(n){return[e.$hasShow(n.key)?[n.children&&n.children.length>0?a("a-sub-menu",{key:n.key,on:{titleClick:function(t){return e.titleClick(n)}}},[a("span",{attrs:{slot:"title"},slot:"title"},[a("icon-font",{attrs:{type:n.icon}}),a("span",[e._v(e._s(n.title))])],1),e._l(n.children,function(n){return[e.$hasShow(n.key)?a("a-menu-item",{key:n.path},[e._v("\n "+e._s(n.title)+"\n ")]):e._e()]})],2):!n.children&&e.$hasShow(n.key)?a("a-menu-item",{key:n.path},[a("icon-font",{attrs:{type:n.icon}}),a("span",[e._v(e._s(n.title))])],1):e._e()]:e._e()]})],2)],1)},u=[],h=(t("6762"),t("2fdb"),t("7514"),t("28a5"),t("bd86")),d=(t("7f7f"),t("55f1")),p=(t("956a"),{name:"LeftBar",components:(a={},Object(h["a"])(a,d["a"].name,d["a"]),Object(h["a"])(a,d["a"].Item.name,d["a"].Item),Object(h["a"])(a,d["a"].ItemGroup.name,d["a"].ItemGroup),Object(h["a"])(a,d["a"].SubMenu.name,d["a"].SubMenu),Object(h["a"])(a,d["a"].Divider.name,d["a"].Divider),a),props:{},data:function(){return{menus:[],defaultOpenKeys:[]}},computed:{leftBarCollapse:function(){return this.$store.state.leftBarCollapse},defaultSelectedKeys:function(){var e=this.$route.path;return["/".concat(e.split("/")[1])]},logoStyle:function(){return{left:this.$store.state.leftBarCollapse?"-200px":0}}},watch:{$route:function(){this.initRouter()},leftBarCollapse:function(e){e?this.defaultOpenKeys=[]:this.initRouter()}},created:function(){this.menus=[{title:this.$t("components.monitor"),path:"/monitor",key:"monitor",icon:"icon-yibiaopan"},{title:this.$t("components.usersAcl"),path:"/users_and_acl",key:"usersAcl",icon:"icon-kongjian"},{title:this.$t("components.clients"),path:"/clients",icon:"icon-guanlianshebei"},{title:this.$t("components.topics"),path:"/topics",icon:"icon-zuzhiqunzu"},{title:this.$t("components.subscriptions"),path:"/subscriptions",icon:"icon-shebeiguanli"},{title:this.$t("components.rules"),key:"rules",icon:"icon-guizeyinqing",children:[{title:this.$t("components.rule"),key:"rules.ruleEngine",path:"/rules",parentKey:"rules"},{title:this.$t("components.resources"),key:"rules.resources",path:"/resources",parentKey:"rules"},{title:this.$t("components.schemas"),key:"rules.schema",path:"/schemas",parentKey:"rules"}]},{title:this.$t("components.modules"),key:"modules",path:"/modules",icon:"icon-changjingguanli"},{title:this.$t("components.plugins"),key:"plugins",path:"/plugins",icon:"icon-kongjian"},{title:this.$t("components.alerts"),key:"alerts",path:"/alerts",icon:"icon-gaojingkongxin"},{title:this.$t("components.tool"),key:"tools",icon:"icon-gongju",children:[{title:"WebSocket",key:"tool.WebSocket",path:"/websocket",parentKey:"tools"}]},{title:this.$t("components.setting"),key:"setting",path:"/setting",icon:"icon-icon_shezhi"},{title:this.$t("components.general"),key:"general",icon:"icon-fenzuguanli",children:[{title:this.$t("components.application"),key:"general.application",path:"/application",parentKey:"general"},{title:this.$t("components.users"),key:"general.user",path:"/users",parentKey:"general"},{title:this.$t("components.blacklist"),key:"general.blacklist",path:"/blacklist",parentKey:"general"},{title:this.$t("components.backup"),key:"general.backup",path:"/backup",parentKey:"general"}]}],this.initRouter()},methods:{handleClick:function(e){this.$router.push({path:e.key})},titleClick:function(){},initRouter:function(){var e=this;if(!this.leftBarCollapse){var n=this.$route.path;this.menus.forEach(function(t){t.key&&t.children&&t.children.find(function(e){return n.includes(e.path)||n===e.path})&&(e.defaultOpenKeys.includes(t.key)||e.defaultOpenKeys.push(t.key))})}}}}),m=p,f=(t("65ae"),t("2877")),z=Object(f["a"])(m,l,u,!1,null,null,null),b=z.exports,g=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"nav-header",style:e.navHeadStyle},[t("div",{staticClass:"pull-left"},[t("div",{staticClass:"func-item",on:{click:e.toggleLeftNarCollapse}},[t("i",{class:["iconfont",e.$store.state.leftBarCollapse?"el-icon-s-unfold":"el-icon-s-fold"],staticStyle:{"font-size":"20px","line-height":"41px"}})])]),t("breadcrumb"),t("div",{staticClass:"pull-right"},[t("el-tooltip",{attrs:{effect:"dark",content:e.alertText,placement:"bottom","visible-arrow":!1}},[t("div",{staticClass:"alert-info func-item"},[t("a-badge",{attrs:{count:e.alertCount}},[t("router-link",{staticClass:"iconfont icon-Notificationlisttongzhiliebiao",attrs:{to:"/alerts/list",tag:"i"},on:{click:e.clearAlert}})],1)],1)]),t("el-dropdown",{staticClass:"user-info-dropdown",attrs:{placement:"bottom"},on:{command:e.handleLanguageDropdownCommand}},[t("div",{staticClass:"user-info func-item"},[t("span",[t("i",{staticClass:"iconfont icon-i18n"})]),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{class:{active:"en"===e.language},attrs:{command:"en"}},[e._v("English")]),t("el-dropdown-item",{class:{active:"zh"===e.language},attrs:{command:"zh"}},[e._v("中文")])],1)],1)]),e.$hasShow("navbar.user")?t("el-dropdown",{staticClass:"user-info-dropdown",attrs:{placement:"bottom"},on:{command:e.handleDropdownCommand}},[t("div",{staticClass:"user-info func-item"},[t("span",[e._v(e._s(e.username))]),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[t("el-dropdown-item",{attrs:{command:"application"}},[e._v(e._s(e.$t("components.applicationManagement")))]),t("el-dropdown-item",{attrs:{command:"users"}},[e._v(e._s(e.$t("components.usersManagement")))]),t("el-dropdown-item",{attrs:{divided:"",command:"login"}},[e._v(e._s(e.$t("components.logOut")))])],1)],1)]):e._e()],1)],1)},v=[],_=(t("96cf"),t("3b8d")),k=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"breadcrumb"},[t("a-breadcrumb",[t("a-breadcrumb-item",[t("router-link",{staticClass:"btn btn-default raw",attrs:{to:"/",tag:"span"}},[e._v("\n "+e._s(e.$t("Base.homePage"))+"\n ")])],1),e.isIndex?e._e():[t("a-breadcrumb-item",[e.backPath?t("router-link",{staticClass:"btn btn-default raw",attrs:{to:e.backPath,tag:"span"}},[e._v("\n "+e._s(e.currentTitle)+"\n ")]):t("span",{staticClass:"btn btn-default raw"},[e._v("\n "+e._s(e.currentTitle)+"\n ")])],1),e.oper?t("a-breadcrumb-item",[t("span",{staticClass:"btn btn-default raw"},[e._v("\n "+e._s(e.oper)+"\n ")])]):e._e()]],2)],1)},y=[],S={name:"Breadcrumb",data:function(){return{isIndex:!1,backPath:void 0,currentTitle:"",oper:""}},watch:{$route:function(){this.getBreadcrumb()}},created:function(){this.getBreadcrumb()},methods:{getBreadcrumb:function(){var e=this.$route,n=e.path,t=e.query,a=e.name,r=n.split("/"),s=r[1],i=t.oper||r[2];this.isIndex="/monitor"===n,this.oper="",this.backPath=void 0,this.currentTitle=this.$t("components.".concat(s)),["create","view","detail","add","select","manage"].includes(i)?(this.oper=this.$t("Base.".concat(i)),this.backPath="/".concat(s)):"node"===i&&(this.currentTitle=this.$t("Overview.nodeData")),"pluginsName"===a&&this.$route.params.pluginName&&(this.oper=this.$route.params.pluginName,this.backPath="/".concat(s))}}},T=S,w=(t("28e0"),Object(f["a"])(T,k,y,!1,null,null,null)),C=w.exports,A=t("2934"),x={name:"NavHeader",components:{Breadcrumb:C},props:{},data:function(){return{}},computed:{alertCount:function(){return this.$store.state.alertCount},navHeadStyle:function(){return{left:this.$store.state.leftBarCollapse?"80px":"201px"}},username:function(){return this.$store.state.user.username||this.$t("components.notLoggedIn")},alertText:function(){return this.alertCount>0?"".concat(this.$t("components.theSystemHas")," ").concat(this.alertCount," ").concat(this.$t("components.noteAlertClickView")):this.$t("components.noWarning")},language:function(){return this.$store.state.lang}},created:function(){this.loadData(),this.setHtmlLangAttr(this.language)},mounted:function(){window.onfocus=this.loadData()},methods:{setHtmlLangAttr:function(e){document.querySelector("html").setAttribute("lang",e)},handleLanguageDropdownCommand:function(e){this.language!==e&&(this.setHtmlLangAttr(e),this.$store.dispatch("SET_LANGUAGE",e))},clearAlert:function(){},loadData:function(){var e=Object(_["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(A["b"])();case 2:n=e.sent,this.$store.dispatch("SET_ALERT_COUNT",(n||[]).length);case 4:case"end":return e.stop()}},e,this)}));function n(){return e.apply(this,arguments)}return n}(),logout:function(){var e=this;this.$store.dispatch("UPDATE_USER_INFO",{logOut:!0}),setTimeout(function(){e.$message.success(e.$t("components.loggedOut")),e.$router.push("/login")},300)},toggleLeftNarCollapse:function(){var e=!this.$store.state.leftBarCollapse;this.$store.dispatch("SET_LEFT_BAR_COLLAPSE",e)},handleDropdownCommand:function(e){var n=this;e&&("login"===e?this.$msgbox.confirm(this.$t("components.whetherToLogOutOrNot"),{confirmButtonText:this.$t("components.signOut"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(function(){n.logout()}).catch(function(){}):this.$router.push({path:"/".concat(e)}))}}},E=x,P=(t("5a4e"),Object(f["a"])(E,g,v,!1,null,"72830772",null)),q=P.exports,D=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"nav-tabs",style:{left:e.$store.state.leftBarCollapse?"80px":"201px"}},[t("el-scrollbar",{ref:"scrollContainer",staticClass:"scroll-container",attrs:{vertical:!1}},[t("el-button",{class:{active:e.isIndex},attrs:{plain:"",size:"mini"},on:{click:function(n){return e.$router.push("/")}}},[e._v("\n "+e._s(e.$t("Base.homePage"))+"\n ")]),e._l(e.tabs,function(n,a){return t("el-button",{key:a,class:{active:n.url===e.currentUrl},attrs:{plain:"",size:"mini"},on:{click:function(t){return e.navTab(n)}}},["node"===n.name?[e._v("\n "+e._s(e._f("getNodeName")(n.url))+"\n ")]:"clientid"===n.name?[e._v("\n "+e._s(e._f("getClientId")(n.url))+"\n ")]:"ruleId"===n.name||"resourceId"===n.name||"schemaName"===n.name?[e._v("\n "+e._s(e._f("getParamsId")(n.url))+"\n ")]:[e._v("\n "+e._s(e.$t("components."+n.name))+"\n ")],t("a",{staticClass:"btn-close",attrs:{href:"javascript:;"},on:{click:function(t){return t.stopPropagation(),e.closeTab(n)}}},[t("i",{staticClass:"el-icon-close"})])],2)})],2)],1)},M=[],N=(t("20d6"),t("90b9")),L={name:"NavTabs",components:{},filters:{getNodeName:function(e){return Object(N["h"])(e,"name")},getClientId:function(e){return Object(N["h"])(e,"clientid")},getParamsId:function(e){var n=e.split("?")[0];return n.split("/")[2]}},data:function(){return{isIndex:!0,isActive:!1}},computed:{tabs:function(){return this.$store.state.navTabs},currentUrl:function(){return this.$route.fullPath}},watch:{$route:function(){this.loadTabs()}},created:function(){this.loadTabs()},methods:{getTabName:function(e,n){return"monitor"===e&&"node"===n?"node":"rules"===e&&"create"===n?"ruleCreate":"schemas"===e&&"create"===n?"schemaCreate":"modules"===e&&"select"===n?"selectModules":e},loadTabs:function(){var e=this.$route,n=e.path,t=e.fullPath,a=e.query,r=n.split("/"),s=r[1],i=a.oper||r[2];if(this.isIndex="/monitor"===n,!this.isIndex){s=this.getTabName(s,i);var o=this.tabs.findIndex(function(e){return e.url===t||e.name===s});if(-1===o){var c={name:s,url:t};this.$store.dispatch("ADD_NAV_TABS",c)}}},navTab:function(e){this.$router.push({path:e.url})},closeTab:function(e){var n=this;this.$store.dispatch("REMOVE_NAV_TABS",e).then(function(t){var a=e.url===n.currentUrl;if(a){var r=t.length-1,s="/";-1!==r&&(s=t[r].url),n.$router.push({path:s})}})}}},O=L,R=(t("d8f3"),Object(f["a"])(O,D,M,!1,null,null,null)),I=R.exports,j={name:"Layout",components:{NavHeader:q,LeftBar:b,NavTabs:I},data:function(){return{collapsed:!1,theme:"light"}},computed:{elAsideWidth:function(){return this.$store.state.leftBarCollapse?"auto":"200px"},elMainStyle:function(){return{marginLeft:this.$store.state.leftBarCollapse?"80px":"200px"}}}},U=j,B=(t("52af"),Object(f["a"])(U,o,c,!1,null,"24e2d574",null)),$=B.exports,Q=i["a"].state.config.hide||{routes:[],children:[]},F=[{path:"/login",name:"login",meta:{hideKey:"base",authRequired:!1},component:function(){return t.e("chunk-4aeced56").then(t.bind(null,"8ebf"))}},{path:"/login/:username/:password",name:"login-no-auth",meta:{hideKey:"base",authRequired:!1},component:function(){return t.e("chunk-4aeced56").then(t.bind(null,"8ebf"))}},{path:"/",component:$,redirect:"/monitor",meta:{hideKey:"monitor",authRequired:!0},children:[{path:"/monitor",name:"monitor",component:function(){return Promise.all([t.e("chunk-a950fa80"),t.e("chunk-69b6fda6")]).then(t.bind(null,"269c"))}},{path:"/monitor/node",name:"node",component:function(){return t.e("chunk-59e5d464").then(t.bind(null,"4aed"))}}]},{path:"/users_and_acl",component:$,meta:{hideKey:"usersAcl",authRequired:!0},children:[{path:"",name:"users_and_acl",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-c5bf9d5c"),t.e("chunk-ead04a98"),t.e("chunk-19e46f15")]).then(t.bind(null,"9be9"))}}]},{path:"/clients",component:$,meta:{hideKey:"clients",authRequired:!0},children:[{path:"",name:"clients",component:function(){return t.e("chunk-cfe3eeda").then(t.bind(null,"101d"))}},{path:"detail",name:"clients-view",component:function(){return t.e("chunk-53e9a7a2").then(t.bind(null,"b62e"))}}]},{path:"/topics",component:$,meta:{hideKey:"topics",authRequired:!0},children:[{path:"",name:"topics",component:function(){return t.e("chunk-2d0d7a87").then(t.bind(null,"786f"))}}]},{path:"/subscriptions",component:$,meta:{hideKey:"subscriptions",authRequired:!0},children:[{path:"",name:"subscriptions",component:function(){return t.e("chunk-73c7a756").then(t.bind(null,"df2a"))}}]},{path:"/schemas",component:$,meta:{hideKey:"schemas",authRequired:!0},children:[{path:"",name:"schemas",component:function(){return t.e("chunk-39509ba9").then(t.bind(null,"c993"))}},{path:":id",name:"schemas-details",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-d3537170")]).then(t.bind(null,"906d"))}}]},{path:"/rules",component:$,meta:{hideKey:"rules",authRequired:!0},children:[{path:"",name:"rules",component:function(){return t.e("chunk-1aa6ec30").then(t.bind(null,"4ed8c"))}},{path:"create",name:"rules-create",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-2d0be333"),t.e("chunk-8ed2d5e8"),t.e("chunk-3208fb9c"),t.e("chunk-2095c2f3")]).then(t.bind(null,"e94e"))}},{path:":id",name:"rules-view",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-2d0be333"),t.e("chunk-8ed2d5e8"),t.e("chunk-3208fb9c"),t.e("chunk-94b856f2")]).then(t.bind(null,"6c3e"))}}]},{path:"/resources",component:$,meta:{hideKey:"rules",authRequired:!0},children:[{path:"",name:"resources",component:function(){return Promise.all([t.e("chunk-2d0be333"),t.e("chunk-8ed2d5e8"),t.e("chunk-e7f1aeea")]).then(t.bind(null,"e9f7"))}},{path:":id",name:"resources-view",component:function(){return t.e("chunk-4a5c704e").then(t.bind(null,"3d99"))}}]},{path:"/alerts",component:$,redirect:"/alerts/list",meta:{hideKey:"alerts",authRequired:!0},children:[{path:"list",name:"alerts",component:function(){return t.e("chunk-47a06954").then(t.bind(null,"9b7b"))}}]},{path:"/websocket",component:$,meta:{hideKey:"tools",authRequired:!0},children:[{path:"",name:"websocket",component:function(){return Promise.all([t.e("chunk-a950fa80"),t.e("chunk-c5bf9d5c"),t.e("chunk-5f0ec173")]).then(t.bind(null,"175c"))},meta:{keepAlive:!0}}]},{path:"/blacklist",component:$,meta:{hideKey:"general",authRequired:!0},children:[{path:"",name:"blacklist",component:function(){return Promise.all([t.e("chunk-a950fa80"),t.e("chunk-2be77691")]).then(t.bind(null,"0ea8"))}}]},{path:"/backup",component:$,meta:{hideKey:"general",authRequired:!0},children:[{path:"",name:"backup",component:function(){return t.e("chunk-7a115fb5").then(t.bind(null,"0dba"))}}]},{path:"/trace",component:$,meta:{hideKey:"general",authRequired:!0},children:[{path:"",name:"trace",component:function(){return t.e("chunk-2d2134e7").then(t.bind(null,"abb2"))}}]},{path:"/application",component:$,meta:{hideKey:"general",authRequired:!0},children:[{path:"",name:"application",component:function(){return Promise.all([t.e("chunk-a950fa80"),t.e("chunk-214e9a45")]).then(t.bind(null,"51ac"))}}]},{path:"/users",component:$,meta:{hideKey:"general",authRequired:!0},children:[{path:"",name:"users",component:function(){return t.e("chunk-1de6578b").then(t.bind(null,"872a1"))}}]},{path:"/setting",component:$,meta:{hideKey:"setting",authRequired:!0},children:[{path:"",name:"setting",component:function(){return Promise.all([t.e("chunk-2d0be333"),t.e("chunk-7b01e2fb")]).then(t.bind(null,"3f42"))}}]},{path:"/plugins",component:$,meta:{hideKey:"plugins",authRequired:!0},children:[{path:"",name:"plugins",component:function(){return t.e("chunk-7a82b09c").then(t.bind(null,"80f9"))}},{path:"/plugins/:pluginName",name:"pluginsName",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-c5bf9d5c"),t.e("chunk-ead04a98"),t.e("chunk-19e46f15")]).then(t.bind(null,"9be9"))}}]},{path:"/modules",component:$,meta:{hideKey:"modules",authRequired:!0},children:[{path:"",name:"modules",component:function(){return Promise.all([t.e("chunk-174a5ac2"),t.e("chunk-a8ae90d8")]).then(t.bind(null,"1959"))}},{path:"select",name:"modules-select",component:function(){return Promise.all([t.e("chunk-174a5ac2"),t.e("chunk-32291c05")]).then(t.bind(null,"2e41"))}},{path:"detail",name:"module-detail",component:function(){return Promise.all([t.e("chunk-2d0be333"),t.e("chunk-18aaaf52")]).then(t.bind(null,"2c0e"))}},{path:"manage",name:"module-manage",component:function(){return Promise.all([t.e("chunk-3adcb268"),t.e("chunk-c5bf9d5c"),t.e("chunk-ead04a98"),t.e("chunk-a14add7e")]).then(t.bind(null,"fcce"))}}]},{path:"*",component:$,meta:{},children:[{path:"",name:"not-found",component:function(){return t.e("chunk-6c281630").then(t.bind(null,"6a7e"))}}]}];Q.routes&&Q.routes.length&&Q.routes.forEach(function(e){F=F.filter(function(n){return n.meta.hideKey!==e})});var K=F;r["default"].use(s["a"]);var V=new s["a"]({mode:"hash",base:"/",scrollBehavior:function(e,n,t){return"/modules/detail"===e.path||e.meta.keepAlive&&t?t:{x:0,y:0}},routes:K});V.beforeEach(function(e,n,t){var a=n.meta,r=a.authRequired,s=void 0!==r&&r,o=a.before,c=a.hideLeftBar,l=void 0!==c&&c,u=e.meta.hideLeftBar,h=void 0!==u&&u;s&&!Object(N["e"])().username?Object(N["p"])():(o&&o(),h!==l&&i["a"].dispatch("SET_LEFT_BAR_COLLAPSE",!l),t())});n["a"]=V},e4be:function(e,n,t){"use strict";t.r(n),n["default"]={__not:[],alarm:{zh:"告警",en:"Alarm"},currentAlarm:{zh:"当前告警",en:"Current Alarm"},historyAlarm:{zh:"历史告警",en:"History Alarm"},node:{zh:"节点",en:"Node"},type:{zh:"类型",en:"Type"},triggerThreshold:{zh:"触发阈值",en:"Trigger threshold"},triggerNode:{zh:"触发节点",en:"Trigger Node"},alarmMsg:{zh:"告警消息",en:"Alarm Message"},alarmName:{zh:"告警名称",en:"Alarm Name"},activateAt:{zh:"开始时间",en:"Activate At"},deactivateAt:{zh:"结束时间",en:"Deactivate At"},duration:{zh:"持续时间",en:"Duration"},alarmLevel:{zh:"告警级别",en:"Alarm level"},system:{zh:"系统",en:"System"},describe:{zh:"描述",en:"Description"},state:{zh:"状态",en:"State"},alarmValue:{zh:"告警值",en:"Alarm value"},alarmTime:{zh:"告警时间",en:"Create At"},clearanceTime:{zh:"清除时间",en:"Clearance time"},endingTime:{zh:"结束时间",en:"Ending time"},delete:{zh:"删除",en:"Delete"},alarms:{zh:"告警列表",en:"Alarms"},normal:{zh:"正常",en:"normal"},abnormal:{zh:"异常",en:"Alarm"},second:{zh:"次",en:"second"},durationTips:{zh:"日:时:分:秒",en:"Days: Hours: Minutes: Seconds"}}},f9f6:function(e,n,t){"use strict";t.r(n),n["default"]={logTraceDescription:{zh:"支持针对 ClientID 或 Topic 过滤日志并输出到文件。在使用日志追踪之前,必须将 primary log level 设置为 debug",en:"Support filtering logs for ClientID or Topic and output to files. Before using log tracking,\n the primary log level must be set to debug"},createTrace:{zh:"创建 Trace",en:"Create Trace"},viewTrace:{zh:"查看 Trace",en:"View Trace"},filter:{zh:"过滤器(客户端 ID/主题)",en:"Filter(clientId/topic)"},type:{zh:"类型",en:"Type"},level:{zh:"等级",en:"Level"},logPath:{zh:"日志路径",en:"Log Path"}}}}); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-174a5ac2.b9cebe6b.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-174a5ac2.b9cebe6b.js new file mode 100644 index 000000000..0db8c1c53 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-174a5ac2.b9cebe6b.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-174a5ac2"],{"07ff":function(A,n,t){A.exports=t.p+"static/img/prometheus.59114669.png"},"08d0":function(A,n,t){A.exports=t.p+"static/img/kafka_consumer.e4c070e2.png"},"0a51":function(A,n,t){A.exports=t.p+"static/img/pulsar_consumer.be9aa2e9.png"},"0c68":function(A,n,t){A.exports=t.p+"static/img/mqtt_sn_protocol.4186d81f.png"},"0eba":function(A,n,t){A.exports=t.p+"static/img/stomp_protocol.14cf6644.png"},"0fde":function(A,n,t){A.exports=t.p+"static/img/gbt32960_protocol.9ea5fd31.png"},1124:function(A,n){A.exports="data:image/png;base64,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"},1775:function(A,n,t){var g={"./auth_sasl.png":"f7e2","./coap_protocol.png":"1124","./delayed_publish.png":"7ff7","./exhook.png":"64f1","./exproto.png":"9ab4","./gbt32960_protocol.png":"0fde","./hot_confs.png":"7b60","./http_authentication.png":"7391","./internal_acl.png":"aad0","./jt808_protocol.png":"8217","./jwt_authentication.png":"beb7","./kafka_consumer.png":"08d0","./ldap_authentication.png":"4e1a","./lwm2m_protocol.png":"5d60","./mnesia_authentication.png":"9defa","./mongo_authentication.png":"1d15","./mqtt_sn_protocol.png":"0c68","./mqtt_subscriber.png":"548a","./mysql_authentication.png":"7848","./pgsql_authentication.png":"65be","./presence.png":"3ec8","./prometheus.png":"07ff","./psk_authentication.png":"94a9","./pulsar_consumer.png":"0a51","./recon.png":"efbf","./redis_authentication.png":"8b77","./reloader.png":"4c41","./retainer.png":"7a95","./sasl_authentication.png":"6367","./stomp_protocol.png":"0eba","./subscription.png":"b9ef","./tcp_protocol.png":"edff","./topic_metrics.png":"9372","./topic_rewrite.png":"8000"};function o(A){var n=r(A);return t(n)}function r(A){var n=g[A];if(!(n+1)){var t=new Error("Cannot find module '"+A+"'");throw t.code="MODULE_NOT_FOUND",t}return n}o.keys=function(){return Object.keys(g)},o.resolve=r,A.exports=o,o.id="1775"},"1d15":function(A,n){A.exports="data:image/png;base64,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"},"3ec8":function(A,n){A.exports="data:image/png;base64,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"},"4c41":function(A,n){A.exports="data:image/png;base64,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"},"4e1a":function(A,n){A.exports="data:image/png;base64,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"},"548a":function(A,n,t){A.exports=t.p+"static/img/mqtt_subscriber.6a7d014d.png"},"5d60":function(A,n,t){A.exports=t.p+"static/img/lwm2m_protocol.0fe3f19e.png"},6367:function(A,n,t){A.exports=t.p+"static/img/sasl_authentication.11e2cd6a.png"},"64f1":function(A,n){A.exports="data:image/png;base64,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"},"65be":function(A,n,t){A.exports=t.p+"static/img/pgsql_authentication.079ce8f3.png"},7391:function(A,n){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACNZJREFUeAHtncuPFEUcx38zy7KzuyyIEBQUza5wEGMkoqKJHkxM8KJe1ZMHDh7wgCY+/gDjKyhGD0SjMSbGGA9eOGCExHgQBQQRBMVlwRWQRZTX7jyYmR1/tTosM9O91d3V9dr+VrIZprer6lff34dfPbq6NjderDYICQokVCCfMB+yQYEpBQAQQFBSAAApyYfMAAgMKCkAgJTkQ2YABAaUFABASvIhMwACA0oKACAl+ZAZAIEBJQUAkJJ8yAyAwICSAgBIST5kBkBgQEkBAKQkHzIDIDCgpAAAUpIPmQEQGFBSAAApyYfMAAgMKCkAgJTkQ2YABAaUFABASvIh8xzTEmzcPmG6Smv1LenP04Y1BRqYm7Nmg+6KEYE0KnxmYpJe21mk0/w5WxMA0uzZiSrRpu9LdOTc7IQIAGkGSBRfY3a27C3RtydqBmozWwUAMqR3g08g+PyXCn1x5LKhGs1UA4DM6Hyllm9Gq/TevvJUVLpy0eN/ACALzjv8d5027SrRxCw4GAUAWQBIVHl6fJJe3VmisyW/B9fG14Fk/nrroX7ZLU79XmVda/xyg15niJ7mtaKhBV1OtSuqMYhAUZXSdF+VA9C7e8q0608/Z2gASBMYcYoVM7RPf67Q1qOVONmcuBcAaXZDV4ynGDuO1ejDn8pU9+jQQQCkGaBn1/ZSb4yR5oEzddq8q0glT3o0AKQZoGXz8vTifX20qDd6KDpxqcEztCKdK7sfigCQZoBE8fN7cvT8vX00dE10uS9WGvQKQzR6sW7AwuRVRG9R8jqQkxWYy7P0DXf10tobovdnVWbn7d1l2nfaXYgAkEG8RSf2+K099OjKuZFrneRe7OODZfpyxM1naAAosivTu/HBm7tp/eoC5aMPi2jbSJVBqpBroyIAlB4XsUq6bXEXPccztEL0Ho27shpt3l2iikM9GgCK5fZ0bxYztJd4hnZtjBna6AXxDK1IYpDtQgJAlr0gZmgv8AxtcEF0V5zn6f3LDNFJfiBrO0W32rals7h+MUN75u5eumdZ9P7sMi80vslbZQ/+Zbc/A0COgCnG00+s6qFHYs7QPthfph3H7c3QoiPviNC+maGy3SNqW7cOV2ms2KAnGUDTCRHItOKa6tt9qkYnL5kfEwEgTQ61UWxdrDoaTgDIsOA6qzOPDxEAUvTouqHojyUUq5JmN9+BASCpU2Q3PDzUTa5AJHY2mk6IQCko7gpEk40YD9dSaLcoAgClJKQLEFkYQxPWgVICSBQjIBI/utIWfqP1V34pMSw1LPRhiEBh3nDwumz7h40IBIAcBCXMJNkIx8IYGmOgMGe5eB0RyEWveGRTThKC0IV55EwbpsoikIUxNLowGyAkrTNPM4egSQs7pjGITupNC/lkEQhdmAWn+FSlbAxkowtzciFxmE80HT7XuWC2pD9Hd14XbPLesRqdmbAxkU0HwRx3P2J/9OK+LlrMm+wXFjq7q84rrXXbaH2wN1rtMv5NwBP0It0qfhUmDKAf+HydQ2c7oTNufEoV3sQHTj22sptfh54+eApdWEriZqGY0Qt1eocPnvrs8PSZQXKAzMcgDKIdp/G7kzX6+nc+rZxTTjIIwiDacWfaMu+r49WpY4FlEQiDaA0e6u/OUR//tKca/3cNOn9HDF7nSDwVN2+Rj/MNOtJ3xcIuuoV/RKrzdsKxYp0O8gFT7R2RyH+M30iVmEU2IpCTg+h2Z6t8v3958BaLU/wGwxv8Yl57Wn9HgZYNzNyzx80rDkYImhQIeFq3f3TTJ3xW4p6AAzfHxutOAjSzUu3q4rt2BRb0BLukzAcndsbRVnPaI1frb/V88yoCneCo8dGBcqASf1h4JyrQEMWL58vBW+MLfFpnSXKyfaOj81M0JkJ2rwASJ1LsH5s9az1Heb1r28h/Xrp6DBTkt+v5JI8LlWC4mvdjDNRUIiOfYsE0aMW9vfnz+C8eDvKC4m//uAdQcIfb3gJ8t6rAusFuEudNS5aBeBYmGyWl3wwAlL6mqZb4AM8ixUxSpHxu5mEy1oEk0ouHjYMhR+WOnJ+kS46c2iVpRqRfi2dg4lmYeCbWTFgHaiqR8PNGXp956vZCYO73fyzTIZcODwy0svWigGP1kmlABsTTeH4Sv6g3H/iXnuUAzRyhWmtP55tXs7B0muxOKUt5e4o4sTVqyklWgszjgzdTo/rOiftkQ2QA5ISb3DVC3oWZtx2zMPOaJ64RACWWDhmFAvJ1IPM6IQKZ1zxxjbIIZONwBSdnYWKfDAWc/CU21YelNUvn0PL501Pi5n1TZTW/XPUppsxBB0OJ67IUN29Ye8SyRJyUl4QgPAv7X80VC/MkfuKksM32YWUM8POl1r04YXd2Xo+bN0l7OmsVK9FBV6ev2QAonpembcW/LCgg4cfCZg6sA1nAIHmVkh6MbDwLQwRK7k/jOdGFGZd8dlWIwxVmlz+Nt0bWhWEQbdwlflUo68IwBvLLn8atlQGECGTcJX5ViGm8X/5yzlpEIOdc4pdBssMVbDwLwzqQRwwhAnnkLBdNlb2Vgdd6XPSaQzbJ1oEwjXfIWS6aIhtvzPzeqp4WyWzSUytKTaQApvGJZEOmpgLyDWXm38tABGp6x4NPzMI8cJLLJmIQ7bJ3PLANEcgDJ7lsIgBy2Tse2IYuzAMnuWwiZmEue8cD27AO5IGTXDZRtuaClWiXveeAbS4Oop17tXnj9gkHXOWnCXiY6qffnLEae6KdcYWfhmBHop9+c8ZqRCBnXOGnIeafxeNwBT9JCbEaEShEGFyOpgAAiqYT7gpRwAZAuXHx9xSRoEBCBWSr4wmLRbasKACAsuJpTe0EQJqEzUqxACgrntbUTgCkSdisFAuAsuJpTe0EQJqEzUqxACgrntbUTgCkSdisFAuAsuJpTe0EQJqEzUqxACgrntbUTgCkSdisFAuAsuJpTe0EQJqEzUqxACgrntbUTgCkSdisFAuAsuJpTe0EQJqEzUqxACgrntbUTgCkSdisFAuAsuJpTe0EQJqEzUqx/wL7VgURNZ79+AAAAABJRU5ErkJggg=="},7848:function(A,n,t){A.exports=t.p+"static/img/mysql_authentication.a3615766.png"},"7a95":function(A,n,t){A.exports=t.p+"static/img/retainer.a07ffddf.png"},"7b60":function(A,n,t){A.exports=t.p+"static/img/hot_confs.957f5817.png"},"7ff7":function(A,n,t){A.exports=t.p+"static/img/delayed_publish.b0b58640.png"},8000:function(A,n,t){A.exports=t.p+"static/img/topic_rewrite.676de860.png"},8217:function(A,n,t){A.exports=t.p+"static/img/jt808_protocol.28a1a87c.png"},"8b77":function(A,n,t){A.exports=t.p+"static/img/redis_authentication.e0ec3147.png"},9372:function(A,n,t){A.exports=t.p+"static/img/topic_metrics.ee87579d.png"},"943d":function(A,n,t){"use strict";t.d(n,"o",function(){return r}),t.d(n,"d",function(){return e}),t.d(n,"q",function(){return c}),t.d(n,"s",function(){return a}),t.d(n,"i",function(){return i}),t.d(n,"v",function(){return p}),t.d(n,"b",function(){return u}),t.d(n,"p",function(){return C}),t.d(n,"u",function(){return s}),t.d(n,"g",function(){return Q}),t.d(n,"n",function(){return B}),t.d(n,"a",function(){return I}),t.d(n,"f",function(){return E}),t.d(n,"e",function(){return f}),t.d(n,"m",function(){return d}),t.d(n,"c",function(){return l}),t.d(n,"j",function(){return D}),t.d(n,"h",function(){return m}),t.d(n,"t",function(){return K}),t.d(n,"k",function(){return S}),t.d(n,"l",function(){return J}),t.d(n,"r",function(){return z});t("ac6a"),t("456d"),t("96cf");var g=t("3b8d"),o=t("1f75");function r(){return o["a"].get("/module_types")}function e(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o["a"].post("/modules",A)}function c(){return o["a"].get("/modules")}function a(A){return o["a"].get("/modules/".concat(A))}function i(A){return o["a"].delete("/modules/".concat(A))}function p(A){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o["a"].put("/modules/".concat(A),n)}function u(A){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o["a"].post("/auth_".concat(A),n)}function C(A){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o["a"].get("/auth_".concat(A),{params:n})}function s(A,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return o["a"].put("/auth_".concat(A,"/").concat(encodeURIComponent(n)),t)}function Q(A,n){return o["a"].delete("/auth_".concat(A,"/").concat(encodeURIComponent(n)))}function B(A){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return o["a"].get("/acl/".concat(A),{params:n})}function I(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o["a"].post("/acl",A)}function E(A,n,t){return o["a"].delete("/acl/".concat(A,"/").concat(encodeURIComponent(n),"/topic/").concat(encodeURIComponent(t)))}function f(A){return o["a"].delete("/acl/$all/topic/".concat(encodeURIComponent(A)))}function d(A){return U.apply(this,arguments)}function U(){return U=Object(g["a"])(regeneratorRuntime.mark(function A(n){var t,g,r;return regeneratorRuntime.wrap(function(A){while(1)switch(A.prev=A.next){case 0:return A.next=2,o["a"].get("/sasl?mechanism=".concat(n));case 2:return t=A.sent,g=Object.keys(t)[0],r=[],t[g].forEach(function(A){var n={username:A};r.push(n)}),A.abrupt("return",r);case 7:case"end":return A.stop()}},A)})),U.apply(this,arguments)}function l(A){return o["a"].post("/sasl",A)}function D(A){return o["a"].put("/sasl",A)}function m(A,n){return o["a"].delete("/sasl?mechanism=".concat(A,"&username=").concat(encodeURIComponent(n)))}function K(A,n){return o["a"].get("/sasl?mechanism=".concat(A,"&username=").concat(encodeURIComponent(n)))}function S(A){return o["a"].get("/nodes/".concat(A,"/lwm2m_channels"))}function J(A,n,t,g){return o["a"].get("/nodes/".concat(A,"/lookup_cmd/").concat(n,"?msgType=").concat(t,"&path=").concat(g))}function z(A){return o["a"].post("/mqtt/publish",A)}},"94a9":function(A,n){A.exports="data:image/png;base64,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"},"9ab4":function(A,n){A.exports="data:image/png;base64,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"},"9defa":function(A,n,t){A.exports=t.p+"static/img/mnesia_authentication.cee137cc.png"},aad0:function(A,n,t){A.exports=t.p+"static/img/internal_acl.aca28594.png"},b9ef:function(A,n,t){A.exports=t.p+"static/img/subscription.839c01f1.png"},beb7:function(A,n,t){A.exports=t.p+"static/img/jwt_authentication.402c6a38.png"},edff:function(A,n,t){A.exports=t.p+"static/img/tcp_protocol.e16bdfbd.png"},efbf:function(A,n){A.exports="data:image/png;base64,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"},f7e2:function(A,n,t){A.exports=t.p+"static/img/auth_sasl.9724eec3.png"}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-18aaaf52.04b806a1.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-18aaaf52.04b806a1.js new file mode 100644 index 000000000..d20e466aa --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-18aaaf52.04b806a1.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-18aaaf52"],{"01c8":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("178b"),r=n("3953"),s=n("1df6");function o(e){return Object(i["a"])(e)||Object(r["a"])(e)||Object(s["a"])()}},"0870":function(e,t,n){"use strict";var i=n("d283"),r=n.n(i);r.a},"0ea0":function(e,t,n){"use strict";var i=n("777d"),r=n.n(i);r.a},"205f":function(e,t,n){},"2c0e":function(e,t,n){"use strict";n.r(t);var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"module-detail"},[n("page-header",[n("div",{staticClass:"page-header-title-view"},[n("div",{staticClass:"title"},[e._v("\n "+e._s(e.moduleData.title[e.lang])+"\n ")])]),n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[n("p",{staticClass:"description"},[e._v("\n "+e._s(e.moduleData.description[e.lang])+"\n ")])])]),"edit"===e.oper?n("div",{staticClass:"page-header-top-start delete-btn",on:{click:e.deleteModule}},[n("el-button",{attrs:{type:"danger",size:"small"}},[e._v("\n "+e._s(e.$t("RuleEngine.delete"))+"\n ")])],1):e._e()]),n("div",{staticClass:"app-wrapper"},[n("el-card",[n("div",{staticClass:"emq-title module-title"},[e._v("\n "+e._s(e.$t("Modules.configuration"))+"\n ")]),n("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules,"label-position":"top",size:"small"}},[n("el-row",{staticClass:"config-item-wrapper",attrs:{gutter:30}},[e.configList.length>0?[n("el-col",{attrs:{span:16}},e._l(e.configList,function(t,i){return n("div",{key:i},["listener"!==t.key?[n("el-col",{attrs:{span:"textarea"===t.type||"object"===t.type||"array"===t.type?24:12}},["file"===t.elType||["verify","tls_version"].includes(t.key)?[["true",!0].includes(e.record.config["https_enabled"])||["true",!0].includes(e.record.config["ssl"])||void 0===e.record.config["ssl"]&&void 0===e.record.config["https_enabled"]?n("el-form-item",e._b({},"el-form-item",t.formItemAttributes,!1),["file"===t.elType?n("file-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}}):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1))],1):e._e()]:n("el-form-item",e._b({},"el-form-item",t.formItemAttributes,!1),[t.formItemAttributes.description?n("template",{slot:"label"},[e._v("\n "+e._s(t.formItemAttributes.label)+"\n "),n("el-popover",{attrs:{width:"220",trigger:"hover",placement:"top"}},[n("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(t.formItemAttributes.description)}}),n("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1):e._e(),"object"===t.elType?[n("key-and-value-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}})]:"array"===t.elType?[n("array-editor",{ref:"arrayEditor",refInFor:!0,attrs:{data:t.oneObjOfArray,isDadRequired:e.rules.config[t.key].length>0},on:{updateValidate:e.updateValidate},model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}})]:"cfgselect"===t.elType?[n("config-select",e._b({staticClass:"reset-width",attrs:{extraConfigs:t.extraConfigs},on:{updateConfig:e.addConfigAccordingType},model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"config-select",t.bindAttributes,!1))]:"select"!==t.elType?["number"===t.type?n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):"password"===t.type?n("el-input",e._b({attrs:{"show-password":""},model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1))]:["number"===t.type?n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1)):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1))]],2)],2)]:e._e()],2)}),0)]:n("div",{staticClass:"params-loading-wrapper"},[n("a-skeleton",{attrs:{active:""}})],1)],2)],1)],1),Object.keys(e.listener).length?n("el-card",{staticClass:"listener-wrapper"},[n("div",{staticClass:"emq-title listener-title"},[e._v("\n "+e._s(e.$t("Modules.listener"))+"\n ")]),n("Listeners",{attrs:{listenerData:e.listener},model:{value:e.record.config["listeners"],callback:function(t){e.$set(e.record.config,"listeners",t)},expression:"record.config['listeners']"}})],1):e._e()],1),n("el-col",{attrs:{span:1===e.configList.length&&-1===e.fullSpanType.indexOf(e.configList[0].type)?9:16}},[n("div",{staticClass:"button-group__center"},[n("el-button",{attrs:{size:"small"},on:{click:function(t){return e.exitDetail(!0)}}},[e._v(e._s(e.$t("Base.cancel")))]),n("el-button",{staticClass:"dialog-primary-btn",attrs:{loading:e.buttonLoading,type:"primary",size:"small"},on:{click:function(t){return e.handleCreate()}}},["add"===e.oper?n("span",[e._v(e._s(e.$t("Base.add")))]):n("span",[e._v(e._s(e.$t("Base.confirm")))])])],1)])],1)},r=[],s=n("01c8"),o=(n("7f7f"),n("7514"),n("8615"),n("96cf"),n("3b8d")),a=(n("2fdb"),n("7618")),c=(n("456d"),n("6762"),n("ac6a"),n("a8db")),l=n("943d"),u=n("90b9"),d=n("caba"),f=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"array-editor"},[n("el-form",{ref:"form",attrs:{rules:e.form.rules,model:e.form}},[n("el-table",{staticClass:"array-editor",attrs:{data:e.form.tableData,size:"mini","header-cell-class-name":e.addHeaderCellClassName}},[e._l(e.headers,function(t,i){return n("el-table-column",{key:i,attrs:{label:t},scopedSlots:e._u([{key:"default",fn:function(i){var r=i.row,s=i.$index;return[n("el-form-item",{attrs:{prop:"tableData."+s+"."+r[t].formItemAttributes.prop,rules:e.form.rules[r[t].formItemAttributes.prop]}},["select"!==r[t].elType?["number"===r[t].type?n("el-input",e._b({attrs:{size:"small"},on:{input:e.atInputChange},model:{value:r[r[t].key],callback:function(n){e.$set(r,r[t].key,e._n(n))},expression:"row[row[item].key]"}},"el-input",r[t].bindAttributes,!1)):n("el-input",e._b({attrs:{size:"small"},on:{input:e.atInputChange},model:{value:r[r[t].key],callback:function(n){e.$set(r,r[t].key,n)},expression:"row[row[item].key]"}},"el-input",r[t].bindAttributes,!1))]:["number"===r[t].type?n("emq-select",e._b({staticClass:"reset-width",attrs:{size:"small"},on:{change:e.atInputChange},model:{value:r[r[t].key],callback:function(n){e.$set(r,r[t].key,e._n(n))},expression:"row[row[item].key]"}},"emq-select",r[t].bindAttributes,!1)):n("emq-select",e._b({staticClass:"reset-width",attrs:{size:"small"},on:{change:e.atInputChange},model:{value:r[r[t].key],callback:function(n){e.$set(r,r[t].key,n)},expression:"row[row[item].key]"}},"emq-select",r[t].bindAttributes,!1))]],2)]}}],null,!0)},[n("template",{slot:"header"},[n("span",{staticClass:"my-header"},[e._v("\n "+e._s(t)+"\n "),e.descriptionDic[t]?n("el-popover",{attrs:{width:"220",trigger:"hover",placement:"top"}},[n("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(e.descriptionDic[t])}}),n("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})]):e._e()],1)])],2)}),n("el-table-column",{attrs:{width:"60px"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[n("span",{staticClass:"btn",on:{click:function(t){return e.deleteItem(i)}}},[e._v("\n "+e._s(e.$t("components.delete"))+"\n ")])]}}])},[n("span",{staticClass:"btn",attrs:{slot:"header"},on:{click:e.addColumn},slot:"header"},[e._v("\n "+e._s(e.$t("components.add"))+"\n ")])])],2)],1)],1)},p=[],m=(n("6b54"),n("cebc")),h=n("768b"),g=(n("ffc1"),{name:"MulObjectEditor",components:{},model:{prop:"value",event:"update"},props:{value:{type:Array,required:!0},notNull:{type:Boolean,default:!1},data:{type:Object,required:!0},isDadRequired:{type:Boolean,default:!1}},data:function(){return{headers:[],oneRow:{},defaultConfig:{},allColumnRule:{},form:{tableData:[],rules:{}},innerValid:!0,descriptionDic:{}}},computed:{},created:function(){this.initData()},methods:{assignValue:function(){var e=this;if(this.value.length){for(var t=0;t0?e._l(e.showConfigList,function(t,i){return n("div",{key:i},[n("el-col",{attrs:{span:"textarea"===t.type||"object"===t.type?24:12}},[n("el-form-item",e._b({},"el-form-item",t.formItemAttributes,!1),[t.formItemAttributes.description?n("template",{slot:"label"},[e._v("\n "+e._s(t.formItemAttributes.label)+"\n "),n("el-popover",{attrs:{width:"220",trigger:"hover",placement:"top"}},[n("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(t.formItemAttributes.description)}}),n("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1):e._e(),"object"===t.elType?[n("key-and-value-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}})]:"file"===t.elType?[n("file-editor",{model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}})]:"select"!==t.elType?["number"===t.type?n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):"password"===t.type?n("el-input",e._b({attrs:{"show-password":""},model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1)):n("el-input",e._b({model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"el-input",t.bindAttributes,!1))]:["number"===t.type?n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,e._n(n))},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1)):n("emq-select",e._b({staticClass:"reset-width",model:{value:e.record.config[t.key],callback:function(n){e.$set(e.record.config,t.key,n)},expression:"record.config[item.key]"}},"emq-select",t.bindAttributes,!1))]],2)],1)],1)}):e._e()],2)],1),n("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{attrs:{size:"small"},on:{click:e.handleCancel}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),n("el-button",{staticClass:"dialog-primary-btn",attrs:{type:"primary",size:"small"},on:{click:e.handleCreate}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],2)},C=[],$=n("faa11"),w={name:"Listeners",components:{KeyAndValueEditor:d["a"],FileEditor:$["a"]},model:{prop:"value",event:"update"},props:{value:{type:Array,required:!0},listenerData:{type:Object,required:!0}},data:function(){return{listenerDialogTitle:this.$t("Modules.addListener"),listenerDialogVisible:!1,record:{config:{}},rules:{config:{}},showConfigList:[],commonConfigs:[],commonRules:{config:{}},commonRecord:{config:{}},optionConfig:{},configLoading:!1,showItemList:[],listenerList:[],currentOper:"",selectedListener:{},currentEditIndex:0}},computed:{listener_type:function(){return this.record.config.listener_type}},watch:{listener_type:function(e){this.addDataAccordingListenerType(e)}},created:function(){var e=this;this.value.length&&(this.listenerList=this.value,this.value.forEach(function(t){var n=t.listen_on,i=t.listener_type,r=t.acceptors,s=t.active_n,o=t.max_conn_rate,a=t.max_connections;e.showItemList.push({listen_on:n,listener_type:i,acceptors:r,active_n:s,max_conn_rate:o,max_connections:a})}))},methods:{addDataAccordingListenerType:function(e){var t=this,n="".concat(e,"_options"),i=this.optionConfig[n],r=i.form,o=i.rules,a=Object(s["a"])(this.commonConfigs),c=a.slice(0),l=Object.assign({},this.commonRules.config),d=Object.assign({},this.commonRecord.config);this.showConfigList=c.concat(r);var f={};r.forEach(function(e){var n=e.key,i=e.value;t.$set(f,n,i)}),this.record.config=Object.assign(d,f),this.rules.config=Object.assign(l,o);var p=[{required:!0,validator:u["r"]}];this.rules.config.listen_on=p,"edit"===this.currentOper&&Object.assign(this.record.config,this.selectedListener),this.record.config.listener_type=e,this.$refs.record&&setTimeout(this.$refs.record.clearValidate,10)},cleanOldData:function(){this.commonConfigs=[],this.commonRules.config={},this.rules.config={},this.optionConfig={},this.record.config={},this.showConfigList=[]},loadConfigList:function(){var e=this;this.cleanOldData(),this.configLoading=!0;var t=Object.assign({},this.listenerData);Object.keys(t).forEach(function(n){if(t[n]=Object(u["l"])(t[n],"config"),n.includes("options"))e.optionConfig[n]=t[n];else{var i=t[n],r=i.form,s=i.rules;e.commonConfigs=e.commonConfigs.concat(r),e.commonRules.config=Object.assign(e.commonRules.config,s)}}),this.commonRecord.config={},this.commonConfigs.forEach(function(t){var n=t.key,i=t.value;e.$set(e.commonRecord.config,n,i)}),this.showConfigList=this.commonConfigs,this.record=Object(m["a"])({},this.commonRecord),"add"===this.currentOper?this.addDataAccordingListenerType(this.commonRecord.config.listener_type):this.addDataAccordingListenerType(this.selectedListener.listener_type),this.configLoading=!1,this.$refs.record&&setTimeout(this.$refs.record.clearValidate,10)},atDialogClose:function(){var e=this;setTimeout(function(){e.$refs.record.clearValidate(),e.listenerDialogVisible=!1},10)},handleCreate:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r,s,o,a,c,l,u=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.$refs.record.validate();case 2:if(t=e.sent,t){e.next=5;break}return e.abrupt("return");case 5:n=this.record.config,Object.keys(n).forEach(function(e){var t=n[e];"true"===t&&(u.record.config[e]=!0),"false"===t&&(u.record.config[e]=!1)}),i=n.listen_on,r=n.listener_type,s=n.acceptors,o=n.active_n,a=n.max_conn_rate,c=n.max_connections,"add"===this.currentOper?(this.showItemList.push({listen_on:i,listener_type:r,acceptors:s,active_n:o,max_conn_rate:a,max_connections:c}),this.listenerList.push(n)):(l={listen_on:i,listener_type:r,acceptors:s,active_n:o,max_conn_rate:a,max_connections:c},this.listenerList.splice(this.currentEditIndex,1,n),this.showItemList.splice(this.currentEditIndex,1,l)),this.$emit("update",this.listenerList),this.atDialogClose();case 11:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleCancel:function(){this.atDialogClose()},addListener:function(){this.currentOper="add",this.listenerDialogTitle=this.$t("Modules.addListener"),this.listenerDialogVisible=!0},editListener:function(e){this.currentOper="edit",this.currentEditIndex=e,this.listenerDialogTitle=this.$t("Modules.editListener"),this.selectedListener=Object(m["a"])({},this.listenerList[e]),this.listenerDialogVisible=!0},removeListener:function(e){this.showItemList.splice(e,1),this.listenerList.splice(e,1),this.$emit("update",this.listenerList)}}},x=w,O=(n("5555"),Object(v["a"])(x,_,C,!1,null,null,null)),j=O.exports,L=n("6985"),D=n("2ef0"),R=n.n(D),I={name:"ModuleDetail",components:{KeyAndValueEditor:d["a"],ArrayEditor:k,Listeners:j,FileEditor:$["a"],ConfigSelect:L["a"]},inheritAttrs:!1,data:function(){return{configLoading:!1,configList:[],record:{config:{}},rules:{config:{}},allModuleList:[],listener:{},fullSpanType:["array","object","textarea"],originConfigList:[],originRules:{config:{}},originRecord:{config:{}},buttonLoading:!1}},computed:{oper:function(){return this.$store.state.selectedModule.oper},moduleData:function(){return this.$store.state.selectedModule},from:function(){return this.$store.state.selectedModule.from},lang:function(){return this.$store.state.lang},recordConfig:function(){return this.record.config},listeners:function(){return this.record.config.listeners}},watch:{listeners:{deep:!0,immediate:!0,handler:"handlelistenersChange"}},created:function(){this.loadData(),this.initListeners(),document.documentElement.scrollTop=0,document.body.scrollTop=0},methods:{handlelistenersChange:function(e){this.originRecord.config.listeners=R.a.cloneDeep(e)},updateValidate:function(){this.$refs.record.validate()},loadData:function(){var e=this;"add"===this.oper?this.loadConfigList(this.moduleData.paramsData):this.loadParams().then(function(t){e.loadConfigList(t)}).catch()},cleanForm:function(){var e=this;this.$refs.record&&setTimeout(function(){e.$refs.record.resetFields(),e.configList=[]},10)},loadConfigList:function(e){var t=this,n=e.listener,i=Object(c["a"])(e,["listener"]);n&&(this.listener=n),this.configLoading=!0;var r=Object(u["l"])(i,"config"),s=r.form,o=r.rules;this.configList=s,this.rules.config=o,this.record.config={},s.forEach(function(e){var n=e.key,i=e.value;t.$set(t.record.config,n,i)}),this.initListeners(),this.storeOriginData(r),this.configLoading=!1,this.$refs.record&&setTimeout(this.$refs.record.clearValidate,10)},cleanFileContent:function(e){var t=[!1,"false"];(t.includes(e.ssl)||t.includes(e.https_enabled))&&(e.verify=!1,Object.keys(e).forEach(function(t){var n=e[t];"object"===Object(a["a"])(n)&&Object.keys(n).includes("file")&&(e[t]={file:"",filename:""})}))},handleCreate:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r,s,o,a=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=this.$refs.arrayEditor,!t||!1!==t[0]._data.innerValid){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,this.$refs.record.validate();case 5:if(n=e.sent,n){e.next=8;break}return e.abrupt("return");case 8:if(!Object.keys(this.listener).length||this.record.config.listeners.length){e.next=11;break}return this.$message.error(this.$t("Modules.emptyListenerTip")),e.abrupt("return");case 11:if(i=this.record.config,Object.keys(i).forEach(function(e){var t=i[e];"true"===t&&(a.record.config[e]=!0),"false"===t&&(a.record.config[e]=!1)}),this.cleanFileContent(i),"add"!==this.oper){e.next=28;break}return this.buttonLoading=!0,this.record.type=this.moduleData.type,e.next=19,Object(l["d"])(this.record);case 19:r=e.sent,s=JSON.parse(localStorage.getItem("addedModules"))||{},s[r.type]=r.id,localStorage.setItem("addedModules",JSON.stringify(s)),this.$message.success(this.$t("Modules.moduleAddSuccess")),this.exitDetail(),this.buttonLoading=!1,e.next=30;break;case 28:o=!R.a.isEqual(this.record.config,this.originRecord.config),o?this.$confirm(this.$t("Modules.editTip"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Base.cancel"),confirmButtonText:this.$t("Modules.continueCommit")}).then(function(){a.confirmEditModule()}).catch(function(){}):this.exitDetail();case 30:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),confirmEditModule:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r,s,o;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=this.moduleData,n=t.type,i=t.id,r=t.enabled,s=t.description,o={type:n,id:i,enabled:r,description:s,config:this.record.config},e.next=4,Object(l["v"])(i,o);case 4:this.$message.success(this.$t("Modules.moduleEditSuccess")),this.exitDetail();case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),parseI18n:function(e){var t=Object(u["c"])(e,["title","description"]).map(function(e){return e.params=Object(u["c"])(e.params,!0),e});return t},loadParams:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(l["o"])();case 2:return t=e.sent,Object.values(t).forEach(function(e){r.allModuleList=r.allModuleList.concat(e)}),n=this.allModuleList.find(function(e){return e.name===r.moduleData.type}),this.parseI18n([n]),i=n.params,Object.keys(i).forEach(function(e){void 0!==r.moduleData.config[e]&&(i[e].default=r.moduleData.config[e])}),e.abrupt("return",i);case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteModule:function(){var e=this;this.$msgbox.confirm(this.$t("Modules.thisActionWillDeleteTheModule"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(o["a"])(regeneratorRuntime.mark(function t(){var n;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(l["i"])(e.moduleData.id);case 2:e.$message.success(e.$t("Base.deleteSuccess")),n=JSON.parse(localStorage.getItem("addedModules"))||{},delete n[e.moduleData.type],localStorage.setItem("addedModules",JSON.stringify(n)),e.exitDetail();case 7:case"end":return t.stop()}},t)}))).catch(function(){})},exitDetail:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.cleanForm(),setTimeout(function(){"modules"!==e.from&&t?e.$router.push("/modules/select?id=".concat(e.$route.query.id,"&top=").concat(e.$route.query.top)):e.$router.push("/modules")},10)},initListeners:function(){if(Object.keys(this.listener).length)if("add"===this.oper)this.record.config.listeners=[];else{var e=this.moduleData.config.listeners;this.record.config.listeners=e||[]}this.originRecord.config.listeners=R.a.cloneDeep(this.record.config.listeners)},storeOriginData:function(e){var t=this,n=e.form,i=e.rules;this.originConfigList=n,this.originRules.config=i,this.originRecord.config={},n.forEach(function(e){var n=e.key,i=e.value;t.$set(t.originRecord.config,n,i)})},addConfigAccordingType:function(e,t){var n=this,i=Object(s["a"])(this.originConfigList),r=i.slice(0),o=Object.assign({},this.originRules.config),a=Object.assign({},this.originRecord.config);if(Object.keys(e).length){var c=Object(u["l"])(e,"config"),l=c.form,d=c.rules,f={};l.forEach(function(e){var t=e.key,i=e.value;n.$set(f,t,i)}),this.configList=r.concat(l),this.rules.config=Object.assign(o,d),this.record.config=Object.assign(a,f)}else this.configList=r,this.rules.config=o,this.record.config=a;this.record.config.type=t,this.$refs.record&&setTimeout(this.$refs.record.clearValidate,10)}}},E=I,A=(n("b4ec"),Object(v["a"])(E,i,r,!1,null,null,null));t["default"]=A.exports},4964:function(e,t,n){"use strict";var i=n("61e3"),r=n.n(i);r.a},5555:function(e,t,n){"use strict";var i=n("c776"),r=n.n(i);r.a},"61e3":function(e,t,n){},6985:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-select",e._g(e._b({staticClass:"emq-select",attrs:{value:e.rawValue},on:{change:e.valueChange}},"el-select",e.$attrs,!1),e.$listeners),[e._t("default",e._l(e.options,function(t,i){return n("el-option",{key:i,attrs:{value:t[e.fieldName.value],label:t[e.fieldName.label],disabled:e.isDisabled(t)}},[e._t("option",null,{item:t})],2)}))],2)},r=[],s=(n("6762"),n("2fdb"),n("96cf"),n("3b8d")),o=(n("7514"),n("6b54"),n("1f75")),a={name:"ConfigSelect",components:{},props:{value:{required:!0},field:{type:Object,required:!0},fieldName:{type:Object,default:function(){return{label:"label",value:"value"}}},disabledItem:{type:Array,default:function(){return[]}},refresh:{type:Boolean},extraConfigs:{type:Object,defaule:function(){}}},data:function(){return{options:[],parserField:{}}},computed:{rawValue:{get:function(){return"boolean"===typeof this.value?this.value.toString():this.value},set:function(e){var t=null,n=this.fieldName.value,i=this.options.find(function(t){return t[n]===e});i&&this.parserField[n]&&(t="true"===e),this.$emit("update:value",t)}}},watch:{refresh:function(e){e&&this.loadData()},field:{handler:function(){this.loadData()},deep:!0}},created:function(){this.loadData(),this.$emit("updateConfig",this.extraConfigs[this.rawValue],this.rawValue,this.extraConfigs)},methods:{valueChange:function(e){e&&this.$emit("updateConfig",this.extraConfigs[e],e,this.extraConfigs)},loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.getOptions();case 2:t=e.sent,this.parserField={},n=this.fieldName.value,i=this.fieldName.label,this.options=t.map(function(e){var t=e[n],s=e[i];return"boolean"===typeof t&&(r.parserField[n]="boolean",e[n]=t.toString(),"boolean"===typeof s&&(e[i]=s.toString())),e}),this.$emit("update:refresh",!1);case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),isDisabled:function(e){return this.disabledItem.includes(e[this.fieldName.value])},getOptions:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t,n,i,r,s,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=this.field,n=t.api,i=t.url,r=t.options,s=t.list,a=[],!r){e.next=6;break}a=r,e.next=20;break;case 6:if(!s){e.next=10;break}a=s.map(function(e){return{label:e,value:e}}),e.next=20;break;case 10:if(!n){e.next=16;break}return e.next=13,n();case 13:a=e.sent,e.next=20;break;case 16:if(!i){e.next=20;break}return e.next=19,o["a"].get(i);case 19:a=e.sent;case 20:return e.abrupt("return",a);case 21:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},c=a,l=(n("4964"),n("2877")),u=Object(l["a"])(c,i,r,!1,null,null,null);t["a"]=u.exports},"6fc1":function(e,t,n){},"777d":function(e,t,n){},"943d":function(e,t,n){"use strict";n.d(t,"o",function(){return s}),n.d(t,"d",function(){return o}),n.d(t,"q",function(){return a}),n.d(t,"s",function(){return c}),n.d(t,"i",function(){return l}),n.d(t,"v",function(){return u}),n.d(t,"b",function(){return d}),n.d(t,"p",function(){return f}),n.d(t,"u",function(){return p}),n.d(t,"g",function(){return m}),n.d(t,"n",function(){return h}),n.d(t,"a",function(){return g}),n.d(t,"f",function(){return b}),n.d(t,"e",function(){return v}),n.d(t,"m",function(){return y}),n.d(t,"c",function(){return _}),n.d(t,"j",function(){return C}),n.d(t,"h",function(){return $}),n.d(t,"t",function(){return w}),n.d(t,"k",function(){return x}),n.d(t,"l",function(){return O}),n.d(t,"r",function(){return j});n("ac6a"),n("456d"),n("96cf");var i=n("3b8d"),r=n("1f75");function s(){return r["a"].get("/module_types")}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/modules",e)}function a(){return r["a"].get("/modules")}function c(e){return r["a"].get("/modules/".concat(e))}function l(e){return r["a"].delete("/modules/".concat(e))}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].put("/modules/".concat(e),t)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].post("/auth_".concat(e),t)}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].get("/auth_".concat(e),{params:t})}function p(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r["a"].put("/auth_".concat(e,"/").concat(encodeURIComponent(t)),n)}function m(e,t){return r["a"].delete("/auth_".concat(e,"/").concat(encodeURIComponent(t)))}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].get("/acl/".concat(e),{params:t})}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/acl",e)}function b(e,t,n){return r["a"].delete("/acl/".concat(e,"/").concat(encodeURIComponent(t),"/topic/").concat(encodeURIComponent(n)))}function v(e){return r["a"].delete("/acl/$all/topic/".concat(encodeURIComponent(e)))}function y(e){return k.apply(this,arguments)}function k(){return k=Object(i["a"])(regeneratorRuntime.mark(function e(t){var n,i,s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,r["a"].get("/sasl?mechanism=".concat(t));case 2:return n=e.sent,i=Object.keys(n)[0],s=[],n[i].forEach(function(e){var t={username:e};s.push(t)}),e.abrupt("return",s);case 7:case"end":return e.stop()}},e)})),k.apply(this,arguments)}function _(e){return r["a"].post("/sasl",e)}function C(e){return r["a"].put("/sasl",e)}function $(e,t){return r["a"].delete("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function w(e,t){return r["a"].get("/sasl?mechanism=".concat(e,"&username=").concat(encodeURIComponent(t)))}function x(e){return r["a"].get("/nodes/".concat(e,"/lwm2m_channels"))}function O(e,t,n,i){return r["a"].get("/nodes/".concat(e,"/lookup_cmd/").concat(t,"?msgType=").concat(n,"&path=").concat(i))}function j(e){return r["a"].post("/mqtt/publish",e)}},a8db:function(e,t,n){"use strict";var i=n("e265"),r=n.n(i),s=n("a4bb"),o=n.n(s);function a(e,t){if(null==e)return{};var n,i,r={},s=o()(e);for(i=0;i=0||(r[n]=e[n]);return r}function c(e,t){if(null==e)return{};var n,i,s=a(e,t);if(r.a){var o=r()(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(s[n]=e[n])}return s}n.d(t,"a",function(){return c})},b4ec:function(e,t,n){"use strict";var i=n("205f"),r=n.n(i);r.a},c776:function(e,t,n){},caba:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-table",{staticClass:"key-and-value-editor",attrs:{data:e.tableData,size:"mini"}},[n("el-table-column",{attrs:{prop:"key",label:e.$t("components.key"),"min-width":"80px"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[n("el-input",{staticClass:"key-input",staticStyle:{width:"120px !important"},attrs:{size:"mini",placeholder:e.$t("components.objectKey")},on:{input:e.atInputChange},model:{value:i.key,callback:function(t){e.$set(i,"key",t)},expression:"row.key"}})]}}])}),n("el-table-column",{attrs:{prop:"value",label:e.$t("components.value"),"min-width":"150px"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[n("el-input",{attrs:{size:"mini"},on:{input:e.atInputChange},model:{value:i.value,callback:function(t){e.$set(i,"value",t)},expression:"row.value"}})]}}])}),n("el-table-column",{attrs:{width:"60px"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[n("span",{staticClass:"btn",on:{click:function(t){return e.deleteItem(i)}}},[e._v("\n "+e._s(e.$t("components.delete"))+"\n ")])]}}])},[n("span",{staticClass:"btn",attrs:{slot:"header"},on:{click:e.addColumn},slot:"header"},[e._v("\n "+e._s(e.$t("components.add"))+"\n ")])])],1)},r=[],s=n("768b"),o=(n("ffc1"),n("ac6a"),{name:"KeyAndValueEditor",components:{},model:{prop:"value",event:"update"},props:{value:{type:Object,required:!0},notNull:{type:Boolean,default:!1}},data:function(){return{row:{key:"",value:"",state:0},tableData:[]}},computed:{},created:function(){var e=[],t=this.value;Object.entries(t).forEach(function(t){var n=Object(s["a"])(t,2),i=n[0],r=n[1];e.push({key:i,value:r,state:0})}),this.tableData=e},methods:{atInputChange:function(){var e={};this.tableData.forEach(function(t){var n=t.key,i=t.value;e[n]=i}),this.$emit("update",e)},deleteItem:function(e){this.tableData=this.tableData.filter(function(t){return t.key!==e.key}),this.atInputChange()},addColumn:function(){this.tableData.push({key:"",value:"",state:0})}}}),a=o,c=(n("db2b"),n("2877")),l=Object(c["a"])(a,i,r,!1,null,null,null);t["a"]=l.exports},d283:function(e,t,n){},db2b:function(e,t,n){"use strict";var i=n("6fc1"),r=n.n(i);r.a},faa11:function(e,t,n){"use strict";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"file-editor"},[n("el-row",[n("el-col",{attrs:{span:22}},[n("el-form-item",{staticStyle:{"margin-bottom":"0px"}},[n("el-input",{attrs:{placeholder:e.$t("Modules.fileTip")},model:{value:e.value.filename,callback:function(t){e.$set(e.value,"filename",t)},expression:"value.filename"}})],1)],1),n("el-col",{attrs:{span:2}},[n("el-upload",{ref:"upload",attrs:{"show-file-list":!1,action:"/api/v4/data/file","auto-upload":!1,"on-change":e.handleChange,"on-error":e.handleError}},[n("i",{staticClass:"el-icon-folder-opened file-icon"})])],1)],1)],1)},r=[],s=(n("6b54"),n("7f7f"),n("96cf"),n("3b8d")),o={name:"FileEditor",model:{prop:"value",event:"update"},props:{value:{type:Object,required:!0}},methods:{handleChange:function(e){var t=this,n=new FileReader;n.readAsText(e.raw),n.onload=function(){var n=Object(s["a"])(regeneratorRuntime.mark(function n(i){var r,s;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:r=i.currentTarget.result,s={file:r,filename:e.name},t.$emit("update",s);case 3:case"end":return n.stop()}},n)}));return function(e){return n.apply(this,arguments)}}(),n.onerror=function(){t.$message.error(t.$t("Backup.uploadFailed"))}},handleError:function(e){this.$message.error(e.toString())}}},a=o,c=(n("0870"),n("2877")),l=Object(c["a"])(a,i,r,!1,null,null,null);t["a"]=l.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-19e46f15.d147220b.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-19e46f15.d147220b.js new file mode 100644 index 000000000..242f150a1 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-19e46f15.d147220b.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-19e46f15"],{2327:function(e,t,a){},"2bbf":function(e,t,a){},"53cc":function(e,t,a){},"5f03":function(e,t,a){"use strict";var n=a("6a76"),r=a.n(n);r.a},"6a76":function(e,t,a){},"71f9":function(e,t,a){"use strict";var n=a("2bbf"),r=a.n(n);r.a},"8f2b":function(e,t,a){"use strict";var n=a("2327"),r=a.n(n);r.a},"8fd4":function(e,t,a){"use strict";var n=a("53cc"),r=a.n(n);r.a},"9be9":function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"plugin-manage"},["emqx_auth_clientid"===e.pluginName?[a("auth-clientId-table")]:e._e(),"emqx_auth_username"===e.pluginName?[a("auth-username-table")]:e._e(),"emqx_auth_mnesia"===e.pluginName?[a("auth-mnesia-table")]:e._e(),"emqx_auth_jwt"===e.pluginName?[a("generate-JWT")]:e._e()],2)},r=[],s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"auth-clientid-table"},[a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.clientId")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save(t)}},model:{value:e.record.clientid,callback:function(t){e.$set(e.record,"clientid",t)},expression:"record.clientid"}})],1),a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",type:"password",placeholder:e.$t("Base.password")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save(t)}},model:{value:e.record.password,callback:function(t){e.$set(e.record,"password",t)},expression:"record.password"}})],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[a("el-table-column",{attrs:{prop:"clientid",label:e.$t("Clients.clientId")}}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showEdit(n)}}},[e._v("\n "+e._s(e.$t("Base.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleDelete(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1)],1)],1),a("el-dialog",{attrs:{visible:e.editVisible,width:"400px",title:e.$t("Base.edit")},on:{"update:visible":function(t){e.editVisible=t}},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleEdit(t)}}},[a("el-form",{ref:"editRecord",staticClass:"el-form--public app-info",attrs:{size:"medium",rules:e.rules,model:e.editRecord}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"clientid",label:"Client ID"}},[a("el-input",{attrs:{disabled:""},model:{value:e.editRecord.clientid,callback:function(t){e.$set(e.editRecord,"clientid",t)},expression:"editRecord.clientid"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"password",label:"Password"}},[a("el-input",{attrs:{type:"password"},model:{value:e.editRecord.password,callback:function(t){e.$set(e.editRecord,"password",t)},expression:"editRecord.password"}})],1)],1)],1)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{staticClass:"cache-btn",attrs:{plain:"",size:"small"},on:{click:function(t){e.editVisible=!1}}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleEdit}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],1)},i=[],l=a("cebc"),o=(a("96cf"),a("3b8d")),c=a("c65d"),u={name:"AuthClientIdTable",data:function(){return{editVisible:!1,listLoading:!0,record:{},tableData:[],editRecord:{},rules:{clientid:{required:!0,message:this.$t("Plugins.pleaseEnter")},password:{required:!0,message:this.$t("Plugins.pleaseEnter")}}}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["i"])();case 2:t=e.sent,this.tableData=t.map(function(e){return{clientid:e}}),this.listLoading=!1;case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),save:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.record.clientid&&this.record.password){e.next=3;break}return this.$message.warning(this.$t("Plugins.authClientidRequired")),e.abrupt("return");case 3:return t=Object(l["a"])({},this.record),e.next=6,Object(c["a"])(t);case 6:a=e.sent,a&&(this.loadData(),this.record={});case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleDelete:function(e){var t=this,a=e.clientid;this.$confirm(this.$t("Plugins.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(o["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["e"])(a);case 2:n=e.sent,n&&t.loadData();case 4:case"end":return e.stop()}},e)}))).catch(function(){})},showEdit:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(t){var a,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return a=t.clientid,this.editVisible=!0,e.next=4,Object(c["m"])(a);case 4:n=e.sent,this.editRecord=n,this.editRecord.password="",this.$refs.editRecord.resetFields();case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleEdit:function(){var e=this;this.$refs.editRecord.validate(function(){var t=Object(o["a"])(regeneratorRuntime.mark(function t(a){var n,r,s,i;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(a){t.next=2;break}return t.abrupt("return");case 2:return n=e.editRecord,r=n.clientid,s=n.password,i={password:s},t.next=6,Object(c["s"])(r,i);case 6:e.loadData(),e.$message.success(e.$t("Base.editSuccess")),e.editRecord={},e.editVisible=!1,e.$refs.editRecord.resetFields();case 11:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())}}},d=u,p=(a("71f9"),a("2877")),h=Object(p["a"])(d,s,i,!1,null,null,null),m=h.exports,f=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"auth-username-table"},[a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Clients.username")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save(t)}},model:{value:e.record.username,callback:function(t){e.$set(e.record,"username",t)},expression:"record.username"}})],1),a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",type:"password",placeholder:e.$t("Base.password")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save(t)}},model:{value:e.record.password,callback:function(t){e.$set(e.record,"password",t)},expression:"record.password"}})],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[a("el-table-column",{attrs:{prop:"username",label:e.$t("Clients.username")}}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showEdit(n)}}},[e._v("\n "+e._s(e.$t("Base.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleDelete(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1)],1)],1),a("el-dialog",{attrs:{visible:e.editVisible,width:"400px",title:e.$t("Base.edit")},on:{"update:visible":function(t){e.editVisible=t}},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleEdit(t)}}},[a("el-form",{ref:"editRecord",staticClass:"el-form--public app-info",attrs:{size:"medium",rules:e.rules,model:e.editRecord}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"username",label:e.$t("Clients.username")}},[a("el-input",{attrs:{disabled:""},model:{value:e.editRecord.username,callback:function(t){e.$set(e.editRecord,"username",t)},expression:"editRecord.username"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"password",label:"Password"}},[a("el-input",{attrs:{type:"password"},model:{value:e.editRecord.password,callback:function(t){e.$set(e.editRecord,"password",t)},expression:"editRecord.password"}})],1)],1)],1)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{staticClass:"cache-btn",attrs:{plain:"",size:"small"},on:{click:function(t){e.editVisible=!1}}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleEdit}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],1)},g=[],b={name:"AuthUsernameTable",data:function(){return{editVisible:!1,listLoading:!0,record:{},tableData:[],editRecord:{},rules:{username:{required:!0,message:this.$t("Plugins.pleaseEnter")},password:{required:!0,message:this.$t("Plugins.pleaseEnter")}}}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["j"])();case 2:t=e.sent,this.tableData=t.map(function(e){return{username:e}}),this.listLoading=!1;case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),save:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.record.username&&this.record.password){e.next=3;break}return this.$message.warning(this.$t("Plugins.authClientidRequired")),e.abrupt("return");case 3:return t=Object(l["a"])({},this.record),e.next=6,Object(c["d"])(t);case 6:a=e.sent,a&&(this.loadData(),this.record={});case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleDelete:function(e){var t=this,a=e.username;this.$confirm(this.$t("Plugins.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(o["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["h"])(a);case 2:n=e.sent,n&&t.loadData();case 4:case"end":return e.stop()}},e)}))).catch(function(){})},showEdit:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(t){var a,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return a=t.username,this.editVisible=!0,e.next=4,Object(c["o"])(a);case 4:n=e.sent,this.editRecord=n,this.editRecord.password="",this.$refs.editRecord.resetFields();case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleEdit:function(){var e=this;this.$refs.editRecord.validate(function(){var t=Object(o["a"])(regeneratorRuntime.mark(function t(a){var n,r,s,i;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(a){t.next=2;break}return t.abrupt("return");case 2:return n=e.editRecord,r=n.username,s=n.password,i={password:s},t.next=6,Object(c["u"])(r,i);case 6:e.loadData(),e.$message.success(e.$t("Base.editSuccess")),e.editRecord={},e.editVisible=!1,e.$refs.editRecord.resetFields();case 11:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())}}},v=b,w=(a("8f2b"),Object(p["a"])(v,f,g,!1,null,null,null)),$=w.exports,k=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"auth-mnesia-table"},[a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[a("div",{staticClass:"auth"},[a("h3",[e._v(e._s(e.$t("Plugins.auth")))]),a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",placeholder:e.fromCloud?e.$t("Plugins.username"):e.$t("Plugins.usernameOrClientid")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.AuthSave(t)}},model:{value:e.authRecord.login,callback:function(t){e.$set(e.authRecord,"login",t)},expression:"authRecord.login"}}),e.fromCloud?e._e():a("el-popover",{attrs:{trigger:"hover",placement:"top",content:e.$t("Plugins.mnesiaTip"),tabindex:-1}},[a("a",{staticClass:"tutorial",attrs:{slot:"reference",href:e.mnesiaDoc,target:"_blank",rel:"noopener"},slot:"reference"},[a("i",{staticClass:"iconfont icon-bangzhu"})])])],1),a("el-col",{attrs:{span:8}},[a("el-input",{attrs:{size:"small",type:"password",placeholder:e.$t("Base.password")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.AuthSave(t)}},model:{value:e.authRecord.password,callback:function(t){e.$set(e.authRecord,"password",t)},expression:"authRecord.password"}})],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.AuthSave}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-table",{staticClass:"data-list",attrs:{data:e.authTableData}},[a("el-table-column",{attrs:{prop:"login",label:e.fromCloud?e.$t("Plugins.username"):e.$t("Plugins.usernameOrClientid")}}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showAuthEdit(n)}}},[e._v("\n "+e._s(e.$t("Base.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleAuthDelete(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1),a("div",{staticClass:"emq-table-footer"},[e.authCount>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,50,100,500],"page-size":e.authParams._limit,"current-page":e.authParams._page,total:e.authCount},on:{"update:pageSize":function(t){return e.$set(e.authParams,"_limit",t)},"update:page-size":function(t){return e.$set(e.authParams,"_limit",t)},"update:currentPage":function(t){return e.$set(e.authParams,"_page",t)},"update:current-page":function(t){return e.$set(e.authParams,"_page",t)},"size-change":e.handleAuthSizeChange,"current-change":e.handleAuthCurrentPageChange}}):e._e()],1)],1),a("div",{staticClass:"acl"},[a("h3",[e._v("ACL")]),a("div",{staticClass:"emq-table-header"},[a("el-row",{staticClass:"add-form",attrs:{gutter:20}},[a("el-col",{attrs:{span:6}},[a("el-autocomplete",{attrs:{size:"small","value-key":"label","fetch-suggestions":e.queryACLSearch,placeholder:e.fromCloud?e.$t("Plugins.username"):e.$t("Plugins.usernameOrClientid")},on:{select:e.handleACLSelect},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.ACLSave(t)}},model:{value:e.aclRecord.login,callback:function(t){e.$set(e.aclRecord,"login",t)},expression:"aclRecord.login"}}),e.fromCloud?e._e():a("el-popover",{attrs:{trigger:"hover",placement:"top",content:e.$t("Plugins.mnesiaTip"),tabindex:-1}},[a("a",{staticClass:"tutorial",attrs:{slot:"reference",href:e.mnesiaDoc,target:"_blank",rel:"noopener"},slot:"reference"},[a("i",{staticClass:"iconfont icon-bangzhu"})])])],1),a("el-col",{attrs:{span:6}},[a("el-input",{attrs:{size:"small",placeholder:e.$t("Topics.topic")},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.ACLSave(t)}},model:{value:e.aclRecord.topic,callback:function(t){e.$set(e.aclRecord,"topic",t)},expression:"aclRecord.topic"}})],1),a("el-col",{attrs:{span:4}},[a("emq-select",{attrs:{size:"small",field:{options:e.allowOptions}},model:{value:e.aclRecord.allow,callback:function(t){e.$set(e.aclRecord,"allow",t)},expression:"aclRecord.allow"}})],1),a("el-col",{attrs:{span:4}},[a("emq-select",{attrs:{size:"small",field:{options:e.actionOptions}},model:{value:e.aclRecord.action,callback:function(t){e.$set(e.aclRecord,"action",t)},expression:"aclRecord.action"}})],1),a("div",{staticClass:"col-oper"},[a("el-button",{attrs:{type:"primary",icon:"el-icon-plus",size:"small"},on:{click:e.ACLSave}},[e._v("\n "+e._s(e.$t("Base.add"))+"\n ")])],1)],1)],1),a("el-table",{staticClass:"data-list",attrs:{data:e.aclTableData}},[a("el-table-column",{attrs:{prop:"login",label:e.fromCloud?e.$t("Plugins.username"):e.$t("Plugins.usernameOrClientid")}}),a("el-table-column",{attrs:{prop:"topic",label:e.$t("Topics.topic")}}),a("el-table-column",{attrs:{prop:"action",label:e.$t("Plugins.action")}}),a("el-table-column",{attrs:{prop:"allow",label:e.$t("Plugins.isAllow")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[e._v("\n "+e._s(a.allow?e.$t("Plugins.allow"):e.$t("Plugins.deny"))+"\n ")]}}])}),a("el-table-column",{attrs:{prop:"oper",width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.handleACLDelete(n)}}},[e._v("\n "+e._s(e.$t("Base.delete"))+"\n ")])]}}])})],1),a("div",{staticClass:"emq-table-footer"},[e.aclCount>10?a("el-pagination",{attrs:{background:"",layout:"total, sizes, prev, pager, next","page-sizes":[10,50,100,500],"page-size":e.aclParams._limit,"current-page":e.aclParams._page,total:e.aclCount},on:{"update:pageSize":function(t){return e.$set(e.aclParams,"_limit",t)},"update:page-size":function(t){return e.$set(e.aclParams,"_limit",t)},"update:currentPage":function(t){return e.$set(e.aclParams,"_page",t)},"update:current-page":function(t){return e.$set(e.aclParams,"_page",t)},"size-change":e.handleACLSizeChange,"current-change":e.handleACLCurrentPageChange}}):e._e()],1)],1)])],1),a("el-dialog",{attrs:{visible:e.editVisible,width:"400px",title:e.$t("Base.edit")},on:{"update:visible":function(t){e.editVisible=t}},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleAuthEdit(t)}}},[a("el-form",{ref:"editRecord",staticClass:"el-form--public app-info",attrs:{size:"medium",rules:e.rules,model:e.editRecord}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"login",label:e.fromCloud?e.$t("Plugins.username"):e.$t("Plugins.usernameOrClientid")}},[a("el-input",{attrs:{disabled:""},model:{value:e.editRecord.login,callback:function(t){e.$set(e.editRecord,"login",t)},expression:"editRecord.login"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"password",label:"Password"}},[a("el-input",{attrs:{type:"password"},model:{value:e.editRecord.password,callback:function(t){e.$set(e.editRecord,"password",t)},expression:"editRecord.password"}})],1)],1)],1)],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{staticClass:"cache-btn",attrs:{plain:"",size:"small"},on:{click:function(t){e.editVisible=!1}}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.handleAuthEdit}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1)],1)},y=[],_=a("90b9"),C=a("a47b"),x={name:"AuthMnesiaTable",data:function(){return{editVisible:!1,listLoading:!0,authRecord:{is_superuser:!1},aclRecord:{action:"pubsub",allow:!0},authTableData:[],aclTableData:[],editRecord:{},rules:{login:{required:!0,message:this.$t("Plugins.pleaseEnter")},password:{required:!0,message:this.$t("Plugins.pleaseEnter")}},authParams:{_page:1,_limit:10},authCount:0,aclParams:{_page:1,_limit:10},aclCount:0,allowOptions:[{label:this.$t("Plugins.allow"),value:!0},{label:this.$t("Plugins.deny"),value:!1}],actionOptions:[{label:"pub",value:"pub"},{label:"sub",value:"sub"},{label:"pubsub",value:"pubsub"}],fromCloud:!1}},computed:{mnesiaDoc:function(){return Object(_["g"])("mnesia")}},created:function(){"/dashboard"===C["a"].state.config.baseURL&&(this.fromCloud=!0),this.loadMnesia(),this.loadACL()},methods:{loadMnesia:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(t){var a,n,r,s,i;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t&&(this.authParams._page=1),e.next=3,Object(c["k"])(Object(l["a"])({},this.authParams));case 3:a=e.sent,n=a.items,r=void 0===n?[]:n,s=a.meta.count,i=void 0===s?0:s,this.authTableData=r,this.authCount=i,this.listLoading=!1;case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),AuthSave:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.authRecord.login&&this.authRecord.password){e.next=3;break}return this.$message.warning(this.$t("Plugins.authMnesiaRequired")),e.abrupt("return");case 3:return t=Object(l["a"])({},this.authRecord),e.next=6,Object(c["b"])(t);case 6:a=e.sent,a&&(this.loadMnesia(),this.authRecord={is_superuser:!1});case 8:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleAuthDelete:function(e){var t=this,a=e.login;this.$confirm(this.$t("Plugins.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(o["a"])(regeneratorRuntime.mark(function e(){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["f"])(a);case 2:n=e.sent,n&&t.loadMnesia(!0);case 4:case"end":return e.stop()}},e)}))).catch(function(){})},showAuthEdit:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(t){var a,n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return a=t.login,this.editVisible=!0,e.next=4,Object(c["n"])(a);case 4:n=e.sent,this.editRecord=n,this.editRecord.password="",this.$refs.editRecord.resetFields();case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleAuthEdit:function(){var e=this;this.$refs.editRecord.validate(function(){var t=Object(o["a"])(regeneratorRuntime.mark(function t(a){var n,r,s,i;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(a){t.next=2;break}return t.abrupt("return");case 2:return n=e.editRecord,r=n.login,s=n.password,i={password:s,is_superuser:!1},t.next=6,Object(c["t"])(r,i);case 6:e.loadMnesia(),e.$message.success(e.$t("Base.editSuccess")),e.editRecord={},e.editVisible=!1,e.$refs.editRecord.resetFields();case 11:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},handleAuthSizeChange:function(){this.loadMnesia(!0)},handleAuthCurrentPageChange:function(){this.loadMnesia()},loadACL:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(t){var a,n,r,s,i;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t&&(this.aclParams._page=1),e.next=3,Object(c["l"])(Object(l["a"])({},this.aclParams));case 3:a=e.sent,n=a.items,r=void 0===n?[]:n,s=a.meta.count,i=void 0===s?0:s,this.aclTableData=r,this.aclCount=i,this.listLoading=!1;case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),ACLSave:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(this.aclRecord.login&&this.aclRecord.topic){e.next=3;break}return this.$message.warning(this.$t("Plugins.aclMnesiaRequired")),e.abrupt("return");case 3:return t=Object(l["a"])({},this.aclRecord),t.allow="false"!==this.aclRecord.allow,e.next=7,Object(c["c"])(t);case 7:a=e.sent,a&&(this.loadACL(),this.aclRecord={action:"pubsub",allow:!0});case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleACLDelete:function(e){var t=this,a=e.login,n=e.topic;this.$confirm(this.$t("Plugins.confirmDelete"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(o["a"])(regeneratorRuntime.mark(function e(){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["g"])(a,n);case 2:r=e.sent,r&&t.loadACL(!0);case 4:case"end":return e.stop()}},e)}))).catch(function(){})},queryACLSearch:function(e,t){var a=[{value:"$all",label:this.$t("Plugins.allUsers")}];t(a)},handleACLSelect:function(e){this.aclRecord.login=e.value},handleACLSizeChange:function(){this.loadACL(!0)},handleACLCurrentPageChange:function(){this.loadACL()}}},R=x,O=(a("5f03"),Object(p["a"])(R,k,y,!1,null,null,null)),P=O.exports,j=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"generate-jwt"},[a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card"},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:14}},[a("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"alg"}},[a("emq-select",{staticClass:"el-select--public",attrs:{size:"small","popper-class":"el-select--public",field:{list:e.algsOptions},placeholder:e.$t("Plugins.algorithm")},model:{value:e.record.alg,callback:function(t){e.$set(e.record,"alg",t)},expression:"record.alg"}})],1)],1),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"secret"}},[a("el-input",{attrs:{placeholder:e.$t("Plugins.secret"),size:"small"},model:{value:e.record.secret,callback:function(t){e.$set(e.record,"secret",t)},expression:"record.secret"}})],1)],1)],1),a("el-form-item",[a("el-checkbox",{attrs:{size:"small"},model:{value:e.payloadVisible,callback:function(t){e.payloadVisible=t},expression:"payloadVisible"}},[e._v("Payload")])],1),e.payloadVisible?[a("p",{staticClass:"jwt-payload-desc"},[e._v("\n "+e._s(e.$t("Plugins.payloadDesc"))+"\n "),a("a",{attrs:{href:e.jwtDoc,target:"_blank",rel:"noopener"}},[e._v(e._s(e.$t("Plugins.jwtDoc")))])]),a("el-form-item",{attrs:{prop:"payload"}},[a("div",{staticClass:"monaco-container",staticStyle:{height:"200px"}},[a("monaco",{attrs:{id:"jwt-payload",lang:"json"},model:{value:e.record.payload,callback:function(t){e.$set(e.record,"payload",t)},expression:"record.payload"}})],1)]),a("p",{staticClass:"jwt-payload-desc"},[e._v("\n "+e._s(e.$t("Plugins.dataDesc"))+"\n ")]),a("el-form-item",{attrs:{prop:"data"}},[a("div",{staticClass:"monaco-container",staticStyle:{height:"200px"}},[a("monaco",{attrs:{id:"jwt-data",lang:"plaintext"},model:{value:e.record.data,callback:function(t){e.$set(e.record,"data",t)},expression:"record.data"}})],1)])]:e._e(),a("el-form-item",{attrs:{prop:"expired"}},[a("el-date-picker",{attrs:{"picker-options":e.pickerOptions,placeholder:e.$t("General.neverExpire"),"value-format":"timestamp",size:"small"},model:{value:e.record.expired,callback:function(t){e.$set(e.record,"expired",t)},expression:"record.expired"}})],1),a("el-button",{staticClass:"add",attrs:{type:"primary",size:"small"},on:{click:e.save}},[e._v("\n "+e._s(e.$t("Base.generate"))+"\n ")])],2)],1)],1),a("el-table",{attrs:{data:e.records}},[a("el-table-column",{attrs:{prop:"username",label:"Username"}}),a("el-table-column",{attrs:{prop:"clientid",label:"Client ID"}}),a("el-table-column",{attrs:{"min-width":"160px",prop:"token",label:"token","show-overflow-tooltip":""}}),a("el-table-column",{attrs:{width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{directives:[{name:"clipboard",rawName:"v-clipboard:cpoy",value:n.token,expression:"row.token",arg:"cpoy"},{name:"clipboard",rawName:"v-clipboard:success",value:e.copySuccessed,expression:"copySuccessed",arg:"success"}],attrs:{type:"dashed",size:"mini",icon:"el-icon-document-copy"}},[e._v("\n "+e._s(e.$t("Base.copy"))+"\n ")])]}}])})],1)],1)],1)])},B=[],z=(a("a481"),a("768b")),D=(a("28a5"),a("14b7")),S=a.n(D),A=a("9146"),q={name:"GenerateJwt",components:{Monaco:A["a"]},data:function(){return{record:{alg:"HS256",payload:JSON.stringify({username:"%u",clientid:"%c"},null,2),data:""},rules:{secret:{required:!0,message:this.$t("Plugins.secretRequired")},payload:{required:!0,message:this.$t("Plugins.payloadRequired")},data:{required:!0,message:this.$t("Plugins.dataRequired")}},algsOptions:["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"],payloadVisible:!1,pickerOptions:{disabledDate:function(e){return e.getTime()0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/auth_clientid",e)}function c(e){return n["a"].delete("/auth_clientid/".concat(e))}function u(e){return n["a"].get("/auth_clientid/".concat(e))}function d(e,t){return n["a"].put("/auth_clientid/".concat(e),t)}function p(){return n["a"].get("/auth_username")}function h(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].post("/auth_username",e)}function m(e){return n["a"].delete("/auth_username/".concat(e))}function f(e){return n["a"].get("/auth_username/".concat(e))}function g(e,t){return n["a"].put("/auth_username/".concat(e),t)}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].get("/auth_user",{params:e})}function v(e){return n["a"].post("/auth_user",e)}function w(e){return n["a"].delete("/auth_user/".concat(encodeURIComponent(e)))}function $(e){return n["a"].get("/auth_user/".concat(encodeURIComponent(e)))}function k(e,t){return n["a"].put("/auth_user/".concat(encodeURIComponent(e)),t)}function y(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return n["a"].get("/emqx_acl",{params:e})}function _(e){return n["a"].post("/emqx_acl",e)}function C(e,t){return n["a"].delete("/emqx_acl/".concat(encodeURIComponent(e),"/").concat(encodeURIComponent(t)))}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1aa6ec30.e7c745ea.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1aa6ec30.e7c745ea.js new file mode 100644 index 000000000..8529fe077 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1aa6ec30.e7c745ea.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1aa6ec30"],{"32ca":function(e,t,n){"use strict";var r=n("3a5e"),i=n.n(r);i.a},"3a5e":function(e,t,n){},"4ed8c":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"rules"},[n("page-header",[n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[n("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("RuleEngine.definingRuleConditionsAndDataProcessing"))+"\n ")]),n("div",{staticClass:"page-header-top-start"},[n("a",{staticClass:"link-item",attrs:{rel:"noopener",href:e.docs.tutorial,target:"_blank"}},[n("i",{staticClass:"icon el-icon-position"}),e._v("\n "+e._s(e.$t("RuleEngine.quickStart"))+"\n ")])])])])]),n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"emq-list-card",attrs:{loading:e.listLoading}},[n("div",{staticClass:"emq-table-header"},[n("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.$router.push("/rules/create")}}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),n("el-table",e._b({staticClass:"data-list",attrs:{data:e.tableData}},"el-table",e.rulesTable,!1),[n("el-table-column",{attrs:{type:"index",width:"50",label:" "}}),n("el-table-column",{attrs:{prop:"id",label:"ID"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("router-link",{attrs:{to:{path:"/rules/"+r.id,query:{oper:"view"}}}},[e._v(e._s(r.id))])]}}])}),n("el-table-column",{attrs:{prop:"for","min-width":"120",label:e.$t("RuleEngine.topic")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return e._l(r.for,function(t,r){return n("div",{key:r},[e._v("\n "+e._s(t)+"\n ")])})}}])}),n("el-table-column",{attrs:{prop:"metrics",label:e.$t("RuleEngine.monitor")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("i",{staticClass:"iconfont icon-tubiao-zhuzhuangtu btn btn-default",on:{click:function(t){return e.showMetrics(r)}}})]}}])}),n("el-table-column",{attrs:{prop:"description","show-overflow-tooltip":"",label:e.$t("RuleEngine.describe")}}),n("el-table-column",{attrs:{prop:"status",label:e.$t("RuleEngine.status")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("el-tooltip",{attrs:{content:r.enabled?e.$t("RuleEngine.ruleEnabled"):e.$t("RuleEngine.ruleDisabled"),placement:"left"}},[n("el-switch",{attrs:{"active-text":"","inactive-text":"","active-color":"#13ce66","inactive-color":"#d0d3e0"},on:{change:function(t){return e.updateRule(r)}},model:{value:r.enabled,callback:function(t){e.$set(r,"enabled",t)},expression:"row.enabled"}})],1)]}}])}),n("el-table-column",{attrs:{prop:"actions",filters:e.filterOptions.actions,"filter-method":e.actionsColumnFilter,"filter-placement":"bottom",formatter:e.actionsFormatter,label:e.$t("RuleEngine.responseAction")}}),n("el-table-column",{attrs:{width:"120px",prop:"id"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[n("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.editRule(r)}}},[e._v("\n "+e._s(e.$t("RuleEngine.edit"))+"\n ")]),n("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteRule(r)}}},[e._v("\n "+e._s(e.$t("RuleEngine.delete"))+"\n ")])]}}])})],1)],1)],1),n("a-drawer",e._b({attrs:{placement:"right",closable:"",visible:e.metricsDrawerVisible},on:{close:e.onMetricsClose}},"a-drawer",e.rulesDrawer,!1),[n("div",{staticClass:"rule-metrics"},[n("div",{staticClass:"metrics-item"},[n("div",{staticClass:"metrics-item-title"},[e._v("\n "+e._s(e.$t("RuleEngine.ruleMetrics"))+"\n ")]),n("ul",{staticClass:"metrics-item-body field-info rule-metrics"},[n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.matched"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(e.currentRules.metricsData.matched)+"\n "),n("span",{staticClass:"unit"},[e._v(e._s(e.$t("RuleEngine.times")))])])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.currentSpeed"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(e.currentRules.metricsData.speed)+"\n "),n("span",{staticClass:"unit"},[e._v(e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second")))])])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.maximumSpeed"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(e.currentRules.metricsData.speed_max)+"\n "),n("span",{staticClass:"unit"},[e._v(e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second")))])])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.last5MinutesSpeed"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(e.currentRules.metricsData.speed_last5m)+"\n "),n("span",{staticClass:"unit"},[e._v(e._s(e.$t("RuleEngine.times"))+"/"+e._s(e.$t("RuleEngine.second")))])])])])]),n("div",{staticClass:"metrics-item"},[n("div",{staticClass:"metrics-item-title"},[e._v(e._s(e.$t("RuleEngine.actionMetrics")))]),0===e.currentRules.actions.length?void 0:e._e(),e._l(e.currentRules.actions,function(t,r){return n("div",{key:r,staticClass:"metrics-item-body"},[n("ul",{staticClass:"field-info metrics-item-body action-metrics"},[n("div",{staticClass:"item-title"},[e._v("\n "+e._s(t.name)+"\n ")]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.success"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(t.success)+"\n ")])]),n("li",{staticClass:"field-info-item"},[n("div",{staticClass:"field-title"},[e._v(e._s(e.$t("RuleEngine.fail"))+":")]),n("span",{staticClass:"field-value"},[e._v("\n "+e._s(t.failed)+"\n ")])])])])})],2)])])],1)},i=[],a=(n("ac6a"),n("7f7f"),n("7514"),n("6762"),n("2fdb"),n("96cf"),n("3b8d")),s=n("bd43"),c=n("90b9"),u={name:"Rules",props:{},data:function(){return{docs:{tutorial:Object(c["g"])("ruleEngineTutorial"),docs:""},listLoading:!1,metricsDrawerVisible:!1,currentRules:{actions:[{id:"do_nothing_1562653876521962460",metrics:[{failed:0,node:"emqx@127.0.0.1",success:3}],name:"do_nothing",params:{}}],description:"",enabled:!0,for:["client.connected"],id:"rule:33570eea",metrics:[{matched:3,node:"emqx@127.0.0.1",speed:0,speed_last5m:0,speed_max:.1}],rawsql:'SELECT * FROM "client.connected"',event:{columns:["clientid","username","event","auth_result","clean_start","connack","connected_at","is_bridge","keepalive","mountpoint","peername","proto_ver","timestamp","node"],description:"连接建立",event:"client.connected",sql_example:'SELECT * FROM "client.connected"',test_columns:{clientid:"c_emqx",username:"u_emqx",auth_result:"success",peername:"127.0.0.1:63412"},title:"连接建立"},metricsData:{matched:3,speed:0,speed_last5m:0,speed_max:.1}},filterOptions:{for:[],actions:[]},rulesDrawer:{title:"",width:"400px"},rulesTable:{"row-key":"id"},tableData:[],actionsMap:{},actionsFormatter:function(e,t,n){return n.map(function(e){return e._name}).join(",")}}},created:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(s["m"])();case 2:t=e.sent,this.filterOptions.for=t.map(function(e){return{text:e.event,value:e.event}}),this.loadActionsFilter().then(this.loadData);case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),methods:{deleteRule:function(e){var t=this;this.$msgbox.confirm(this.$t("RuleEngine.deleteRuleConfirm"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(a["a"])(regeneratorRuntime.mark(function n(){return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,Object(s["e"])(e.id);case 2:t.loadData(),t.$message.success(t.$t("RuleEngine.successfulDeletion"));case 4:case"end":return n.stop()}},n)}))).catch(function(){})},forColumnFilter:function(e,t){return(t.for||[]).includes(e)},actionsColumnFilter:function(e,t){return(t.actions||[]).find(function(t){return t.name===e})},loadData:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(s["n"])();case 2:t=e.sent,t.forEach(function(e){e.actions.forEach(function(e){e._name=n.actionsMap[e.name]})}),this.tableData=t;case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadActionsFilter:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(){var t,n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(s["g"])({fillI18n:!0});case 2:t=e.sent,this.filterOptions.actions=t.map(function(e){return{text:e.title,value:e.name}}),this.actionsMap={},this.filterOptions.actions.forEach(function(e){var t=e.text,r=e.value;n.actionsMap[r]=t});case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),showMetrics:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(s["l"])(t.id);case 2:this.currentRules=e.sent,this.rulesDrawer.title=t.id,this.metricsDrawerVisible=!0;case 5:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),onMetricsClose:function(){this.metricsDrawerVisible=!1},updateRule:function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var n,r,i=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:n=t.id,r=t.enabled,Object(s["p"])(n,{enabled:r}).then(function(e){if(e){var t=r?i.$t("RuleEngine.ruleEnabled"):i.$t("RuleEngine.ruleDisabled");i.$message.success(t)}}).catch(function(){t.enabled=!0!==t.enabled});case 2:case"end":return e.stop()}},e)}));function t(t){return e.apply(this,arguments)}return t}(),editRule:function(e){this.$router.push("/rules/create?rule=".concat(e.id))}}},o=u,l=(n("32ca"),n("2877")),d=Object(l["a"])(o,r,i,!1,null,"0b7b7823",null);t["default"]=d.exports},bd43:function(e,t,n){"use strict";n.d(t,"m",function(){return u}),n.d(t,"n",function(){return l}),n.d(t,"l",function(){return d}),n.d(t,"g",function(){return p}),n.d(t,"e",function(){return v}),n.d(t,"d",function(){return h}),n.d(t,"o",function(){return b}),n.d(t,"a",function(){return g}),n.d(t,"h",function(){return _}),n.d(t,"k",function(){return R}),n.d(t,"i",function(){return E}),n.d(t,"j",function(){return k}),n.d(t,"b",function(){return O}),n.d(t,"f",function(){return j}),n.d(t,"c",function(){return D}),n.d(t,"p",function(){return M});n("7f7f"),n("456d"),n("ac6a"),n("96cf");var r=n("3b8d"),i=n("1f75"),a=n("90b9"),s=[],c={};function u(){return o.apply(this,arguments)}function o(){return o=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==s.length){e.next=5;break}return e.next=3,i["a"].get("/rule_events");case 3:t=e.sent,s=Object(a["c"])(t,["title","description"]);case 5:return s.forEach(function(e){c[e.event]=e}),e.abrupt("return",s);case 7:case"end":return e.stop()}},e)})),o.apply(this,arguments)}function l(e){return i["a"].get("/rules",e)}function d(e){return f.apply(this,arguments)}function f(){return f=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i["a"].get("/rules/".concat(t));case 2:return n=e.sent,e.next=5,u();case 5:return n.events=n.for.map(function(e){return c[e]?c[e]:c["$events/message_publish"]}),n.metricsData={},n.metrics.forEach(function(e){["matched","speed","speed_last5m","speed_max"].forEach(function(t){n.metricsData[t]=n.metricsData[t]||0,n.metricsData[t]+=e[t]||0})}),n.actions=n.actions.map(function(e){return e.failed=0,e.success=0,e.metrics.forEach(function(t){e.failed+=t.failed,e.success+=t.success}),e}),e.abrupt("return",n);case 10:case"end":return e.stop()}},e)})),f.apply(this,arguments)}function p(){return m.apply(this,arguments)}function m(){return m=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:{fillI18n:!1},e.next=3,i["a"].get("/actions");case 3:if(n=e.sent,t.fillI18n){e.next=6;break}return e.abrupt("return",n);case 6:return e.abrupt("return",Object(a["c"])(n,["title","description"]));case 7:case"end":return e.stop()}},e)})),m.apply(this,arguments)}function v(e){return i["a"].delete("/rules/".concat(e))}function h(e){return i["a"].delete("/resources/".concat(e))}function b(e){return i["a"].post("/resources/".concat(e))}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules?test=true",e,{params:{_m:!1}})}function _(){return w.apply(this,arguments)}function w(){return w=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return t=r.length>0&&void 0!==r[0]?r[0]:{},e.next=3,i["a"].get("/actions",{params:t});case 3:return n=e.sent,e.abrupt("return",n.map(function(e){return e=Object(a["c"])(e,["title","description"]),e.params=Object(a["c"])(e.params,!0),e}));case 5:case"end":return e.stop()}},e)})),w.apply(this,arguments)}function R(){return x.apply(this,arguments)}function x(){return x=Object(r["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i["a"].get("/resource_types");case 2:return t=e.sent,t=Object(a["c"])(t,["title","description"]).map(function(e){return e.params=Object(a["c"])(e.params,!0),e}),e.abrupt("return",t);case 5:case"end":return e.stop()}},e)})),x.apply(this,arguments)}var C={};function E(){return y.apply(this,arguments)}function y(){return y=Object(r["a"])(regeneratorRuntime.mark(function e(){var t,n,r,a=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]?a[0]:{},0!==Object.keys(C).length){e.next=6;break}return e.next=4,R();case 4:n=e.sent,n.forEach(function(e){C[e.name]=e});case 6:return e.next=8,i["a"].get("/resources",{params:t});case 8:return r=e.sent,e.abrupt("return",r.map(function(e){var t=e.config;return e.configVal=t,e.config=C[e.type]||{},e}));case 10:case"end":return e.stop()}},e)})),y.apply(this,arguments)}function k(e){return $.apply(this,arguments)}function $(){return $=Object(r["a"])(regeneratorRuntime.mark(function e(t){var n,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(0!==Object.keys(C).length){e.next=5;break}return e.next=3,R();case 3:n=e.sent,n.forEach(function(e){C[e.name]=e});case 5:return e.prev=5,e.next=8,i["a"].get("/resources/".concat(t));case 8:return r=e.sent,r.typeInfo=C[r.type]||{},r._config=[],Object.keys(r.config).forEach(function(e){var t=r.config[e],n=r.typeInfo.params[e]||{},i=n.title,a=n.description;r._config.push({key:e,value:t,title:i||t,description:a})}),e.abrupt("return",r);case 15:return e.prev=15,e.t0=e["catch"](5),console.error(e.t0),e.abrupt("return",!1);case 19:case"end":return e.stop()}},e,null,[[5,15]])})),$.apply(this,arguments)}function O(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i["a"].post("/resources",e,{params:{test:t?"true":void 0}})}function j(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].put("/resources/".concat(e.id),e)}function D(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i["a"].post("/rules",e)}function M(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return i["a"].put("/rules/".concat(e),t)}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1de6578b.f726be8a.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1de6578b.f726be8a.js new file mode 100644 index 000000000..64fe936fa --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-1de6578b.f726be8a.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1de6578b"],{"72db":function(e,t,r){"use strict";r.d(t,"h",function(){return n}),r.d(t,"k",function(){return s}),r.d(t,"b",function(){return o}),r.d(t,"l",function(){return i}),r.d(t,"f",function(){return c}),r.d(t,"j",function(){return l}),r.d(t,"d",function(){return u}),r.d(t,"m",function(){return d}),r.d(t,"a",function(){return p}),r.d(t,"g",function(){return m}),r.d(t,"i",function(){return g}),r.d(t,"c",function(){return f}),r.d(t,"e",function(){return h});var a=r("1f75");function n(){return a["a"].get("/apps")}function s(e){return a["a"].get("/apps/".concat(e))}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a["a"].post("/apps",e)}function i(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/apps/".concat(e),t)}function c(e){return a["a"].delete("/apps/".concat(e))}function l(){return a["a"].get("/users")}function u(e){return a["a"].post("/users",e)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/users/".concat(e),t)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/change_pwd/".concat(e),t)}function m(e){return a["a"].delete("/users/".concat(e))}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a["a"].get("/banned",{params:e})}function f(e){return a["a"].post("/banned",e)}function h(e){var t=e.who,r=e.as;return a["a"].delete("/banned/".concat(r,"/").concat(encodeURIComponent(t)))}},"872a1":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"users"},[r("page-header",[r("div",{staticClass:"page-header-content-view"},[r("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("General.manageDashboardUsers"))+"\n ")])])]),r("div",{staticClass:"app-wrapper"},[r("a-card",{staticClass:"emq-list-card"},[r("div",{staticClass:"emq-table-header"},[r("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.showDialog("create")}}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),r("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[r("el-table-column",{attrs:{"min-width":"120px",prop:"username",label:e.$t("General.userName")}}),r("el-table-column",{attrs:{"min-width":"60px",prop:"tags",label:e.$t("General.remark")}}),r("el-table-column",{attrs:{width:"120px"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[r("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showDialog("edit",a)}}},[e._v(e._s(e.$t("General.edit"))+"\n ")]),"administrator"!==a.tags&&"admin"!==a.username?r("el-button",{attrs:{type:"danger",size:"mini"},on:{click:function(t){return e.deleteConfirm(a)}}},[e._v(e._s(e.$t("General.delete"))+"\n ")]):e._e()]}}])})],1)],1)],1),r("el-dialog",{attrs:{width:"520px",title:"edit"===e.accessType?e.$t("General.editorUser"):e.$t("General.creatingUser"),visible:e.dialogVisible},on:{"update:visible":function(t){e.dialogVisible=t},close:e.clearInput}},[r("el-form",{ref:"recordForm",attrs:{size:"small",model:e.record,rules:e.rules}},[r("el-form-item",{attrs:{prop:"username",label:e.$t("General.userName")}},[r("el-input",{attrs:{disabled:"edit"===e.accessType},model:{value:e.record.username,callback:function(t){e.$set(e.record,"username",t)},expression:"record.username"}})],1),r("el-form-item",{attrs:{prop:"tags",label:e.$t("General.remark")}},[r("el-input",{model:{value:e.record.tags,callback:function(t){e.$set(e.record,"tags",t)},expression:"record.tags"}})],1),"edit"!==e.accessType||e.allowChange?r("el-form-item",{attrs:{prop:"password",label:"edit"===e.accessType?e.$t("General.oldPassword"):e.$t("General.password")}},[r("el-input",{attrs:{type:"password"},model:{value:e.record.password,callback:function(t){e.$set(e.record,"password",t)},expression:"record.password"}})],1):e._e(),e.allowChange?r("el-form-item",{attrs:{prop:"newPassword",label:e.$t("General.newPassword")}},[r("el-input",{attrs:{type:"password"},model:{value:e.record.newPassword,callback:function(t){e.$set(e.record,"newPassword",t)},expression:"record.newPassword"}})],1):e._e(),e.allowChange?r("el-form-item",{attrs:{prop:"repeatPassword",label:e.$t("General.confirmPassword")}},[r("el-input",{attrs:{type:"password"},model:{value:e.record.repeatPassword,callback:function(t){e.$set(e.record,"repeatPassword",t)},expression:"record.repeatPassword"}})],1):e._e(),"edit"===e.accessType?r("el-link",{attrs:{underline:!1},on:{click:e.togglePassword}},[e._v("\n "+e._s(e.allowChange?e.$t("General.dontChangePassword"):e.$t("General.changePassword"))+"\n ")]):e._e()],1),r("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[r("el-button",{attrs:{plain:"",size:"small"},on:{click:e.closeDialog}},[e._v(e._s(e.$t("Base.cancel")))]),r("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.save}},[e._v(e._s(e.$t("Base.confirm")))])],1)],1)],1)},n=[],s=(r("96cf"),r("3b8d")),o=r("72db"),i={name:"Users",components:{},props:{},data:function(){var e=this,t=function(t,r,a){""===r?a(new Error(e.$t("General.pleaseEnterYourPasswordAgain"))):r!==e.record.newPassword?a(new Error(e.$t("General.confirmNotMatch"))):a()};return{dialogVisible:!1,tableData:[],accessType:"",allowChange:!1,record:{},rules:{username:[{required:!0,message:this.$t("General.enterOneUserName")}],tags:[{required:!0,message:this.$t("General.pleaseEnterNotes")}],password:[{required:!0,message:this.$t("General.pleaseEnterPassword"),trigger:["blur","change"]},{min:3,max:32,message:this.$t("General.passwordLength"),trigger:["blur","change"]}],newPassword:[{required:!0,message:this.$t("General.pleaseEnterNewPassword"),trigger:["blur","change"]},{min:3,max:32,message:this.$t("General.passwordLength"),trigger:["blur","change"]}],repeatPassword:[{required:!0,message:this.$t("General.pleaseEnterAConfirmationPassword")},{validator:t,trigger:["blur","change"]}]}}},created:function(){this.loadData()},methods:{clearInput:function(){this.$refs.recordForm&&this.$refs.recordForm.resetFields()},loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(o["j"])();case 2:this.tableData=e.sent;case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),showDialog:function(e,t){this.record={username:"",tags:""},this.accessType="create","edit"===e&&(Object.assign(this.record,t),this.accessType="edit"),this.dialogVisible=!0},closeDialog:function(){this.dialogVisible=!1,this.allowChange=!1},togglePassword:function(){this.allowChange=!this.allowChange,this.allowChange||(this.record={tags:this.record.tags,username:this.record.username})},save:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:t=this,this.$refs.recordForm.validate(function(e){if(!e)return!1;if("edit"===t.accessType){var r=t.record,a=r.username,n=r.password;Object(o["m"])(a,t.record).then(Object(s["a"])(regeneratorRuntime.mark(function e(){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(!t.allowChange){e.next=5;break}return r={new_pwd:t.record.newPassword,old_pwd:t.record.password},e.next=4,Object(o["a"])(a,r);case 4:t.$store.dispatch("UPDATE_USER_INFO",{username:a,password:n});case 5:t.$message.success(t.$t("General.editorialSuccess")),t.dialogVisible=!1,t.allowChange=!1,t.accessType="",t.record={},t.loadData();case 11:case"end":return e.stop()}},e)})))}else Object(o["d"])(t.record).then(function(){t.$message.success(t.$t("General.createUserSuccess")),t.dialogVisible=!1,t.accessType="",t.record={},t.loadData()})});case 2:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteConfirm:function(e){var t=this,r=this;this.$msgbox.confirm(this.$t("General.confirmDeleteUser"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(s["a"])(regeneratorRuntime.mark(function a(){return regeneratorRuntime.wrap(function(a){while(1)switch(a.prev=a.next){case 0:Object(o["g"])(e.username).then(function(){r.$message.success(t.$t("General.successfulDeletion")),r.loadData()});case 1:case"end":return a.stop()}},a)}))).catch(function(){})}}},c=i,l=r("2877"),u=Object(l["a"])(c,a,n,!1,null,null,null);t["default"]=u.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2095c2f3.87ded140.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2095c2f3.87ded140.js new file mode 100644 index 000000000..0dea669c3 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2095c2f3.87ded140.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2095c2f3"],{"12b7":function(e,t,n){},2870:function(e,t,n){},"2b0b":function(e,t,n){"use strict";var s=n("12b7"),a=n.n(s);a.a},a495:function(e,t,n){"use strict";var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"stretch-height",attrs:{id:"stretch-height"},on:{mousedown:e.handleMousedown}},[n("i",{staticClass:"el-icon-more"})])},a=[],i=(n("c5f6"),{name:"StretchHeight",model:{prop:"value",event:"change"},props:{value:{required:!0,type:Number}},data:function(){return{}},created:function(){document.onmouseup=function(){document.onmousemove=null}},methods:{handleMousedown:function(e){var t=this,n=e.y;document.onmousemove=function(e){var s=e.y,a=s-n;n=e.y,t.$emit("change",t.value+a)}}}}),r=i,c=(n("2b0b"),n("2877")),o=Object(c["a"])(r,s,a,!1,null,null,null);t["a"]=o.exports},b395:function(e,t,n){"use strict";var s=n("2870"),a=n.n(s);a.a},e94e:function(e,t,n){"use strict";n.r(t);var s=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"rule-create"},[n("page-header",[n("div",{staticClass:"page-header-title-view"},[n("div",{staticClass:"title"},[e._v(e._s(e.$t("RuleEngine.createRules")))])]),n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[n("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("RuleEngine.definingRuleConditionsAndDataProcessing"))+"\n ")])])])]),n("div",{staticClass:"emq-list-body rule-wrapper app-wrapper"},[n("a-card",{staticClass:"emq-list-card"},[n("el-row",{attrs:{gutter:20}},[n("el-col",{attrs:{span:15}},[n("el-form",{ref:"record",attrs:{model:e.record,rules:e.rules,"label-width":"120px","label-position":"left",size:"small","label-suffix":":"}},[n("el-form-item",{staticClass:"code-editor__item",attrs:{prop:"rawsql",label:e.$t("RuleEngine.sqlInput")}},[n("div",{staticClass:"monaco-container monaco-sql",style:{height:e.sqlEditorHeight+"px"}},[n("monaco",{staticClass:"sql",attrs:{id:"rule-sql",warp:"",lang:"sql",provider:e.sqlProvider},on:{"qucik-save":e.handleSQLTest},model:{value:e.record.rawsql,callback:function(t){e.$set(e.record,"rawsql",t)},expression:"record.rawsql"}})],1),n("stretch-height",{model:{value:e.sqlEditorHeight,callback:function(t){e.sqlEditorHeight=t},expression:"sqlEditorHeight"}})],1),n("el-form-item",{attrs:{prop:"id",label:e.$t("RuleEngine.ruleID")}},[n("el-input",{attrs:{disabled:e.isEdit},model:{value:e.record.id,callback:function(t){e.$set(e.record,"id",t)},expression:"record.id"}})],1),n("el-form-item",{attrs:{prop:"description",label:e.$t("RuleEngine.resourceDes")}},[n("el-input",{model:{value:e.record.description,callback:function(t){e.$set(e.record,"description",t)},expression:"record.description"}})],1),n("el-form-item",{attrs:{label:e.$t("RuleEngine.sqlTest")}},[n("el-switch",{on:{change:e.initTestFormItem},model:{value:e.showTest,callback:function(t){e.showTest=t},expression:"showTest"}}),n("el-popover",{attrs:{width:"220",placement:"right",trigger:"hover"}},[e._v("\n "+e._s(e.$t("RuleEngine.inputMetadata"))+"\n "),n("i",{staticClass:"icon el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1),n("el-collapse-transition",[e.showTest?n("div",[e._l(Object.keys(e.selectEvent.test_columns),function(t){return n("el-form-item",e._b({key:t,class:{"code-sql":"payload"===t,payload:"payload"===t}},"el-form-item",{label:t,prop:"ctx."+t},!1),["payload"!==t?n("el-input",{model:{value:e.record.ctx[t],callback:function(n){e.$set(e.record.ctx,t,n)},expression:"record.ctx[k]"}}):[n("div",{staticClass:"monaco-container monaco-payload",style:{height:e.payloadEditorHeight+"px"}},[n("monaco",{staticClass:"payload",attrs:{id:"payload",lang:e.payloadType},on:{"qucik-save":e.handleSQLTest},model:{value:e.record.ctx.payload,callback:function(t){e.$set(e.record.ctx,"payload",t)},expression:"record.ctx.payload"}})],1),n("div",{staticClass:"payload-type"},[n("el-radio-group",{model:{value:e.payloadType,callback:function(t){e.payloadType=t},expression:"payloadType"}},[n("el-radio",{attrs:{label:"json"}},[e._v("JSON")]),n("el-radio",{attrs:{label:"plaintext"}},[e._v("Plaintext")])],1)],1),n("stretch-height",{staticClass:"payload",model:{value:e.payloadEditorHeight,callback:function(t){e.payloadEditorHeight=t},expression:"payloadEditorHeight"}})]],2)}),n("el-form-item",[n("span",{attrs:{slot:"label"},slot:"label"},[e._v(" ")]),n("el-button",{attrs:{type:"primary"},on:{click:e.handleSQLTest}},[e._v("\n "+e._s(e.$t("RuleEngine.sqlTest"))+"\n ")])],1),n("el-form-item",{staticClass:"code-editor__item",attrs:{label:e.$t("RuleEngine.testOutput")}},[n("div",{staticClass:"monaco-container monaco-test-output",staticStyle:{height:"200px"}},[n("monaco",{staticClass:"test-output",attrs:{id:"testOutput",lang:"json",disabled:!0},model:{value:e.testOutPut,callback:function(t){e.testOutPut=t},expression:"testOutPut"}})],1)])],2):e._e()])],1)],1),n("el-col",{staticClass:"tips-form",attrs:{span:9}},[n("div",{staticClass:"tips-item"},[n("div",{staticStyle:{color:"#606266"}},[e._v("\n "+e._s(e.$t("RuleEngine.currentEventAvailableField"))+"\n "),n("transition",{attrs:{name:"el-fade-in-linear"}},[e.clipboardStatus?n("span",{staticClass:"copy-success"},[e._v(e._s(e.clipboardStatus))]):e._e()])],1),n("div",{staticClass:"tips-wrapper code"},e._l(e.availableFields,function(t){return n("span",{directives:[{name:"clipboard",rawName:"v-clipboard:cpoy",value:t,expression:"key",arg:"cpoy"},{name:"clipboard",rawName:"v-clipboard:success",value:e.copyAvailableFieldsSuccess,expression:"copyAvailableFieldsSuccess",arg:"success"}],key:t,staticClass:"available-fields"},[e._v("\n "+e._s(t)+"\n ")])}),0)]),n("div",{staticClass:"tips-item"},[n("div",{staticStyle:{color:"#606266"}},[e._v(e._s(e.$t("RuleEngine.exampleSql")))]),n("div",{staticClass:"tips-wrapper code"},[n("code",[e._v(e._s(e.selectEvent.sql_example))])])])])],1)],1),n("a-card",{staticClass:"emq-list-card"},[n("div",{staticClass:"emq-title"},[n("div",{staticClass:"title required-title"},[e._v("\n "+e._s(e.$t("RuleEngine.responseAction"))+"\n ")]),n("span",{staticClass:"sub-title"},[e._v("\n "+e._s(e.$t("RuleEngine.processingMessagesForHitRules"))+"\n ")])]),n("div",{staticClass:"rule-action-wrapper"},[n("rule-actions",{ref:"ruleAction",model:{value:e.record.actions,callback:function(t){e.$set(e.record,"actions",t)},expression:"record.actions"}})],1)]),n("div",{staticClass:"button-group__center"},[n("el-button",{attrs:{type:"default",size:"medium"},on:{click:function(t){return e.$router.push({path:"/rules"})}}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),n("el-button",{attrs:{type:"primary",size:"medium"},on:{click:e.save}},[e._v("\n "+e._s(e.isEdit?e.$t("Base.confirm"):e.$t("Base.create"))+"\n ")])],1)],1)],1)},a=[],i=n("7618"),r=(n("4917"),n("3b2b"),n("28a5"),n("768b")),c=(n("7514"),n("96cf"),n("3b8d")),o=(n("ac6a"),n("456d"),n("6b54"),n("bd43")),l=n("1f75");function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{_limit:500,_page:1};return l["a"].get("/routes",e)}var d=n("90b9"),p=n("9146"),m=n("a495"),h=n("ad43"),v=n("12cb"),g=n("a47b"),f=g["a"].state.lang,b=v["default"][f],y=[{name:"clientid",documentation:b.RuleEngine.clientid_doc,type:"Field",default:"c_emqx",valueType:"string"},{name:"username",documentation:b.RuleEngine.username_doc,type:"Field",default:"u_emqx",valueType:"string"},{name:"event",documentation:b.RuleEngine.event_doc,type:"Field",default:"disconnect",valueType:"string"},{name:"id",documentation:b.RuleEngine.id_doc,type:"Field",default:"--",valueType:"string"},{name:"payload",documentation:b.RuleEngine.payload_doc,type:"Field",default:'{"msg": "hello"}',valueType:"string"},{name:"peername",documentation:b.RuleEngine.peername_doc,type:"Field",default:"127.0.0.1:63412",valueType:"string"},{name:"qos",documentation:b.RuleEngine.qos_doc,type:"Field",default:1,valueType:"integer"},{name:"timestamp",documentation:b.RuleEngine.timestamp_doc,type:"Field",default:1576549961086,valueType:"integer"},{name:"topic",documentation:b.RuleEngine.topic_doc,type:"Field",default:"t/a",valueType:"string"},{name:"node",documentation:b.RuleEngine.node_doc,type:"Field",default:"emqx@127.0.0.1",valueType:"string"},{name:'"$events/message_delivered"',documentation:b.RuleEngine.message_delivered,type:"Method"},{name:'"$events/message_acked"',documentation:b.RuleEngine.message_acked,type:"Method"},{name:'"$events/message_dropped"',documentation:b.RuleEngine.message_dropped,type:"Method"},{name:'"$events/client_connected"',documentation:b.RuleEngine.client_connected,type:"Method"},{name:'"$events/client_disconnected"',documentation:b.RuleEngine.client_disconnected,type:"Method"},{name:'"$events/session_subscribed"',documentation:b.RuleEngine.session_subscribed,type:"Method"},{name:'"$events/session_unsubscribed"',documentation:b.RuleEngine.session_unsubscribed,type:"Method"}],_={name:"RuleCrate",components:{RuleActions:h["a"],Monaco:p["a"],StretchHeight:m["a"]},props:{},data:function(){return{loadRuleEvents:o["m"],isEdit:!1,needCheckSql:!0,sqlEditorHeight:320,payloadEditorHeight:200,payloadType:"json",topics:[],events:[],testOutPut:"",selectEvent:{columns:["clientid","username","event","id","payload","peername","qos","timestamp","topic","node"],description:"$events/message_publish",event:"$events/message_publish",sql_example:'SELECT * FROM "t/#"',test_columns:{clientid:"c_emqx",username:"u_emqx",topic:"t/a",qos:1,payload:'{"msg": "hello"}'},title:"$events/message_publish"},timer:0,showTest:!1,clipboardContent:"",clipboardStatus:"",record:{rawsql:"SELECT * FROM",actions:[],description:"",ctx:{},id:"rule:".concat(Math.random().toString().slice(3,9))},rules:{rawsql:{required:!0,message:this.$t("RuleEngine.pleaseEnterTheSQL")},id:{required:!0,validator:d["q"]}}}},computed:{availableFields:function(){return this.selectEvent.columns},testField:function(){return Object.keys(this.selectEvent.test_columns)},sqlProvider:function(){return y},currentRule:function(){return this.$route.query.rule}},watch:{"record.rawsql":"handleSqlChanged"},created:function(){var e=Object(c["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(o["m"])();case 2:return this.events=e.sent,this.selectEvent=this.events[0],e.next=6,u();case 6:t=e.sent,this.topics=t.items||[],this.currentRule?(this.isEdit=!0,this.loadRule()):this.initData("$events/message_publish");case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),methods:{initData:function(e){this.selectEvent=this.events.find(function(t){return t.event===e});var t=this.selectEvent.sql_example;this.record.rawsql=Object(d["o"])(t),this.initTestFormItem();var n=this.$refs.ruleAction;n&&n.initData()},handleSqlChanged:function(e){if(this.triggerEventChange(e),this.needCheckSql){var t=Object(d["n"])(e);t&&this.sqlParse(e,t[0])}},sqlParse:function(e,t){var n=this;this.$confirm(this.$t("RuleEngine.parse_confirm"),this.$t("Base.warning"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(function(){n.record.rawsql=Object(d["o"])(Object(d["m"])(e,t))}).catch(function(){n.needCheckSql=!1})},triggerEventChange:function(e){var t=["events/message_delivered","events/message_acked","events/message_dropped","events/client_connected","events/client_disconnected","events/session_subscribed","events/session_unsubscribed"],n=null,s="";t.forEach(function(t){var s=t.split("/"),a=Object(r["a"])(s,2),i=a[0],c=a[1],o=new RegExp("\\$".concat(i,"\\/").concat(c),"gim");e.match(o)&&(n=e.match(o))}),s=n?n[0]:"$events/message_publish",s!==this.selectEvent.event&&(this.selectEvent=this.events.find(function(e){return e.event===s})||{columns:{},test_columns:{}},this.sqlPrimaryKey=this.events.columns,this.initTestFormItem())},initTestFormItem:function(){this.testOutPut="";var e={},t=this.selectEvent.test_columns;Object.keys(t).forEach(function(n){var s=t[n];"object"===Object(i["a"])(s)&&(s=JSON.stringify(s,null,2)),e[n]=s}),this.$set(this.record,"ctx",e)},beforeSqlValid:function(e){var t=Object(d["n"])(e);return!t||(this.sqlParse(e,t[0]),!1)},handleSQLTest:function(){var e=this;this.needCheckSql=!0,this.$refs.record.validate(function(){var t=Object(c["a"])(regeneratorRuntime.mark(function t(n){var s;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(n){t.next=6;break}if(!e.showTest||e.record.id){t.next=5;break}e.$refs.record.clearValidate("id"),t.next=6;break;case 5:return t.abrupt("return");case 6:if(e.beforeSqlValid(e.record.rawsql)){t.next=8;break}return t.abrupt("return");case 8:if(s=JSON.parse(JSON.stringify(e.record)),e.testOutPut="",s.ctx.payload)try{s.ctx.payload=JSON.stringify(JSON.parse(s.ctx.payload))}catch(a){console.log(a)}Object(o["a"])(s).then(function(t){e.testOutPut=JSON.stringify(t,null,2)}).catch(function(t){e.testOutPut="SQL Not Match"===t?e.$t("RuleEngine.resultIsEmpty"):"".concat(e.$t("RuleEngine.checkForErrors"),":\n\n").concat(t)});case 12:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}())},copyAvailableFieldsSuccess:function(){var e=this;this.clipboardStatus=this.$t("Base.copied"),setTimeout(function(){e.clipboardStatus=""},2e3)},save:function(){var e=Object(c["a"])(regeneratorRuntime.mark(function e(){var t,n,s,a,i,r,c,l=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,this.$refs.record.validate();case 2:if(t=e.sent,t){e.next=5;break}return e.abrupt("return");case 5:if(0!==this.record.actions.length){e.next=8;break}return this.$message.error(this.$t("RuleEngine.pleaseAddAResponseAction")),e.abrupt("return");case 8:n=this.record,s=n.rawsql,a=n.actions,i=n.description,r=n.id,c={rawsql:s,actions:a,description:i,id:r},this.isEdit&&this.currentRule?Object(o["p"])(this.currentRule,c).then(function(){l.$message.success(l.$t("RuleEngine.editSuccess")),setTimeout(function(){l.$router.push({path:"/rules"})},600)}):Object(o["c"])(c).then(function(){l.$message.success(l.$t("RuleEngine.createSuccess")),setTimeout(function(){l.$router.push({path:"/rules"})},600)});case 11:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadRule:function(){var e=Object(c["a"])(regeneratorRuntime.mark(function e(){var t,n=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(o["l"])(this.currentRule);case 2:t=e.sent,this.record=t,setTimeout(function(){n.$refs.ruleAction.loadActions()},500);case 5:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}()}},E=_,q=(n("b395"),n("2877")),$=Object(q["a"])(E,s,a,!1,null,null,null);t["default"]=$.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-214e9a45.4c4953f7.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-214e9a45.4c4953f7.js new file mode 100644 index 000000000..e7459e03d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-214e9a45.4c4953f7.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-214e9a45"],{"51ac":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"application"},[a("page-header",[a("div",{staticClass:"page-header-content-view"},[a("div",{staticClass:"content"},[a("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("General.applicationIsCalled"))+"\n ")]),a("div",{staticClass:"page-header-top-start"},[a("a",{staticClass:"link-item",attrs:{rel:"noopener",href:e.docs.restAPI,target:"_blank"}},[a("i",{staticClass:"icon el-icon-document"}),e._v("\n "+e._s(e.$t("General.productDocumentation"))+"\n ")])])])])]),a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card"},[a("div",{staticClass:"emq-table-header"},[a("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.showDialog("create")}}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),a("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[a("el-table-column",{attrs:{prop:"app_id",label:"AppID"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[a("span",{staticClass:"btn",on:{click:function(t){return e.showDialog("view",r)}}},[e._v("\n "+e._s(r.app_id)+"\n ")])]}}])}),a("el-table-column",{attrs:{prop:"name",label:e.$t("General.appName")}}),a("el-table-column",{attrs:{prop:"expired",formatter:e.formatterExpired,label:e.$t("General.expireAt")}}),a("el-table-column",{attrs:{prop:"desc",label:e.$t("General.remark")}}),a("el-table-column",{attrs:{label:e.$t("General.isEnabled")},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[a("el-switch",{attrs:{"active-color":"#13ce66","inactive-color":"#d0d3e0"},on:{change:function(t){return e.updateApplication(r)}},model:{value:r.status,callback:function(t){e.$set(r,"status",t)},expression:"row.status"}})]}}])}),a("el-table-column",{scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.showDialog("edit",r)}}},[e._v("\n "+e._s(e.$t("General.edit"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteConfirm(r)}}},[e._v("\n "+e._s(e.$t("General.delete"))+"\n ")])]}}])})],1)],1)],1),a("el-dialog",{attrs:{width:"600px",title:"edit"===e.accessType?e.$t("General.editApp"):e.$t("General.createApp"),visible:e.dialogVisible},on:{"update:visible":function(t){e.dialogVisible=t},close:e.clearInput}},[a("el-form",{ref:"recordForm",attrs:{size:"small",model:e.record,rules:"view"===e.accessType?{}:e.rules}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"app_id",label:"AppID"}},[a("el-input",{attrs:{readonly:"create"!==e.accessType,disabled:"edit"===e.accessType},model:{value:e.record.app_id,callback:function(t){e.$set(e.record,"app_id",t)},expression:"record.app_id"}})],1)],1),"view"===e.accessType?a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"secret",label:e.$t("General.secret")}},[a("el-input",{attrs:{disabled:"edit"===e.accessType,readonly:"create"!==e.accessType},model:{value:e.record.secret,callback:function(t){e.$set(e.record,"secret",t)},expression:"record.secret"}})],1)],1):e._e(),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"name",label:e.$t("General.appName")}},[a("el-input",{attrs:{disabled:"edit"===e.accessType,readonly:"view"===e.accessType},model:{value:e.record.name,callback:function(t){e.$set(e.record,"name",t)},expression:"record.name"}})],1)],1),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"status",label:e.$t("General.isEnabled")}},[a("emq-select",{attrs:{field:{options:e.enableOption},disabled:"view"===e.accessType},model:{value:e.record.status,callback:function(t){e.$set(e.record,"status",t)},expression:"record.status"}})],1)],1),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"expired",label:e.$t("General.expireAt")}},[a("el-date-picker",{attrs:{type:"date",format:"yyyy-MM-dd","value-format":"yyyy-MM-dd",readonly:"view"===e.accessType},model:{value:e.record.expired,callback:function(t){e.$set(e.record,"expired",t)},expression:"record.expired"}})],1)],1),a("el-col",{attrs:{span:12}},[a("el-form-item",{attrs:{prop:"desc",label:e.$t("General.remark")}},[a("el-input",{attrs:{readonly:"view"===e.accessType},model:{value:e.record.desc,callback:function(t){e.$set(e.record,"desc",t)},expression:"record.desc"}})],1)],1)],1)],1),"view"!==e.accessType?a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{plain:"",size:"small"},on:{click:function(t){e.dialogVisible=!1}}},[e._v(e._s(e.$t("Base.cancel")))]),a("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.save}},[e._v(e._s(e.$t("Base.confirm")))])],1):e._e()],1)],1)},n=[],s=(a("6b54"),a("cebc")),i=(a("96cf"),a("3b8d")),c=a("c1df"),o=a.n(c),l=a("72db"),d=a("90b9"),p={name:"Application",components:{},props:{},data:function(){return{docs:{restAPI:Object(d["g"])("restAPI")},dialogVisible:!1,tableData:[],accessType:"",enableOption:[{label:this.$t("General.enabled"),value:!0},{label:this.$t("General.disabled"),value:!1}],record:{status:!0,desc:""},rules:{name:[{required:!0,message:this.$t("General.pleaseEnterAppName")}],app_id:[{required:!0,message:this.$t("General.pleaseEnterTheAppId")}],status:[{required:!0,message:this.$t("General.pleaseChoose")}]}}},created:function(){this.loadData()},methods:{formatterExpired:function(e){var t=e.expired;return t&&"number"===typeof t?o()(1e3*t).format("YYYY-MM-DD"):this.$t("General.neverExpire")},clearInput:function(){this.$refs.recordForm&&this.$refs.recordForm.resetFields()},loadData:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(l["h"])();case 2:this.tableData=e.sent;case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadAppData:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var a;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(l["k"])(t);case 2:a=e.sent,a.expired&&"number"===typeof a.expired&&(a.expired=o()(1e3*a.expired).format("YYYY-MM-DD")),this.record=a;case 5:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),showDialog:function(e,t){if(this.accessType=e,"edit"===e){var a=Object(s["a"])({},t);a.expired&&"number"===typeof a.expired?a.expired=o()(1e3*a.expired).format("YYYY-MM-DD"):a.expired=void 0,this.record=a}else"view"===e?this.loadAppData(t.app_id):this.record={app_id:Math.random().toString(16).slice(3),status:!0,desc:""};this.dialogVisible=!0},updateApplication:function(e){var t=this;Object(l["l"])(e.app_id,e).then(function(){t.$message.success(t.$t("General.editorialSuccess"))})},save:function(){var e=this,t=this;this.$refs.recordForm.validate(function(a){if(a){var r=Object(s["a"])({},e.record);if(r.expired&&"string"===typeof r.expired)try{r.expired=Math.floor(new Date(r.expired).getTime()/1e3)}catch(i){r.expired=null}if("edit"===t.accessType){var n=t.record.app_id;Object(l["l"])(n,r).then(function(){t.$message.success(e.$t("General.editorialSuccess")),t.dialogVisible=!1,t.accessType="",t.loadData()})}else Object(l["b"])(r).then(function(){t.$message.success(e.$t("General.successfulAppCreation")),t.dialogVisible=!1,t.accessType="",t.loadData()})}})},deleteConfirm:function(e){var t=this,a=this;this.$msgbox.confirm(this.$t("General.confirmDelete"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function r(){return regeneratorRuntime.wrap(function(r){while(1)switch(r.prev=r.next){case 0:Object(l["f"])(e.app_id).then(function(){a.$message.success(t.$t("General.successfulDeletion")),a.loadData()});case 1:case"end":return r.stop()}},r)}))).catch(function(){})}}},u=p,f=(a("bc65"),a("2877")),m=Object(f["a"])(u,r,n,!1,null,null,null);t["default"]=m.exports},"72db":function(e,t,a){"use strict";a.d(t,"h",function(){return n}),a.d(t,"k",function(){return s}),a.d(t,"b",function(){return i}),a.d(t,"l",function(){return c}),a.d(t,"f",function(){return o}),a.d(t,"j",function(){return l}),a.d(t,"d",function(){return d}),a.d(t,"m",function(){return p}),a.d(t,"a",function(){return u}),a.d(t,"g",function(){return f}),a.d(t,"i",function(){return m}),a.d(t,"c",function(){return b}),a.d(t,"e",function(){return v});var r=a("1f75");function n(){return r["a"].get("/apps")}function s(e){return r["a"].get("/apps/".concat(e))}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].post("/apps",e)}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].put("/apps/".concat(e),t)}function o(e){return r["a"].delete("/apps/".concat(e))}function l(){return r["a"].get("/users")}function d(e){return r["a"].post("/users",e)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].put("/users/".concat(e),t)}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return r["a"].put("/change_pwd/".concat(e),t)}function f(e){return r["a"].delete("/users/".concat(e))}function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return r["a"].get("/banned",{params:e})}function b(e){return r["a"].post("/banned",e)}function v(e){var t=e.who,a=e.as;return r["a"].delete("/banned/".concat(a,"/").concat(encodeURIComponent(t)))}},bc65:function(e,t,a){"use strict";var r=a("d240"),n=a.n(r);n.a},d240:function(e,t,a){}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2be77691.a1865558.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2be77691.a1865558.js new file mode 100644 index 000000000..d6d18f875 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2be77691.a1865558.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2be77691"],{"0ea8":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"blacklist"},[n("page-header",{attrs:{"back-title":e.$t("General.blacklist")}},[n("div",{staticClass:"page-header-content-view"},[n("div",{staticClass:"content"},[n("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("General.blacklistTips"))+"\n "),n("a",{attrs:{href:e.docs.tutorial,target:"_blank"}},[e._v("\n "+e._s(e.$t("General.authDocs"))+"\n ")])])])])]),n("div",{staticClass:"app-wrapper"},[n("a-card",{staticClass:"emq-list-card"},[n("div",{staticClass:"emq-table-header"},[n("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:e.showDialog}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),n("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[n("el-table-column",{attrs:{prop:"who","min-width":"120px",label:e.$t("General.who")}}),n("el-table-column",{attrs:{prop:"as","min-width":"120px",label:e.$t("General.as")}}),n("el-table-column",{attrs:{prop:"reason","min-width":"120px",label:e.$t("General.reason")}}),n("el-table-column",{attrs:{prop:"until","min-width":"120px",formatter:e.formatterUntil,label:e.$t("General.until")}}),n("el-table-column",{attrs:{prop:"oper",width:"120px",label:""},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[n("el-button",{attrs:{type:"danger",size:"mini"},on:{click:function(t){return e.deleteConfirm(a)}}},[e._v(e._s(e.$t("General.delete"))+" ")])]}}])})],1),n("div",{staticClass:"emq-table-footer"},[n("el-pagination",{attrs:{"hide-on-single-page":"",background:"",layout:"total, sizes, prev, pager, next","page-sizes":[20,50,100,500],"page-size":e.params._limit,"current-page":e.params._page,total:e.count},on:{"update:pageSize":function(t){return e.$set(e.params,"_limit",t)},"update:page-size":function(t){return e.$set(e.params,"_limit",t)},"update:currentPage":function(t){return e.$set(e.params,"_page",t)},"update:current-page":function(t){return e.$set(e.params,"_page",t)},"size-change":e.handleSizeChange,"current-change":e.handleCurrentPageChange}})],1)],1)],1),n("el-dialog",{attrs:{width:"520px",title:e.$t("General.createBlacklist"),visible:e.dialogVisible},on:{"update:visible":function(t){e.dialogVisible=t},close:e.clearInput}},[n("el-form",{ref:"recordForm",attrs:{size:"small",model:e.record,rules:e.rules}},[n("el-row",{attrs:{gutter:20}},[n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"as",label:e.$t("General.as")}},[n("emq-select",{attrs:{field:{options:e.asOptions}},model:{value:e.record.as,callback:function(t){e.$set(e.record,"as",t)},expression:"record.as"}})],1)],1),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"who",label:e.$t("General.who")}},[n("el-input",{model:{value:e.record.who,callback:function(t){e.$set(e.record,"who",t)},expression:"record.who"}})],1)],1),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"reason",label:e.$t("General.reason")}},[n("el-input",{model:{value:e.record.reason,callback:function(t){e.$set(e.record,"reason",t)},expression:"record.reason"}})],1)],1),n("el-col",{attrs:{span:12}},[n("el-form-item",{attrs:{prop:"until",label:e.$t("General.until")}},[n("el-date-picker",{attrs:{type:"datetime",format:"yyyy-MM-dd HH:mm:ss","value-format":"timestamp"},model:{value:e.record.until,callback:function(t){e.$set(e.record,"until",t)},expression:"record.until"}})],1)],1)],1)],1),n("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{attrs:{plain:"",size:"small"},on:{click:e.closeDialog}},[e._v(e._s(e.$t("Base.cancel")))]),n("el-button",{attrs:{type:"primary",size:"small"},on:{click:e.save}},[e._v(e._s(e.$t("Base.confirm")))])],1)],1)],1)},r=[],s=n("cebc"),i=(n("96cf"),n("3b8d")),o=n("c1df"),l=n.n(o),c=n("72db"),u=n("90b9"),p={name:"Blacklist",components:{},props:{},data:function(){return{docs:{tutorial:Object(u["g"])("auth")},dialogVisible:!1,tableData:[],params:{_page:1,_limit:20},count:0,asOptions:[{label:"clientid",value:"clientid"},{label:"username",value:"username"},{label:"peerhost",value:"peerhost"}],record:{reason:""},rules:{as:[{required:!0,message:this.$t("General.enterAs")}],who:[{required:!0,message:this.$t("General.enterWho")}]}}},created:function(){this.loadData()},methods:{loadData:function(){this.listBlackList()},listBlackList:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var n,a,r,i,o,l,u=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return n=u.length>1&&void 0!==u[1]?u[1]:{},t&&(this.params._page=1),e.next=4,Object(c["i"])(Object(s["a"])({},this.params,n));case 4:a=e.sent,r=a.items,i=void 0===r?[]:r,o=a.meta.count,l=void 0===o?0:o,this.tableData=i,this.count=l;case 8:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}(),handleSizeChange:function(){this.listBlackList(!0)},handleCurrentPageChange:function(){this.listBlackList()},clearInput:function(){this.$refs.recordForm&&this.$refs.recordForm.resetFields()},showDialog:function(){this.record={reason:""},this.dialogVisible=!0},closeDialog:function(){this.dialogVisible=!1},save:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){var t=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.$refs.recordForm.validate(function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(n){var a,r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(n){e.next=2;break}return e.abrupt("return");case 2:if(a=Object(s["a"])({},t.record),a.until&&"number"===typeof a.until)try{a.until=Math.floor(a.until/1e3)}catch(i){a.until=null}return e.next=6,Object(c["c"])(a);case 6:r=e.sent,r&&(t.$message.success(t.$t("General.createBlacklistSuccess")),t.closeDialog(),t.listBlackList());case 8:case"end":return e.stop()}},e)}));return function(t){return e.apply(this,arguments)}}());case 1:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteConfirm:function(e){var t=this;this.$msgbox.confirm(this.$t("General.determineToDeleteTheBlacklist"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(i["a"])(regeneratorRuntime.mark(function n(){var a,r,s;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return a=e.who,r=e.as,n.next=3,Object(c["e"])({who:a,as:r});case 3:s=n.sent,s&&(t.$message.success(t.$t("General.successfulDeletion")),t.listBlackList(!0));case 5:case"end":return n.stop()}},n)}))).catch(function(){})},formatterUntil:function(e){var t=e.until;return t&&"number"===typeof t?l()(1e3*t).format("YYYY-MM-DD HH:mm:ss"):this.$t("General.neverExpire")}}},d=p,f=(n("dd12"),n("2877")),m=Object(f["a"])(d,a,r,!1,null,"170091b5",null);t["default"]=m.exports},"15aca":function(e,t,n){},"72db":function(e,t,n){"use strict";n.d(t,"h",function(){return r}),n.d(t,"k",function(){return s}),n.d(t,"b",function(){return i}),n.d(t,"l",function(){return o}),n.d(t,"f",function(){return l}),n.d(t,"j",function(){return c}),n.d(t,"d",function(){return u}),n.d(t,"m",function(){return p}),n.d(t,"a",function(){return d}),n.d(t,"g",function(){return f}),n.d(t,"i",function(){return m}),n.d(t,"c",function(){return h}),n.d(t,"e",function(){return b});var a=n("1f75");function r(){return a["a"].get("/apps")}function s(e){return a["a"].get("/apps/".concat(e))}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a["a"].post("/apps",e)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/apps/".concat(e),t)}function l(e){return a["a"].delete("/apps/".concat(e))}function c(){return a["a"].get("/users")}function u(e){return a["a"].post("/users",e)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/users/".concat(e),t)}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a["a"].put("/change_pwd/".concat(e),t)}function f(e){return a["a"].delete("/users/".concat(e))}function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return a["a"].get("/banned",{params:e})}function h(e){return a["a"].post("/banned",e)}function b(e){var t=e.who,n=e.as;return a["a"].delete("/banned/".concat(n,"/").concat(encodeURIComponent(t)))}},dd12:function(e,t,n){"use strict";var a=n("15aca"),r=n.n(a);r.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0ae937.443808f2.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0ae937.443808f2.js new file mode 100644 index 000000000..3f4d8999d --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0ae937.443808f2.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ae937"],{"0b3b":function(E,T,R){"use strict";R.r(T),R.d(T,"conf",function(){return A}),R.d(T,"language",function(){return I});var A={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},I={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ABORT_AFTER_WAIT","ABSENT","ABSOLUTE","ACCENT_SENSITIVITY","ACTION","ACTIVATION","ACTIVE","ADD","ADDRESS","ADMIN","AES","AES_128","AES_192","AES_256","AFFINITY","AFTER","AGGREGATE","ALGORITHM","ALL_CONSTRAINTS","ALL_ERRORMSGS","ALL_INDEXES","ALL_LEVELS","ALL_SPARSE_COLUMNS","ALLOW_CONNECTIONS","ALLOW_MULTIPLE_EVENT_LOSS","ALLOW_PAGE_LOCKS","ALLOW_ROW_LOCKS","ALLOW_SINGLE_EVENT_LOSS","ALLOW_SNAPSHOT_ISOLATION","ALLOWED","ALTER","ANONYMOUS","ANSI_DEFAULTS","ANSI_NULL_DEFAULT","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_NULLS","ANSI_PADDING","ANSI_WARNINGS","APPEND","APPLICATION","APPLICATION_LOG","ARITHABORT","ARITHIGNORE","AS","ASC","ASSEMBLY","ASYMMETRIC","ASYNCHRONOUS_COMMIT","AT","ATOMIC","ATTACH","ATTACH_REBUILD_LOG","AUDIT","AUDIT_GUID","AUTHENTICATION","AUTHORIZATION","AUTO","AUTO_CLEANUP","AUTO_CLOSE","AUTO_CREATE_STATISTICS","AUTO_SHRINK","AUTO_UPDATE_STATISTICS","AUTO_UPDATE_STATISTICS_ASYNC","AUTOMATED_BACKUP_PREFERENCE","AUTOMATIC","AVAILABILITY","AVAILABILITY_MODE","BACKUP","BACKUP_PRIORITY","BASE64","BATCHSIZE","BEGIN","BEGIN_DIALOG","BIGINT","BINARY","BINDING","BIT","BLOCKERS","BLOCKSIZE","BOUNDING_BOX","BREAK","BROKER","BROKER_INSTANCE","BROWSE","BUCKET_COUNT","BUFFER","BUFFERCOUNT","BULK","BULK_LOGGED","BY","CACHE","CALL","CALLED","CALLER","CAP_CPU_PERCENT","CASCADE","CASE","CATALOG","CATCH","CELLS_PER_OBJECT","CERTIFICATE","CHANGE_RETENTION","CHANGE_TRACKING","CHANGES","CHAR","CHARACTER","CHECK","CHECK_CONSTRAINTS","CHECK_EXPIRATION","CHECK_POLICY","CHECKALLOC","CHECKCATALOG","CHECKCONSTRAINTS","CHECKDB","CHECKFILEGROUP","CHECKIDENT","CHECKPOINT","CHECKTABLE","CLASSIFIER_FUNCTION","CLEANTABLE","CLEANUP","CLEAR","CLOSE","CLUSTER","CLUSTERED","CODEPAGE","COLLATE","COLLECTION","COLUMN","COLUMN_SET","COLUMNS","COLUMNSTORE","COLUMNSTORE_ARCHIVE","COMMIT","COMMITTED","COMPATIBILITY_LEVEL","COMPRESSION","COMPUTE","CONCAT","CONCAT_NULL_YIELDS_NULL","CONFIGURATION","CONNECT","CONSTRAINT","CONTAINMENT","CONTENT","CONTEXT","CONTINUE","CONTINUE_AFTER_ERROR","CONTRACT","CONTRACT_NAME","CONTROL","CONVERSATION","COOKIE","COPY_ONLY","COUNTER","CPU","CREATE","CREATE_NEW","CREATION_DISPOSITION","CREDENTIAL","CRYPTOGRAPHIC","CUBE","CURRENT","CURRENT_DATE","CURSOR","CURSOR_CLOSE_ON_COMMIT","CURSOR_DEFAULT","CYCLE","DATA","DATA_COMPRESSION","DATA_PURITY","DATABASE","DATABASE_DEFAULT","DATABASE_MIRRORING","DATABASE_SNAPSHOT","DATAFILETYPE","DATE","DATE_CORRELATION_OPTIMIZATION","DATEFIRST","DATEFORMAT","DATETIME","DATETIME2","DATETIMEOFFSET","DAY","DAYOFYEAR","DAYS","DB_CHAINING","DBCC","DBREINDEX","DDL_DATABASE_LEVEL_EVENTS","DEADLOCK_PRIORITY","DEALLOCATE","DEC","DECIMAL","DECLARE","DECRYPTION","DEFAULT","DEFAULT_DATABASE","DEFAULT_FULLTEXT_LANGUAGE","DEFAULT_LANGUAGE","DEFAULT_SCHEMA","DEFINITION","DELAY","DELAYED_DURABILITY","DELETE","DELETED","DENSITY_VECTOR","DENY","DEPENDENTS","DES","DESC","DESCRIPTION","DESX","DHCP","DIAGNOSTICS","DIALOG","DIFFERENTIAL","DIRECTORY_NAME","DISABLE","DISABLE_BROKER","DISABLED","DISK","DISTINCT","DISTRIBUTED","DOCUMENT","DOUBLE","DROP","DROP_EXISTING","DROPCLEANBUFFERS","DUMP","DURABILITY","DYNAMIC","EDITION","ELEMENTS","ELSE","EMERGENCY","EMPTY","EMPTYFILE","ENABLE","ENABLE_BROKER","ENABLED","ENCRYPTION","END","ENDPOINT","ENDPOINT_URL","ERRLVL","ERROR","ERROR_BROKER_CONVERSATIONS","ERRORFILE","ESCAPE","ESTIMATEONLY","EVENT","EVENT_RETENTION_MODE","EXEC","EXECUTABLE","EXECUTE","EXIT","EXPAND","EXPIREDATE","EXPIRY_DATE","EXPLICIT","EXTENDED_LOGICAL_CHECKS","EXTENSION","EXTERNAL","EXTERNAL_ACCESS","FAIL_OPERATION","FAILOVER","FAILOVER_MODE","FAILURE_CONDITION_LEVEL","FALSE","FAN_IN","FAST","FAST_FORWARD","FETCH","FIELDTERMINATOR","FILE","FILEGROUP","FILEGROWTH","FILELISTONLY","FILENAME","FILEPATH","FILESTREAM","FILESTREAM_ON","FILETABLE_COLLATE_FILENAME","FILETABLE_DIRECTORY","FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME","FILETABLE_NAMESPACE","FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME","FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME","FILLFACTOR","FILTERING","FIRE_TRIGGERS","FIRST","FIRSTROW","FLOAT","FMTONLY","FOLLOWING","FOR","FORCE","FORCE_FAILOVER_ALLOW_DATA_LOSS","FORCE_SERVICE_ALLOW_DATA_LOSS","FORCED","FORCEPLAN","FORCESCAN","FORCESEEK","FOREIGN","FORMATFILE","FORMSOF","FORWARD_ONLY","FREE","FREEPROCCACHE","FREESESSIONCACHE","FREESYSTEMCACHE","FROM","FULL","FULLSCAN","FULLTEXT","FUNCTION","GB","GEOGRAPHY_AUTO_GRID","GEOGRAPHY_GRID","GEOMETRY_AUTO_GRID","GEOMETRY_GRID","GET","GLOBAL","GO","GOTO","GOVERNOR","GRANT","GRIDS","GROUP","GROUP_MAX_REQUESTS","HADR","HASH","HASHED","HAVING","HEADERONLY","HEALTH_CHECK_TIMEOUT","HELP","HIERARCHYID","HIGH","HINT","HISTOGRAM","HOLDLOCK","HONOR_BROKER_PRIORITY","HOUR","HOURS","IDENTITY","IDENTITY_INSERT","IDENTITY_VALUE","IDENTITYCOL","IF","IGNORE_CONSTRAINTS","IGNORE_DUP_KEY","IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX","IGNORE_TRIGGERS","IMAGE","IMMEDIATE","IMPERSONATE","IMPLICIT_TRANSACTIONS","IMPORTANCE","INCLUDE","INCREMENT","INCREMENTAL","INDEX","INDEXDEFRAG","INFINITE","INFLECTIONAL","INIT","INITIATOR","INPUT","INPUTBUFFER","INSENSITIVE","INSERT","INSERTED","INSTEAD","INT","INTEGER","INTO","IO","IP","ISABOUT","ISOLATION","JOB","KB","KEEP","KEEP_CDC","KEEP_NULLS","KEEP_REPLICATION","KEEPDEFAULTS","KEEPFIXED","KEEPIDENTITY","KEEPNULLS","KERBEROS","KEY","KEY_SOURCE","KEYS","KEYSET","KILL","KILOBYTES_PER_BATCH","LABELONLY","LANGUAGE","LAST","LASTROW","LEVEL","LEVEL_1","LEVEL_2","LEVEL_3","LEVEL_4","LIFETIME","LIMIT","LINENO","LIST","LISTENER","LISTENER_IP","LISTENER_PORT","LOAD","LOADHISTORY","LOB_COMPACTION","LOCAL","LOCAL_SERVICE_NAME","LOCK_ESCALATION","LOCK_TIMEOUT","LOGIN","LOGSPACE","LOOP","LOW","MANUAL","MARK","MARK_IN_USE_FOR_REMOVAL","MASTER","MAX_CPU_PERCENT","MAX_DISPATCH_LATENCY","MAX_DOP","MAX_DURATION","MAX_EVENT_SIZE","MAX_FILES","MAX_IOPS_PER_VOLUME","MAX_MEMORY","MAX_MEMORY_PERCENT","MAX_QUEUE_READERS","MAX_ROLLOVER_FILES","MAX_SIZE","MAXDOP","MAXERRORS","MAXLENGTH","MAXRECURSION","MAXSIZE","MAXTRANSFERSIZE","MAXVALUE","MB","MEDIADESCRIPTION","MEDIANAME","MEDIAPASSWORD","MEDIUM","MEMBER","MEMORY_OPTIMIZED","MEMORY_OPTIMIZED_DATA","MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT","MEMORY_PARTITION_MODE","MERGE","MESSAGE","MESSAGE_FORWARD_SIZE","MESSAGE_FORWARDING","MICROSECOND","MILLISECOND","MIN_CPU_PERCENT","MIN_IOPS_PER_VOLUME","MIN_MEMORY_PERCENT","MINUTE","MINUTES","MINVALUE","MIRROR","MIRROR_ADDRESS","MODIFY","MONEY","MONTH","MOVE","MULTI_USER","MUST_CHANGE","NAME","NANOSECOND","NATIONAL","NATIVE_COMPILATION","NCHAR","NEGOTIATE","NESTED_TRIGGERS","NEW_ACCOUNT","NEW_BROKER","NEW_PASSWORD","NEWNAME","NEXT","NO","NO_BROWSETABLE","NO_CHECKSUM","NO_COMPRESSION","NO_EVENT_LOSS","NO_INFOMSGS","NO_TRUNCATE","NO_WAIT","NOCHECK","NOCOUNT","NOEXEC","NOEXPAND","NOFORMAT","NOINDEX","NOINIT","NOLOCK","NON","NON_TRANSACTED_ACCESS","NONCLUSTERED","NONE","NORECOMPUTE","NORECOVERY","NORESEED","NORESET","NOREWIND","NORMAL","NOSKIP","NOTIFICATION","NOTRUNCATE","NOUNLOAD","NOWAIT","NTEXT","NTLM","NUMANODE","NUMERIC","NUMERIC_ROUNDABORT","NVARCHAR","OBJECT","OF","OFF","OFFLINE","OFFSET","OFFSETS","OLD_ACCOUNT","OLD_PASSWORD","ON","ON_FAILURE","ONLINE","ONLY","OPEN","OPEN_EXISTING","OPENTRAN","OPTIMISTIC","OPTIMIZE","OPTION","ORDER","OUT","OUTPUT","OUTPUTBUFFER","OVER","OVERRIDE","OWNER","OWNERSHIP","PAD_INDEX","PAGE","PAGE_VERIFY","PAGECOUNT","PAGLOCK","PARAMETERIZATION","PARSEONLY","PARTIAL","PARTITION","PARTITIONS","PARTNER","PASSWORD","PATH","PER_CPU","PER_NODE","PERCENT","PERMISSION_SET","PERSISTED","PHYSICAL_ONLY","PLAN","POISON_MESSAGE_HANDLING","POOL","POPULATION","PORT","PRECEDING","PRECISION","PRIMARY","PRIMARY_ROLE","PRINT","PRIOR","PRIORITY","PRIORITY_LEVEL","PRIVATE","PRIVILEGES","PROC","PROCCACHE","PROCEDURE","PROCEDURE_NAME","PROCESS","PROFILE","PROPERTY","PROPERTY_DESCRIPTION","PROPERTY_INT_ID","PROPERTY_SET_GUID","PROVIDER","PROVIDER_KEY_NAME","PUBLIC","PUT","QUARTER","QUERY","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUEUE_DELAY","QUOTED_IDENTIFIER","RAISERROR","RANGE","RAW","RC2","RC4","RC4_128","READ","READ_COMMITTED_SNAPSHOT","READ_ONLY","READ_ONLY_ROUTING_LIST","READ_ONLY_ROUTING_URL","READ_WRITE","READ_WRITE_FILEGROUPS","READCOMMITTED","READCOMMITTEDLOCK","READONLY","READPAST","READTEXT","READUNCOMMITTED","READWRITE","REAL","REBUILD","RECEIVE","RECOMPILE","RECONFIGURE","RECOVERY","RECURSIVE","RECURSIVE_TRIGGERS","REFERENCES","REGENERATE","RELATED_CONVERSATION","RELATED_CONVERSATION_GROUP","RELATIVE","REMOTE","REMOTE_PROC_TRANSACTIONS","REMOTE_SERVICE_NAME","REMOVE","REORGANIZE","REPAIR_ALLOW_DATA_LOSS","REPAIR_FAST","REPAIR_REBUILD","REPEATABLE","REPEATABLEREAD","REPLICA","REPLICATION","REQUEST_MAX_CPU_TIME_SEC","REQUEST_MAX_MEMORY_GRANT_PERCENT","REQUEST_MEMORY_GRANT_TIMEOUT_SEC","REQUIRED","RESAMPLE","RESEED","RESERVE_DISK_SPACE","RESET","RESOURCE","RESTART","RESTORE","RESTRICT","RESTRICTED_USER","RESULT","RESUME","RETAINDAYS","RETENTION","RETURN","RETURNS","REVERT","REVOKE","REWIND","REWINDONLY","ROBUST","ROLE","ROLLBACK","ROLLUP","ROOT","ROUTE","ROW","ROWCOUNT","ROWGUIDCOL","ROWLOCK","ROWS","ROWS_PER_BATCH","ROWTERMINATOR","ROWVERSION","RSA_1024","RSA_2048","RSA_512","RULE","SAFE","SAFETY","SAMPLE","SAVE","SCHEDULER","SCHEMA","SCHEMA_AND_DATA","SCHEMA_ONLY","SCHEMABINDING","SCHEME","SCROLL","SCROLL_LOCKS","SEARCH","SECOND","SECONDARY","SECONDARY_ONLY","SECONDARY_ROLE","SECONDS","SECRET","SECURITY_LOG","SECURITYAUDIT","SELECT","SELECTIVE","SELF","SEND","SENT","SEQUENCE","SERIALIZABLE","SERVER","SERVICE","SERVICE_BROKER","SERVICE_NAME","SESSION","SESSION_TIMEOUT","SET","SETS","SETUSER","SHOW_STATISTICS","SHOWCONTIG","SHOWPLAN","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SHRINKDATABASE","SHRINKFILE","SHUTDOWN","SID","SIGNATURE","SIMPLE","SINGLE_BLOB","SINGLE_CLOB","SINGLE_NCLOB","SINGLE_USER","SINGLETON","SIZE","SKIP","SMALLDATETIME","SMALLINT","SMALLMONEY","SNAPSHOT","SORT_IN_TEMPDB","SOURCE","SPARSE","SPATIAL","SPATIAL_WINDOW_MAX_CELLS","SPECIFICATION","SPLIT","SQL","SQL_VARIANT","SQLPERF","STANDBY","START","START_DATE","STARTED","STARTUP_STATE","STAT_HEADER","STATE","STATEMENT","STATIC","STATISTICAL_SEMANTICS","STATISTICS","STATISTICS_INCREMENTAL","STATISTICS_NORECOMPUTE","STATS","STATS_STREAM","STATUS","STATUSONLY","STOP","STOP_ON_ERROR","STOPAT","STOPATMARK","STOPBEFOREMARK","STOPLIST","STOPPED","SUBJECT","SUBSCRIPTION","SUPPORTED","SUSPEND","SWITCH","SYMMETRIC","SYNCHRONOUS_COMMIT","SYNONYM","SYSNAME","SYSTEM","TABLE","TABLERESULTS","TABLESAMPLE","TABLOCK","TABLOCKX","TAKE","TAPE","TARGET","TARGET_RECOVERY_TIME","TB","TCP","TEXT","TEXTIMAGE_ON","TEXTSIZE","THEN","THESAURUS","THROW","TIES","TIME","TIMEOUT","TIMER","TIMESTAMP","TINYINT","TO","TOP","TORN_PAGE_DETECTION","TRACEOFF","TRACEON","TRACESTATUS","TRACK_CAUSALITY","TRACK_COLUMNS_UPDATED","TRAN","TRANSACTION","TRANSFER","TRANSFORM_NOISE_WORDS","TRIGGER","TRIPLE_DES","TRIPLE_DES_3KEY","TRUE","TRUNCATE","TRUNCATEONLY","TRUSTWORTHY","TRY","TSQL","TWO_DIGIT_YEAR_CUTOFF","TYPE","TYPE_WARNING","UNBOUNDED","UNCHECKED","UNCOMMITTED","UNDEFINED","UNIQUE","UNIQUEIDENTIFIER","UNKNOWN","UNLIMITED","UNLOAD","UNSAFE","UPDATE","UPDATETEXT","UPDATEUSAGE","UPDLOCK","URL","USE","USED","USER","USEROPTIONS","USING","VALID_XML","VALIDATION","VALUE","VALUES","VARBINARY","VARCHAR","VARYING","VERIFYONLY","VERSION","VIEW","VIEW_METADATA","VIEWS","VISIBILITY","WAIT_AT_LOW_PRIORITY","WAITFOR","WEEK","WEIGHT","WELL_FORMED_XML","WHEN","WHERE","WHILE","WINDOWS","WITH","WITHIN","WITHOUT","WITNESS","WORK","WORKLOAD","WRITETEXT","XACT_ABORT","XLOCK","XMAX","XMIN","XML","XMLDATA","XMLNAMESPACES","XMLSCHEMA","XQUERY","XSINIL","YEAR","YMAX","YMIN"],operators:["ALL","AND","ANY","BETWEEN","EXISTS","IN","LIKE","NOT","OR","SOME","EXCEPT","INTERSECT","UNION","APPLY","CROSS","FULL","INNER","JOIN","LEFT","OUTER","RIGHT","CONTAINS","FREETEXT","IS","NULL","PIVOT","UNPIVOT","MATCHED"],builtinFunctions:["AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","SUM","STDEV","STDEVP","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","COLLATE","COLLATIONPROPERTY","TERTIARY_WEIGHTS","FEDERATION_FILTERING_VALUE","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","CURRENT_TIMESTAMP","DATEADD","DATEDIFF","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","CHOOSE","COALESCE","IIF","NULLIF","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASE_PRINCIPAL_ID","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHAR","CHARINDEX","CONCAT","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","NCHAR","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STUFF","SUBSTRING","UNICODE","UPPER","BINARY_CHECKSUM","CHECKSUM","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","ERROR_LINE","ERROR_NUMBER","ERROR_MESSAGE","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GETANSINULL","GET_FILESTREAM_TRANSACTION_CONTEXT","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","XACT_STATE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","CHANGETABLE","CHANGE_TRACKING_CONTEXT","CHANGE_TRACKING_CURRENT_VERSION","CHANGE_TRACKING_IS_COLUMN_IN_MASK","CHANGE_TRACKING_MIN_VALID_VERSION","CONTAINSTABLE","FREETEXTTABLE","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","FILETABLEROOTPATH","GETFILENAMESPACEPATH","GETPATHLOCATOR","PATHNAME","GET_TRANSMISSION_STATUS"],builtinVariables:["@@DATEFIRST","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","@@CURSOR_ROWS","@@FETCH_STATUS","@@DATEFIRST","@@PROCID","@@ERROR","@@IDENTITY","@@ROWCOUNT","@@TRANCOUNT","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACKET_ERRORS","@@PACK_RECEIVED","@@PACK_SENT","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE"],pseudoColumns:["$ACTION","$IDENTITY","$ROWGUID","$PARTITION"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N'/,{token:"string",next:"@string"}],[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[[/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i,"keyword"],[/BEGIN\s+TRY\b/i,{token:"keyword.try"}],[/END\s+TRY\b/i,{token:"keyword.try"}],[/BEGIN\s+CATCH\b/i,{token:"keyword.catch"}],[/END\s+CATCH\b/i,{token:"keyword.catch"}],[/(BEGIN|CASE)\b/i,{token:"keyword.block"}],[/END\b/i,{token:"keyword.block"}],[/WHEN\b/i,{token:"keyword.choice"}],[/THEN\b/i,{token:"keyword.choice"}]]}}}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0be333.63623404.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0be333.63623404.js new file mode 100644 index 000000000..9b4b0f279 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0be333.63623404.js @@ -0,0 +1,9 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0be333"],{"2ef0":function(n,t,r){(function(n,e){var u; +/** + * @license + * Lodash + * Copyright JS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(){var i,o="4.17.11",a=200,f="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",l="__lodash_hash_undefined__",s=500,h="__lodash_placeholder__",p=1,v=2,_=4,g=1,y=2,d=1,w=2,b=4,m=8,x=16,j=32,A=64,k=128,O=256,I=512,R=30,z="...",E=800,S=16,W=1,L=2,C=3,U=1/0,B=9007199254740991,T=1.7976931348623157e308,$=NaN,D=4294967295,M=D-1,F=D>>>1,N=[["ary",k],["bind",d],["bindKey",w],["curry",m],["curryRight",x],["flip",I],["partial",j],["partialRight",A],["rearg",O]],P="[object Arguments]",q="[object Array]",Z="[object AsyncFunction]",K="[object Boolean]",V="[object Date]",G="[object DOMException]",J="[object Error]",H="[object Function]",Y="[object GeneratorFunction]",Q="[object Map]",X="[object Number]",nn="[object Null]",tn="[object Object]",rn="[object Promise]",en="[object Proxy]",un="[object RegExp]",on="[object Set]",an="[object String]",fn="[object Symbol]",cn="[object Undefined]",ln="[object WeakMap]",sn="[object WeakSet]",hn="[object ArrayBuffer]",pn="[object DataView]",vn="[object Float32Array]",_n="[object Float64Array]",gn="[object Int8Array]",yn="[object Int16Array]",dn="[object Int32Array]",wn="[object Uint8Array]",bn="[object Uint8ClampedArray]",mn="[object Uint16Array]",xn="[object Uint32Array]",jn=/\b__p \+= '';/g,An=/\b(__p \+=) '' \+/g,kn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,On=/&(?:amp|lt|gt|quot|#39);/g,In=/[&<>"']/g,Rn=RegExp(On.source),zn=RegExp(In.source),En=/<%-([\s\S]+?)%>/g,Sn=/<%([\s\S]+?)%>/g,Wn=/<%=([\s\S]+?)%>/g,Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Cn=/^\w*$/,Un=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Bn=/[\\^$.*+?()[\]{}|]/g,Tn=RegExp(Bn.source),$n=/^\s+|\s+$/g,Dn=/^\s+/,Mn=/\s+$/,Fn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Nn=/\{\n\/\* \[wrapped with (.+)\] \*/,Pn=/,? & /,qn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Zn=/\\(\\)?/g,Kn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Vn=/\w*$/,Gn=/^[-+]0x[0-9a-f]+$/i,Jn=/^0b[01]+$/i,Hn=/^\[object .+?Constructor\]$/,Yn=/^0o[0-7]+$/i,Qn=/^(?:0|[1-9]\d*)$/,Xn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,nt=/($^)/,tt=/['\n\r\u2028\u2029\\]/g,rt="\\ud800-\\udfff",et="\\u0300-\\u036f",ut="\\ufe20-\\ufe2f",it="\\u20d0-\\u20ff",ot=et+ut+it,at="\\u2700-\\u27bf",ft="a-z\\xdf-\\xf6\\xf8-\\xff",ct="\\xac\\xb1\\xd7\\xf7",lt="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",st="\\u2000-\\u206f",ht=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pt="A-Z\\xc0-\\xd6\\xd8-\\xde",vt="\\ufe0e\\ufe0f",_t=ct+lt+st+ht,gt="['’]",yt="["+rt+"]",dt="["+_t+"]",wt="["+ot+"]",bt="\\d+",mt="["+at+"]",xt="["+ft+"]",jt="[^"+rt+_t+bt+at+ft+pt+"]",At="\\ud83c[\\udffb-\\udfff]",kt="(?:"+wt+"|"+At+")",Ot="[^"+rt+"]",It="(?:\\ud83c[\\udde6-\\uddff]){2}",Rt="[\\ud800-\\udbff][\\udc00-\\udfff]",zt="["+pt+"]",Et="\\u200d",St="(?:"+xt+"|"+jt+")",Wt="(?:"+zt+"|"+jt+")",Lt="(?:"+gt+"(?:d|ll|m|re|s|t|ve))?",Ct="(?:"+gt+"(?:D|LL|M|RE|S|T|VE))?",Ut=kt+"?",Bt="["+vt+"]?",Tt="(?:"+Et+"(?:"+[Ot,It,Rt].join("|")+")"+Bt+Ut+")*",$t="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Dt="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Mt=Bt+Ut+Tt,Ft="(?:"+[mt,It,Rt].join("|")+")"+Mt,Nt="(?:"+[Ot+wt+"?",wt,It,Rt,yt].join("|")+")",Pt=RegExp(gt,"g"),qt=RegExp(wt,"g"),Zt=RegExp(At+"(?="+At+")|"+Nt+Mt,"g"),Kt=RegExp([zt+"?"+xt+"+"+Lt+"(?="+[dt,zt,"$"].join("|")+")",Wt+"+"+Ct+"(?="+[dt,zt+St,"$"].join("|")+")",zt+"?"+St+"+"+Lt,zt+"+"+Ct,Dt,$t,bt,Ft].join("|"),"g"),Vt=RegExp("["+Et+rt+ot+vt+"]"),Gt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Jt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ht=-1,Yt={};Yt[vn]=Yt[_n]=Yt[gn]=Yt[yn]=Yt[dn]=Yt[wn]=Yt[bn]=Yt[mn]=Yt[xn]=!0,Yt[P]=Yt[q]=Yt[hn]=Yt[K]=Yt[pn]=Yt[V]=Yt[J]=Yt[H]=Yt[Q]=Yt[X]=Yt[tn]=Yt[un]=Yt[on]=Yt[an]=Yt[ln]=!1;var Qt={};Qt[P]=Qt[q]=Qt[hn]=Qt[pn]=Qt[K]=Qt[V]=Qt[vn]=Qt[_n]=Qt[gn]=Qt[yn]=Qt[dn]=Qt[Q]=Qt[X]=Qt[tn]=Qt[un]=Qt[on]=Qt[an]=Qt[fn]=Qt[wn]=Qt[bn]=Qt[mn]=Qt[xn]=!0,Qt[J]=Qt[H]=Qt[ln]=!1;var Xt={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},nr={"&":"&","<":"<",">":">",'"':""","'":"'"},tr={"&":"&","<":"<",">":">",""":'"',"'":"'"},rr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},er=parseFloat,ur=parseInt,ir="object"==typeof n&&n&&n.Object===Object&&n,or="object"==typeof self&&self&&self.Object===Object&&self,ar=ir||or||Function("return this")(),fr=t&&!t.nodeType&&t,cr=fr&&"object"==typeof e&&e&&!e.nodeType&&e,lr=cr&&cr.exports===fr,sr=lr&&ir.process,hr=function(){try{var n=cr&&cr.require&&cr.require("util").types;return n||sr&&sr.binding&&sr.binding("util")}catch(t){}}(),pr=hr&&hr.isArrayBuffer,vr=hr&&hr.isDate,_r=hr&&hr.isMap,gr=hr&&hr.isRegExp,yr=hr&&hr.isSet,dr=hr&&hr.isTypedArray;function wr(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function br(n,t,r,e){var u=-1,i=null==n?0:n.length;while(++u-1}function Or(n,t,r){var e=-1,u=null==n?0:n.length;while(++e-1);return r}function Qr(n,t){var r=n.length;while(r--&&Tr(t,n[r],0)>-1);return r}function Xr(n,t){var r=n.length,e=0;while(r--)n[r]===t&&++e;return e}var ne=Nr(Xt),te=Nr(nr);function re(n){return"\\"+rr[n]}function ee(n,t){return null==n?i:n[t]}function ue(n){return Vt.test(n)}function ie(n){return Gt.test(n)}function oe(n){var t,r=[];while(!(t=n.next()).done)r.push(t.value);return r}function ae(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function fe(n,t){return function(r){return n(t(r))}}function ce(n,t){var r=-1,e=n.length,u=0,i=[];while(++r-1}function Me(n,t){var r=this.__data__,e=fu(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function Fe(n){var t=-1,r=null==n?0:n.length;this.clear();while(++t=t?n:t)),n}function _u(n,t,r,e,u,o){var a,f=t&p,c=t&v,l=t&_;if(r&&(a=u?r(n,e,u,o):r(n)),a!==i)return a;if(!jl(n))return n;var s=al(n);if(s){if(a=Xo(n),!f)return to(n,a)}else{var h=Jo(n),g=h==H||h==Y;if(hl(n))return Zi(n,f);if(h==tn||h==P||g&&!u){if(a=c||g?{}:na(n),!f)return c?uo(n,su(a,n)):eo(n,lu(a,n))}else{if(!Qt[h])return u?n:{};a=ta(n,h,f)}}o||(o=new He);var y=o.get(n);if(y)return y;if(o.set(n,a),Bl(n))return n.forEach(function(e){a.add(_u(e,t,r,e,n,o))}),a;if(kl(n))return n.forEach(function(e,u){a.set(u,_u(e,t,r,u,n,o))}),a;var d=l?c?$o:To:c?xs:ms,w=s?i:d(n);return mr(w||n,function(e,u){w&&(u=e,e=n[u]),au(a,u,_u(e,t,r,u,n,o))}),a}function gu(n){var t=ms(n);return function(r){return yu(r,n,t)}}function yu(n,t,r){var e=r.length;if(null==n)return!e;n=et(n);while(e--){var u=r[e],o=t[u],a=n[u];if(a===i&&!(u in n)||!o(a))return!1}return!0}function du(n,t,r){if("function"!=typeof n)throw new ot(c);return ja(function(){n.apply(i,r)},t)}function wu(n,t,r,e){var u=-1,i=kr,o=!0,f=n.length,c=[],l=t.length;if(!f)return c;r&&(t=Ir(t,Gr(r))),e?(i=Or,o=!1):t.length>=a&&(i=Hr,o=!1,t=new Ve(t));n:while(++uu?0:u+r),e=e===i||e>u?u:Vl(e),e<0&&(e+=u),e=r>e?0:Gl(e);while(r0&&r(a)?t>1?Ou(a,t-1,r,e,u):Rr(u,a):e||(u[u.length]=a)}return u}var Iu=fo(),Ru=fo(!0);function zu(n,t){return n&&Iu(n,t,ms)}function Eu(n,t){return n&&Ru(n,t,ms)}function Su(n,t){return Ar(t,function(t){return bl(n[t])})}function Wu(n,t){t=Fi(t,n);var r=0,e=t.length;while(null!=n&&rt}function Bu(n,t){return null!=n&&ht.call(n,t)}function Tu(n,t){return null!=n&&t in et(n)}function $u(n,t,r){return n>=Nt(t,r)&&n=120&&h.length>=120)?new Ve(f&&h):i}h=n[0];var p=-1,v=c[0];n:while(++p-1)a!==n&&Ot.call(a,f,1),Ot.call(n,f,1)}return n}function vi(n,t){var r=n?t.length:0,e=r-1;while(r--){var u=t[r];if(r==e||u!==i){var i=u;ua(u)?Ot.call(n,u,1):Li(n,u)}}return n}function _i(n,t){return n+Ut(Vt()*(t-n+1))}function gi(n,t,e,u){var i=-1,o=Ft(Ct((t-n)/(e||1)),0),a=r(o);while(o--)a[u?o:++i]=n,n+=e;return a}function yi(n,t){var r="";if(!n||t<1||t>B)return r;do{t%2&&(r+=n),t=Ut(t/2),t&&(n+=n)}while(t);return r}function di(n,t){return Aa(da(n,t,zh),n+"")}function wi(n){return eu(Ms(n))}function bi(n,t){var r=Ms(n);return Ia(r,vu(t,0,r.length))}function mi(n,t,r,e){if(!jl(n))return n;t=Fi(t,n);var u=-1,o=t.length,a=o-1,f=n;while(null!=f&&++ui?0:i+t),e=e>i?i:e,e<0&&(e+=i),i=t>e?0:e-t>>>0,t>>>=0;var o=r(i);while(++u>>1,o=n[i];null!==o&&!$l(o)&&(r?o<=t:o=a){var l=t?null:Io(n);if(l)return le(l);o=!1,u=Hr,c=new Ve}else c=t?[]:f;n:while(++e=e?n:ki(n,t,r)}var qi=St||function(n){return ar.clearTimeout(n)};function Zi(n,t){if(t)return n.slice();var r=n.length,e=xt?xt(r):new n.constructor(r);return n.copy(e),e}function Ki(n){var t=new n.constructor(n.byteLength);return new mt(t).set(new mt(n)),t}function Vi(n,t){var r=t?Ki(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}function Gi(n){var t=new n.constructor(n.source,Vn.exec(n));return t.lastIndex=n.lastIndex,t}function Ji(n){return ye?et(ye.call(n)):{}}function Hi(n,t){var r=t?Ki(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function Yi(n,t){if(n!==t){var r=n!==i,e=null===n,u=n===n,o=$l(n),a=t!==i,f=null===t,c=t===t,l=$l(t);if(!f&&!l&&!o&&n>t||o&&a&&c&&!f&&!l||e&&a&&c||!r&&c||!u)return 1;if(!e&&!o&&!l&&n=a)return f;var c=r[e];return f*("desc"==c?-1:1)}}return n.index-t.index}function Xi(n,t,e,u){var i=-1,o=n.length,a=e.length,f=-1,c=t.length,l=Ft(o-a,0),s=r(c+l),h=!u;while(++f1?r[u-1]:i,a=u>2?r[2]:i;o=n.length>3&&"function"==typeof o?(u--,o):i,a&&ia(r[0],r[1],a)&&(o=u<3?i:o,u=1),t=et(t);while(++e-1?u[o?t[a]:a]:i}}function _o(n){return Bo(function(t){var r=t.length,e=r,u=Ae.prototype.thru;n&&t.reverse();while(e--){var o=t[e];if("function"!=typeof o)throw new ot(c);if(u&&!a&&"wrapper"==Mo(o))var a=new Ae([],!0)}e=a?e:r;while(++e1&&d.reverse(),h&&lf))return!1;var l=o.get(n);if(l&&o.get(t))return l==t;var s=-1,h=!0,p=r&y?new Ve:i;o.set(n,t),o.set(t,n);while(++s1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Fn,"{\n/* [wrapped with "+t+"] */\n")}function ea(n){return al(n)||ol(n)||!!(It&&n&&n[It])}function ua(n,t){var r=typeof n;return t=null==t?B:t,!!t&&("number"==r||"symbol"!=r&&Qn.test(n))&&n>-1&&n%1==0&&n0){if(++t>=E)return arguments[0]}else t=0;return n.apply(i,arguments)}}function Ia(n,t){var r=-1,e=n.length,u=e-1;t=t===i?e:t;while(++r1?n[t-1]:i;return r="function"==typeof r?(n.pop(),r):i,Uf(n,r)});function qf(n){var t=be(n);return t.__chain__=!0,t}function Zf(n,t){return t(n),n}function Kf(n,t){return t(n)}var Vf=Bo(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return pu(t,n)};return!(t>1||this.__actions__.length)&&e instanceof ke&&ua(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:Kf,args:[u],thisArg:i}),new Ae(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(i),n})):this.thru(u)});function Gf(){return qf(this)}function Jf(){return new Ae(this.value(),this.__chain__)}function Hf(){this.__values__===i&&(this.__values__=Zl(this.value()));var n=this.__index__>=this.__values__.length,t=n?i:this.__values__[this.__index__++];return{done:n,value:t}}function Yf(){return this}function Qf(n){var t,r=this;while(r instanceof je){var e=Wa(r);e.__index__=0,e.__values__=i,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function Xf(){var n=this.__wrapped__;if(n instanceof ke){var t=n;return this.__actions__.length&&(t=new ke(this)),t=t.reverse(),t.__actions__.push({func:Kf,args:[pf],thisArg:i}),new Ae(t,this.__chain__)}return this.thru(pf)}function nc(){return Bi(this.__wrapped__,this.__actions__)}var tc=io(function(n,t,r){ht.call(n,r)?++n[r]:hu(n,r,1)});function rc(n,t,r){var e=al(n)?jr:xu;return r&&ia(n,t,r)&&(t=i),e(n,No(t,3))}function ec(n,t){var r=al(n)?Ar:ku;return r(n,No(t,3))}var uc=vo(qa),ic=vo(Za);function oc(n,t){return Ou(_c(n,t),1)}function ac(n,t){return Ou(_c(n,t),U)}function fc(n,t,r){return r=r===i?1:Vl(r),Ou(_c(n,t),r)}function cc(n,t){var r=al(n)?mr:bu;return r(n,No(t,3))}function lc(n,t){var r=al(n)?xr:mu;return r(n,No(t,3))}var sc=io(function(n,t,r){ht.call(n,r)?n[r].push(t):hu(n,r,[t])});function hc(n,t,r,e){n=cl(n)?n:Ms(n),r=r&&!e?Vl(r):0;var u=n.length;return r<0&&(r=Ft(u+r,0)),Tl(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&Tr(n,t,r)>-1}var pc=di(function(n,t,e){var u=-1,i="function"==typeof t,o=cl(n)?r(n.length):[];return bu(n,function(n){o[++u]=i?wr(t,n,e):Fu(n,t,e)}),o}),vc=io(function(n,t,r){hu(n,r,t)});function _c(n,t){var r=al(n)?Ir:ei;return r(n,No(t,3))}function gc(n,t,r,e){return null==n?[]:(al(t)||(t=null==t?[]:[t]),r=e?i:r,al(r)||(r=null==r?[]:[r]),ci(n,t,r))}var yc=io(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]});function dc(n,t,r){var e=al(n)?zr:Pr,u=arguments.length<3;return e(n,No(t,4),r,u,bu)}function wc(n,t,r){var e=al(n)?Er:Pr,u=arguments.length<3;return e(n,No(t,4),r,u,mu)}function bc(n,t){var r=al(n)?Ar:ku;return r(n,Mc(No(t,3)))}function mc(n){var t=al(n)?eu:wi;return t(n)}function xc(n,t,r){t=(r?ia(n,t,r):t===i)?1:Vl(t);var e=al(n)?uu:bi;return e(n,t)}function jc(n){var t=al(n)?iu:Ai;return t(n)}function Ac(n){if(null==n)return 0;if(cl(n))return Tl(n)?ve(n):n.length;var t=Jo(n);return t==Q||t==on?n.size:ni(n).length}function kc(n,t,r){var e=al(n)?Sr:Oi;return r&&ia(n,t,r)&&(t=i),e(n,No(t,3))}var Oc=di(function(n,t){if(null==n)return[];var r=t.length;return r>1&&ia(n,t[0],t[1])?t=[]:r>2&&ia(t[0],t[1],t[2])&&(t=[t[0]]),ci(n,Ou(t,1),[])}),Ic=Wt||function(){return ar.Date.now()};function Rc(n,t){if("function"!=typeof t)throw new ot(c);return n=Vl(n),function(){if(--n<1)return t.apply(this,arguments)}}function zc(n,t,r){return t=r?i:t,t=n&&null==t?n.length:t,zo(n,k,i,i,i,i,t)}function Ec(n,t){var r;if("function"!=typeof t)throw new ot(c);return n=Vl(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=i),r}}var Sc=di(function(n,t,r){var e=d;if(r.length){var u=ce(r,Fo(Sc));e|=j}return zo(n,e,t,r,u)}),Wc=di(function(n,t,r){var e=d|w;if(r.length){var u=ce(r,Fo(Wc));e|=j}return zo(t,e,n,r,u)});function Lc(n,t,r){t=r?i:t;var e=zo(n,m,i,i,i,i,i,t);return e.placeholder=Lc.placeholder,e}function Cc(n,t,r){t=r?i:t;var e=zo(n,x,i,i,i,i,i,t);return e.placeholder=Cc.placeholder,e}function Uc(n,t,r){var e,u,o,a,f,l,s=0,h=!1,p=!1,v=!0;if("function"!=typeof n)throw new ot(c);function _(t){var r=e,o=u;return e=u=i,s=t,a=n.apply(o,r),a}function g(n){return s=n,f=ja(w,t),h?_(n):a}function y(n){var r=n-l,e=n-s,u=t-r;return p?Nt(u,o-e):u}function d(n){var r=n-l,e=n-s;return l===i||r>=t||r<0||p&&e>=o}function w(){var n=Ic();if(d(n))return b(n);f=ja(w,y(n))}function b(n){return f=i,v&&e?_(n):(e=u=i,a)}function m(){f!==i&&qi(f),s=0,e=l=u=f=i}function x(){return f===i?a:b(Ic())}function j(){var n=Ic(),r=d(n);if(e=arguments,u=this,l=n,r){if(f===i)return g(l);if(p)return f=ja(w,t),_(l)}return f===i&&(f=ja(w,t)),a}return t=Jl(t)||0,jl(r)&&(h=!!r.leading,p="maxWait"in r,o=p?Ft(Jl(r.maxWait)||0,t):o,v="trailing"in r?!!r.trailing:v),j.cancel=m,j.flush=x,j}var Bc=di(function(n,t){return du(n,1,t)}),Tc=di(function(n,t,r){return du(n,Jl(t)||0,r)});function $c(n){return zo(n,I)}function Dc(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new ot(c);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Dc.Cache||Fe),r}function Mc(n){if("function"!=typeof n)throw new ot(c);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function Fc(n){return Ec(2,n)}Dc.Cache=Fe;var Nc=Ni(function(n,t){t=1==t.length&&al(t[0])?Ir(t[0],Gr(No())):Ir(Ou(t,1),Gr(No()));var r=t.length;return di(function(e){var u=-1,i=Nt(e.length,r);while(++u=t}),ol=Nu(function(){return arguments}())?Nu:function(n){return Al(n)&&ht.call(n,"callee")&&!kt.call(n,"callee")},al=r.isArray,fl=pr?Gr(pr):Pu;function cl(n){return null!=n&&xl(n.length)&&!bl(n)}function ll(n){return Al(n)&&cl(n)}function sl(n){return!0===n||!1===n||Al(n)&&Cu(n)==K}var hl=Tt||Vh,pl=vr?Gr(vr):qu;function vl(n){return Al(n)&&1===n.nodeType&&!Ll(n)}function _l(n){if(null==n)return!0;if(cl(n)&&(al(n)||"string"==typeof n||"function"==typeof n.splice||hl(n)||Dl(n)||ol(n)))return!n.length;var t=Jo(n);if(t==Q||t==on)return!n.size;if(sa(n))return!ni(n).length;for(var r in n)if(ht.call(n,r))return!1;return!0}function gl(n,t){return Zu(n,t)}function yl(n,t,r){r="function"==typeof r?r:i;var e=r?r(n,t):i;return e===i?Zu(n,t,i,r):!!e}function dl(n){if(!Al(n))return!1;var t=Cu(n);return t==J||t==G||"string"==typeof n.message&&"string"==typeof n.name&&!Ll(n)}function wl(n){return"number"==typeof n&&$t(n)}function bl(n){if(!jl(n))return!1;var t=Cu(n);return t==H||t==Y||t==Z||t==en}function ml(n){return"number"==typeof n&&n==Vl(n)}function xl(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=B}function jl(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Al(n){return null!=n&&"object"==typeof n}var kl=_r?Gr(_r):Vu;function Ol(n,t){return n===t||Gu(n,t,qo(t))}function Il(n,t,r){return r="function"==typeof r?r:i,Gu(n,t,qo(t),r)}function Rl(n){return Wl(n)&&n!=+n}function zl(n){if(la(n))throw new u(f);return Ju(n)}function El(n){return null===n}function Sl(n){return null==n}function Wl(n){return"number"==typeof n||Al(n)&&Cu(n)==X}function Ll(n){if(!Al(n)||Cu(n)!=tn)return!1;var t=jt(n);if(null===t)return!0;var r=ht.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&st.call(r)==gt}var Cl=gr?Gr(gr):Hu;function Ul(n){return ml(n)&&n>=-B&&n<=B}var Bl=yr?Gr(yr):Yu;function Tl(n){return"string"==typeof n||!al(n)&&Al(n)&&Cu(n)==an}function $l(n){return"symbol"==typeof n||Al(n)&&Cu(n)==fn}var Dl=dr?Gr(dr):Qu;function Ml(n){return n===i}function Fl(n){return Al(n)&&Jo(n)==ln}function Nl(n){return Al(n)&&Cu(n)==sn}var Pl=Ao(ri),ql=Ao(function(n,t){return n<=t});function Zl(n){if(!n)return[];if(cl(n))return Tl(n)?_e(n):to(n);if(Rt&&n[Rt])return oe(n[Rt]());var t=Jo(n),r=t==Q?ae:t==on?le:Ms;return r(n)}function Kl(n){if(!n)return 0===n?n:0;if(n=Jl(n),n===U||n===-U){var t=n<0?-1:1;return t*T}return n===n?n:0}function Vl(n){var t=Kl(n),r=t%1;return t===t?r?t-r:t:0}function Gl(n){return n?vu(Vl(n),0,D):0}function Jl(n){if("number"==typeof n)return n;if($l(n))return $;if(jl(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=jl(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace($n,"");var r=Jn.test(n);return r||Yn.test(n)?ur(n.slice(2),r?2:8):Gn.test(n)?$:+n}function Hl(n){return ro(n,xs(n))}function Yl(n){return n?vu(Vl(n),-B,B):0===n?n:0}function Ql(n){return null==n?"":Si(n)}var Xl=oo(function(n,t){if(sa(t)||cl(t))ro(t,ms(t),n);else for(var r in t)ht.call(t,r)&&au(n,r,t[r])}),ns=oo(function(n,t){ro(t,xs(t),n)}),ts=oo(function(n,t,r,e){ro(t,xs(t),n,e)}),rs=oo(function(n,t,r,e){ro(t,ms(t),n,e)}),es=Bo(pu);function us(n,t){var r=xe(n);return null==t?r:lu(r,t)}var is=di(function(n,t){n=et(n);var r=-1,e=t.length,u=e>2?t[2]:i;u&&ia(t[0],t[1],u)&&(e=1);while(++r1),t}),ro(n,$o(n),r),e&&(r=_u(r,p|v|_,Wo));var u=t.length;while(u--)Li(r,t[u]);return r});function Rs(n,t){return Es(n,Mc(No(t)))}var zs=Bo(function(n,t){return null==n?{}:li(n,t)});function Es(n,t){if(null==n)return{};var r=Ir($o(n),function(n){return[n]});return t=No(t),si(n,r,function(n,r){return t(n,r[0])})}function Ss(n,t,r){t=Fi(t,n);var e=-1,u=t.length;u||(u=1,n=i);while(++et){var e=n;n=t,t=e}if(r||n%1||t%1){var u=Vt();return Nt(n+u*(t-n+er("1e-"+((u+"").length-1))),t)}return _i(n,t)}var Zs=so(function(n,t,r){return t=t.toLowerCase(),n+(r?Ks(t):t)});function Ks(n){return wh(Ql(n).toLowerCase())}function Vs(n){return n=Ql(n),n&&n.replace(Xn,ne).replace(qt,"")}function Gs(n,t,r){n=Ql(n),t=Si(t);var e=n.length;r=r===i?e:vu(Vl(r),0,e);var u=r;return r-=t.length,r>=0&&n.slice(r,u)==t}function Js(n){return n=Ql(n),n&&zn.test(n)?n.replace(In,te):n}function Hs(n){return n=Ql(n),n&&Tn.test(n)?n.replace(Bn,"\\$&"):n}var Ys=so(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Qs=so(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Xs=lo("toLowerCase");function nh(n,t,r){n=Ql(n),t=Vl(t);var e=t?ve(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return mo(Ut(u),r)+n+mo(Ct(u),r)}function th(n,t,r){n=Ql(n),t=Vl(t);var e=t?ve(n):0;return t&&e>>0,r?(n=Ql(n),n&&("string"==typeof t||null!=t&&!Cl(t))&&(t=Si(t),!t&&ue(n))?Pi(_e(n),0,r):n.split(t,r)):[]}var fh=so(function(n,t,r){return n+(r?" ":"")+wh(t)});function ch(n,t,r){return n=Ql(n),r=null==r?0:vu(Vl(r),0,n.length),t=Si(t),n.slice(r,r+t.length)==t}function lh(n,t,r){var e=be.templateSettings;r&&ia(n,t,r)&&(t=i),n=Ql(n),t=ts({},t,e,Eo);var u,o,a=ts({},t.imports,e.imports,Eo),f=ms(a),c=Jr(a,f),l=0,s=t.interpolate||nt,h="__p += '",p=ut((t.escape||nt).source+"|"+s.source+"|"+(s===Wn?Kn:nt).source+"|"+(t.evaluate||nt).source+"|$","g"),v="//# sourceURL="+("sourceURL"in t?t.sourceURL:"lodash.templateSources["+ ++Ht+"]")+"\n";n.replace(p,function(t,r,e,i,a,f){return e||(e=i),h+=n.slice(l,f).replace(tt,re),r&&(u=!0,h+="' +\n__e("+r+") +\n'"),a&&(o=!0,h+="';\n"+a+";\n__p += '"),e&&(h+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),l=f+t.length,t}),h+="';\n";var _=t.variable;_||(h="with (obj) {\n"+h+"\n}\n"),h=(o?h.replace(jn,""):h).replace(An,"$1").replace(kn,"$1;"),h="function("+(_||"obj")+") {\n"+(_?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var g=mh(function(){return qn(f,v+"return "+h).apply(i,c)});if(g.source=h,dl(g))throw g;return g}function sh(n){return Ql(n).toLowerCase()}function hh(n){return Ql(n).toUpperCase()}function ph(n,t,r){if(n=Ql(n),n&&(r||t===i))return n.replace($n,"");if(!n||!(t=Si(t)))return n;var e=_e(n),u=_e(t),o=Yr(e,u),a=Qr(e,u)+1;return Pi(e,o,a).join("")}function vh(n,t,r){if(n=Ql(n),n&&(r||t===i))return n.replace(Mn,"");if(!n||!(t=Si(t)))return n;var e=_e(n),u=Qr(e,_e(t))+1;return Pi(e,0,u).join("")}function _h(n,t,r){if(n=Ql(n),n&&(r||t===i))return n.replace(Dn,"");if(!n||!(t=Si(t)))return n;var e=_e(n),u=Yr(e,_e(t));return Pi(e,u).join("")}function gh(n,t){var r=R,e=z;if(jl(t)){var u="separator"in t?t.separator:u;r="length"in t?Vl(t.length):r,e="omission"in t?Si(t.omission):e}n=Ql(n);var o=n.length;if(ue(n)){var a=_e(n);o=a.length}if(r>=o)return n;var f=r-ve(e);if(f<1)return e;var c=a?Pi(a,0,f).join(""):n.slice(0,f);if(u===i)return c+e;if(a&&(f+=c.length-f),Cl(u)){if(n.slice(f).search(u)){var l,s=c;u.global||(u=ut(u.source,Ql(Vn.exec(u))+"g")),u.lastIndex=0;while(l=u.exec(s))var h=l.index;c=c.slice(0,h===i?f:h)}}else if(n.indexOf(Si(u),f)!=f){var p=c.lastIndexOf(u);p>-1&&(c=c.slice(0,p))}return c+e}function yh(n){return n=Ql(n),n&&Rn.test(n)?n.replace(On,ge):n}var dh=so(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),wh=lo("toUpperCase");function bh(n,t,r){return n=Ql(n),t=r?i:t,t===i?ie(n)?we(n):Cr(n):n.match(t)||[]}var mh=di(function(n,t){try{return wr(n,i,t)}catch(r){return dl(r)?r:new u(r)}}),xh=Bo(function(n,t){return mr(t,function(t){t=za(t),hu(n,t,Sc(n[t],n))}),n});function jh(n){var t=null==n?0:n.length,r=No();return n=t?Ir(n,function(n){if("function"!=typeof n[1])throw new ot(c);return[r(n[0]),n[1]]}):[],di(function(r){var e=-1;while(++eB)return[];var r=D,e=Nt(n,D);t=No(t),n-=D;var u=Kr(e,t);while(++r0||t<0)?new ke(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==i&&(t=Vl(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},ke.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},ke.prototype.toArray=function(){return this.take(D)},zu(ke.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=be[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);u&&(be.prototype[t]=function(){var t=this.__wrapped__,a=e?[1]:arguments,f=t instanceof ke,c=a[0],l=f||al(t),s=function(n){var t=u.apply(be,Rr([n],a));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,p=!!this.__actions__.length,v=o&&!h,_=f&&!p;if(!o&&l){t=_?t:new ke(this);var g=n.apply(t,a);return g.__actions__.push({func:Kf,args:[s],thisArg:i}),new Ae(g,h)}return v&&_?n.apply(this,a):(g=this.thru(s),v?e?g.value()[0]:g.value():g)})}),mr(["pop","push","shift","sort","splice","unshift"],function(n){var t=at[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);be.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(al(u)?u:[],n)}return this[r](function(r){return t.apply(al(r)?r:[],n)})}}),zu(ke.prototype,function(n,t){var r=be[t];if(r){var e=r.name+"",u=cr[e]||(cr[e]=[]);u.push({name:t,func:r})}}),cr[go(i,w).name]=[{name:"wrapper",func:i}],ke.prototype.clone=Oe,ke.prototype.reverse=Ie,ke.prototype.value=Re,be.prototype.at=Vf,be.prototype.chain=Gf,be.prototype.commit=Jf,be.prototype.next=Hf,be.prototype.plant=Qf,be.prototype.reverse=Xf,be.prototype.toJSON=be.prototype.valueOf=be.prototype.value=nc,be.prototype.first=be.prototype.head,Rt&&(be.prototype[Rt]=Yf),be},me=be();ar._=me,u=function(){return me}.call(t,r,t,e),u===i||(e.exports=u)}).call(this)}).call(this,r("c8ba"),r("62e4")(n))}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0c1ed0.e71f291f.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0c1ed0.e71f291f.js new file mode 100644 index 000000000..79627dce2 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d0c1ed0.e71f291f.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c1ed0"],{"47b9":function(e,n,t){"use strict";t.r(n);var r,i,o,a,s,u,c,d,f,l,g,h,p,m,v,b,k,w,C,y=12e4,_=function(){function e(e){var n=this;this._defaults=e,this._worker=null,this._idleCheckInterval=setInterval(function(){return n._checkIfIdle()},3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(function(){return n._stopWorker()})}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()},e.prototype._checkIfIdle=function(){if(this._worker){var e=Date.now()-this._lastUsedTime;e>y&&this._stopWorker()}},e.prototype._getClient=function(){return this._lastUsedTime=Date.now(),this._client||(this._worker=monaco.editor.createWebWorker({moduleId:"vs/language/json/jsonWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,n=this,t=[],r=0;r0&&(i.arguments=t),i}function t(e){var n=e;return X.defined(n)&&X.string(n.title)&&X.string(n.command)}e.create=n,e.is=t}(p||(p={})),function(e){function n(e,n){return{range:e,newText:n}}function t(e,n){return{range:{start:e,end:e},newText:n}}function r(e){return{range:e,newText:""}}function o(e){var n=e;return X.objectLiteral(n)&&X.string(n.newText)&&i.is(n.range)}e.replace=n,e.insert=t,e.del=r,e.is=o}(m||(m={})),function(e){function n(e,n){return{textDocument:e,edits:n}}function t(e){var n=e;return X.defined(n)&&x.is(n.textDocument)&&Array.isArray(n.edits)}e.create=n,e.is=t}(v||(v={})),function(e){function n(e,n){var t={kind:"create",uri:e};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(t.options=n),t}function t(e){var n=e;return n&&"create"===n.kind&&X.string(n.uri)&&(void 0===n.options||(void 0===n.options.overwrite||X.boolean(n.options.overwrite))&&(void 0===n.options.ignoreIfExists||X.boolean(n.options.ignoreIfExists)))}e.create=n,e.is=t}(b||(b={})),function(e){function n(e,n,t){var r={kind:"rename",oldUri:e,newUri:n};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),r}function t(e){var n=e;return n&&"rename"===n.kind&&X.string(n.oldUri)&&X.string(n.newUri)&&(void 0===n.options||(void 0===n.options.overwrite||X.boolean(n.options.overwrite))&&(void 0===n.options.ignoreIfExists||X.boolean(n.options.ignoreIfExists)))}e.create=n,e.is=t}(k||(k={})),function(e){function n(e,n){var t={kind:"delete",uri:e};return void 0===n||void 0===n.recursive&&void 0===n.ignoreIfNotExists||(t.options=n),t}function t(e){var n=e;return n&&"delete"===n.kind&&X.string(n.uri)&&(void 0===n.options||(void 0===n.options.recursive||X.boolean(n.options.recursive))&&(void 0===n.options.ignoreIfNotExists||X.boolean(n.options.ignoreIfNotExists)))}e.create=n,e.is=t}(w||(w={})),function(e){function n(e){var n=e;return n&&(void 0!==n.changes||void 0!==n.documentChanges)&&(void 0===n.documentChanges||n.documentChanges.every(function(e){return X.string(e.kind)?b.is(e)||k.is(e)||w.is(e):v.is(e)}))}e.is=n}(C||(C={}));var E,x,S,I,A,T,M,P,R,F,j,D,L,O,W,N,U,V=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,n){this.edits.push(m.insert(e,n))},e.prototype.replace=function(e,n){this.edits.push(m.replace(e,n))},e.prototype.delete=function(e){this.edits.push(m.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();(function(){function e(e){var n=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach(function(e){if(v.is(e)){var t=new V(e.edits);n._textEditChanges[e.textDocument.uri]=t}}):e.changes&&Object.keys(e.changes).forEach(function(t){var r=new V(e.changes[t]);n._textEditChanges[t]=r}))}Object.defineProperty(e.prototype,"edit",{get:function(){return this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(x.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var n=e,t=this._textEditChanges[n.uri];if(!t){var r=[],i={textDocument:n,edits:r};this._workspaceEdit.documentChanges.push(i),t=new V(r),this._textEditChanges[n.uri]=t}return t}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");t=this._textEditChanges[e];if(!t){r=[];this._workspaceEdit.changes[e]=r,t=new V(r),this._textEditChanges[e]=t}return t},e.prototype.createFile=function(e,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(b.create(e,n))},e.prototype.renameFile=function(e,n,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(k.create(e,n,t))},e.prototype.deleteFile=function(e,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(w.create(e,n))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}})();(function(e){function n(e){return{uri:e}}function t(e){var n=e;return X.defined(n)&&X.string(n.uri)}e.create=n,e.is=t})(E||(E={})),function(e){function n(e,n){return{uri:e,version:n}}function t(e){var n=e;return X.defined(n)&&X.string(n.uri)&&(null===n.version||X.number(n.version))}e.create=n,e.is=t}(x||(x={})),function(e){function n(e,n,t,r){return{uri:e,languageId:n,version:t,text:r}}function t(e){var n=e;return X.defined(n)&&X.string(n.uri)&&X.string(n.languageId)&&X.number(n.version)&&X.string(n.text)}e.create=n,e.is=t}(S||(S={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(I||(I={})),function(e){function n(n){var t=n;return t===e.PlainText||t===e.Markdown}e.is=n}(I||(I={})),function(e){function n(e){var n=e;return X.objectLiteral(e)&&I.is(n.kind)&&X.string(n.value)}e.is=n}(A||(A={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(T||(T={})),function(e){e.PlainText=1,e.Snippet=2}(M||(M={})),function(e){function n(e){return{label:e}}e.create=n}(P||(P={})),function(e){function n(e,n){return{items:e||[],isIncomplete:!!n}}e.create=n}(R||(R={})),function(e){function n(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}function t(e){var n=e;return X.string(n)||X.objectLiteral(n)&&X.string(n.language)&&X.string(n.value)}e.fromPlainText=n,e.is=t}(F||(F={})),function(e){function n(e){var n=e;return!!n&&X.objectLiteral(n)&&(A.is(n.contents)||F.is(n.contents)||X.typedArray(n.contents,F.is))&&(void 0===e.range||i.is(e.range))}e.is=n}(j||(j={})),function(e){function n(e,n){return n?{label:e,documentation:n}:{label:e}}e.create=n}(D||(D={})),function(e){function n(e,n){for(var t=[],r=2;r=0;a--){var s=r[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");t=t.substring(0,u)+s.newText+t.substring(c,t.length),o=u}return t}function i(e,n){if(e.length<=1)return e;var t=e.length/2|0,r=e.slice(0,t),o=e.slice(t);i(r,n),i(o,n);var a=0,s=0,u=0;while(a0&&e.push(n.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var n=this.getLineOffsets(),t=0,i=n.length;if(0===i)return r.create(0,e);while(te?i=o:t=o+1}var a=t-1;return r.create(a,e-n[a])},e.prototype.offsetAt=function(e){var n=this.getLineOffsets();if(e.line>=n.length)return this._content.length;if(e.line<0)return 0;var t=n[e.line],r=e.line+1=48&&a<=57)o=16*o+a-48;else if(a>=65&&a<=70)o=16*o+a-65+10;else{if(!(a>=97&&a<=102))break;o=16*o+a-97+10}t++,i++}return i=r){n+=e.substring(i,t),f=2;break}var o=e.charCodeAt(t);if(34===o){n+=e.substring(i,t),t++;break}if(92!==o){if(o>=0&&o<=31){if(Ee(o)){n+=e.substring(i,t),f=2;break}f=6}t++}else{if(n+=e.substring(i,t),t++,t>=r){f=2;break}switch(o=e.charCodeAt(t++),o){case 34:n+='"';break;case 92:n+="\\";break;case 47:n+="/";break;case 98:n+="\b";break;case 102:n+="\f";break;case 110:n+="\n";break;case 114:n+="\r";break;case 116:n+="\t";break;case 117:var a=l(4,!0);a>=0?n+=String.fromCharCode(a):f=4;break;default:f=5}i=t}}return n}function m(){if(i="",f=0,o=t,u=s,d=c,t>=r)return o=r,a=17;var n=e.charCodeAt(t);if(_e(n)){do{t++,i+=String.fromCharCode(n),n=e.charCodeAt(t)}while(_e(n));return a=15}if(Ee(n))return t++,i+=String.fromCharCode(n),13===n&&10===e.charCodeAt(t)&&(t++,i+="\n"),s++,c=t,a=14;switch(n){case 123:return t++,a=1;case 125:return t++,a=2;case 91:return t++,a=3;case 93:return t++,a=4;case 58:return t++,a=6;case 44:return t++,a=5;case 34:return t++,i=p(),a=10;case 47:var l=t-1;if(47===e.charCodeAt(t+1)){t+=2;while(t=12&&e<=15);return e}return{setPosition:g,getPosition:function(){return t},scan:n?b:m,getToken:function(){return a},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return t-o},getTokenStartLine:function(){return u},getTokenStartCharacter:function(){return o-d},getTokenError:function(){return f}}}function _e(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function Ee(e){return 10===e||13===e||8232===e||8233===e}function xe(e){return e>=48&&e<=57}(function(e){e.DEFAULT={allowTrailingComma:!1}})(me||(me={}));var Se=ye;function Ie(e){return{getInitialState:function(){return new Ne(null,null,!1)},tokenize:function(n,t,r,i){return Ue(e,n,t,r,i)}}}var Ae="delimiter.bracket.json",Te="delimiter.array.json",Me="delimiter.colon.json",Pe="delimiter.comma.json",Re="keyword.json",Fe="keyword.json",je="string.value.json",De="number.json",Le="string.key.json",Oe="comment.block.json",We="comment.line.json",Ne=function(){function e(e,n,t){this._state=e,this.scanError=n,this.lastWasColon=t}return e.prototype.clone=function(){return new e(this._state,this.scanError,this.lastWasColon)},e.prototype.equals=function(n){return n===this||!!(n&&n instanceof e)&&(this.scanError===n.scanError&&this.lastWasColon===n.lastWasColon)},e.prototype.getStateData=function(){return this._state},e.prototype.setStateData=function(e){this._state=e},e}();function Ue(e,n,t,r,i){void 0===r&&(r=0);var o=0,a=!1;switch(t.scanError){case 2:n='"'+n,o=1;break;case 1:n="/*"+n,o=2;break}var s,u,c=Se(n),d=t.lastWasColon;u={tokens:[],endState:t.clone()};while(1){var f=r+c.getPosition(),l="";if(s=c.scan(),17===s)break;if(f===r+c.getPosition())throw new Error("Scanner did not advance, next 3 characters are: "+n.substr(c.getPosition(),3));switch(a&&(f-=o),a=o>0,s){case 1:l=Ae,d=!1;break;case 2:l=Ae,d=!1;break;case 3:l=Te,d=!1;break;case 4:l=Te,d=!1;break;case 6:l=Me,d=!0;break;case 5:l=Pe,d=!1;break;case 8:case 9:l=Re,d=!1;break;case 7:l=Fe,d=!1;break;case 10:l=d?je:Le,d=!1;break;case 11:l=De,d=!1;break}if(e)switch(s){case 12:l=We;break;case 13:l=Oe;break}u.endState=new Ne(t.getStateData(),c.getTokenError(),d),u.tokens.push({startIndex:f,scopes:l})}return u}function Ve(e){var n=[],t=[],r=new _(e);n.push(r);var i=function(){for(var e=[],n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return c["a"].get("/routes",{params:e})},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return c["a"].get("/routes/".concat(encodeURIComponent(e)))},u={name:"Topics",data:function(){return{listLoading:!0,tableData:[],searchValue:"",params:{_page:1,_limit:20},count:0,resetIcon:"el-icon-refresh"}},created:function(){this.loadData()},methods:{resetSearch:function(){this.resetIcon="el-icon-loading";var e=!1;this.searchValue&&(e=!0),this.searchValue="",this.loadTopics(e)},handleSearch:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:if(t=this.searchValue.trim(),t){e.next=4;break}return this.loadTopics(),e.abrupt("return");case 4:return this.params._page=1,this.count=0,e.next=8,l(t);case 8:this.tableData=e.sent;case 9:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleSizeChange:function(){this.loadTopics(!0)},handleCurrentPageChange:function(){this.loadTopics()},loadData:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:this.loadTopics();case 1:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadTopics:function(){var e=Object(i["a"])(regeneratorRuntime.mark(function e(t){var a,n,r,i,c,l,u=arguments;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return a=u.length>1&&void 0!==u[1]?u[1]:{},t&&(this.params._page=1),e.next=4,o(Object(s["a"])({},this.params,a));case 4:n=e.sent,r=n.items,i=void 0===r?[]:r,c=n.meta.count,l=void 0===c?0:c,this.listLoading=!1,this.tableData=i,this.count=l,this.resetIcon="el-icon-refresh";case 10:case"end":return e.stop()}},e,this)}));function t(t){return e.apply(this,arguments)}return t}()}},p=u,h=a("2877"),d=Object(h["a"])(p,n,r,!1,null,null,null);t["default"]=d.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d2134e7.15b56ca9.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d2134e7.15b56ca9.js new file mode 100644 index 000000000..1fc6465fe --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-2d2134e7.15b56ca9.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d2134e7"],{abb2:function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"log-trace"},[a("page-header",[a("div",{staticClass:"page-header-content-view"},[a("div",{staticClass:"content"},[e._v("\n "+e._s(e.$t("LogTrace.logTraceDescription"))+"\n ")])])]),a("div",{staticClass:"app-wrapper"},[a("a-card",{staticClass:"emq-list-card"},[a("div",{staticClass:"emq-table-header"},[a("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.handleDialogOpen("create")}}},[e._v("\n "+e._s(e.$t("LogTrace.createTrace"))+"\n ")])],1),a("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[a("el-table-column",{attrs:{prop:"name",label:e.$t("LogTrace.filter")}}),a("el-table-column",{attrs:{prop:"type",label:e.$t("LogTrace.type")}}),a("el-table-column",{attrs:{prop:"level",label:e.$t("LogTrace.level")}}),a("el-table-column",{attrs:{width:"250px"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.handleDialogOpen("view",n)}}},[e._v(e._s(e.$t("Overview.view"))+"\n ")]),a("el-button",{attrs:{type:"dashed",size:"mini"},on:{click:function(t){return e.handleDownload(n)}}},[e._v("\n "+e._s(e.$t("Backup.download"))+"\n ")]),a("el-button",{attrs:{type:"dashed danger",loading:"deleteBtn"===e.btnLoading,size:"mini"},on:{click:function(t){return e.deleteConfirm(n)}}},[e._v("\n "+e._s(e.$t("General.delete"))+"\n ")])]}}])})],1)],1)],1),a("el-dialog",{attrs:{width:"520px",title:"view"===e.accessType?e.$t("LogTrace.viewTrace"):e.$t("LogTrace.createTrace"),visible:e.dialogVisible},on:{"update:visible":function(t){e.dialogVisible=t},close:e.clearInput}},[a("el-form",{ref:"recordForm",attrs:{size:"small",model:e.record,rules:"view"===e.accessType?{}:e.rules}},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"type",label:e.$t("LogTrace.type")}},[a("emq-select",{attrs:{field:{options:e.typeOptions},disabled:"create"!==e.accessType},model:{value:e.record.type,callback:function(t){e.$set(e.record,"type",t)},expression:"record.type"}},[e._v(">\n ")])],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"level",label:e.$t("LogTrace.level")}},[a("emq-select",{attrs:{field:{list:e.levelOptions},disabled:"create"!==e.accessType},model:{value:e.record.level,callback:function(t){e.$set(e.record,"level",t)},expression:"record.level"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"name",label:e.$t("LogTrace.filter")}},[a("el-input",{attrs:{readonly:"create"!==e.accessType},model:{value:e.record.name,callback:function(t){e.$set(e.record,"name",t)},expression:"record.name"}})],1)],1),a("el-col",{attrs:{span:24}},[a("el-form-item",{attrs:{prop:"file",label:e.$t("LogTrace.logPath")}},[a("el-input",{attrs:{readonly:"create"!==e.accessType},model:{value:e.record.file,callback:function(t){e.$set(e.record,"file",t)},expression:"record.file"}})],1)],1)],1)],1),"create"===e.accessType?a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{plain:"",size:"small"},on:{click:function(t){e.dialogVisible=!1}}},[e._v(e._s(e.$t("Base.cancel")))]),a("el-button",{attrs:{loading:"createBtn"===e.btnLoading,type:"primary",size:"small"},on:{click:e.handleCreateTrace}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1):e._e()],1)],1)},r=[],l=(a("7f7f"),a("cebc")),c=(a("96cf"),a("3b8d")),s=a("1f75");function i(){return s["a"].get("/log/trace")}function o(e){return s["a"].post("/log/trace",e)}function d(e,t){return s["a"].delete("/log/trace/".concat(e,"/").concat(t))}var u={name:"LogTrace",data:function(){return{tableData:[],dialogVisible:!1,accessType:"",record:{},rules:{type:[{required:!0,message:this.$t("General.pleaseChoose")}],name:[{required:!0,message:this.$t("General.pleaseEnter")}],level:[{required:!0,message:this.$t("General.pleaseChoose")}]},typeOptions:[{label:this.$t("Clients.clientId"),value:"clientid"},{label:this.$t("Subs.topic"),value:"topic"}],levelOptions:["debug","info","notice","warning","error","critical","alert","emergency"],btnLoading:void 0}},methods:{loadList:function(){var e=Object(c["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,i();case 2:this.tableData=e.sent;case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleDialogOpen:function(e,t){this.accessType=e,this.dialogVisible=!0,"view"===e&&(this.record=Object(l["a"])({},t))},clearInput:function(){this.$refs.recordForm&&this.$refs.recordForm.resetFields()},handleSuccess:function(){this.btnLoading=void 0,this.loadList()},handleCreateTrace:function(){var e=this;this.$refs.recordForm.validate(function(t){if(t){e.btnLoading="createBtn";var a=Object.assign({},e.record);o(a).then(function(){e.$message.success(e.$t("Base.createSuccess")),e.dialogVisible=!1,e.handleSuccess()}).catch(function(){e.btnLoading=void 0})}})},deleteConfirm:function(e){var t=this;this.$confirm(this.$t("Modules.confirmDelete"),this.$t("Base.warning"),{type:"warning",cancelButtonText:this.$t("Base.cancel"),confirmButtonText:this.$t("Base.confirm")}).then(function(){t.btnLoading="deleteBtn";var a=e.type,n=e.name;d(a,n).then(function(){t.$message.success(t.$t("Base.deleteSuccess")),t.handleSuccess()})}).catch(function(){t.btnLoading=void 0})},handleDownload:function(e){var t=e.type,a=e.name,n=document.createElement("a");n.download="".concat(t,"/").concat(a),n.href="/api/v4/log/trace/download/".concat(t,"/").concat(a),n.setAttribute("type","hidden"),document.body.appendChild(n),n.click(),n.remove()}},created:function(){this.loadList()}},p=u,f=a("2877"),m=Object(f["a"])(p,n,r,!1,null,null,null);t["default"]=m.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3208fb9c.7c668dc0.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3208fb9c.7c668dc0.js new file mode 100644 index 000000000..aa4502635 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3208fb9c.7c668dc0.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3208fb9c"],{"01c8":function(e,t,a){"use strict";a.d(t,"a",function(){return r});var i=a("178b"),s=a("3953"),n=a("1df6");function r(e){return Object(i["a"])(e)||Object(s["a"])(e)||Object(n["a"])()}},4964:function(e,t,a){"use strict";var i=a("61e3"),s=a.n(i);s.a},5118:function(e,t,a){(function(e){var i="undefined"!==typeof e&&e||"undefined"!==typeof self&&self||window,s=Function.prototype.apply;function n(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new n(s.call(setTimeout,i,arguments),clearTimeout)},t.setInterval=function(){return new n(s.call(setInterval,i,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},n.prototype.unref=n.prototype.ref=function(){},n.prototype.close=function(){this._clearFn.call(i,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},a("6017"),t.setImmediate="undefined"!==typeof self&&self.setImmediate||"undefined"!==typeof e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!==typeof self&&self.clearImmediate||"undefined"!==typeof e&&e.clearImmediate||this&&this.clearImmediate}).call(this,a("c8ba"))},5713:function(e,t,a){"use strict";var i=a("ebce"),s=a.n(i);s.a},6017:function(e,t,a){(function(e,t){(function(e,a){"use strict";if(!e.setImmediate){var i,s=1,n={},r=!1,c=e.document,o=Object.getPrototypeOf&&Object.getPrototypeOf(e);o=o&&o.setTimeout?o:e,"[object process]"==={}.toString.call(e.process)?f():m()?h():e.MessageChannel?v():c&&"onreadystatechange"in c.createElement("script")?g():b(),o.setImmediate=l,o.clearImmediate=u}function l(e){"function"!==typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),a=0;a18?a("div",{staticClass:"action-description"},[e._v("\n "+e._s(e.selectedAction.description)+"\n ")]):e._e(),e.selectedAction.params.$resource?a("el-form-item",{attrs:{prop:"params.$resource",label:""}},[a("span",{attrs:{slot:"label"},slot:"label"},[e._v("\n "+e._s(e.$t("RuleEngine.useOfResources"))+"\n "),a("el-popover",{attrs:{trigger:"hover",width:"220",placement:"top"}},[a("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(e.$t("RuleEngine.resourceSelectTip"))}}),a("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1),a("emq-select",{staticClass:"reset-width",staticStyle:{width:"403px"},attrs:{field:{options:e.availableResources},"field-name":{label:"id",value:"id"}},on:{"visible-change":e.checkResource},scopedSlots:e._u([{key:"option",fn:function(t){var i=t.item;return a("div",{staticClass:"custom-option",attrs:{title:i.description}},[a("span",{staticClass:"key"},[e._v(e._s(i.description||i.id))]),a("span",{staticClass:"value"},[e._v(e._s(i.config.title))])])}}],null,!1,3965597931),model:{value:e.record.params.$resource,callback:function(t){e.$set(e.record.params,"$resource",t)},expression:"record.params.$resource"}}),a("span",{staticClass:"tips btn",attrs:{icon:"el-icon-plus"},on:{click:e.toCreateResource}},[e._v("\n "+e._s(e.$t("RuleEngine.createNew"))+"\n ")])],1):e._e(),e.selectedAction.params.$resource?a("div",{staticClass:"line"}):e._e(),e.paramsLoading||e.paramsList.length>0?a("el-row",{staticClass:"params-item-wrapper",attrs:{gutter:50}},[e.paramsLoading?a("div",{staticClass:"params-loading-wrapper"},[a("a-skeleton",{attrs:{active:""}})],1):e._l(e.paramsList,function(t,i){return a("el-col",{key:i,attrs:{span:"textarea"===t.type||"object"===t.type?24:12}},[a("el-form-item",e._b({class:"sql"===t.key?"code-editor__item":""},"el-form-item",t.formItemAttributes,!1),[t.formItemAttributes.description?a("template",{slot:"label"},[e._v("\n "+e._s(t.formItemAttributes.label)+"\n "),a("el-popover",{attrs:{trigger:"hover",width:"220",placement:"top"}},[a("div",{staticClass:"emq-popover-content",domProps:{innerHTML:e._s(t.formItemAttributes.description)}}),a("i",{staticClass:"el-icon-question",attrs:{slot:"reference"},slot:"reference"})])],1):e._e(),"object"===t.elType?[a("key-and-value-editor",{model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,a)},expression:"record.params[item.key]"}})]:"cfgselect"===t.elType?[a("config-select",e._b({staticClass:"reset-width",attrs:{extraConfigs:t.extraConfigs},on:{updateConfig:e.addConfigAccordingType},model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,a)},expression:"record.params[item.key]"}},"config-select",t.bindAttributes,!1))]:"select"!==t.elType?["number"===t.type?a("el-input",e._b({model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,e._n(a))},expression:"record.params[item.key]"}},"el-input",t.bindAttributes,!1)):"password"===t.type?a("el-input",e._b({attrs:{"show-password":""},model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,a)},expression:"record.params[item.key]"}},"el-input",t.bindAttributes,!1)):"sql"===t.key?a("div",{staticClass:"monaco-container monaco-action__sql"},[a("monaco",{attrs:{id:e.record.name+"-sql"+Math.random().toString(16).slice(3),lang:"sql"},model:{value:e.record.params.sql,callback:function(t){e.$set(e.record.params,"sql",t)},expression:"record.params.sql"}})],1):a("el-input",e._b({model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,a)},expression:"record.params[item.key]"}},"el-input",t.bindAttributes,!1))]:["number"===t.type?a("emq-select",e._b({model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,e._n(a))},expression:"record.params[item.key]"}},"emq-select",t.bindAttributes,!1)):a("emq-select",e._b({model:{value:e.record.params[t.key],callback:function(a){e.$set(e.record.params,t.key,a)},expression:"record.params[item.key]"}},"emq-select",t.bindAttributes,!1))]],2)],1)})],2):e._e()],1),a("div",{staticClass:"dialog-align-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{size:"small"},on:{click:e.handleCancel}},[e._v("\n "+e._s(e.$t("Base.cancel"))+"\n ")]),a("el-button",{staticClass:"dialog-primary-btn",attrs:{type:"primary",size:"small"},on:{click:e.handleCreate}},[e._v("\n "+e._s(e.$t("Base.confirm"))+"\n ")])],1)],1),a("resource-dialog",{ref:"resource",on:{created:e.confirmResource,cache:function(t){return e.confirmResource(null)}}})],2)},s=[],n=a("768b"),r=(a("ffc1"),a("6b54"),a("01c8")),c=a("cebc"),o=(a("456d"),a("96cf"),a("3b8d")),l=(a("7f7f"),a("ac6a"),a("5df3"),a("4f7f"),a("75fc")),u=(a("6762"),a("2fdb"),a("55dd"),a("2ef0")),d=a.n(u),p=a("bd43"),f=a("90b9"),m=a("7d5c"),h=a("9146"),v=a("5118"),g=a("caba"),b=a("6985"),_={name:"RuleActions",components:{ResourceDialog:m["a"],Monaco:h["a"],KeyAndValueEditor:g["a"],ConfigSelect:b["a"]},props:{value:{type:Array,required:!0},disabled:{type:Boolean,default:!1},event:{type:String,default:"message.publish"}},data:function(){return{actionDialogTitle:this.$t("RuleEngine.addActions"),actionDialogVisible:!1,isFallbacks:!1,setRefresh:!1,actionsMap:{},paramsList:[],paramsLoading:!1,currentEditIndex:0,currentOper:"",currentAction:{},actionCategory:"",actionCategoryOptions:[],originParamsList:[],originRules:{name:{required:!0,message:this.$t("RuleEngine.pleaseChoose")},params:{$resource:{required:!0,message:this.$t("RuleEngine.pleaseChoose")}}},originRecord:{name:"",params:{$resource:""},fallbacks:[]},record:{name:"",params:{$resource:""},fallbacks:[]},rules:{name:{required:!0,message:this.$t("RuleEngine.pleaseChoose")},params:{$resource:{required:!0,message:this.$t("RuleEngine.pleaseChoose")}}},selectedAction:{title:"",description:"",params:{$resource:""},fallbacks:[]},actions:[],resources:[]}},computed:{rawValue:{get:function(){return this.value},set:function(e){this.$emit("update:value",e)}},availableActions:function(){var e=this,t=this.actions.filter(function(t){return["$any",e.event].includes(t.for)}).sort(function(e,t){return e.title.localeCompare(t.title)}),a=function(e){return Object(l["a"])(new Set(e))};this.actionCategoryOptions=a(t.map(function(e){return e.category}));var i={};return this.actionCategoryOptions.forEach(function(e){var a=[];t.forEach(function(t){t.category===e&&(a.push(t),i[e]=a)})}),!this.record.name&&t[0]&&(this.record.name=t[0].name,this.actionTypeChange(this.record.name),this.actionCategory=this.actionCategoryOptions[0]),i},availableResources:function(){var e=this.selectedAction.types;return e?this.resources.filter(function(t){return e.includes(t.type)}):[]}},watch:{actionDialogVisible:function(e){e||(this.initData(),this.isFallbacks=!1)}},created:function(){this.loadActions()},methods:{initData:function(){this.record={name:"",params:{$resource:""},fallbacks:[]},this.originRecord={name:"",params:{$resource:""},fallbacks:[]},this.currentAction={}},toggleShowMetrics:function(e){var t=e.showList,a=void 0!==t&&t;this.$set(e,"showList",!a)},atDialogClose:function(){var e=this;Object(v["setTimeout"])(function(){e.$refs.record.clearValidate()},10)},handleCreate:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a,i=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return this.initRecordEnableBatch(),e.next=3,this.$refs.record.validate();case 3:if(t=e.sent,t){e.next=6;break}return e.abrupt("return");case 6:this.record.params&&Object.keys(this.record.params).forEach(function(e){var t=i.record.params[e];"true"!==t&&"false"!==t||(i.record.params[e]=JSON.parse(t))}),a={},this.isFallbacks?(a=Object(c["a"])({},this.record),"edit"===this.currentOper&&(this.currentAction.fallbacks=[]),this.currentAction.fallbacks.push(a),this.rawValue.splice(this.currentEditIndex,1,this.currentAction)):(a=Object(c["a"])({},this.record),"edit"===this.currentOper?this.rawValue.splice(this.currentEditIndex,1,a):"add"===this.currentOper&&this.rawValue.push(a)),a.params&&!a.params.$resource&&delete a.params.$resource,this.fillRawValue(),this.actionDialogVisible=!1,this.atDialogClose();case 13:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),handleCancel:function(){this.actionDialogVisible=!1,this.atDialogClose()},checkResource:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];e&&0===this.availableResources.length&&this.loadResourceData()},toCreateResource:function(){var e=this.selectedAction.types,t=void 0===e?[]:e;this.$refs.resource.setup({types:t,action:"create"}),this.actionDialogVisible=!1,sessionStorage.setItem("currentAction",JSON.stringify({record:this.record,paramsList:this.paramsList,originRecord:this.originRecord,originParamsList:this.originParamsList,actionCategory:this.actionCategory,actionCategoryOptions:this.actionCategoryOptions,types:t,isFallbacks:this.isFallbacks,action:this.currentAction}))},confirmResource:function(e){var t=this;Object(v["setTimeout"])(function(){t.$refs.record&&t.$refs.record.clearValidate()},10),this.actionDialogVisible=!0;var a=sessionStorage.getItem("currentAction");if(a){var i=JSON.parse(a),s=i.record,n=i.paramsList,r=i.types,c=i.actionCategoryOptions,o=i.actionCategory,l=i.originParamsList,u=i.originRecord,d=i.isFallbacks,p=i.action;this.record=s,this.originRecord=u,this.originParamsList=l,this.paramsList=n,this.selectedAction.types=r,this.actionCategory=o,this.actionCategoryOptions=c,this.isFallbacks=d,this.currentAction=p,sessionStorage.removeItem("currentAction")}e&&(this.record.params.$resource=e),this.loadResourceData(),this.currentOper=this.actionDialogTitle===this.$t("RuleEngine.editActions")?"edit":"add"},loadResourceData:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(p["i"])();case 2:this.resources=e.sent;case 3:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),loadParamsList:function(e){var t=this;this.currentOper=e;var a=this.selectedAction.params,i=Object(f["l"])(a,"params"),s=i.form,n=i.rules;this.storeOriginData(i,e),"add"===e&&(this.record.params={},s.forEach(function(e){var a=e.key,i=e.value,s=a,n=i;"sql"===s&&void 0===n&&(n=""),t.$set(t.record.params,s,n)}),this.$set(this.record.params,"$resource",""),this.$refs.record&&Object(v["setTimeout"])(this.$refs.record.clearValidate,0)),this.paramsList=s,this.rules.params=Object(c["a"])({$resource:{required:!0,message:this.$t("RuleEngine.pleaseChoose")}},n),this.paramsLoading=!1},assignRecordParams:function(e){var t=this,a={};return e.forEach(function(e){var i=e.key,s=e.value,n=i,r=s;"sql"===n&&void 0===r&&(r=""),t.$set(a,n,r)}),a},storeOriginData:function(e,t){var a=e.form,i=e.rules;if(this.originParamsList=a,this.originRules.params=Object(c["a"])({$resource:{required:!0,message:this.$t("RuleEngine.pleaseChoose")}},i),"add"===t){var s=this.assignRecordParams(a),n=Object.assign({},s);this.originRecord.params=n}},addConfigAccordingType:function(e,t,a){var i="true"===t?"false":"true",s=a[i];this.deleteHideItems(s);var n=this.record.params.$resource,c=Object(r["a"])(this.originParamsList),o=c.slice(0),l=Object.assign({},this.originRules.params),u=Object.assign({},this.originRecord.params);if(Object.assign(u,{$resource:n}),Object.keys(e).length){var d=Object(f["l"])(e,"params"),p=d.form,m=d.rules;this.paramsList=o.concat(p),this.rules.params=Object.assign(l,m);var h=this.assignRecordParams(p),g=Object.assign({},h),b=g;this.record.params=Object.assign(u,b)}else this.paramsList=o,this.rules.params=l,this.record.params=u;this.paramsList.sort(function(e,t){return e.order-t.order}),this.record.params.enable_batch=t,this.$refs.record&&Object(v["setTimeout"])(this.$refs.record.clearValidate,10)},deleteHideItems:function(e){var t=this,a=Object.keys(e);a.forEach(function(e){delete t.originRecord.params[e]})},actionTypeChange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"add";this.selectedAction=JSON.parse(JSON.stringify(this.actionsMap[e])),this.actionCategory=this.selectedAction.category,this.paramsList=[],this.paramsLoading=!0,Object(v["setTimeout"])(this.loadParamsList(t),200),this.loadResourceData()},actionCategoryChange:function(e){var t=this.availableActions[e];t[0]&&(this.record.name=t[0].name,this.actionTypeChange(this.record.name))},addAction:function(){this.actionDialogTitle=this.$t("RuleEngine.addActions"),this.actionTypeChange(this.record.name,"add"),this.actionDialogVisible=!0},editAction:function(e,t){var a=d.a.cloneDeep(e);this.actionDialogTitle=this.$t("RuleEngine.editActions"),this.currentEditIndex=t,this.actionTypeChange(a.name,"edit"),this.initEnableBatch(a),this.record=Object(c["a"])({},a),this.originRecord=Object(c["a"])({},a),this.actionDialogVisible=!0},initEnableBatch:function(e){var t=Object(c["a"])({},e),a=t._config,i=t.params,s=i.enable_batch;if(void 0!==s){var n=a.params.enable_batch.items,r=s.toString(),o=n,l=o[r];this.addConfigAccordingType(l,r,o)}},initRecordEnableBatch:function(){void 0!==this.record.params.enable_batch&&(this.record.params.enable_batch=this.record.params.enable_batch.toString())},removeAction:function(e){this.rawValue.splice(e,1)},loadActions:function(){var e=Object(o["a"])(regeneratorRuntime.mark(function e(){var t,a=this;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(p["h"])();case 2:t=e.sent,this.actions=t,t.forEach(function(e){var t=e.name;a.actionsMap[t]=e}),this.fillRawValue();case 6:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),fillRawValue:function(){var e=this,t=function(t){t.forEach(function(t){t._config=e.actionsMap[t.name];var a=t.params,i=t._config.params,s=t.fallbacks;t._value=Object.entries(a).map(function(e){var t=Object(n["a"])(e,2),a=t[0],r=t[1];return{label:(i[a]||{}).title,value:r,key:a,fallbacks:s}})})},a=this.rawValue;t(a),a.forEach(function(e){t(e.fallbacks)})},handleAddFallbacks:function(e){this.isFallbacks=!0,this.actionDialogTitle=this.$t("RuleEngine.addActions"),this.actionDialogVisible=!0,this.currentAction=e},editFallback:function(e,t,a){var i=d.a.cloneDeep(t);this.actionDialogTitle=this.$t("RuleEngine.editActions"),this.currentEditIndex=a,this.currentAction=e,this.isFallbacks=!0,this.actionTypeChange(i.name,"edit"),this.initEnableBatch(i),this.record=Object(c["a"])({},i),this.originRecord=Object(c["a"])({},i),this.actionDialogVisible=!0},removeFallback:function(e){e.fallbacks=[]},showFallbacksMtrics:function(e,t){var a=e.metrics,i=0,s=0;return a.forEach(function(e){i+=e.success,s+=e.failed}),"success"===t?i:s}}},C=_,y=(a("5713"),a("2877")),k=Object(y["a"])(C,i,s,!1,null,null,null);t["a"]=k.exports},ebce:function(e,t,a){}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-32291c05.fa1e09f6.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-32291c05.fa1e09f6.js new file mode 100644 index 000000000..cc4f8509e --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-32291c05.fa1e09f6.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-32291c05"],{"2e41":function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"modules modules-select"},[s("div",{staticClass:"header-box"},[s("div",{staticClass:"inner-box"},[s("div",{staticClass:"content",style:t.contentStyle},[s("div",{staticClass:"content-left"},[s("span",{staticClass:"content-title"},[t._v(t._s(t.$t("components.selectModules")))]),s("span",{staticClass:"modules-num"},[t._v(t._s(t.canAddCount))]),t._l(t.classList,function(e){return s("div",{key:e.id,class:["module-class",e.id===t.activeNavId?"active-nav":""],on:{click:function(s){return t.changeNav(e.id)}}},[t._v("\n "+t._s(e.name)+"\n ")])})],2),s("el-col",{attrs:{span:6}},[s("el-input",{staticClass:"search-input",attrs:{type:"text",size:"small",clearable:"",placeholder:t.$t("Modules.searchTip")},on:{input:t.searchModule,clear:t.loadData},model:{value:t.searchVal,callback:function(e){t.searchVal=e},expression:"searchVal"}},[t.searchLoading?s("i",{staticClass:"el-icon-loading",attrs:{slot:"prefix"},slot:"prefix"}):s("i",{staticClass:"el-icon-search",attrs:{slot:"prefix"},slot:"prefix"})])],1)],1)])]),s("div",{staticClass:"content-box app-wrapper"},[t.searchVal?[t.searchModuleInfo.length?s("el-row",{attrs:{gutter:20}},t._l(t.searchModuleInfo,function(e,a){return s("el-col",{key:a,attrs:{span:12}},[s("div",{staticClass:"item-box"},[s("span",{directives:[{name:"show",rawName:"v-show",value:e.id&&"{}"===JSON.stringify(e.params),expression:"one.id && JSON.stringify(one.params) === '{}'"}],staticClass:"delete-icon",on:{click:function(s){return t.deleteModule(e,t.searchModuleInfo)}}}),s("el-card",{attrs:{shadow:"hover"}},[s("div",{staticClass:"module-item",on:{click:function(s){return t.toModuleDetail(e,t.searchModuleInfo)}}},[s("div",{staticClass:"left-box"},[s("img",{staticClass:"item-img",attrs:{src:e.img,alt:"module-logo"}}),s("div",{staticClass:"item-content"},[s("div",{staticClass:"item-title"},[t._v(t._s(e.title[t.lang]))]),s("div",{staticClass:"item-des"},[t._v("\n "+t._s(e.description[t.lang])+"\n ")])])]),s("div",{staticClass:"item-handle"},["unadd"===e.status?s("el-button",{staticClass:"select-btn",attrs:{type:"dashed",size:"mini"}},[t._v("\n "+t._s(t.$t("Modules.select"))+"\n ")]):s("el-button",{staticClass:"start-btn",attrs:{plain:"",size:"mini"}},[t._v("\n "+t._s(t.$t("Modules.added"))+"\n ")]),s("a",{staticClass:"know-more",attrs:{href:"javascript:;"},on:{click:function(s){return s.stopPropagation(),t.toReadMore(e.name)}}},[t._v("\n "+t._s(t.$t("Modules.readMore"))+"\n ")])],1)])])],1)])}),1):s("a-card",{staticClass:"null-modules"},[s("p",[t._v(t._s(t.$t("Modules.listNull")))])])]:t._l(t.classList,function(e){return s("div",{key:e.id,staticClass:"link-content",attrs:{id:e.id}},[s("p",{class:["class-title",e.id===t.activeNavId?"active-title":""]},[t._v("\n "+t._s(e.name)+"\n ")]),t.allFeatures[e.id]?s("el-row",{attrs:{gutter:20}},t._l(t.allFeatures[e.id],function(a,n){return s("el-col",{key:n,attrs:{span:12}},[s("div",{staticClass:"item-box"},[s("span",{directives:[{name:"show",rawName:"v-show",value:a.id&&"{}"===JSON.stringify(a.params),expression:"one.id && JSON.stringify(one.params) === '{}'"}],staticClass:"delete-icon",on:{click:function(s){return t.deleteModule(a,t.allFeatures[e.id])}}}),s("el-card",{attrs:{shadow:"hover"}},[s("div",{staticClass:"module-item",on:{click:function(s){return t.toModuleDetail(a,t.allFeatures[e.id])}}},[s("div",{staticClass:"left-box"},[s("img",{staticClass:"item-img",attrs:{src:a.img,alt:"module-logo"}}),s("div",{staticClass:"item-content"},[s("div",{staticClass:"item-title"},[t._v(t._s(a.title[t.lang]))]),s("div",{staticClass:"item-des"},[t._v("\n "+t._s(a.description[t.lang])+"\n ")])])]),s("div",{staticClass:"item-handle"},["unadd"===a.status?s("el-button",{staticClass:"select-btn",attrs:{type:"dashed",size:"mini"}},[t._v("\n "+t._s(t.$t("Modules.select"))+"\n ")]):s("el-button",{staticClass:"start-btn",attrs:{plain:"",size:"mini"}},[t._v("\n "+t._s(t.$t("Modules.added"))+"\n ")]),s("a",{staticClass:"know-more",attrs:{href:"javascript:;"},on:{click:function(e){return e.stopPropagation(),t.toReadMore(a.name)}}},[t._v("\n "+t._s(t.$t("Modules.readMore"))+"\n ")])],1)])])],1)])}),1):t._e()],1)})],2)])},n=[],i=(s("6762"),s("2fdb"),s("8615"),s("ac6a"),s("456d"),s("cebc")),o=s("a8db"),l=(s("7f7f"),s("96cf"),s("3b8d")),r=s("943d"),c=s("90b9"),d=s("a47b"),u={name:"ModuleAdd",data:function(){return{searchLoading:!1,searchVal:"",canAddCount:0,classList:[{name:this.$t("Modules.authentication"),id:"auth"},{name:this.$t("Modules.protocols"),id:"protocol"},{name:this.$t("Modules.messagePublish"),id:"message"},{name:this.$t("Modules.extension"),id:"extension"},{name:this.$t("Modules.monitor"),id:"devops"},{name:this.$t("Modules.localModules"),id:"module"}],activeNavId:"auth",allFeatures:{},selectedModule:{},allModuleList:[],searchModuleInfo:[],oper:"add",scrollTop:0,scrolling:!1,addedModules:JSON.parse(localStorage.getItem("addedModules"))||{}}},computed:{lang:function(){return d["a"].state.lang},contentStyle:function(){return{marginLeft:this.$store.state.leftBarCollapse?"80px":"200px"}}},created:function(){this.loadData()},mounted:function(){window.addEventListener("scroll",this.scrollToTop),this.returnPosition()},destroyed:function(){window.removeEventListener("scroll",this.scrollToTop)},methods:{deleteModule:function(t,e){var s=this,a=e.indexOf(t);this.$msgbox.confirm(this.$t("Modules.thisActionWillDeleteTheModule"),{confirmButtonText:this.$t("Base.confirm"),cancelButtonText:this.$t("Base.cancel"),type:"warning"}).then(Object(l["a"])(regeneratorRuntime.mark(function n(){var i,l;return regeneratorRuntime.wrap(function(n){while(1)switch(n.prev=n.next){case 0:return n.next=2,Object(r["i"])(t.id);case 2:s.$message.success(s.$t("Base.deleteSuccess")),i=JSON.parse(localStorage.getItem("addedModules"))||{},delete i[t.name],delete s.addedModules[t.name],localStorage.setItem("addedModules",JSON.stringify(i)),t.id,l=Object(o["a"])(t,["id"]),l.status="unadd",e.splice(a,1,l);case 10:case"end":return n.stop()}},n)}))).catch(function(){})},returnPosition:function(){var t=this,e=this.$route.query,s=e.id,a=e.top;s&&setTimeout(function(){document.documentElement.scrollTop=a,document.body.scrollTop=a,t.activeNavId=s},50)},searchModule:function(){var t=this;if(this.searchLoading=!0,""===this.searchVal)return this.searchLoading=!1,this.searchModuleInfo=[],void(this.activeNavId="auth");setTimeout(Object(l["a"])(regeneratorRuntime.mark(function e(){var s;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["k"])(t.allModuleList,"localTitle",t.searchVal);case 2:s=e.sent,s?(t.searchModuleInfo=s,t.searchLoading=!1):t.searchLoading=!1,t.activeNavId="";case 5:case"end":return e.stop()}},e)})),500)},parseI18n:function(t){var e=Object(c["c"])(t,["title","description"]).map(function(t){return t.params=Object(c["c"])(t.params,!0),t});return e},toModuleDetail:function(){var t=Object(l["a"])(regeneratorRuntime.mark(function t(e,s){var a,n,o,l,c,d,u,h,p=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:if(a=s.indexOf(e),n="unadd"===e.status?"add":"edit",this.oper=n,this.selectedModule={},"add"!==n){t.next=26;break}if(o=Object(i["a"])({},e),this.parseI18n([o]),l=o.params,Object.keys(l).length){t.next=22;break}return c={type:e.name,config:{}},t.next=12,Object(r["d"])(c);case 12:return d=t.sent,u=JSON.parse(localStorage.getItem("addedModules"))||{},u[d.type]=d.id,this.addedModules=u,localStorage.setItem("addedModules",JSON.stringify(u)),this.$message.success(this.$t("Modules.moduleAddSuccess")),e.status="added",e.id=d.id,s.splice(a,1,e),t.abrupt("return");case 22:this.selectedModule={paramsData:l,type:e.name,oper:n,title:e.title,description:e.description},this.$store.dispatch("UPDATE_MODULE",this.selectedModule),t.next=31;break;case 26:if(Object.keys(e.params).length){t.next=29;break}return this.$message.info(this.$t("Modules.noNeedAddConfigTip")),t.abrupt("return");case 29:h=this.addedModules[e.name],this.getAddedModuleInfo(h).then(function(t){p.selectedModule=t,p.selectedModule.oper=n,p.selectedModule.title=e.title,p.selectedModule.description=e.description,p.$store.dispatch("UPDATE_MODULE",p.selectedModule)}).catch();case 31:this.$router.push("/modules/detail?id=".concat(this.activeNavId,"&top=").concat(this.scrollTop));case 32:case"end":return t.stop()}},t,this)}));function e(e,s){return t.apply(this,arguments)}return e}(),getAddedModuleInfo:function(){var t=Object(l["a"])(regeneratorRuntime.mark(function t(e){var s;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,Object(r["s"])(e);case 2:return s=t.sent,t.abrupt("return",s);case 4:case"end":return t.stop()}},t)}));function e(e){return t.apply(this,arguments)}return e}(),changeNav:function(t){var e=this;if(!this.scrolling){this.searchModuleInfo=[],this.searchVal="",this.activeNavId=t;var s=this.$el.querySelector("#".concat(t)),a=s.offsetTop;setTimeout(function(){"auth"===t?e.backTo(0):e.backTo(a)},5)}},loadData:function(){var t=Object(l["a"])(regeneratorRuntime.mark(function t(){var e=this;return regeneratorRuntime.wrap(function(t){while(1)switch(t.prev=t.next){case 0:return this.allModuleList=[],this.allFeatures=[],this.canAddCount=0,t.next=5,Object(r["o"])();case 5:this.allFeatures=t.sent,this.getImgs(),Object.values(this.allFeatures).forEach(function(t){e.allModuleList=e.allModuleList.concat(t)}),this.allModuleList.forEach(function(t){t.localTitle=t.title[e.lang],Object.keys(e.addedModules).includes(t.name)?(t.status="added",t.id=e.addedModules[t.name]):(t.status="unadd",e.canAddCount+=1)});case 9:case"end":return t.stop()}},t,this)}));function e(){return t.apply(this,arguments)}return e}(),getImgs:function(){var t=this;this.classList.forEach(function(e){var a=e.id;t.allFeatures[a].forEach(function(t){try{t.img=s("1775")("./".concat(t.name,".png"))}catch(e){console.log(e)}})})},backTo:function(t){var e=this,s=setInterval(function(){var a=Math.floor((t-e.scrollTop)/6);Math.abs(e.scrollTop-t)>=Math.abs(a)?e.scrollTop+=a:e.scrollTop=t,document.documentElement.scrollTop=e.scrollTop,document.body.scrollTop=e.scrollTop,e.scrolling=!0,e.scrollTop!==t&&0!==a||(clearInterval(s),e.scrolling=!1)},20)},scrollToTop:function(){var t=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;this.scrollTop=t},toReadMore:function(t){var e="zh"===this.lang?"cn/cn/":"io/en/",s="https://docs.emqx.".concat(e,"enterprise/latest/modules/").concat(t,".html"),a=window.open(s);a.opener=null}}},h=u,p=(s("b13c"),s("2877")),m=Object(p["a"])(h,a,n,!1,null,"839f236e",null);e["default"]=m.exports},"9b44":function(t,e,s){},a8db:function(t,e,s){"use strict";var a=s("e265"),n=s.n(a),i=s("a4bb"),o=s.n(i);function l(t,e){if(null==t)return{};var s,a,n={},i=o()(t);for(a=0;a=0||(n[s]=t[s]);return n}function r(t,e){if(null==t)return{};var s,a,i=l(t,e);if(n.a){var o=n()(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,s)&&(i[s]=t[s])}return i}s.d(e,"a",function(){return r})},b13c:function(t,e,s){"use strict";var a=s("9b44"),n=s.n(a);n.a}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-39509ba9.bfd064ab.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-39509ba9.bfd064ab.js new file mode 100644 index 000000000..2254a86f4 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-39509ba9.bfd064ab.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-39509ba9"],{"4a36":function(e,t,r){"use strict";r.d(t,"c",function(){return o}),r.d(t,"d",function(){return p}),r.d(t,"b",function(){return l}),r.d(t,"a",function(){return d});r("7f7f"),r("96cf");var a=r("3b8d"),n=r("1f75"),s="3rd-party",c="HTTP",u="TCP",i="Resources",o=function(){return n["a"].get("/schemas")},p=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var r,a,s,o,p,l;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n["a"].get("/schemas/".concat(t));case 3:return r=e.sent,a=r,s=a.parser_addr,s&&(o=s.url,p=s.host,l=s.port,o?a.third_party_type=c:p&&l?(a.third_party_type=u,a.parser_addr.server="".concat(p,":").concat(l)):a.third_party_type=i),e.abrupt("return",a);case 10:return e.prev=10,e.t0=e["catch"](0),console.error(e.t0),e.abrupt("return",!1);case 14:case"end":return e.stop()}},e,null,[[0,10]])}));return function(t){return e.apply(this,arguments)}}(),l=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n["a"].delete("/schemas/".concat(t));case 3:return e.abrupt("return",e.sent);case 6:return e.prev=6,e.t0=e["catch"](0),console.error(e.t0),e.abrupt("return",!1);case 10:case"end":return e.stop()}},e,null,[[0,6]])}));return function(t){return e.apply(this,arguments)}}(),d=function(){var e=Object(a["a"])(regeneratorRuntime.mark(function e(t){var r;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return r={name:t.name,description:t.description,parser_type:t.parser_type},t.parser_type===s?(r.parser_addr={},r.parser_opts=t.parser_opts,t.third_party_type===c?r.parser_addr.url=t.parser_addr.url:t.third_party_type===u?r.parser_addr.server=t.parser_addr.server:t.third_party_type===i&&(r.parser_addr.resource_id=t.parser_addr.resource_id)):r.schema=t.schema,e.prev=2,e.next=5,n["a"].post("/schemas",r);case 5:return e.abrupt("return",e.sent);case 8:return e.prev=8,e.t0=e["catch"](2),console.error(e.t0),e.abrupt("return",!1);case 12:case"end":return e.stop()}},e,null,[[2,8]])}));return function(t){return e.apply(this,arguments)}}()},c993:function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"schemas"},[r("page-header",[r("div",{staticClass:"page-header-content-view"},[r("div",{staticClass:"content"},[r("p",{staticClass:"description"},[e._v("\n "+e._s(e.$t("Schemas.schemaDesc"))+"\n ")]),r("div",{staticClass:"page-header-top-start"},[r("a",{staticClass:"link-item",attrs:{rel:"noopener",href:e.docs.tutorial,target:"_blank"}},[r("i",{staticClass:"icon el-icon-position"}),e._v("\n "+e._s(e.$t("Schemas.quickStart"))+"\n ")])])])])]),r("div",{staticClass:"app-wrapper"},[r("a-card",{staticClass:"emq-list-card"},[r("div",{staticClass:"emq-table-header"},[r("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-plus"},on:{click:function(t){return e.$router.push({path:"/schemas/0",query:{oper:"create"}})}}},[e._v("\n "+e._s(e.$t("Base.create"))+"\n ")])],1),r("el-table",{staticClass:"data-list",attrs:{data:e.tableData}},[r("el-table-column",{attrs:{prop:"name",label:e.$t("Schemas.name")},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[r("a",{attrs:{href:"javascript:;"},on:{click:function(t){return e.$router.push({path:"/schemas/"+a.name,query:{oper:"view"}})}}},[e._v("\n "+e._s(a.name)+"\n ")])]}}])}),r("el-table-column",{attrs:{prop:"parser_type",label:e.$t("Schemas.parser_type"),filters:e.parserTypes,"filter-method":e.parserTypesColumnFilter,"filter-placement":"bottom"}}),r("el-table-column",{attrs:{prop:"descr","show-overflow-tooltip":"",label:e.$t("Schemas.description")}}),r("el-table-column",{attrs:{width:"80px"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[r("el-button",{attrs:{type:"dashed danger",size:"mini"},on:{click:function(t){return e.deleteData(a)}}},[e._v("\n "+e._s(e.$t("RuleEngine.delete"))+"\n ")])]}}])})],1)],1)],1)],1)},n=[],s=(r("7f7f"),r("96cf"),r("3b8d")),c=r("4a36"),u=r("90b9"),i={name:"Schemas",data:function(){return{docs:{tutorial:Object(u["g"])("schemaTutorial")},tableData:[],parserTypes:[{text:"avro",value:"avro"},{text:"protobuf",value:"protobuf"},{text:"3rd-party",value:"3rd-party"}]}},created:function(){this.loadData()},methods:{loadData:function(){var e=Object(s["a"])(regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(c["c"])();case 2:t=e.sent,t&&(this.tableData=t);case 4:case"end":return e.stop()}},e,this)}));function t(){return e.apply(this,arguments)}return t}(),deleteData:function(e){var t=this;this.$confirm(this.$t("Schemas.confirmDelete"),{type:"warning"}).then(Object(s["a"])(regeneratorRuntime.mark(function r(){var a;return regeneratorRuntime.wrap(function(r){while(1)switch(r.prev=r.next){case 0:return r.next=2,Object(c["b"])(e.name);case 2:a=r.sent,a&&(t.loadData(),t.$message.success(t.$t("Base.deleteSuccess")));case 4:case"end":return r.stop()}},r)}))).catch(function(){})},parserTypesColumnFilter:function(e,t){return e===t.parser_type}}},o=i,p=r("2877"),l=Object(p["a"])(o,a,n,!1,null,null,null);t["default"]=l.exports}}]); \ No newline at end of file diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3adcb268.16eb5205.js b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3adcb268.16eb5205.js new file mode 100644 index 000000000..ce7736d34 --- /dev/null +++ b/apps/emqx_enterprise_dashboard/priv/www/static/js/chunk-3adcb268.16eb5205.js @@ -0,0 +1,6 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3adcb268"],{"00a3":function(e,t,n){"use strict";n.d(t,"b",function(){return a}),n.d(t,"a",function(){return u});var i=n("11f7"),o=n("e757"),r=n("5d28"),s=n("a666");function a(e,t){var n=new r["b"](t);return n.preventDefault(),{leftButton:n.leftButton,posx:n.posx,posy:n.posy}}var u=function(){function e(){this.hooks=new s["b"],this.mouseMoveEventMerger=null,this.mouseMoveCallback=null,this.onStopCallback=null}return e.prototype.dispose=function(){this.stopMonitoring(!1),this.hooks.dispose()},e.prototype.stopMonitoring=function(e){if(this.isMonitoring()){this.hooks.clear(),this.mouseMoveEventMerger=null,this.mouseMoveCallback=null;var t=this.onStopCallback;this.onStopCallback=null,e&&t&&t()}},e.prototype.isMonitoring=function(){return!!this.mouseMoveEventMerger},e.prototype.startMonitoring=function(e,t,n){var s=this;if(!this.isMonitoring()){this.mouseMoveEventMerger=e,this.mouseMoveCallback=t,this.onStopCallback=n;for(var a=o["a"].getSameOriginWindowChain(),u=0,l=a;u1?i["r"](d["b"].gotoLineLabelValidLineAndColumn,t.lineNumber,t.column):i["r"](d["b"].gotoLineLabelValidLine,t.lineNumber):t.lineNumber<1||t.lineNumber>(n?n.getLineCount():0)?i["r"](d["b"].gotoLineLabelEmptyWithLineLimit,n?n.getLineCount():0):i["r"](d["b"].gotoLineLabelEmptyWithLineAndColumnLimit,n?n.getLineMaxColumn(t.lineNumber):0),{position:t,isValid:l,label:u}},t.prototype.getLabel=function(){return this.parseResult.label},t.prototype.getAriaLabel=function(){var e=this.editor.getPosition(),t=e?e.lineNumber:0;return i["r"](d["b"].gotoLineAriaLabel,t,this.parseResult.label)},t.prototype.run=function(e,t){return 1===e?this.runOpen():this.runPreview()},t.prototype.runOpen=function(){if(!this.parseResult.isValid)return!1;var e=this.toSelection();return this.editor.setSelection(e),this.editor.revealRangeInCenter(e,0),this.editor.focus(),!0},t.prototype.runPreview=function(){if(!this.parseResult.isValid)return this.decorator.clearDecorations(),!1;var e=this.toSelection();return this.editor.revealRangeInCenter(e,0),this.decorator.decorateLine(e,this.editor),!1},t.prototype.toSelection=function(){return new u["a"](this.parseResult.position.lineNumber,this.parseResult.position.column,this.parseResult.position.lineNumber,this.parseResult.position.column)},t}(o["a"]),f=function(e){function t(){return e.call(this,d["b"].gotoLineActionInput,{id:"editor.action.gotoLine",label:d["b"].gotoLineActionLabel,alias:"Go to Line...",precondition:void 0,kbOpts:{kbExpr:l["a"].focus,primary:2085,mac:{primary:293},weight:100}})||this}return h(t,e),t.prototype.run=function(e,t){var n=this;this._show(this.getController(t),{getModel:function(e){return new o["c"]([new p(e,t,n.getController(t))])},getAutoFocus:function(e){return{autoFocusFirstEntry:e.length>0}}})},t}(c["a"]);Object(s["f"])(f)},"03d9":function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"c",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"d",function(){return s}),n.d(t,"e",function(){return a}),n.d(t,"g",function(){return u}),n.d(t,"h",function(){return l}),n.d(t,"f",function(){return c});var i,o,r,s,a,u,l,c,d=n("dff7");(function(e){e.noSelection=d["a"]("noSelection","No selection"),e.singleSelectionRange=d["a"]("singleSelectionRange","Line {0}, Column {1} ({2} selected)"),e.singleSelection=d["a"]("singleSelection","Line {0}, Column {1}"),e.multiSelectionRange=d["a"]("multiSelectionRange","{0} selections ({1} characters selected)"),e.multiSelection=d["a"]("multiSelection","{0} selections"),e.emergencyConfOn=d["a"]("emergencyConfOn","Now changing the setting `accessibilitySupport` to 'on'."),e.openingDocs=d["a"]("openingDocs","Now opening the Editor Accessibility documentation page."),e.readonlyDiffEditor=d["a"]("readonlyDiffEditor"," in a read-only pane of a diff editor."),e.editableDiffEditor=d["a"]("editableDiffEditor"," in a pane of a diff editor."),e.readonlyEditor=d["a"]("readonlyEditor"," in a read-only code editor"),e.editableEditor=d["a"]("editableEditor"," in a code editor"),e.changeConfigToOnMac=d["a"]("changeConfigToOnMac","To configure the editor to be optimized for usage with a Screen Reader press Command+E now."),e.changeConfigToOnWinLinux=d["a"]("changeConfigToOnWinLinux","To configure the editor to be optimized for usage with a Screen Reader press Control+E now."),e.auto_on=d["a"]("auto_on","The editor is configured to be optimized for usage with a Screen Reader."),e.auto_off=d["a"]("auto_off","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time."),e.tabFocusModeOnMsg=d["a"]("tabFocusModeOnMsg","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}."),e.tabFocusModeOnMsgNoKb=d["a"]("tabFocusModeOnMsgNoKb","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding."),e.tabFocusModeOffMsg=d["a"]("tabFocusModeOffMsg","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}."),e.tabFocusModeOffMsgNoKb=d["a"]("tabFocusModeOffMsgNoKb","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding."),e.openDocMac=d["a"]("openDocMac","Press Command+H now to open a browser window with more information related to editor accessibility."),e.openDocWinLinux=d["a"]("openDocWinLinux","Press Control+H now to open a browser window with more information related to editor accessibility."),e.outroMsg=d["a"]("outroMsg","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape."),e.showAccessibilityHelpAction=d["a"]("showAccessibilityHelpAction","Show Accessibility Help")})(i||(i={})),function(e){e.inspectTokensAction=d["a"]("inspectTokens","Developer: Inspect Tokens")}(o||(o={})),function(e){e.gotoLineLabelValidLineAndColumn=d["a"]("gotoLineLabelValidLineAndColumn","Go to line {0} and character {1}"),e.gotoLineLabelValidLine=d["a"]("gotoLineLabelValidLine","Go to line {0}"),e.gotoLineLabelEmptyWithLineLimit=d["a"]("gotoLineLabelEmptyWithLineLimit","Type a line number between 1 and {0} to navigate to"),e.gotoLineLabelEmptyWithLineAndColumnLimit=d["a"]("gotoLineLabelEmptyWithLineAndColumnLimit","Type a character between 1 and {0} to navigate to"),e.gotoLineAriaLabel=d["a"]("gotoLineAriaLabel","Current Line: {0}. Go to line {1}."),e.gotoLineActionInput=d["a"]("gotoLineActionInput","Type a line number, followed by an optional colon and a character number to navigate to"),e.gotoLineActionLabel=d["a"]("gotoLineActionLabel","Go to Line...")}(r||(r={})),function(e){e.ariaLabelEntryWithKey=d["a"]("ariaLabelEntryWithKey","{0}, {1}, commands"),e.ariaLabelEntry=d["a"]("ariaLabelEntry","{0}, commands"),e.quickCommandActionInput=d["a"]("quickCommandActionInput","Type the name of an action you want to execute"),e.quickCommandActionLabel=d["a"]("quickCommandActionLabel","Command Palette")}(s||(s={})),function(e){e.entryAriaLabel=d["a"]("entryAriaLabel","{0}, symbols"),e.quickOutlineActionInput=d["a"]("quickOutlineActionInput","Type the name of an identifier you wish to navigate to"),e.quickOutlineActionLabel=d["a"]("quickOutlineActionLabel","Go to Symbol..."),e._symbols_=d["a"]("symbols","symbols ({0})"),e._modules_=d["a"]("modules","modules ({0})"),e._class_=d["a"]("class","classes ({0})"),e._interface_=d["a"]("interface","interfaces ({0})"),e._method_=d["a"]("method","methods ({0})"),e._function_=d["a"]("function","functions ({0})"),e._property_=d["a"]("property","properties ({0})"),e._variable_=d["a"]("variable","variables ({0})"),e._variable2_=d["a"]("variable2","variables ({0})"),e._constructor_=d["a"]("_constructor","constructors ({0})"),e._call_=d["a"]("call","calls ({0})")}(a||(a={})),function(e){e.editorViewAccessibleLabel=d["a"]("editorViewAccessibleLabel","Editor content"),e.accessibilityHelpMessageIE=d["a"]("accessibilityHelpMessageIE","Press Ctrl+F1 for Accessibility Options."),e.accessibilityHelpMessage=d["a"]("accessibilityHelpMessage","Press Alt+F1 for Accessibility Options.")}(u||(u={})),function(e){e.toggleHighContrast=d["a"]("toggleHighContrast","Toggle High Contrast Theme")}(l||(l={})),function(e){e.bulkEditServiceSummary=d["a"]("bulkEditServiceSummary","Made {0} edits in {1} files")}(c||(c={}))},"03e8":function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"c",function(){return i}),n.d(t,"b",function(){return c});var i,o=n("0a0f"),r=n("308f"),s=n("a666"),a=n("ef8e"),u=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),l=Object(o["c"])("storageService");(function(e){e[e["NONE"]=0]="NONE",e[e["SHUTDOWN"]=1]="SHUTDOWN"})(i||(i={}));var c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._serviceBrand=null,t._onDidChangeStorage=t._register(new r["a"]),t.onDidChangeStorage=t._onDidChangeStorage.event,t.onWillSaveState=r["b"].None,t.globalCache=new Map,t.workspaceCache=new Map,t}return u(t,e),t.prototype.getCache=function(e){return 0===e?this.globalCache:this.workspaceCache},t.prototype.get=function(e,t,n){var i=this.getCache(t).get(e);return Object(a["k"])(i)?n:i},t.prototype.getBoolean=function(e,t,n){var i=this.getCache(t).get(e);return Object(a["k"])(i)?n:"true"===i},t.prototype.store=function(e,t,n){if(Object(a["k"])(t))return this.remove(e,n);var i=String(t),o=this.getCache(n).get(e);return o===i?Promise.resolve():(this.getCache(n).set(e,i),this._onDidChangeStorage.fire({scope:n,key:e}),Promise.resolve())},t.prototype.remove=function(e,t){var n=this.getCache(t).delete(e);return n?(this._onDidChangeStorage.fire({scope:t,key:e}),Promise.resolve()):Promise.resolve()},t}(s["a"])},"041a":function(e,t,n){"use strict";n.d(t,"a",function(){return p});n("c4d7");var i=n("0f70"),o=n("a666"),r=n("308f"),s=n("30db"),a=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function u(e,t){return!!e[t]}var l=function(){function e(e,t){this.target=e.target,this.hasTriggerModifier=u(e.event,t.triggerModifier),this.hasSideBySideModifier=u(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=i["j"]||e.event.detail<=1}return e}(),c=function(){function e(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=u(e,t.triggerModifier)}return e}(),d=function(){function e(e,t,n,i){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=n,this.triggerSideBySideModifier=i}return e.prototype.equals=function(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier},e}();function h(e){return"altKey"===e?s["d"]?new d(57,"metaKey",6,"altKey"):new d(5,"ctrlKey",6,"altKey"):s["d"]?new d(6,"altKey",57,"metaKey"):new d(6,"altKey",5,"ctrlKey")}var p=function(e){function t(t){var n=e.call(this)||this;return n._onMouseMoveOrRelevantKeyDown=n._register(new r["a"]),n.onMouseMoveOrRelevantKeyDown=n._onMouseMoveOrRelevantKeyDown.event,n._onExecute=n._register(new r["a"]),n.onExecute=n._onExecute.event,n._onCancel=n._register(new r["a"]),n.onCancel=n._onCancel.event,n._editor=t,n._opts=h(n._editor.getConfiguration().multiCursorModifier),n.lastMouseMoveEvent=null,n.hasTriggerKeyOnMouseDown=!1,n._register(n._editor.onDidChangeConfiguration(function(e){if(e.multiCursorModifier){var t=h(n._editor.getConfiguration().multiCursorModifier);if(n._opts.equals(t))return;n._opts=t,n.lastMouseMoveEvent=null,n.hasTriggerKeyOnMouseDown=!1,n._onCancel.fire()}})),n._register(n._editor.onMouseMove(function(e){return n.onEditorMouseMove(new l(e,n._opts))})),n._register(n._editor.onMouseDown(function(e){return n.onEditorMouseDown(new l(e,n._opts))})),n._register(n._editor.onMouseUp(function(e){return n.onEditorMouseUp(new l(e,n._opts))})),n._register(n._editor.onKeyDown(function(e){return n.onEditorKeyDown(new c(e,n._opts))})),n._register(n._editor.onKeyUp(function(e){return n.onEditorKeyUp(new c(e,n._opts))})),n._register(n._editor.onMouseDrag(function(){return n.resetHandler()})),n._register(n._editor.onDidChangeCursorSelection(function(e){return n.onDidChangeCursorSelection(e)})),n._register(n._editor.onDidChangeModel(function(e){return n.resetHandler()})),n._register(n._editor.onDidChangeModelContent(function(){return n.resetHandler()})),n._register(n._editor.onDidScrollChange(function(e){(e.scrollTopChanged||e.scrollLeftChanged)&&n.resetHandler()})),n}return a(t,e),t.prototype.onDidChangeCursorSelection=function(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this.resetHandler()},t.prototype.onEditorMouseMove=function(e){this.lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])},t.prototype.onEditorMouseDown=function(e){this.hasTriggerKeyOnMouseDown=e.hasTriggerModifier},t.prototype.onEditorMouseUp=function(e){this.hasTriggerKeyOnMouseDown&&this._onExecute.fire(e)},t.prototype.onEditorKeyDown=function(e){this.lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this.lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()},t.prototype.onEditorKeyUp=function(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()},t.prototype.resetHandler=function(){this.lastMouseMoveEvent=null,this.hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()},t}(o["a"])},"045b":function(e,t,n){"use strict";function i(e,t){var n=e.getCount(),i=e.findTokenIndexAtOffset(t),r=e.getLanguageId(i),s=i;while(s+10&&e.getLanguageId(a-1)===r)a--;return new o(e,r,a,s+1,e.getStartOffset(a),e.getEndOffset(s))}n.d(t,"a",function(){return i}),n.d(t,"b",function(){return r});var o=function(){function e(e,t,n,i,o,r){this._actual=e,this.languageId=t,this._firstTokenIndex=n,this._lastTokenIndex=i,this.firstCharOffset=o,this._lastCharOffset=r}return e.prototype.getLineContent=function(){var e=this._actual.getLineContent();return e.substring(this.firstCharOffset,this._lastCharOffset)},e.prototype.getTokenCount=function(){return this._lastTokenIndex-this._firstTokenIndex},e.prototype.findTokenIndexAtOffset=function(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex},e.prototype.getStandardTokenType=function(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)},e}();function r(e){return 0!==(7&e)}},"0632":function(e,t,n){},"0829":function(e,t,n){},"0876":function(e,t,n){},"0910":function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return C});var i=n("dff7"),o=n("308f"),r=n("89cd"),s=n("ef8e"),a=n("3742"),u=n("dd1b"),l={Configuration:"base.contributions.configuration"},c={properties:{},patternProperties:{}},d={properties:{},patternProperties:{}},h={properties:{},patternProperties:{}},p={properties:{},patternProperties:{}},f={properties:{},patternProperties:{}},g={properties:{},patternProperties:{}},m="vscode://schemas/settings/editor",v=r["a"].as(u["a"].JSONContribution),_=function(){function e(){this.overrideIdentifiers=[],this._onDidSchemaChange=new o["a"],this._onDidUpdateConfiguration=new o["a"],this.defaultOverridesConfigurationNode={id:"defaultOverrides",title:i["a"]("defaultConfigurations.title","Default Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultOverridesConfigurationNode],this.editorConfigurationSchema={properties:{},patternProperties:{},additionalProperties:!1,errorMessage:"Unknown editor configuration setting",allowsTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.excludedConfigurationProperties={},this.computeOverridePropertyPattern(),v.registerSchema(m,this.editorConfigurationSchema)}return e.prototype.registerConfiguration=function(e,t){void 0===t&&(t=!0),this.registerConfigurations([e],t)},e.prototype.registerConfigurations=function(e,t){var n=this;void 0===t&&(t=!0);var i=[];e.forEach(function(e){i.push.apply(i,n.validateAndRegisterProperties(e,t)),n.configurationContributors.push(e),n.registerJSONConfiguration(e),n.updateSchemaForOverrideSettingsConfiguration(e)}),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire(i)},e.prototype.registerOverrideIdentifiers=function(e){var t;(t=this.overrideIdentifiers).push.apply(t,e),this.updateOverridePropertyPatternKey()},e.prototype.validateAndRegisterProperties=function(e,t,n,i){void 0===t&&(t=!0),void 0===n&&(n=3),void 0===i&&(i=!1),n=s["k"](e.scope)?n:e.scope,i=e.overridable||i;var o=[],r=e.properties;if(r)for(var a in r){var u=void 0;if(t&&(u=O(a)))console.warn(u),delete r[a];else{var l=r[a],c=l.default;s["j"](c)&&(l.default=S(l.type)),i&&(l.overridable=!0),C.test(a)?l.scope=void 0:l.scope=s["k"](l.scope)?n:l.scope,!r[a].hasOwnProperty("included")||r[a].included?(this.configurationProperties[a]=r[a],o.push(a)):(this.excludedConfigurationProperties[a]=r[a],delete r[a])}}var d=e.allOf;if(d)for(var h=0,p=d;h, selectionStart: "+this.selectionStart+", selectionEnd: "+this.selectionEnd+"]"},e.readFromTextArea=function(t){return new e(t.getValue(),t.getSelectionStart(),t.getSelectionEnd(),null,null)},e.prototype.collapseSelection=function(){return new e(this.value,this.value.length,this.value.length,null,null)},e.prototype.writeToTextArea=function(e,t,n){t.setValue(e,this.value),n&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)},e.prototype.deduceEditorPosition=function(e){if(e<=this.selectionStart){var t=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(this.selectionStartPosition,t,-1)}if(e>=this.selectionEnd){t=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(this.selectionEndPosition,t,1)}var n=this.value.substring(this.selectionStart,e);if(-1===n.indexOf(String.fromCharCode(8230)))return this._finishDeduceEditorPosition(this.selectionStartPosition,n,1);var i=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(this.selectionEndPosition,i,-1)},e.prototype._finishDeduceEditorPosition=function(e,t,n){var i=0,o=-1;while(-1!==(o=t.indexOf("\n",o+1)))i++;return[e,n*t.length,i]},e.selectedText=function(t){return new e(t,0,t.length,null,null)},e.deduceInput=function(e,t,n,o){if(!e)return{text:"",replaceCharCnt:0};var r=e.value,s=e.selectionStart,a=e.selectionEnd,u=t.value,l=t.selectionStart,c=t.selectionEnd;o&&r.length>0&&s===a&&l===c&&!i["J"](u,r)&&i["m"](u,r)&&(s=0,a=0);var d=r.substring(a),h=u.substring(c),p=i["c"](d,h);u=u.substring(0,u.length-p),r=r.substring(0,r.length-p);var f=r.substring(0,s),g=u.substring(0,l),m=i["b"](f,g);if(u=u.substring(m),r=r.substring(m),l-=m,s-=m,c-=m,a-=m,n&&l===c&&r.length>0){var v=null;if(l===u.length?i["J"](u,r)&&(v=u.substring(r.length)):i["m"](u,r)&&(v=u.substring(0,u.length-r.length)),null!==v&&v.length>0&&(/\uFE0F/.test(v)||i["f"](v)))return{text:v,replaceCharCnt:0}}if(l===c){if(r===u&&0===s&&a===r.length&&l===u.length&&-1===u.indexOf("\n")&&i["g"](u))return{text:"",replaceCharCnt:0};var _=f.length-m;return{text:u,replaceCharCnt:_}}var b=a-s;return{text:u,replaceCharCnt:b}},e.EMPTY=new e("",0,0,null,null),e}(),a=function(){function e(){}return e._getPageOfLine=function(t){return Math.floor((t-1)/e._LINES_PER_PAGE)},e._getRangeForPage=function(t){var n=t*e._LINES_PER_PAGE,i=n+1,o=n+e._LINES_PER_PAGE;return new r["a"](i,1,o+1,1)},e.fromEditorSelection=function(t,n,i,a){var u,l=e._getPageOfLine(i.startLineNumber),c=e._getRangeForPage(l),d=e._getPageOfLine(i.endLineNumber),h=e._getRangeForPage(d),p=c.intersectRanges(new r["a"](1,1,i.startLineNumber,i.startColumn)),f=n.getValueInRange(p,1),g=n.getLineCount(),m=n.getLineMaxColumn(g),v=h.intersectRanges(new r["a"](i.endLineNumber,i.endColumn,g,m)),_=n.getValueInRange(v,1);if(l===d||l+1===d)u=n.getValueInRange(i,1);else{var b=c.intersectRanges(i),y=h.intersectRanges(i);u=n.getValueInRange(b,1)+String.fromCharCode(8230)+n.getValueInRange(y,1)}if(a){var w=500;f.length>w&&(f=f.substring(f.length-w,f.length)),_.length>w&&(_=_.substring(0,w)),u.length>2*w&&(u=u.substring(0,w)+String.fromCharCode(8230)+u.substring(u.length-w,u.length))}return new s(f+u+_,f.length,f.length+u.length,new o["a"](i.startLineNumber,i.startColumn),new o["a"](i.endLineNumber,i.endColumn))},e._LINES_PER_PAGE=10,e}()},"0b11":function(e,t,n){"use strict";n.r(t);var i=n("b2cc"),o=n("0b54");Object(i["h"])(o["f"]),Object(i["f"])(o["e"]),Object(i["f"])(o["g"]),Object(i["f"])(o["h"]),Object(i["f"])(o["d"]),Object(i["f"])(o["a"]),Object(i["f"])(o["c"]),Object(i["g"])(new o["b"])},"0b54":function(e,t,n){"use strict";var i,o=n("a666"),r=n("3742"),s=n("b2cc"),a=n("c7f5"),u=n("c101"),l=n("fdcc"),c=n("351f"),d=n("533b"),h=n("6dec"),p=n("11f7"),f=n("f070"),g=n("7061"),m=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),v=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},_=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},x=function(e,t){return function(n,i){t(n,i,e)}};(function(e){e.Hidden=new(function(){function e(){this.type=0}return e}());var t=function(){function e(e,t,n){this.actions=e,this.editorPosition=t,this.widgetPosition=n,this.type=1}return e}();e.Showing=t})(i||(i={}));var N,D=function(e){function t(t,n,o){var r=e.call(this)||this;return r._editor=t,r._quickFixActionId=n,r._keybindingService=o,r._onClick=r._register(new w["a"]),r.onClick=r._onClick.event,r._state=i.Hidden,r._domNode=document.createElement("div"),r._domNode.className="lightbulb-glyph",r._editor.addContentWidget(r),r._register(r._editor.onDidChangeModelContent(function(e){var t=r._editor.getModel();(1!==r._state.type||!t||r._state.editorPosition.lineNumber>=t.getLineCount())&&r.hide()})),r._register(p["k"](r._domNode,"mousedown",function(e){if(1===r._state.type){r._editor.focus(),e.preventDefault();var t=p["x"](r._domNode),n=t.top,i=t.height,o=r._editor.getConfiguration().lineHeight,s=Math.floor(o/3);null!==r._state.widgetPosition.position&&r._state.widgetPosition.position.lineNumber22,f=function(e){return e>2&&o._editor.getTopForLineNumber(e)===o._editor.getTopForLineNumber(e-1)},g=s;if(!h)if(s>1&&!f(s-1))g-=1;else if(f(s+1)){if(a*r.fontInfo.spaceWidth<22)return this.hide()}else g+=1;this._state=new i.Showing(e,n,{position:{lineNumber:g,column:1},preference:t._posPref}),p["R"](this._domNode,"autofixable",e.hasAutoFix),this._editor.layoutContentWidget(this)},Object.defineProperty(t.prototype,"title",{set:function(e){this._domNode.title=e},enumerable:!0,configurable:!0}),t.prototype.hide=function(){this._state=i.Hidden,this._editor.layoutContentWidget(this)},t.prototype._updateLightBulbTitle=function(){var e,t=this._keybindingService.lookupKeybinding(this._quickFixActionId);e=t?S["a"]("quickFixWithKb","Show Fixes ({0})",t.getLabel()):S["a"]("quickFix","Show Fixes"),this.title=e},t._posPref=[0],t=O([x(2,h["a"])],t),t}(o["a"]),k=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),I=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},E=function(e,t){return function(n,i){t(n,i,e)}},M=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},T=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0))return[3,9];if(1!==e.trigger.autoApply&&(0!==e.trigger.autoApply||1!==t.actions.length))return[3,9];i.label=5;case 5:return i.trys.push([5,,7,8]),[4,this.delegate.applyCodeAction(t.actions[0],!1)];case 6:return i.sent(),[3,8];case 7:return t.dispose(),[7];case 8:return[2];case 9:return this._activeCodeActions.value=t,this._codeActionWidget.show(t,e.position),[3,11];case 10:this._codeActionWidget.isVisible?t.dispose():this._activeCodeActions.value=t,i.label=11;case 11:return[2]}})})},t.prototype.showCodeActionList=function(e,t){return M(this,void 0,void 0,function(){return T(this,function(n){return this._codeActionWidget.show(e,t),[2]})})},t.prototype._handleLightBulbSelect=function(e){this._codeActionWidget.show(e.actions,e)},t=I([E(3,d["a"]),E(4,h["a"])],t),t}(o["a"]),R=n("9e74"),A=n("4fc3"),F=n("b400"),j=n("b539"),W=n("5fe7"),V=n("6a89"),B=n("b707"),H=n("8495"),z=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),U=new A["d"]("supportedCodeAction",""),K=function(e){function t(t,n,i,o){void 0===o&&(o=250);var r=e.call(this)||this;return r._editor=t,r._markerService=n,r._signalChange=i,r._delay=o,r._autoTriggerTimer=r._register(new W["e"]),r._register(r._markerService.onMarkerChanged(function(e){return r._onMarkerChanges(e)})),r._register(r._editor.onDidChangeCursorPosition(function(){return r._onCursorChange()})),r}return z(t,e),t.prototype.trigger=function(e){var t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);return this._createEventAndSignalChange(e,t)},t.prototype._onMarkerChanges=function(e){var t=this,n=this._editor.getModel();n&&e.some(function(e){return e.toString()===n.uri.toString()})&&this._autoTriggerTimer.cancelAndSet(function(){t.trigger({type:"auto"})},this._delay)},t.prototype._onCursorChange=function(){var e=this;this._autoTriggerTimer.cancelAndSet(function(){e.trigger({type:"auto"})},this._delay)},t.prototype._getRangeOfMarker=function(e){var t=this._editor.getModel();if(t)for(var n=0,i=this._markerService.read({resource:t.uri});n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},X=function(e,t){return function(n,i){t(n,i,e)}},$=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},Q=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0,d=l.indexOf("Edge/")>=0,h=c||d,p=l.indexOf("Firefox")>=0,f=l.indexOf("AppleWebKit")>=0,g=l.indexOf("Chrome")>=0,m=!g&&l.indexOf("Safari")>=0,v=!g&&!m&&f,_=l.indexOf("iPad")>=0,b=d&&l.indexOf("WebView/")>=0;function y(){if(c)return!1;if(d){var e=l.indexOf("Edge/"),t=parseInt(l.substring(e+5,l.indexOf(".",e)),10);if(!t||t>=12&&t<=16)return!1}return!0}},1080:function(e,t,n){"use strict";n.d(t,"b",function(){return s}),n.d(t,"a",function(){return g});var i=n("3742"),o=n("6a89"),r=function(){function e(e,t,n,i,o){this.languageIdentifier=e,this.open=t,this.close=n,this.forwardRegex=i,this.reversedRegex=o}return e}(),s=function(){function e(e,t){var n=this;this.brackets=t.map(function(t){return new r(e,t[0],t[1],u({open:t[0],close:t[1]}),l({open:t[0],close:t[1]}))}),this.forwardRegex=c(this.brackets),this.reversedRegex=d(this.brackets),this.textIsBracket={},this.textIsOpenBracket={};var i=0;this.brackets.forEach(function(e){n.textIsBracket[e.open.toLowerCase()]=e,n.textIsBracket[e.close.toLowerCase()]=e,n.textIsOpenBracket[e.open.toLowerCase()]=!0,n.textIsOpenBracket[e.close.toLowerCase()]=!1,i=Math.max(i,e.open.length),i=Math.max(i,e.close.length)}),this.maxBracketLength=i}return e}();function a(e,t){var n={};return function(i){var o=e(i);return n.hasOwnProperty(o)||(n[o]=t(i)),n[o]}}var u=a(function(e){return e.open+";"+e.close},function(e){return p([e.open,e.close])}),l=a(function(e){return e.open+";"+e.close},function(e){return p([f(e.open),f(e.close)])}),c=a(function(e){return e.map(function(e){return e.open+";"+e.close}).join(";")},function(e){var t=[];return e.forEach(function(e){t.push(e.open),t.push(e.close)}),p(t)}),d=a(function(e){return e.map(function(e){return e.open+";"+e.close}).join(";")},function(e){var t=[];return e.forEach(function(e){t.push(f(e.open)),t.push(f(e.close))}),p(t)});function h(e){var t=/^[\w]+$/.test(e);return e=i["p"](e),t?"\\b"+e+"\\b":e}function p(e){var t="("+e.map(h).join(")|(")+")";return i["k"](t,!0)}var f=function(){function e(e){for(var t="",n=e.length-1;n>=0;n--)t+=e.charAt(n);return t}var t=null,n=null;return function(i){return t!==i&&(t=i,n=e(t)),n}}(),g=function(){function e(){}return e._findPrevBracketInText=function(e,t,n,i){var r=n.match(e);if(!r)return null;var s=n.length-(r.index||0),a=r[0].length,u=i+s;return new o["a"](t,u-a+1,t,u+1)},e.findPrevBracketInToken=function(e,t,n,i,o){var r=f(n),s=r.substring(n.length-o,n.length-i);return this._findPrevBracketInText(e,t,s,i)},e.findNextBracketInText=function(e,t,n,i){var r=n.match(e);if(!r)return null;var s=r.index||0,a=r[0].length;if(0===a)return null;var u=i+s;return new o["a"](t,u+1,t,u+1+a)},e.findNextBracketInToken=function(e,t,n,i,o){var r=n.substring(i,o);return this.findNextBracketInText(e,t,r,i)},e}()},"10f4":function(e,t,n){},1165:function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"b",function(){return c});var i,o,r=n("6d8e"),s=n("82c9"),a=n("0a0f"),u=n("4035"),l=Object(a["c"])("contextService");(function(e){function t(e){return e&&"object"===typeof e&&"string"===typeof e.id&&Array.isArray(e.folders)}e.isIWorkspace=t})(i||(i={})),function(e){function t(e){return e&&"object"===typeof e&&r["a"].isUri(e.uri)&&"string"===typeof e.name&&"function"===typeof e.toResource}e.isIWorkspaceFolder=t}(o||(o={}));(function(){function e(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=null),this._id=e,this._configuration=n,this._foldersMap=u["c"].forPaths(),this.folders=t}Object.defineProperty(e.prototype,"folders",{get:function(){return this._folders},set:function(e){this._folders=e,this.updateFoldersMap()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"configuration",{get:function(){return this._configuration},set:function(e){this._configuration=e},enumerable:!0,configurable:!0}),e.prototype.getFolder=function(e){return e&&this._foldersMap.findSubstr(e.with({scheme:e.scheme,authority:e.authority,path:e.path}).toString())||null},e.prototype.updateFoldersMap=function(){this._foldersMap=u["c"].forPaths();for(var e=0,t=this.folders;e=0){if(r=s+o,(0===s||32===n.charCodeAt(s-1))&&32===n.charCodeAt(r))return this._lastStart=s,void(this._lastEnd=r+1);if(s>0&&32===n.charCodeAt(s-1)&&r===i)return this._lastStart=s-1,void(this._lastEnd=r);if(0===s&&r===i)return this._lastStart=0,void(this._lastEnd=r)}this._lastStart=-1}else this._lastStart=-1}else this._lastStart=-1},e.prototype.hasClass=function(e,t){return this._findClassName(e,t),-1!==this._lastStart},e.prototype.addClasses=function(e){for(var t=this,n=[],i=1;i0){t.sort(j.sort);var o=t.shift();o.execute()}i=!1};R=function(t,i){void 0===i&&(i=0);var r=new j(t,i);return e.push(r),n||(n=!0,F(o)),r},P=function(e,n){if(i){var o=new j(e,n);return t.push(o),o}return R(e,n)}})();var W=16,V=function(e,t){return t},B=function(e){function t(t,n,i,o,r){void 0===o&&(o=V),void 0===r&&(r=W);var s=e.call(this)||this,u=null,l=0,c=s._register(new a["e"]),d=function(){l=(new Date).getTime(),i(u),u=null};return s._register(k(t,n,function(e){u=o(u,e);var t=(new Date).getTime()-l;t>=r?(c.cancel(),d()):c.setIfNotSet(d,r-t)})),s}return f(t,e),t}(c["a"]);function H(e,t,n,i,o){return new B(e,t,n,i,o)}function z(e){return document.defaultView.getComputedStyle(e,null)}var U=function(){function e(){}return e.convertToPixels=function(e,t){return parseFloat(t)||0},e.getDimension=function(t,n,i){var o=z(t),r="0";return o&&(r=o.getPropertyValue?o.getPropertyValue(n):o.getAttribute(i)),e.convertToPixels(t,r)},e.getBorderLeftWidth=function(t){return e.getDimension(t,"border-left-width","borderLeftWidth")},e.getBorderRightWidth=function(t){return e.getDimension(t,"border-right-width","borderRightWidth")},e.getBorderTopWidth=function(t){return e.getDimension(t,"border-top-width","borderTopWidth")},e.getBorderBottomWidth=function(t){return e.getDimension(t,"border-bottom-width","borderBottomWidth")},e.getPaddingLeft=function(t){return e.getDimension(t,"padding-left","paddingLeft")},e.getPaddingRight=function(t){return e.getDimension(t,"padding-right","paddingRight")},e.getPaddingTop=function(t){return e.getDimension(t,"padding-top","paddingTop")},e.getPaddingBottom=function(t){return e.getDimension(t,"padding-bottom","paddingBottom")},e.getMarginLeft=function(t){return e.getDimension(t,"margin-left","marginLeft")},e.getMarginTop=function(t){return e.getDimension(t,"margin-top","marginTop")},e.getMarginRight=function(t){return e.getDimension(t,"margin-right","marginRight")},e.getMarginBottom=function(t){return e.getDimension(t,"margin-bottom","marginBottom")},e}(),K=function(){function e(e,t){this.width=e,this.height=t}return e}();function q(e){var t=e.offsetParent,n=e.offsetTop,i=e.offsetLeft;while(null!==(e=e.parentNode)&&e!==document.body&&e!==document.documentElement){n-=e.scrollTop;var o=z(e);o&&(i-="rtl"!==o.direction?e.scrollLeft:-e.scrollLeft),e===t&&(i+=U.getBorderLeftWidth(e),n+=U.getBorderTopWidth(e),n+=e.offsetTop,i+=e.offsetLeft,t=e.offsetParent)}return{left:i,top:n}}function G(e){var t=e.getBoundingClientRect();return{left:t.left+Z.scrollX,top:t.top+Z.scrollY,width:t.width,height:t.height}}var Z=new(function(){function e(){}return Object.defineProperty(e.prototype,"scrollX",{get:function(){return"number"===typeof window.scrollX?window.scrollX:document.body.scrollLeft+document.documentElement.scrollLeft},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scrollY",{get:function(){return"number"===typeof window.scrollY?window.scrollY:document.body.scrollTop+document.documentElement.scrollTop},enumerable:!0,configurable:!0}),e}());function Y(e){var t=U.getMarginLeft(e)+U.getMarginRight(e);return e.offsetWidth+t}function X(e){var t=U.getBorderLeftWidth(e)+U.getBorderRightWidth(e),n=U.getPaddingLeft(e)+U.getPaddingRight(e);return e.offsetWidth-t-n}function $(e){var t=U.getBorderTopWidth(e)+U.getBorderBottomWidth(e),n=U.getPaddingTop(e)+U.getPaddingBottom(e);return e.offsetHeight-t-n}function Q(e){var t=U.getMarginTop(e)+U.getMarginBottom(e);return e.offsetHeight+t}function J(e,t){while(e){if(e===t)return!0;e=e.parentNode}return!1}function ee(e,t,n){while(e){if(C(e,t))return e;if(n)if("string"===typeof n){if(C(e,n))return null}else if(e===n)return null;e=e.parentNode}return null}function te(e){void 0===e&&(e=document.getElementsByTagName("head")[0]);var t=document.createElement("style");return t.type="text/css",t.media="screen",e.appendChild(t),t}var ne=null;function ie(){return ne||(ne=te()),ne}function oe(e){return e&&e.sheet&&e.sheet.rules?e.sheet.rules:e&&e.sheet&&e.sheet.cssRules?e.sheet.cssRules:[]}function re(e,t,n){void 0===n&&(n=ie()),n&&t&&n.sheet.insertRule(e+"{"+t+"}",0)}function se(e,t){if(void 0===t&&(t=ie()),t){for(var n=oe(t),i=[],o=0;o=0;o--)t.sheet.deleteRule(i[o])}}function ae(e){return"object"===typeof HTMLElement?e instanceof HTMLElement:e&&"object"===typeof e&&1===e.nodeType&&"string"===typeof e.nodeName}var ue={CLICK:"click",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:i["m"]?"webkitAnimationStart":"animationstart",ANIMATION_END:i["m"]?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:i["m"]?"webkitAnimationIteration":"animationiteration"},le={stop:function(e,t){e.preventDefault?e.preventDefault():e.returnValue=!1,t&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)}};function ce(e){for(var t=[],n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)t[n]=e.scrollTop,e=e.parentNode;return t}function de(e,t){for(var n=0;e&&e.nodeType===e.ELEMENT_NODE;n++)e.scrollTop!==t[n]&&(e.scrollTop=t[n]),e=e.parentNode}var he=function(e){function t(t){var n=e.call(this)||this;n._onDidFocus=n._register(new l["a"]),n.onDidFocus=n._onDidFocus.event,n._onDidBlur=n._register(new l["a"]),n.onDidBlur=n._onDidBlur.event;var i=J(document.activeElement,t),r=!1,s=function(){r=!1,i||(i=!0,n._onDidFocus.fire())},a=function(){i&&(r=!0,window.setTimeout(function(){r&&(r=!1,i=!1,n._onDidBlur.fire())},0))};return n._register(Object(o["a"])(t,ue.FOCUS,!0)(s)),n._register(Object(o["a"])(t,ue.BLUR,!0)(a)),n}return f(t,e),t}(c["a"]);function pe(e){return new he(e)}function fe(e){for(var t=[],n=1;n_)n._setDesiredScrollPositionNow(r.getScrollPosition());else{var a=n._sliderMousePosition(e),u=a-i;n._setDesiredScrollPositionNow(r.getDesiredScrollPositionFromDelta(u))}},function(){n.slider.toggleClassName("active",!1),n._host.onDragEnd(),t()}),this._host.onDragStart()},t.prototype._setDesiredScrollPositionNow=function(e){var t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)},t}(u["a"]),y=20,w=function(){function e(e,t,n){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(n),this._arrowSize=Math.round(e),this._visibleSize=0,this._scrollSize=0,this._scrollPosition=0,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}return e.prototype.clone=function(){var t=new e(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize);return t.setVisibleSize(this._visibleSize),t.setScrollSize(this._scrollSize),t.setScrollPosition(this._scrollPosition),t},e.prototype.setVisibleSize=function(e){var t=Math.round(e);return this._visibleSize!==t&&(this._visibleSize=t,this._refreshComputedValues(),!0)},e.prototype.setScrollSize=function(e){var t=Math.round(e);return this._scrollSize!==t&&(this._scrollSize=t,this._refreshComputedValues(),!0)},e.prototype.setScrollPosition=function(e){var t=Math.round(e);return this._scrollPosition!==t&&(this._scrollPosition=t,this._refreshComputedValues(),!0)},e._computeValues=function(e,t,n,i,o){var r=Math.max(0,n-e),s=Math.max(0,r-2*t),a=i>0&&i>n;if(!a)return{computedAvailableSize:Math.round(r),computedIsNeeded:a,computedSliderSize:Math.round(s),computedSliderRatio:0,computedSliderPosition:0};var u=Math.round(Math.max(y,Math.floor(n*s/i))),l=(s-u)/(i-n),c=o*l;return{computedAvailableSize:Math.round(r),computedIsNeeded:a,computedSliderSize:Math.round(u),computedSliderRatio:l,computedSliderPosition:Math.round(c)}},e.prototype._refreshComputedValues=function(){var t=e._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=t.computedAvailableSize,this._computedIsNeeded=t.computedIsNeeded,this._computedSliderSize=t.computedSliderSize,this._computedSliderRatio=t.computedSliderRatio,this._computedSliderPosition=t.computedSliderPosition},e.prototype.getArrowSize=function(){return this._arrowSize},e.prototype.getScrollPosition=function(){return this._scrollPosition},e.prototype.getRectangleLargeSize=function(){return this._computedAvailableSize},e.prototype.getRectangleSmallSize=function(){return this._scrollbarSize},e.prototype.isNeeded=function(){return this._computedIsNeeded},e.prototype.getSliderSize=function(){return this._computedSliderSize},e.prototype.getSliderPosition=function(){return this._computedSliderPosition},e.prototype.getDesiredScrollPositionFromOffset=function(e){if(!this._computedIsNeeded)return 0;var t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)},e.prototype.getDesiredScrollPositionFromDelta=function(e){if(!this._computedIsNeeded)return 0;var t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)},e}(),C=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),S=function(e){function t(t,n,i){var o=e.call(this,{lazyRender:n.lazyRender,host:i,scrollbarState:new w(n.horizontalHasArrows?n.arrowSize:0,2===n.horizontal?0:n.horizontalScrollbarSize,2===n.vertical?0:n.verticalScrollbarSize),visibility:n.horizontal,extraScrollbarClassName:"horizontal",scrollable:t})||this;if(n.horizontalHasArrows){var r=(n.arrowSize-d)/2,a=(n.horizontalScrollbarSize-d)/2;o._createArrow({className:"left-arrow",top:a,left:r,bottom:void 0,right:void 0,bgWidth:n.arrowSize,bgHeight:n.horizontalScrollbarSize,onActivate:function(){return o._host.onMouseWheel(new s["c"](null,1,0))}}),o._createArrow({className:"right-arrow",top:a,left:void 0,bottom:void 0,right:r,bgWidth:n.arrowSize,bgHeight:n.horizontalScrollbarSize,onActivate:function(){return o._host.onMouseWheel(new s["c"](null,-1,0))}})}return o._createSlider(Math.floor((n.horizontalScrollbarSize-n.horizontalSliderSize)/2),0,void 0,n.horizontalSliderSize),o}return C(t,e),t.prototype._updateSlider=function(e,t){this.slider.setWidth(e),this.slider.setLeft(t)},t.prototype._renderDomNode=function(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)},t.prototype.onDidScroll=function(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender},t.prototype._mouseDownRelativePosition=function(e,t){return e},t.prototype._sliderMousePosition=function(e){return e.posx},t.prototype._sliderOrthogonalMousePosition=function(e){return e.posy},t.prototype.writeScrollPosition=function(e,t){e.scrollLeft=t},t}(b),L=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),O=function(e){function t(t,n,i){var o=e.call(this,{lazyRender:n.lazyRender,host:i,scrollbarState:new w(n.verticalHasArrows?n.arrowSize:0,2===n.vertical?0:n.verticalScrollbarSize,0),visibility:n.vertical,extraScrollbarClassName:"vertical",scrollable:t})||this;if(n.verticalHasArrows){var r=(n.arrowSize-d)/2,a=(n.verticalScrollbarSize-d)/2;o._createArrow({className:"up-arrow",top:r,left:a,bottom:void 0,right:void 0,bgWidth:n.verticalScrollbarSize,bgHeight:n.arrowSize,onActivate:function(){return o._host.onMouseWheel(new s["c"](null,0,1))}}),o._createArrow({className:"down-arrow",top:void 0,left:a,bottom:r,right:void 0,bgWidth:n.verticalScrollbarSize,bgHeight:n.arrowSize,onActivate:function(){return o._host.onMouseWheel(new s["c"](null,0,-1))}})}return o._createSlider(0,Math.floor((n.verticalScrollbarSize-n.verticalSliderSize)/2),n.verticalSliderSize,void 0),o}return L(t,e),t.prototype._updateSlider=function(e,t){this.slider.setHeight(e),this.slider.setTop(t)},t.prototype._renderDomNode=function(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)},t.prototype.onDidScroll=function(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender},t.prototype._mouseDownRelativePosition=function(e,t){return t},t.prototype._sliderMousePosition=function(e){return e.posy},t.prototype._sliderOrthogonalMousePosition=function(e){return e.posx},t.prototype.writeScrollPosition=function(e,t){e.scrollTop=t},t}(b),x=n("308f"),N=n("42e3");n.d(t,"b",function(){return R}),n.d(t,"c",function(){return A}),n.d(t,"a",function(){return F});var D=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),k=500,I=50,E=!0,M=function(){function e(e,t,n){this.timestamp=e,this.deltaX=t,this.deltaY=n,this.score=0}return e}(),T=function(){function e(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}return e.prototype.isPhysicalMouseWheel=function(){if(-1===this._front&&-1===this._rear)return!1;var e=1,t=0,n=1,i=this._rear;do{var o=i===this._front?e:Math.pow(2,-n);if(e-=o,t+=this._memory[i].score*o,i===this._front)break;i=(this._capacity+i-1)%this._capacity,n++}while(1);return t<=.5},e.prototype.accept=function(e,t,n){var i=new M(e,t,n);i.score=this._computeScore(i),-1===this._front&&-1===this._rear?(this._memory[0]=i,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=i)},e.prototype._computeScore=function(e){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;var t=.5;-1===this._front&&-1===this._rear||this._memory[this._rear];return(Math.abs(e.deltaX-Math.round(e.deltaX))>0||Math.abs(e.deltaY-Math.round(e.deltaY))>0)&&(t+=.25),Math.min(Math.max(t,0),1)},e.INSTANCE=new e,e}(),P=function(e){function t(t,n,i){var o=e.call(this)||this;o._onScroll=o._register(new x["a"]),o.onScroll=o._onScroll.event,t.style.overflow="hidden",o._options=j(n),o._scrollable=i,o._register(o._scrollable.onScroll(function(e){o._onDidScroll(e),o._onScroll.fire(e)}));var s={onMouseWheel:function(e){return o._onMouseWheel(e)},onDragStart:function(){return o._onDragStart()},onDragEnd:function(){return o._onDragEnd()}};return o._verticalScrollbar=o._register(new O(o._scrollable,o._options,s)),o._horizontalScrollbar=o._register(new S(o._scrollable,o._options,s)),o._domNode=document.createElement("div"),o._domNode.className="monaco-scrollable-element "+o._options.className,o._domNode.setAttribute("role","presentation"),o._domNode.style.position="relative",o._domNode.style.overflow="hidden",o._domNode.appendChild(t),o._domNode.appendChild(o._horizontalScrollbar.domNode.domNode),o._domNode.appendChild(o._verticalScrollbar.domNode.domNode),o._options.useShadows?(o._leftShadowDomNode=Object(r["b"])(document.createElement("div")),o._leftShadowDomNode.setClassName("shadow"),o._domNode.appendChild(o._leftShadowDomNode.domNode),o._topShadowDomNode=Object(r["b"])(document.createElement("div")),o._topShadowDomNode.setClassName("shadow"),o._domNode.appendChild(o._topShadowDomNode.domNode),o._topLeftShadowDomNode=Object(r["b"])(document.createElement("div")),o._topLeftShadowDomNode.setClassName("shadow top-left-corner"),o._domNode.appendChild(o._topLeftShadowDomNode.domNode)):(o._leftShadowDomNode=null,o._topShadowDomNode=null,o._topLeftShadowDomNode=null),o._listenOnDomNode=o._options.listenOnDomNode||o._domNode,o._mouseWheelToDispose=[],o._setListeningToMouseWheel(o._options.handleMouseWheel),o.onmouseover(o._listenOnDomNode,function(e){return o._onMouseOver(e)}),o.onnonbubblingmouseout(o._listenOnDomNode,function(e){return o._onMouseOut(e)}),o._hideTimeout=o._register(new l["e"]),o._isDragging=!1,o._mouseIsOver=!1,o._shouldRender=!0,o._revealOnScroll=!0,o}return D(t,e),t.prototype.dispose=function(){this._mouseWheelToDispose=Object(p["f"])(this._mouseWheelToDispose),e.prototype.dispose.call(this)},t.prototype.getDomNode=function(){return this._domNode},t.prototype.getOverviewRulerLayoutInfo=function(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}},t.prototype.delegateVerticalScrollbarMouseDown=function(e){this._verticalScrollbar.delegateMouseDown(e)},t.prototype.getScrollDimensions=function(){return this._scrollable.getScrollDimensions()},t.prototype.setScrollDimensions=function(e){this._scrollable.setScrollDimensions(e)},t.prototype.updateClassName=function(e){this._options.className=e,m["d"]&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className},t.prototype.updateOptions=function(e){var t=j(e);this._options.handleMouseWheel=t.handleMouseWheel,this._options.mouseWheelScrollSensitivity=t.mouseWheelScrollSensitivity,this._options.fastScrollSensitivity=t.fastScrollSensitivity,this._setListeningToMouseWheel(this._options.handleMouseWheel),this._options.lazyRender||this._render()},t.prototype._setListeningToMouseWheel=function(e){var t=this,n=this._mouseWheelToDispose.length>0;if(n!==e&&(this._mouseWheelToDispose=Object(p["f"])(this._mouseWheelToDispose),e)){var r=function(e){t._onMouseWheel(new s["c"](e))};this._mouseWheelToDispose.push(o["h"](this._listenOnDomNode,i["g"]?"mousewheel":"wheel",r))}},t.prototype._onMouseWheel=function(e){var t,n=T.INSTANCE;if(E&&n.accept(Date.now(),e.deltaX,e.deltaY),e.deltaY||e.deltaX){var i=e.deltaY*this._options.mouseWheelScrollSensitivity,o=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.flipAxes&&(t=[o,i],i=t[0],o=t[1]);var r=!m["d"]&&e.browserEvent&&e.browserEvent.shiftKey;!this._options.scrollYToX&&!r||o||(o=i,i=0),e.browserEvent&&e.browserEvent.altKey&&(o*=this._options.fastScrollSensitivity,i*=this._options.fastScrollSensitivity);var s=this._scrollable.getFutureScrollPosition(),a={};if(i){var u=s.scrollTop-I*i;this._verticalScrollbar.writeScrollPosition(a,u)}if(o){var l=s.scrollLeft-I*o;this._horizontalScrollbar.writeScrollPosition(a,l)}if(a=this._scrollable.validateScrollPosition(a),s.scrollLeft!==a.scrollLeft||s.scrollTop!==a.scrollTop){var c=E&&this._options.mouseWheelSmoothScroll&&n.isPhysicalMouseWheel();c?this._scrollable.setScrollPositionSmooth(a):this._scrollable.setScrollPositionNow(a),this._shouldRender=!0}}(this._options.alwaysConsumeMouseWheel||this._shouldRender)&&(e.preventDefault(),e.stopPropagation())},t.prototype._onDidScroll=function(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()},t.prototype.renderNow=function(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()},t.prototype._render=function(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){var e=this._scrollable.getCurrentScrollPosition(),t=e.scrollTop>0,n=e.scrollLeft>0;this._leftShadowDomNode.setClassName("shadow"+(n?" left":"")),this._topShadowDomNode.setClassName("shadow"+(t?" top":"")),this._topLeftShadowDomNode.setClassName("shadow top-left-corner"+(t?" top":"")+(n?" left":""))}},t.prototype._onDragStart=function(){this._isDragging=!0,this._reveal()},t.prototype._onDragEnd=function(){this._isDragging=!1,this._hide()},t.prototype._onMouseOut=function(e){this._mouseIsOver=!1,this._hide()},t.prototype._onMouseOver=function(e){this._mouseIsOver=!0,this._reveal()},t.prototype._reveal=function(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()},t.prototype._hide=function(){this._mouseIsOver||this._isDragging||(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())},t.prototype._scheduleHide=function(){var e=this;this._mouseIsOver||this._isDragging||this._hideTimeout.cancelAndSet(function(){return e._hide()},k)},t}(u["a"]),R=function(e){function t(t,n){var i=this;n=n||{},n.mouseWheelSmoothScroll=!1;var r=new N["a"](0,function(e){return o["P"](e)});return i=e.call(this,t,n,r)||this,i._register(r),i}return D(t,e),t.prototype.setScrollPosition=function(e){this._scrollable.setScrollPositionNow(e)},t.prototype.getScrollPosition=function(){return this._scrollable.getCurrentScrollPosition()},t}(P),A=function(e){function t(t,n,i){return e.call(this,t,n,i)||this}return D(t,e),t}(P),F=function(e){function t(t,n){var i=e.call(this,t,n)||this;return i._element=t,i.onScroll(function(e){e.scrollTopChanged&&(i._element.scrollTop=e.scrollTop),e.scrollLeftChanged&&(i._element.scrollLeft=e.scrollLeft)}),i.scanDomNode(),i}return D(t,e),t.prototype.scanDomNode=function(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})},t}(R);function j(e){var t={lazyRender:"undefined"!==typeof e.lazyRender&&e.lazyRender,className:"undefined"!==typeof e.className?e.className:"",useShadows:"undefined"===typeof e.useShadows||e.useShadows,handleMouseWheel:"undefined"===typeof e.handleMouseWheel||e.handleMouseWheel,flipAxes:"undefined"!==typeof e.flipAxes&&e.flipAxes,alwaysConsumeMouseWheel:"undefined"!==typeof e.alwaysConsumeMouseWheel&&e.alwaysConsumeMouseWheel,scrollYToX:"undefined"!==typeof e.scrollYToX&&e.scrollYToX,mouseWheelScrollSensitivity:"undefined"!==typeof e.mouseWheelScrollSensitivity?e.mouseWheelScrollSensitivity:1,fastScrollSensitivity:"undefined"!==typeof e.fastScrollSensitivity?e.fastScrollSensitivity:5,mouseWheelSmoothScroll:"undefined"===typeof e.mouseWheelSmoothScroll||e.mouseWheelSmoothScroll,arrowSize:"undefined"!==typeof e.arrowSize?e.arrowSize:11,listenOnDomNode:"undefined"!==typeof e.listenOnDomNode?e.listenOnDomNode:null,horizontal:"undefined"!==typeof e.horizontal?e.horizontal:1,horizontalScrollbarSize:"undefined"!==typeof e.horizontalScrollbarSize?e.horizontalScrollbarSize:10,horizontalSliderSize:"undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:0,horizontalHasArrows:"undefined"!==typeof e.horizontalHasArrows&&e.horizontalHasArrows,vertical:"undefined"!==typeof e.vertical?e.vertical:1,verticalScrollbarSize:"undefined"!==typeof e.verticalScrollbarSize?e.verticalScrollbarSize:10,verticalHasArrows:"undefined"!==typeof e.verticalHasArrows&&e.verticalHasArrows,verticalSliderSize:"undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:0};return t.horizontalSliderSize="undefined"!==typeof e.horizontalSliderSize?e.horizontalSliderSize:t.horizontalScrollbarSize,t.verticalSliderSize="undefined"!==typeof e.verticalSliderSize?e.verticalSliderSize:t.verticalScrollbarSize,m["d"]&&(t.className+=" mac"),t}},"191f":function(e,t,n){"use strict";var i=n("fdcc"),o=n("3742"),r=n("2c29"),s=n("ccde"),a=n("6a89"),u=n("8025"),l=function(){function e(e,t,n){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=n}return e.prototype.getEditOperations=function(e,t){t.addTrackedEditOperation(new a["a"](this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new a["a"](this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)},e.prototype.computeCursorState=function(e,t){var n=t.getInverseEditOperations(),i=n[0].range,o=n[1].range;return new u["a"](i.endLineNumber,i.endColumn,o.endLineNumber,o.endColumn-this._charAfterSelection.length)},e}(),c=n("2e5d"),d=n("e6ff"),h=n("2837"),p=n("70cb");n.d(t,"a",function(){return g}),n.d(t,"b",function(){return m});var f=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),g=function(){function e(){}return e.indent=function(e,t,n){if(null===t||null===n)return[];for(var i=[],o=0,r=n.length;o1){var l=void 0;for(l=i-1;l>=1;l--){var c=n.getLineContent(l),d=o["A"](c);if(d>=0)break}if(l<1)return null;var f=n.getLineMaxColumn(l),g=p["a"].getEnterAction(n,new a["a"](l,f,l,f));g&&(s=g.indentation,r=g.enterAction,r&&(s+=r.appendText))}return r&&(r===h["a"].Indent&&(s=e.shiftIndent(t,s)),r===h["a"].Outdent&&(s=e.unshiftIndent(t,s)),s=t.normalizeIndentation(s)),s||null},e._replaceJumpToNextIndent=function(e,t,n,i){var o="",s=n.getStartPosition();if(e.insertSpaces)for(var a=c["a"].visibleColumnFromColumn2(e,t,s),u=e.indentSize,l=u-a%u,d=0;d=0?s.setEndPosition(s.endLineNumber,Math.max(s.endColumn,k+1)):s.setEndPosition(s.endLineNumber,n.getLineMaxColumn(s.endLineNumber)),i)return new r["d"](s,N+t.normalizeIndentation(C.afterEnter),!0);var I=0;return x<=k+1&&(t.insertSpaces||(O=Math.ceil(O/t.indentSize)),I=Math.min(O+1-t.normalizeIndentation(C.afterEnter).length-1,0)),new r["c"](s,N+t.normalizeIndentation(C.afterEnter),0,I,!0)}return e._typeCommand(s,"\n"+t.normalizeIndentation(L),i)},e._isAutoIndentType=function(e,t,n){if(!e.autoIndent)return!1;for(var i=0,o=n.length;ir.open.length){for(var c=!0,d=0,h=n;dv.column-1){var b=_.charAt(v.column-1),y=e._isBeforeClosingBrace(t,l,b);if(!y&&!h(b))return null}if(!n.isCheapToTokenize(v.lineNumber))return null;if(1===l.open.length&&a&&"always"!==u){var w=Object(d["a"])(t.wordSeparators);if(s&&v.column>1&&0===w.get(_.charCodeAt(v.column-2)))return null;if(!s&&v.column>2&&0===w.get(_.charCodeAt(v.column-3)))return null}n.forceTokenization(v.lineNumber);var C=n.getLineTokens(v.lineNumber),S=!1;try{S=p["a"].shouldAutoClosePair(l,C,s?v.column:v.column-1)}catch(L){Object(i["e"])(L)}if(!S)return null}return l},e._runAutoClosingOpenCharType=function(e,t,n,i,o,r,s){for(var a=[],u=0,l=i.length;u=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},_=function(e,t){return function(n,i){t(n,i,e)}},b=function(){function e(e,t){this.decorationIds=[],this.editor=e,this.editorWorkerService=t}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.dispose=function(){},e.prototype.getId=function(){return e.ID},e.prototype.run=function(t,n){var i=this;this.currentRequest&&this.currentRequest.cancel();var s=this.editor.getSelection(),a=this.editor.getModel();if(a&&s){var u=s;if(u.startLineNumber===u.endLineNumber){var d=new c["a"](this.editor,5),h=a.uri;return this.editorWorkerService.canNavigateValueSet(h)?(this.currentRequest=Object(f["f"])(function(e){return i.editorWorkerService.navigateValueSet(h,u,n)}),this.currentRequest.then(function(n){if(n&&n.range&&n.value&&d.validate(i.editor)){var s=o["a"].lift(n.range),a=n.range,c=n.value.length-(u.endColumn-u.startColumn);a={startLineNumber:a.startLineNumber,startColumn:a.startColumn,endLineNumber:a.endLineNumber,endColumn:a.startColumn+n.value.length},c>1&&(u=new r["a"](u.startLineNumber,u.startColumn,u.endLineNumber,u.endColumn+c-1));var h=new l(s,u,n.value);i.editor.pushUndoStop(),i.editor.executeCommand(t,h),i.editor.pushUndoStop(),i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[{range:a,options:e.DECORATION}]),i.decorationRemover&&i.decorationRemover.cancel(),i.decorationRemover=Object(f["l"])(350),i.decorationRemover.then(function(){return i.decorationIds=i.editor.deltaDecorations(i.decorationIds,[])}).catch(g["e"])}}).catch(g["e"])):Promise.resolve(void 0)}}},e.ID="editor.contrib.inPlaceReplaceController",e.DECORATION=p["a"].register({className:"valueSetReplacement"}),e=v([_(1,u["a"])],e),e}(),y=function(e){function t(){return e.call(this,{id:"editor.action.inPlaceReplace.up",label:i["a"]("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:s["a"].writable,kbOpts:{kbExpr:s["a"].editorTextFocus,primary:3154,weight:100}})||this}return m(t,e),t.prototype.run=function(e,t){var n=b.get(t);return n?n.run(this.id,!0):Promise.resolve(void 0)},t}(a["b"]),w=function(e){function t(){return e.call(this,{id:"editor.action.inPlaceReplace.down",label:i["a"]("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:s["a"].writable,kbOpts:{kbExpr:s["a"].editorTextFocus,primary:3156,weight:100}})||this}return m(t,e),t.prototype.run=function(e,t){var n=b.get(t);return n?n.run(this.id,!1):Promise.resolve(void 0)},t}(a["b"]);Object(a["h"])(b),Object(a["f"])(y),Object(a["f"])(w),Object(d["f"])(function(e,t){var n=e.getColor(h["d"]);n&&t.addRule(".monaco-editor.vs .valueSetReplacement { outline: solid 2px "+n+"; }")})},"1b0e":function(e,t,n){"use strict";var i=function(){function e(e,t,n,i){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=i}return e.prototype.getOriginalEnd=function(){return this.originalStart+this.originalLength},e.prototype.getModifiedEnd=function(){return this.modifiedStart+this.modifiedLength},e}();function o(e){return{getLength:function(){return e.length},getElementAtIndex:function(t){return e.charCodeAt(t)}}}function r(e,t,n){return new c(o(e),o(t)).ComputeDiff(n)}n.d(t,"b",function(){return r}),n.d(t,"a",function(){return c});var s=function(){function e(){}return e.Assert=function(e,t){if(!e)throw new Error(t)},e}(),a=function(){function e(){}return e.Copy=function(e,t,n,i,o){for(var r=0;r0||this.m_modifiedCount>0)&&this.m_changes.push(new i(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=Number.MAX_VALUE,this.m_modifiedStart=Number.MAX_VALUE},e.prototype.AddOriginalElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++},e.prototype.AddModifiedElement=function(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++},e.prototype.getChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes},e.prototype.getReverseChanges=function(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes},e}(),c=function(){function e(e,t,n){void 0===n&&(n=null),this.OriginalSequence=e,this.ModifiedSequence=t,this.ContinueProcessingPredicate=n,this.m_forwardHistory=[],this.m_reverseHistory=[]}return e.prototype.ElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.OriginalElementsAreEqual=function(e,t){return this.OriginalSequence.getElementAtIndex(e)===this.OriginalSequence.getElementAtIndex(t)},e.prototype.ModifiedElementsAreEqual=function(e,t){return this.ModifiedSequence.getElementAtIndex(e)===this.ModifiedSequence.getElementAtIndex(t)},e.prototype.ComputeDiff=function(e){return this._ComputeDiff(0,this.OriginalSequence.getLength()-1,0,this.ModifiedSequence.getLength()-1,e)},e.prototype._ComputeDiff=function(e,t,n,i,o){var r=[!1],s=this.ComputeDiffRecursive(e,t,n,i,r);return o?this.PrettifyChanges(s):s},e.prototype.ComputeDiffRecursive=function(e,t,n,o,r){r[0]=!1;while(e<=t&&n<=o&&this.ElementsAreEqual(e,n))e++,n++;while(t>=e&&o>=n&&this.ElementsAreEqual(t,o))t--,o--;if(e>t||n>o){var a=void 0;return n<=o?(s.Assert(e===t+1,"originalStart should only be one more than originalEnd"),a=[new i(e,0,n,o-n+1)]):e<=t?(s.Assert(n===o+1,"modifiedStart should only be one more than modifiedEnd"),a=[new i(e,t-e+1,n,0)]):(s.Assert(e===t+1,"originalStart should only be one more than originalEnd"),s.Assert(n===o+1,"modifiedStart should only be one more than modifiedEnd"),a=[]),a}var u=[0],l=[0],c=this.ComputeRecursionPoint(e,t,n,o,u,l,r),d=u[0],h=l[0];if(null!==c)return c;if(!r[0]){var p=this.ComputeDiffRecursive(e,d,n,h,r),f=[];return f=r[0]?[new i(d+1,t-(d+1)+1,h+1,o-(h+1)+1)]:this.ComputeDiffRecursive(d+1,t,h+1,o,r),this.ConcatenateChanges(p,f)}return[new i(e,t-e+1,n,o-n+1)]},e.prototype.WALKTRACE=function(e,t,n,o,r,s,a,u,c,d,h,p,f,g,m,v,_,b){var y,w=null,C=null,S=new l,L=t,O=n,x=f[0]-v[0]-o,N=Number.MIN_VALUE,D=this.m_forwardHistory.length-1;do{y=x+e,y===L||y=0&&(c=this.m_forwardHistory[D],e=c[0],L=1,O=c.length-1)}while(--D>=-1);if(w=S.getReverseChanges(),b[0]){var k=f[0]+1,I=v[0]+1;if(null!==w&&w.length>0){var E=w[w.length-1];k=Math.max(k,E.getOriginalEnd()),I=Math.max(I,E.getModifiedEnd())}C=[new i(k,p-k+1,I,m-I+1)]}else{S=new l,L=s,O=a,x=f[0]-v[0]-u,N=Number.MAX_VALUE,D=_?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{y=x+r,y===L||y=d[y+1]?(h=d[y+1]-1,g=h-x-u,h>N&&S.MarkNextChange(),N=h+1,S.AddOriginalElement(h+1,g+1),x=y+1-r):(h=d[y-1],g=h-x-u,h>N&&S.MarkNextChange(),N=h,S.AddModifiedElement(h+1,g+1),x=y-1-r),D>=0&&(d=this.m_reverseHistory[D],r=d[0],L=1,O=d.length-1)}while(--D>=-1);C=S.getChanges()}return this.ConcatenateChanges(w,C)},e.prototype.ComputeRecursionPoint=function(e,t,n,o,r,s,l){var c,d=0,h=0,p=0,f=0,g=0,m=0;e--,n--,r[0]=0,s[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];var v,_,b=t-e+(o-n),y=b+1,w=new Array(y),C=new Array(y),S=o-n,L=t-e,O=e-n,x=t-o,N=L-S,D=N%2===0;for(w[S]=e,C[L]=t,l[0]=!1,c=1;c<=b/2+1;c++){var k=0,I=0;for(p=this.ClipDiagonalBound(S-c,c,S,y),f=this.ClipDiagonalBound(S+c,c,S,y),v=p;v<=f;v+=2){d=v===p||vk+I&&(k=d,I=h),!D&&Math.abs(v-L)<=c-1&&d>=C[v])return r[0]=d,s[0]=h,_<=C[v]&&u>0&&c<=u+1?this.WALKTRACE(S,p,f,O,L,g,m,x,w,C,d,t,r,h,o,s,D,l):null}var E=(k-e+(I-n)-c)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(k,this.OriginalSequence,E))return l[0]=!0,r[0]=k,s[0]=I,E>0&&u>0&&c<=u+1?this.WALKTRACE(S,p,f,O,L,g,m,x,w,C,d,t,r,h,o,s,D,l):(e++,n++,[new i(e,t-e+1,n,o-n+1)]);for(g=this.ClipDiagonalBound(L-c,c,L,y),m=this.ClipDiagonalBound(L+c,c,L,y),v=g;v<=m;v+=2){d=v===g||v=C[v+1]?C[v+1]-1:C[v-1],h=d-(v-L)-x,_=d;while(d>e&&h>n&&this.ElementsAreEqual(d,h))d--,h--;if(C[v]=d,D&&Math.abs(v-S)<=c&&d<=w[v])return r[0]=d,s[0]=h,_>=w[v]&&u>0&&c<=u+1?this.WALKTRACE(S,p,f,O,L,g,m,x,w,C,d,t,r,h,o,s,D,l):null}if(c<=u){var M=new Array(f-p+2);M[0]=S-p+1,a.Copy(w,p,M,1,f-p+1),this.m_forwardHistory.push(M),M=new Array(m-g+2),M[0]=L-g+1,a.Copy(C,g,M,1,m-g+1),this.m_reverseHistory.push(M)}}return this.WALKTRACE(S,p,f,O,L,g,m,x,w,C,d,t,r,h,o,s,D,l)},e.prototype.PrettifyChanges=function(e){for(var t=0;t0,s=n.modifiedLength>0;while(n.originalStart+n.originalLength=0;t--){n=e[t],i=0,o=0;if(t>0){var u=e[t-1];u.originalLength>0&&(i=u.originalStart+u.originalLength),u.modifiedLength>0&&(o=u.modifiedStart+u.modifiedLength)}r=n.originalLength>0,s=n.modifiedLength>0;for(var l=0,c=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength),d=1;;d++){var h=n.originalStart-d,p=n.modifiedStart-d;if(hc&&(c=f,l=d)}n.originalStart-=l,n.modifiedStart-=l}return e},e.prototype._OriginalIsBoundary=function(e){if(e<=0||e>=this.OriginalSequence.getLength()-1)return!0;var t=this.OriginalSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._OriginalRegionIsBoundary=function(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1},e.prototype._ModifiedIsBoundary=function(e){if(e<=0||e>=this.ModifiedSequence.getLength()-1)return!0;var t=this.ModifiedSequence.getElementAtIndex(e);return"string"===typeof t&&/^\s*$/.test(t)},e.prototype._ModifiedRegionIsBoundary=function(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){var n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1},e.prototype._boundaryScore=function(e,t,n,i){var o=this._OriginalRegionIsBoundary(e,t)?1:0,r=this._ModifiedRegionIsBoundary(n,i)?1:0;return o+r},e.prototype.ConcatenateChanges=function(e,t){var n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){var i=new Array(e.length+t.length-1);return a.Copy(e,0,i,0,e.length-1),i[e.length-1]=n[0],a.Copy(t,1,i,e.length,t.length-1),i}i=new Array(e.length+t.length);return a.Copy(e,0,i,0,e.length),a.Copy(t,0,i,e.length,t.length),i},e.prototype.ChangesOverlap=function(e,t,n){if(s.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),s.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){var o=e.originalStart,r=e.originalLength,a=e.modifiedStart,u=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(u=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new i(o,r,a,u),!0}return n[0]=null,!1},e.prototype.ClipDiagonalBound=function(e,t,n,i){if(e>=0&&e.001){C=!1;break}}var N=!0;C&&y.width!==S&&(N=!1),y.width>b.width&&(N=!1);var D=i["b"]()>2e3;return new p["b"]({zoomLevel:i["c"](),fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:C,typicalHalfwidthCharacterWidth:o.width,typicalFullwidthCharacterWidth:r.width,canUseHalfwidthRightwardsArrow:N,spaceWidth:s.width,maxDigitWidth:w},D)},t.INSTANCE=new t,t}(r["a"]),_=function(e){function t(t,n,o,r){void 0===o&&(o=null);var s=e.call(this,t,n)||this;return s.accessibilityService=r,s._elementSizeObserver=s._register(new d(o,function(){return s._onReferenceDomElementSizeChanged()})),s._register(v.INSTANCE.onDidChange(function(){return s._onCSSBasedConfigurationChanged()})),s._validatedOptions.automaticLayout&&s._elementSizeObserver.startObserving(),s._register(i["o"](function(e){return s._recomputeOptions()})),s._register(s.accessibilityService.onDidChangeAccessibilitySupport(function(){return s._recomputeOptions()})),s._recomputeOptions(),s}return f(t,e),t.applyFontInfoSlow=function(e,t){e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px"},t.applyFontInfo=function(e,t){e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)},t.prototype._onReferenceDomElementSizeChanged=function(){this._recomputeOptions()},t.prototype._onCSSBasedConfigurationChanged=function(){this._recomputeOptions()},t.prototype.observeReferenceElement=function(e){this._elementSizeObserver.observe(e)},t.prototype.dispose=function(){e.prototype.dispose.call(this)},t.prototype._getExtraEditorClassName=function(){var e="";return i["l"]||i["n"]||(e+="no-user-select "),s["d"]&&(e+="mac "),e},t.prototype._getEnvConfiguration=function(){return{extraEditorClassName:this._getExtraEditorClassName(),outerWidth:this._elementSizeObserver.getWidth(),outerHeight:this._elementSizeObserver.getHeight(),emptySelectionClipboard:i["m"]||i["i"],pixelRatio:i["a"](),zoomLevel:i["c"](),accessibilitySupport:this.accessibilityService.getAccessibilitySupport()}},t.prototype.readConfiguration=function(e){return v.INSTANCE.readConfiguration(e)},t}(h["a"])},"1f26":function(e,t,n){},2504:function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return a});var i,o=n("308f"),r=Object.freeze(function(e,t){var n=setTimeout(e.bind(t),0);return{dispose:function(){clearTimeout(n)}}});(function(e){function t(t){return t===e.None||t===e.Cancelled||(t instanceof s||!(!t||"object"!==typeof t)&&("boolean"===typeof t.isCancellationRequested&&"function"===typeof t.onCancellationRequested))}e.isCancellationToken=t,e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:o["b"].None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:r})})(i||(i={}));var s=function(){function e(){this._isCancelled=!1,this._emitter=null}return e.prototype.cancel=function(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))},Object.defineProperty(e.prototype,"isCancellationRequested",{get:function(){return this._isCancelled},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onCancellationRequested",{get:function(){return this._isCancelled?r:(this._emitter||(this._emitter=new o["a"]),this._emitter.event)},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this._emitter&&(this._emitter.dispose(),this._emitter=null)},e}(),a=function(){function e(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}return Object.defineProperty(e.prototype,"token",{get:function(){return this._token||(this._token=new s),this._token},enumerable:!0,configurable:!0}),e.prototype.cancel=function(){this._token?this._token instanceof s&&this._token.cancel():this._token=i.Cancelled},e.prototype.dispose=function(){this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof s&&this._token.dispose():this._token=i.None},e}()},"258a":function(e,t,n){"use strict";n.d(t,"c",function(){return r}),n.d(t,"d",function(){return i}),n.d(t,"f",function(){return s}),n.d(t,"a",function(){return a}),n.d(t,"b",function(){return u}),n.d(t,"e",function(){return l});var i,o=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),r={done:!0,value:void 0};function s(e){return Array.isArray(e)?i.fromArray(e):e}(function(e){var t={next:function(){return r}};function n(){return t}function i(e){var t=!1;return{next:function(){return t?r:(t=!0,{done:!1,value:e})}}}function o(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=e.length),{next:function(){return t>=n?r:{done:!1,value:e[t++]}}}}function s(t){return t?Array.isArray(t)?e.fromArray(t):t:e.empty()}function a(e,t){return{next:function(){var n=e.next();return n.done?r:{done:!1,value:t(n.value)}}}}function u(e,t){return{next:function(){while(1){var n=e.next();if(n.done)return r;if(t(n.value))return{done:!1,value:n.value}}}}}function l(e,t){for(var n=e.next();!n.done;n=e.next())t(n.value)}function c(e,t){void 0===t&&(t=Number.POSITIVE_INFINITY);var n=[];if(0===t)return n;for(var i=0,o=e.next();!o.done;o=e.next())if(n.push(o.value),++i>=t)break;return n}function d(){for(var e=[],t=0;t=e.length)return r;var t=e[n],i=t.next();return i.done?(n++,this.next()):i}}}e.empty=n,e.single=i,e.fromArray=o,e.from=s,e.map=a,e.filter=u,e.forEach=l,e.collect=c,e.concat=d})(i||(i={}));var a=function(){function e(e,t,n,i){void 0===t&&(t=0),void 0===n&&(n=e.length),void 0===i&&(i=t-1),this.items=e,this.start=t,this.end=n,this.index=i}return e.prototype.first=function(){return this.index=this.start,this.current()},e.prototype.next=function(){return this.index=Math.min(this.index+1,this.end),this.current()},e.prototype.current=function(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]},e}(),u=function(e){function t(t,n,i,o){return void 0===n&&(n=0),void 0===i&&(i=t.length),void 0===o&&(o=n-1),e.call(this,t,n,i,o)||this}return o(t,e),t.prototype.current=function(){return e.prototype.current.call(this)},t.prototype.previous=function(){return this.index=Math.max(this.index-1,this.start-1),this.current()},t.prototype.first=function(){return this.index=this.start,this.current()},t.prototype.last=function(){return this.index=this.end-1,this.current()},t.prototype.parent=function(){return null},t}(a),l=function(){function e(e,t){this.iterator=e,this.fn=t}return e.prototype.next=function(){return this.fn(this.iterator.next())},e}()},"27e6":function(e,t,n){},2837:function(e,t,n){"use strict";var i;n.d(t,"a",function(){return i}),n.d(t,"b",function(){return o}),function(e){e[e["None"]=0]="None",e[e["Indent"]=1]="Indent",e[e["IndentOutdent"]=2]="IndentOutdent",e[e["Outdent"]=3]="Outdent"}(i||(i={}));var o=function(){function e(e){if(this.open=e.open,this.close=e.close,this._standardTokenMask=0,Array.isArray(e.notIn))for(var t=0,n=e.notIn.length;t=0&&this.prefixSum.set(o.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.changeValue=function(e,t){return e=Object(i["b"])(e),t=Object(i["b"])(t),this.values[e]!==t&&(this.values[e]=t,e-1=n.length)return!1;var r=n.length-e;return t>=r&&(t=r),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1=0&&this.prefixSum.set(o.subarray(0,this.prefixSumValidIndex[0]+1)),!0)},e.prototype.getTotalValue=function(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)},e.prototype.getAccumulatedValue=function(e){return e<0?0:(e=Object(i["b"])(e),this._getAccumulatedValue(e))},e.prototype._getAccumulatedValue=function(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];var t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(var n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]},e.prototype.getIndexOf=function(e){e=Math.floor(e),this.getTotalValue();var t=0,n=this.values.length-1,i=0,r=0,s=0;while(t<=n)if(i=t+(n-t)/2|0,r=this.prefixSum[i],s=r-this.values[i],e=r))break;t=i+1}return new o(i,e-s)},e}(),s=function(){function e(e){this._cacheAccumulatedValueStart=0,this._cache=null,this._actual=new r(e),this._bustCache()}return e.prototype._bustCache=function(){this._cacheAccumulatedValueStart=0,this._cache=null},e.prototype.insertValues=function(e,t){this._actual.insertValues(e,t)&&this._bustCache()},e.prototype.changeValue=function(e,t){this._actual.changeValue(e,t)&&this._bustCache()},e.prototype.removeValues=function(e,t){this._actual.removeValues(e,t)&&this._bustCache()},e.prototype.getTotalValue=function(){return this._actual.getTotalValue()},e.prototype.getAccumulatedValue=function(e){return this._actual.getAccumulatedValue(e)},e.prototype.getIndexOf=function(e){if(e=Math.floor(e),null!==this._cache){var t=e-this._cacheAccumulatedValueStart;if(t>=0&&t=i.length)&&o["x"](i.charCodeAt(n))},e.isHighSurrogate=function(e,t,n){var i=e.getLineContent(t);return!(n<0||n>=i.length)&&o["w"](i.charCodeAt(n))},e.isInsideSurrogatePair=function(e,t,n){return this.isHighSurrogate(e,t,n-2)},e.visibleColumnFromColumn=function(e,t,n){var i=e.length;i>t-1&&(i=t-1);for(var r=0,s=0;s=t){var l=t-r,c=u-t;return cs?s:o},e.nextRenderTabStop=function(e,t){return e+t-e%t},e.nextIndentTabStop=function(e,t){return e+t-e%t},e.prevRenderTabStop=function(e,t){return e-1-(e-1)%t},e.prevIndentTabStop=function(e,t){return e-1-(e-1)%t},e}();function C(e){return"'"===e||'"'===e||"`"===e}},"303e":function(e,t,n){"use strict";n.d(t,"a",function(){return l}),n.d(t,"Kb",function(){return h}),n.d(t,"T",function(){return p}),n.d(t,"R",function(){return f}),n.d(t,"S",function(){return g}),n.d(t,"e",function(){return m}),n.d(t,"b",function(){return v}),n.d(t,"Ub",function(){return _}),n.d(t,"Tb",function(){return b}),n.d(t,"Wb",function(){return y}),n.d(t,"W",function(){return w}),n.d(t,"Y",function(){return C}),n.d(t,"X",function(){return S}),n.d(t,"V",function(){return L}),n.d(t,"U",function(){return O}),n.d(t,"cb",function(){return x}),n.d(t,"eb",function(){return N}),n.d(t,"db",function(){return D}),n.d(t,"fb",function(){return k}),n.d(t,"hb",function(){return I}),n.d(t,"gb",function(){return E}),n.d(t,"Z",function(){return M}),n.d(t,"bb",function(){return T}),n.d(t,"ab",function(){return P}),n.d(t,"ob",function(){return F}),n.d(t,"pb",function(){return j}),n.d(t,"ib",function(){return W}),n.d(t,"jb",function(){return V}),n.d(t,"ub",function(){return B}),n.d(t,"vb",function(){return H}),n.d(t,"tb",function(){return z}),n.d(t,"rb",function(){return U}),n.d(t,"sb",function(){return K}),n.d(t,"kb",function(){return q}),n.d(t,"qb",function(){return G}),n.d(t,"lb",function(){return Z}),n.d(t,"nb",function(){return Y}),n.d(t,"mb",function(){return X}),n.d(t,"Vb",function(){return $}),n.d(t,"Ib",function(){return Q}),n.d(t,"Hb",function(){return J}),n.d(t,"c",function(){return ee}),n.d(t,"d",function(){return te}),n.d(t,"Lb",function(){return ne}),n.d(t,"Nb",function(){return ie}),n.d(t,"Ob",function(){return oe}),n.d(t,"Mb",function(){return re}),n.d(t,"Jb",function(){return se}),n.d(t,"xb",function(){return ae}),n.d(t,"yb",function(){return ue}),n.d(t,"wb",function(){return le}),n.d(t,"Bb",function(){return ce}),n.d(t,"zb",function(){return de}),n.d(t,"Ab",function(){return he}),n.d(t,"Cb",function(){return pe}),n.d(t,"q",function(){return fe}),n.d(t,"p",function(){return ge}),n.d(t,"M",function(){return me}),n.d(t,"L",function(){return ve}),n.d(t,"G",function(){return _e}),n.d(t,"F",function(){return be}),n.d(t,"z",function(){return ye}),n.d(t,"y",function(){return we}),n.d(t,"o",function(){return Ce}),n.d(t,"x",function(){return Se}),n.d(t,"N",function(){return Le}),n.d(t,"P",function(){return Oe}),n.d(t,"O",function(){return xe}),n.d(t,"Q",function(){return Ne}),n.d(t,"H",function(){return De}),n.d(t,"I",function(){return ke}),n.d(t,"E",function(){return Ie}),n.d(t,"J",function(){return Ee}),n.d(t,"K",function(){return Me}),n.d(t,"r",function(){return Te}),n.d(t,"t",function(){return Pe}),n.d(t,"v",function(){return Re}),n.d(t,"s",function(){return Ae}),n.d(t,"u",function(){return Fe}),n.d(t,"w",function(){return je}),n.d(t,"C",function(){return We}),n.d(t,"A",function(){return Ve}),n.d(t,"B",function(){return Be}),n.d(t,"D",function(){return He}),n.d(t,"n",function(){return ze}),n.d(t,"g",function(){return Ue}),n.d(t,"h",function(){return Ke}),n.d(t,"j",function(){return qe}),n.d(t,"l",function(){return Ge}),n.d(t,"k",function(){return Ze}),n.d(t,"m",function(){return Ye}),n.d(t,"i",function(){return Xe}),n.d(t,"Rb",function(){return $e}),n.d(t,"Sb",function(){return Qe}),n.d(t,"Pb",function(){return Je}),n.d(t,"Qb",function(){return et}),n.d(t,"Fb",function(){return tt}),n.d(t,"Gb",function(){return nt}),n.d(t,"Db",function(){return it}),n.d(t,"f",function(){return ot}),n.d(t,"Eb",function(){return at});var i=n("89cd"),o=n("ceb8"),r=n("308f"),s=n("dff7"),a=n("dd1b"),u=n("5fe7"),l={ColorContribution:"base.contributions.colors"},c=function(){function e(){this._onDidChangeSchema=new r["a"],this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}return e.prototype.registerColor=function(e,t,n,i,o){void 0===i&&(i=!1);var r={id:e,description:n,defaults:t,needsTransparency:i,deprecationMessage:o};this.colorsById[e]=r;var s={type:"string",description:n,format:"color-hex",default:"#ff0000"};return o&&(s.deprecationMessage=o),this.colorSchema.properties[e]=s,this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(n),this._onDidChangeSchema.fire(),e},e.prototype.resolveDefaultColor=function(e,t){var n=this.colorsById[e];if(n&&n.defaults){var i=n.defaults[t.type];return lt(i,t)}},e.prototype.getColorSchema=function(){return this.colorSchema},e.prototype.toString=function(){var e=this,t=function(e,t){var n=-1===e.indexOf(".")?0:1,i=-1===t.indexOf(".")?0:1;return n!==i?n-i:e.localeCompare(t)};return Object.keys(this.colorsById).sort(t).map(function(t){return"- `"+t+"`: "+e.colorsById[t].description}).join("\n")},e}(),d=new c;function h(e,t,n,i,o){return d.registerColor(e,t,n,i,o)}i["a"].add(l.ColorContribution,d);var p=h("foreground",{dark:"#CCCCCC",light:"#616161",hc:"#FFFFFF"},s["a"]("foreground","Overall foreground color. This color is only used if not overridden by a component.")),f=h("errorForeground",{dark:"#F48771",light:"#A1260D",hc:"#F48771"},s["a"]("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component.")),g=h("focusBorder",{dark:o["a"].fromHex("#0E639C").transparent(.8),light:o["a"].fromHex("#007ACC").transparent(.4),hc:"#F38518"},s["a"]("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),m=h("contrastBorder",{light:null,dark:null,hc:"#6FC3DF"},s["a"]("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),v=h("contrastActiveBorder",{light:null,dark:null,hc:g},s["a"]("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast.")),_=h("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hc:"#3794FF"},s["a"]("textLinkForeground","Foreground color for links in text.")),b=h("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hc:o["a"].black},s["a"]("textCodeBlockBackground","Background color for code blocks in text.")),y=h("widget.shadow",{dark:"#000000",light:"#A8A8A8",hc:null},s["a"]("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),w=h("input.background",{dark:"#3C3C3C",light:o["a"].white,hc:o["a"].black},s["a"]("inputBoxBackground","Input box background.")),C=h("input.foreground",{dark:p,light:p,hc:p},s["a"]("inputBoxForeground","Input box foreground.")),S=h("input.border",{dark:null,light:null,hc:m},s["a"]("inputBoxBorder","Input box border.")),L=h("inputOption.activeBorder",{dark:"#007ACC00",light:"#007ACC00",hc:m},s["a"]("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),O=h("inputOption.activeBackground",{dark:st(g,.5),light:st(g,.3),hc:null},s["a"]("inputOption.activeBackground","Background color of activated options in input fields.")),x=h("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hc:o["a"].black},s["a"]("inputValidationInfoBackground","Input validation background color for information severity.")),N=h("inputValidation.infoForeground",{dark:null,light:null,hc:null},s["a"]("inputValidationInfoForeground","Input validation foreground color for information severity.")),D=h("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hc:m},s["a"]("inputValidationInfoBorder","Input validation border color for information severity.")),k=h("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hc:o["a"].black},s["a"]("inputValidationWarningBackground","Input validation background color for warning severity.")),I=h("inputValidation.warningForeground",{dark:null,light:null,hc:null},s["a"]("inputValidationWarningForeground","Input validation foreground color for warning severity.")),E=h("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hc:m},s["a"]("inputValidationWarningBorder","Input validation border color for warning severity.")),M=h("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hc:o["a"].black},s["a"]("inputValidationErrorBackground","Input validation background color for error severity.")),T=h("inputValidation.errorForeground",{dark:null,light:null,hc:null},s["a"]("inputValidationErrorForeground","Input validation foreground color for error severity.")),P=h("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hc:m},s["a"]("inputValidationErrorBorder","Input validation border color for error severity.")),R=h("dropdown.background",{dark:"#3C3C3C",light:o["a"].white,hc:o["a"].black},s["a"]("dropdownBackground","Dropdown background.")),A=h("dropdown.foreground",{dark:"#F0F0F0",light:null,hc:o["a"].white},s["a"]("dropdownForeground","Dropdown foreground.")),F=h("list.focusBackground",{dark:"#062F4A",light:"#D6EBFF",hc:null},s["a"]("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),j=h("list.focusForeground",{dark:null,light:null,hc:null},s["a"]("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),W=h("list.activeSelectionBackground",{dark:"#094771",light:"#0074E8",hc:null},s["a"]("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),V=h("list.activeSelectionForeground",{dark:o["a"].white,light:o["a"].white,hc:null},s["a"]("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),B=h("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hc:null},s["a"]("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),H=h("list.inactiveSelectionForeground",{dark:null,light:null,hc:null},s["a"]("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),z=h("list.inactiveFocusBackground",{dark:null,light:null,hc:null},s["a"]("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),U=h("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hc:null},s["a"]("listHoverBackground","List/Tree background when hovering over items using the mouse.")),K=h("list.hoverForeground",{dark:null,light:null,hc:null},s["a"]("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),q=h("list.dropBackground",{dark:F,light:F,hc:null},s["a"]("listDropBackground","List/Tree drag and drop background when moving items around using the mouse.")),G=h("list.highlightForeground",{dark:"#0097fb",light:"#0066BF",hc:g},s["a"]("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),Z=h("listFilterWidget.background",{light:"#efc1ad",dark:"#653723",hc:o["a"].black},s["a"]("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),Y=h("listFilterWidget.outline",{dark:o["a"].transparent,light:o["a"].transparent,hc:"#f38518"},s["a"]("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),X=h("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hc:m},s["a"]("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),$=h("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hc:"#a9a9a9"},s["a"]("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),Q=h("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hc:o["a"].white},s["a"]("pickerGroupForeground","Quick picker color for grouping labels.")),J=h("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hc:o["a"].white},s["a"]("pickerGroupBorder","Quick picker color for grouping borders.")),ee=h("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hc:o["a"].black},s["a"]("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),te=h("badge.foreground",{dark:o["a"].white,light:"#333",hc:o["a"].white},s["a"]("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),ne=h("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hc:null},s["a"]("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),ie=h("scrollbarSlider.background",{dark:o["a"].fromHex("#797979").transparent(.4),light:o["a"].fromHex("#646464").transparent(.4),hc:st(m,.6)},s["a"]("scrollbarSliderBackground","Scrollbar slider background color.")),oe=h("scrollbarSlider.hoverBackground",{dark:o["a"].fromHex("#646464").transparent(.7),light:o["a"].fromHex("#646464").transparent(.7),hc:st(m,.8)},s["a"]("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),re=h("scrollbarSlider.activeBackground",{dark:o["a"].fromHex("#BFBFBF").transparent(.4),light:o["a"].fromHex("#000000").transparent(.6),hc:m},s["a"]("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),se=h("progressBar.background",{dark:o["a"].fromHex("#0E70C0"),light:o["a"].fromHex("#0E70C0"),hc:m},s["a"]("progressBarBackground","Background color of the progress bar that can show for long running operations.")),ae=h("menu.border",{dark:null,light:null,hc:m},s["a"]("menuBorder","Border color of menus.")),ue=h("menu.foreground",{dark:A,light:p,hc:A},s["a"]("menuForeground","Foreground color of menu items.")),le=h("menu.background",{dark:R,light:R,hc:R},s["a"]("menuBackground","Background color of menu items.")),ce=h("menu.selectionForeground",{dark:V,light:V,hc:V},s["a"]("menuSelectionForeground","Foreground color of the selected menu item in menus.")),de=h("menu.selectionBackground",{dark:W,light:W,hc:W},s["a"]("menuSelectionBackground","Background color of the selected menu item in menus.")),he=h("menu.selectionBorder",{dark:null,light:null,hc:v},s["a"]("menuSelectionBorder","Border color of the selected menu item in menus.")),pe=h("menu.separatorBackground",{dark:"#BBBBBB",light:"#888888",hc:m},s["a"]("menuSeparatorBackground","Color of a separator menu item in menus.")),fe=h("editorError.foreground",{dark:"#F48771",light:"#E51400",hc:null},s["a"]("editorError.foreground","Foreground color of error squigglies in the editor.")),ge=h("editorError.border",{dark:null,light:null,hc:o["a"].fromHex("#E47777").transparent(.8)},s["a"]("errorBorder","Border color of error boxes in the editor.")),me=h("editorWarning.foreground",{dark:"#CCA700",light:"#E9A700",hc:null},s["a"]("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),ve=h("editorWarning.border",{dark:null,light:null,hc:o["a"].fromHex("#FFCC00").transparent(.8)},s["a"]("warningBorder","Border color of warning boxes in the editor.")),_e=h("editorInfo.foreground",{dark:"#75BEFF",light:"#75BEFF",hc:null},s["a"]("editorInfo.foreground","Foreground color of info squigglies in the editor.")),be=h("editorInfo.border",{dark:null,light:null,hc:o["a"].fromHex("#75BEFF").transparent(.8)},s["a"]("infoBorder","Border color of info boxes in the editor.")),ye=h("editorHint.foreground",{dark:o["a"].fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hc:null},s["a"]("editorHint.foreground","Foreground color of hint squigglies in the editor.")),we=h("editorHint.border",{dark:null,light:null,hc:o["a"].fromHex("#eeeeee").transparent(.8)},s["a"]("hintBorder","Border color of hint boxes in the editor.")),Ce=h("editor.background",{light:"#fffffe",dark:"#1E1E1E",hc:o["a"].black},s["a"]("editorBackground","Editor background color.")),Se=h("editor.foreground",{light:"#333333",dark:"#BBBBBB",hc:o["a"].white},s["a"]("editorForeground","Editor default foreground color.")),Le=h("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hc:"#0C141F"},s["a"]("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),Oe=h("editorWidget.foreground",{dark:p,light:p,hc:p},s["a"]("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),xe=h("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hc:m},s["a"]("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),Ne=h("editorWidget.resizeBorder",{light:null,dark:null,hc:null},s["a"]("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),De=h("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hc:"#f3f518"},s["a"]("editorSelectionBackground","Color of the editor selection.")),ke=h("editor.selectionForeground",{light:null,dark:null,hc:"#000000"},s["a"]("editorSelectionForeground","Color of the selected text for high contrast.")),Ie=h("editor.inactiveSelectionBackground",{light:st(De,.5),dark:st(De,.5),hc:st(De,.5)},s["a"]("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),Ee=h("editor.selectionHighlightBackground",{light:ut(De,Ce,.3,.6),dark:ut(De,Ce,.3,.6),hc:null},s["a"]("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0),Me=h("editor.selectionHighlightBorder",{light:null,dark:null,hc:v},s["a"]("editorSelectionHighlightBorder","Border color for regions with the same content as the selection.")),Te=h("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hc:null},s["a"]("editorFindMatch","Color of the current search match.")),Pe=h("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hc:null},s["a"]("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),Re=h("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hc:null},s["a"]("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),Ae=h("editor.findMatchBorder",{light:null,dark:null,hc:v},s["a"]("editorFindMatchBorder","Border color of the current search match.")),Fe=h("editor.findMatchHighlightBorder",{light:null,dark:null,hc:v},s["a"]("findMatchHighlightBorder","Border color of the other search matches.")),je=h("editor.findRangeHighlightBorder",{dark:null,light:null,hc:st(v,.4)},s["a"]("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),We=h("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hc:"#ADD6FF26"},s["a"]("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0),Ve=h("editorHoverWidget.background",{light:Le,dark:Le,hc:Le},s["a"]("hoverBackground","Background color of the editor hover.")),Be=h("editorHoverWidget.border",{light:xe,dark:xe,hc:xe},s["a"]("hoverBorder","Border color of the editor hover.")),He=h("editorHoverWidget.statusBarBackground",{dark:rt(Ve,.2),light:ot(Ve,.05),hc:Le},s["a"]("statusBarBackground","Background color of the editor hover status bar.")),ze=h("editorLink.activeForeground",{dark:"#4E94CE",light:o["a"].blue,hc:o["a"].cyan},s["a"]("activeLinkForeground","Color of active links.")),Ue=new o["a"](new o["c"](155,185,85,.2)),Ke=new o["a"](new o["c"](255,0,0,.2)),qe=h("diffEditor.insertedTextBackground",{dark:Ue,light:Ue,hc:null},s["a"]("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),Ge=h("diffEditor.removedTextBackground",{dark:Ke,light:Ke,hc:null},s["a"]("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0),Ze=h("diffEditor.insertedTextBorder",{dark:null,light:null,hc:"#33ff2eff"},s["a"]("diffEditorInsertedOutline","Outline color for the text that got inserted.")),Ye=h("diffEditor.removedTextBorder",{dark:null,light:null,hc:"#FF008F"},s["a"]("diffEditorRemovedOutline","Outline color for text that got removed.")),Xe=h("diffEditor.border",{dark:null,light:null,hc:m},s["a"]("diffEditorBorder","Border color between the two text editors.")),$e=h("editor.snippetTabstopHighlightBackground",{dark:new o["a"](new o["c"](124,124,124,.3)),light:new o["a"](new o["c"](10,50,100,.2)),hc:new o["a"](new o["c"](124,124,124,.3))},s["a"]("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop.")),Qe=h("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hc:null},s["a"]("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop.")),Je=h("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hc:null},s["a"]("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet.")),et=h("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new o["a"](new o["c"](10,50,100,.5)),hc:"#525252"},s["a"]("snippetFinalTabstopHighlightBorder","Highlight border color of the final stabstop of a snippet.")),tt=h("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hc:"#AB5A00"},s["a"]("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),nt=h("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},s["a"]("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),it=h("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hc:"#AB5A00"},s["a"]("minimapFindMatchHighlight","Minimap marker color for find matches."),!0);function ot(e,t){return function(n){var i=lt(e,n);if(i)return i.darken(t)}}function rt(e,t){return function(n){var i=lt(e,n);if(i)return i.lighten(t)}}function st(e,t){return function(n){var i=lt(e,n);if(i)return i.transparent(t)}}function at(){for(var e=[],t=0;t1)&&l.fire(e),u=0},n)})},onLastListenerRemove:function(){r.dispose()}});return l.event}function h(e){var i=(new Date).getTime();return n(t(e),function(e){return(new Date).getTime()-i})}function p(e){var t,n=!0;return o(e,function(e){var i=n||e!==t;return n=!1,t=e,i})}function f(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=[]);var i=n.slice(),o=e(function(e){i?i.push(e):s.fire(e)}),r=function(){i&&i.forEach(function(e){return s.fire(e)}),i=null},s=new d({onFirstListenerAdd:function(){o||(o=e(function(e){return s.fire(e)}))},onFirstListenerDidAdd:function(){i&&(t?setTimeout(r):r())},onLastListenerRemove:function(){o&&o.dispose(),o=null}});return s.event}e.None=function(){return s["a"].None},e.once=t,e.map=n,e.forEach=i,e.filter=o,e.signal=r,e.any=a,e.reduce=u,e.snapshot=l,e.debounce=c,e.stopwatch=h,e.latch=p,e.buffer=f;var g=function(){function e(e){this.event=e}return e.prototype.map=function(t){return new e(n(this.event,t))},e.prototype.forEach=function(t){return new e(i(this.event,t))},e.prototype.filter=function(t){return new e(o(this.event,t))},e.prototype.reduce=function(t,n){return new e(u(this.event,t,n))},e.prototype.latch=function(){return new e(p(this.event))},e.prototype.on=function(e,t,n){return this.event(e,t,n)},e.prototype.once=function(e,n,i){return t(this.event)(e,n,i)},e}();function m(e){return new g(e)}function v(e,t,n){void 0===n&&(n=function(e){return e});var i=function(){for(var e=[],t=0;t0?new c(this._options&&this._options.leakWarningThreshold):void 0}return Object.defineProperty(e.prototype,"event",{get:function(){var t=this;return this._event||(this._event=function(n,i,o){t._listeners||(t._listeners=new a["a"]);var r=t._listeners.isEmpty();r&&t._options&&t._options.onFirstListenerAdd&&t._options.onFirstListenerAdd(t);var u,l,c=t._listeners.push(i?[n,i]:n);return r&&t._options&&t._options.onFirstListenerDidAdd&&t._options.onFirstListenerDidAdd(t),t._options&&t._options.onListenerDidAdd&&t._options.onListenerDidAdd(t,n,i),t._leakageMon&&(u=t._leakageMon.check(t._listeners.size)),l={dispose:function(){if(u&&u(),l.dispose=e._noop,!t._disposed&&(c(),t._options&&t._options.onLastListenerRemove)){var n=t._listeners&&!t._listeners.isEmpty();n||t._options.onLastListenerRemove(t)}}},o instanceof s["b"]?o.add(l):Array.isArray(o)&&o.push(l),l}),this._event},enumerable:!0,configurable:!0}),e.prototype.fire=function(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new a["a"]);for(var t=this._listeners.iterator(),n=t.next();!n.done;n=t.next())this._deliveryQueue.push([n.value,e]);while(this._deliveryQueue.size>0){var i=this._deliveryQueue.shift(),r=i[0],s=i[1];try{"function"===typeof r?r.call(void 0,s):r[0].call(r[1],s)}catch(n){Object(o["e"])(n)}}}},e.prototype.dispose=function(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0},e._noop=function(){},e}(),h=function(e){function t(t){var n=e.call(this,t)||this;return n._isPaused=0,n._eventQueue=new a["a"],n._mergeFn=t&&t.merge,n}return u(t,e),t.prototype.pause=function(){this._isPaused++},t.prototype.resume=function(){if(0!==this._isPaused&&0===--this._isPaused)if(this._mergeFn){var t=this._eventQueue.toArray();this._eventQueue.clear(),e.prototype.fire.call(this,this._mergeFn(t))}else while(!this._isPaused&&0!==this._eventQueue.size)e.prototype.fire.call(this,this._eventQueue.shift())},t.prototype.fire=function(t){this._listeners&&(0!==this._isPaused?this._eventQueue.push(t):e.prototype.fire.call(this,t))},t}(d),p=function(){function e(){var e=this;this.hasListeners=!1,this.events=[],this.emitter=new d({onFirstListenerAdd:function(){return e.onFirstListenerAdd()},onLastListenerRemove:function(){return e.onLastListenerRemove()}})}return Object.defineProperty(e.prototype,"event",{get:function(){return this.emitter.event},enumerable:!0,configurable:!0}),e.prototype.add=function(e){var t=this,n={event:e,listener:null};this.events.push(n),this.hasListeners&&this.hook(n);var i=function(){t.hasListeners&&t.unhook(n);var e=t.events.indexOf(n);t.events.splice(e,1)};return Object(s["h"])(Object(r["a"])(i))},e.prototype.onFirstListenerAdd=function(){var e=this;this.hasListeners=!0,this.events.forEach(function(t){return e.hook(t)})},e.prototype.onLastListenerRemove=function(){var e=this;this.hasListeners=!1,this.events.forEach(function(t){return e.unhook(t)})},e.prototype.hook=function(e){var t=this;e.listener=e.event(function(e){return t.emitter.fire(e)})},e.prototype.unhook=function(e){e.listener&&e.listener.dispose(),e.listener=null},e.prototype.dispose=function(){this.emitter.dispose()},e}(),f=function(){function e(){this.buffers=[]}return e.prototype.wrapEvent=function(e){var t=this;return function(n,i,o){return e(function(e){var o=t.buffers[t.buffers.length-1];o?o.push(function(){return n.call(i,e)}):n.call(i,e)},void 0,o)}},e.prototype.bufferEvents=function(e){var t=[];this.buffers.push(t);var n=e();return this.buffers.pop(),t.forEach(function(e){return e()}),n},e}(),g=function(){function e(){var e=this;this.listening=!1,this.inputEvent=i.None,this.inputEventListener=s["a"].None,this.emitter=new d({onFirstListenerDidAdd:function(){e.listening=!0,e.inputEventListener=e.inputEvent(e.emitter.fire,e.emitter)},onLastListenerRemove:function(){e.listening=!1,e.inputEventListener.dispose()}}),this.event=this.emitter.event}return Object.defineProperty(e.prototype,"input",{set:function(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))},enumerable:!0,configurable:!0}),e.prototype.dispose=function(){this.inputEventListener.dispose(),this.emitter.dispose()},e}()},"30d5":function(e,t,n){},"30db":function(e,t,n){"use strict";(function(e,i){n.d(t,"g",function(){return m}),n.d(t,"d",function(){return v}),n.d(t,"c",function(){return _}),n.d(t,"e",function(){return b}),n.d(t,"f",function(){return y}),n.d(t,"b",function(){return C}),n.d(t,"h",function(){return L}),n.d(t,"a",function(){return O});var o="en",r=!1,s=!1,a=!1,u=!1,l=!1,c=void 0,d=void 0,h="undefined"!==typeof e&&"undefined"!==typeof e.versions&&"undefined"!==typeof e.versions.electron&&"renderer"===e.type;if("object"!==typeof navigator||h){if("object"===typeof e){r="win32"===e.platform,s="darwin"===e.platform,a="linux"===e.platform,c=o,o;var p=Object({VUE_APP_BUILD_ENV:"emqx",NODE_ENV:"production",BASE_URL:"/"})["VSCODE_NLS_CONFIG"];if(p)try{var f=JSON.parse(p),g=f.availableLanguages["*"];c=f.locale,g||o,f._translationsConfigFile}catch(x){}u=!0}}else d=navigator.userAgent,r=d.indexOf("Windows")>=0,s=d.indexOf("Macintosh")>=0,a=d.indexOf("Linux")>=0,l=!0,c=navigator.language,c;var m=r,v=s,_=a,b=u,y=l,w="object"===typeof self?self:"object"===typeof i?i:{},C=w,S=null;function L(t){return null===S&&(S=C.setImmediate?C.setImmediate.bind(C):"undefined"!==typeof e&&"function"===typeof e.nextTick?e.nextTick.bind(e):C.setTimeout.bind(C)),S(t)}var O=s?2:r?1:3}).call(this,n("f28c"),n("c8ba"))},3170:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=n("507c"),o=function(){function e(t){var n=Object(i["d"])(t);this._defaultValue=n,this._asciiMap=e._createAsciiMap(n),this._map=new Map}return e._createAsciiMap=function(e){for(var t=new Uint8Array(256),n=0;n<256;n++)t[n]=e;return t},e.prototype.set=function(e,t){var n=Object(i["d"])(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)},e.prototype.get=function(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue},e}(),r=function(){function e(){this._actual=new o(0)}return e.prototype.add=function(e){this._actual.set(e,1)},e.prototype.has=function(e){return 1===this._actual.get(e)},e}()},"31df":function(e,t,n){"use strict";n.d(t,"c",function(){return o}),n.d(t,"b",function(){return r}),n.d(t,"a",function(){return s});var i=n("11f7");function o(e,t){void 0===t&&(t={});var n=s(t);return n.textContent=e,n}function r(e,t){void 0===t&&(t={});var n=s(t);return u(n,l(e),t.actionHandler),n}function s(e){var t=e.inline?"span":"div",n=document.createElement(t);return e.className&&(n.className=e.className),n}var a=function(){function e(e){this.source=e,this.index=0}return e.prototype.eos=function(){return this.index>=this.source.length},e.prototype.next=function(){var e=this.peek();return this.advance(),e},e.prototype.peek=function(){return this.source[this.index]},e.prototype.advance=function(){this.index++},e}();function u(e,t,n){var o;if(2===t.type)o=document.createTextNode(t.content||"");else if(3===t.type)o=document.createElement("b");else if(4===t.type)o=document.createElement("i");else if(5===t.type&&n){var r=document.createElement("a");r.href="#",n.disposeables.add(i["k"](r,"click",function(e){n.callback(String(t.index),e)})),o=r}else 7===t.type?o=document.createElement("br"):1===t.type&&(o=e);o&&e!==o&&e.appendChild(o),o&&Array.isArray(t.children)&&t.children.forEach(function(e){u(o,e,n)})}function l(e){var t={type:1,children:[]},n=0,i=t,o=[],r=new a(e);while(!r.eos()){var s=r.next(),u="\\"===s&&0!==d(r.peek());if(u&&(s=r.next()),!u&&c(s)&&s===r.peek()){r.advance(),2===i.type&&(i=o.pop());var l=d(s);if(i.type===l||5===i.type&&6===l)i=o.pop();else{var h={type:l,children:[]};5===l&&(h.index=n,n++),i.children.push(h),o.push(i),i=h}}else if("\n"===s)2===i.type&&(i=o.pop()),i.children.push({type:7});else if(2!==i.type){var p={type:2,content:s};i.children.push(p),o.push(i),i=p}else i.content+=s}return 2===i.type&&(i=o.pop()),o.length,t}function c(e){return 0!==d(e)}function d(e){switch(e){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;default:return 0}}},"32a4":function(e,t,n){"use strict";n.d(t,"a",function(){return c}),n.d(t,"c",function(){return d}),n.d(t,"b",function(){return h});var i=n("dff7"),o=n("308f"),r=n("b707"),s=n("70cb"),a=n("89cd"),u={ModesRegistry:"editor.modesRegistry"},l=function(){function e(){this._onDidChangeLanguages=new o["a"],this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[],this._dynamicLanguages=[]}return e.prototype.registerLanguage=function(e){this._languages.push(e),this._onDidChangeLanguages.fire(void 0)},e.prototype.getLanguages=function(){return[].concat(this._languages).concat(this._dynamicLanguages)},e}(),c=new l;a["a"].add(u.ModesRegistry,c);var d="plaintext",h=new r["p"](d,1);c.registerLanguage({id:d,extensions:[".txt",".gitignore"],aliases:[i["a"]("plainText.alias","Plain Text"),"text"],mimetypes:["text/plain"]}),s["a"].register(h,{brackets:[["(",")"],["[","]"],["{","}"]]})},"32b8":function(e,t,n){"use strict";n.r(t),n.d(t,"win32",function(){return w}),n.d(t,"posix",function(){return C}),n.d(t,"normalize",function(){return S}),n.d(t,"join",function(){return L}),n.d(t,"relative",function(){return O}),n.d(t,"dirname",function(){return x}),n.d(t,"basename",function(){return N}),n.d(t,"extname",function(){return D}),n.d(t,"sep",function(){return k});var i=n("c317"),o=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),r=65,s=97,a=90,u=122,l=46,c=47,d=92,h=58,p=63,f=function(e){function t(t,n,i){var o,r=this;"string"===typeof n&&0===n.indexOf("not ")?(o="must not be",n=n.replace(/^not /,"")):o="must be";var s=-1!==t.indexOf(".")?"property":"argument",a='The "'+t+'" '+s+" "+o+" of type "+n;return a+=". Received type "+typeof i,r=e.call(this,a)||this,r.code="ERR_INVALID_ARG_TYPE",r}return o(t,e),t}(Error);function g(e,t){if("string"!==typeof e)throw new f(t,"string",e)}function m(e){return e===c||e===d}function v(e){return e===c}function _(e){return e>=r&&e<=a||e>=s&&e<=u}function b(e,t,n,i){for(var o,r="",s=0,a=-1,u=0,d=0;d<=e.length;++d){if(d2){var h=r.lastIndexOf(n);-1===h?(r="",s=0):(r=r.slice(0,h),s=r.length-1-r.lastIndexOf(n)),a=d,u=0;continue}if(2===r.length||1===r.length){r="",s=0,a=d,u=0;continue}}t&&(r.length>0?r+=n+"..":r="..",s=2)}else r.length>0?r+=n+e.slice(a+1,d):r=e.slice(a+1,d),s=d-a-1;a=d,u=0}else o===l&&-1!==u?++u:u=-1}return r}function y(e,t){var n=t.dir||t.root,i=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+i:n+e+i:i}var w={resolve:function(){for(var e=[],t=0;t=-1;s--){var a=void 0;if(s>=0?a=e[s]:n?(a=i["b"]["="+n]||i["a"](),void 0!==a&&a.slice(0,3).toLowerCase()===n.toLowerCase()+"\\"||(a=n+"\\")):a=i["a"](),g(a,"path"),0!==a.length){var u=a.length,l=0,c="",d=!1,p=a.charCodeAt(0);if(u>1)if(m(p))if(d=!0,m(a.charCodeAt(1))){for(var f=2,v=f;f2&&m(a.charCodeAt(2))&&(d=!0,l=3));else m(p)&&(l=1,d=!0);if(!(c.length>0&&n.length>0&&c.toLowerCase()!==n.toLowerCase())&&(0===n.length&&c.length>0&&(n=c),r||(o=a.slice(l)+"\\"+o,r=d),n.length>0&&r))break}}return o=b(o,!r,"\\",m),n+(r?"\\":"")+o||"."},normalize:function(e){g(e,"path");var t=e.length;if(0===t)return".";var n,i,o=0,r=!1,s=e.charCodeAt(0);if(t>1)if(m(s))if(r=!0,m(e.charCodeAt(1))){for(var a=2,u=a;a2&&m(e.charCodeAt(2))&&(r=!0,o=3));else if(m(s))return"\\";return i=o0&&m(e.charCodeAt(t-1))&&(i+="\\"),void 0===n?r?i.length>0?"\\"+i:"\\":i.length>0?i:"":r?i.length>0?n+"\\"+i:n+"\\":i.length>0?n+i:n},isAbsolute:function(e){g(e,"path");var t=e.length;if(0===t)return!1;var n=e.charCodeAt(0);return!!m(n)||!!(_(n)&&t>2&&e.charCodeAt(1)===h&&m(e.charCodeAt(2)))},join:function(){for(var e,t,n=[],i=0;i0&&(void 0===e?e=t=r:e+="\\"+r)}if(void 0===e)return".";var s=!0,a=0;if("string"===typeof t&&m(t.charCodeAt(0))){++a;var u=t.length;u>1&&m(t.charCodeAt(1))&&(++a,u>2&&(m(t.charCodeAt(2))?++a:s=!1))}if(s){for(;a=2&&(e="\\"+e.slice(a))}return w.normalize(e)},relative:function(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";var n=w.resolve(e),i=w.resolve(t);if(n===i)return"";if(e=n.toLowerCase(),t=i.toLowerCase(),e===t)return"";for(var o=0;oo;--r)if(e.charCodeAt(r-1)!==d)break;for(var s=r-o,a=0;aa;--u)if(t.charCodeAt(u-1)!==d)break;for(var l=u-a,c=sc){if(t.charCodeAt(a+p)===d)return i.slice(a+p+1);if(2===p)return i.slice(a+p)}s>c&&(e.charCodeAt(o+p)===d?h=p:2===p&&(h=3));break}var f=e.charCodeAt(o+p),m=t.charCodeAt(a+p);if(f!==m)break;f===d&&(h=p)}if(p!==c&&-1===h)return i;var v="";for(-1===h&&(h=0),p=o+h+1;p<=r;++p)p!==r&&e.charCodeAt(p)!==d||(0===v.length?v+="..":v+="\\..");return v.length>0?v+i.slice(a+h,u):(a+=h,i.charCodeAt(a)===d&&++a,i.slice(a,u))},toNamespacedPath:function(e){if("string"!==typeof e)return e;if(0===e.length)return"";var t=w.resolve(e);if(t.length>=3)if(t.charCodeAt(0)===d){if(t.charCodeAt(1)===d){var n=t.charCodeAt(2);if(n!==p&&n!==l)return"\\\\?\\UNC\\"+t.slice(2)}}else if(_(t.charCodeAt(0))&&t.charCodeAt(1)===h&&t.charCodeAt(2)===d)return"\\\\?\\"+t;return e},dirname:function(e){g(e,"path");var t=e.length;if(0===t)return".";var n=-1,i=-1,o=!0,r=0,s=e.charCodeAt(0);if(t>1)if(m(s)){if(n=r=1,m(e.charCodeAt(1))){for(var a=2,u=a;a2&&m(e.charCodeAt(2))&&(n=r=3));else if(m(s))return e;for(var l=t-1;l>=r;--l)if(m(e.charCodeAt(l))){if(!o){i=l;break}}else o=!1;if(-1===i){if(-1===n)return".";i=n}return e.slice(0,i)},basename:function(e,t){void 0!==t&&g(t,"ext"),g(e,"path");var n,i=0,o=-1,r=!0;if(e.length>=2){var s=e.charCodeAt(0);_(s)&&e.charCodeAt(1)===h&&(i=2)}if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var a=t.length-1,u=-1;for(n=e.length-1;n>=i;--n){var l=e.charCodeAt(n);if(m(l)){if(!r){i=n+1;break}}else-1===u&&(r=!1,u=n+1),a>=0&&(l===t.charCodeAt(a)?-1===--a&&(o=n):(a=-1,o=u))}return i===o?o=u:-1===o&&(o=e.length),e.slice(i,o)}for(n=e.length-1;n>=i;--n)if(m(e.charCodeAt(n))){if(!r){i=n+1;break}}else-1===o&&(r=!1,o=n+1);return-1===o?"":e.slice(i,o)},extname:function(e){g(e,"path");var t=0,n=-1,i=0,o=-1,r=!0,s=0;e.length>=2&&e.charCodeAt(1)===h&&_(e.charCodeAt(0))&&(t=i=2);for(var a=e.length-1;a>=t;--a){var u=e.charCodeAt(a);if(m(u)){if(!r){i=a+1;break}}else-1===o&&(r=!1,o=a+1),u===l?-1===n?n=a:1!==s&&(s=1):-1!==n&&(s=-1)}return-1===n||-1===o||0===s||1===s&&n===o-1&&n===i+1?"":e.slice(n,o)},format:function(e){if(null===e||"object"!==typeof e)throw new f("pathObject","Object",e);return y("\\",e)},parse:function(e){g(e,"path");var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n=e.length,i=0,o=e.charCodeAt(0);if(n>1){if(m(o)){if(i=1,m(e.charCodeAt(1))){for(var r=2,s=r;r2))return t.root=t.dir=e,t;if(m(e.charCodeAt(2))){if(3===n)return t.root=t.dir=e,t;i=3}}}else if(m(o))return t.root=t.dir=e,t;i>0&&(t.root=e.slice(0,i));for(var a=-1,u=i,c=-1,d=!0,p=e.length-1,f=0;p>=i;--p)if(o=e.charCodeAt(p),m(o)){if(!d){u=p+1;break}}else-1===c&&(d=!1,c=p+1),o===l?-1===a?a=p:1!==f&&(f=1):-1!==a&&(f=-1);return-1===a||-1===c||0===f||1===f&&a===c-1&&a===u+1?-1!==c&&(t.base=t.name=e.slice(u,c)):(t.name=e.slice(u,a),t.base=e.slice(u,c),t.ext=e.slice(a,c)),t.dir=u>0&&u!==i?e.slice(0,u-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},C={resolve:function(){for(var e=[],t=0;t=-1&&!o;r--){var s=void 0;s=r>=0?e[r]:i["a"](),g(s,"path"),0!==s.length&&(n=s+"/"+n,o=s.charCodeAt(0)===c)}return n=b(n,!o,"/",v),o?n.length>0?"/"+n:"/":n.length>0?n:"."},normalize:function(e){if(g(e,"path"),0===e.length)return".";var t=e.charCodeAt(0)===c,n=e.charCodeAt(e.length-1)===c;return e=b(e,!t,"/",v),0!==e.length||t||(e="."),e.length>0&&n&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return g(e,"path"),e.length>0&&e.charCodeAt(0)===c},join:function(){for(var e,t=[],n=0;n0&&(void 0===e?e=o:e+="/"+o)}return void 0===e?".":C.normalize(e)},relative:function(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";if(e=C.resolve(e),t=C.resolve(t),e===t)return"";for(var n=1;nu){if(t.charCodeAt(r+d)===c)return t.slice(r+d+1);if(0===d)return t.slice(r+d)}else o>u&&(e.charCodeAt(n+d)===c?l=d:0===d&&(l=0));break}var h=e.charCodeAt(n+d),p=t.charCodeAt(r+d);if(h!==p)break;h===c&&(l=d)}var f="";for(d=n+l+1;d<=i;++d)d!==i&&e.charCodeAt(d)!==c||(0===f.length?f+="..":f+="/..");return f.length>0?f+t.slice(r+l):(r+=l,t.charCodeAt(r)===c&&++r,t.slice(r))},toNamespacedPath:function(e){return e},dirname:function(e){if(g(e,"path"),0===e.length)return".";for(var t=e.charCodeAt(0)===c,n=-1,i=!0,o=e.length-1;o>=1;--o)if(e.charCodeAt(o)===c){if(!i){n=o;break}}else i=!1;return-1===n?t?"/":".":t&&1===n?"//":e.slice(0,n)},basename:function(e,t){void 0!==t&&g(t,"ext"),g(e,"path");var n,i=0,o=-1,r=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,a=-1;for(n=e.length-1;n>=0;--n){var u=e.charCodeAt(n);if(u===c){if(!r){i=n+1;break}}else-1===a&&(r=!1,a=n+1),s>=0&&(u===t.charCodeAt(s)?-1===--s&&(o=n):(s=-1,o=a))}return i===o?o=a:-1===o&&(o=e.length),e.slice(i,o)}for(n=e.length-1;n>=0;--n)if(e.charCodeAt(n)===c){if(!r){i=n+1;break}}else-1===o&&(r=!1,o=n+1);return-1===o?"":e.slice(i,o)},extname:function(e){g(e,"path");for(var t=-1,n=0,i=-1,o=!0,r=0,s=e.length-1;s>=0;--s){var a=e.charCodeAt(s);if(a!==c)-1===i&&(o=!1,i=s+1),a===l?-1===t?t=s:1!==r&&(r=1):-1!==t&&(r=-1);else if(!o){n=s+1;break}}return-1===t||-1===i||0===r||1===r&&t===i-1&&t===n+1?"":e.slice(t,i)},format:function(e){if(null===e||"object"!==typeof e)throw new f("pathObject","Object",e);return y("/",e)},parse:function(e){g(e,"path");var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,i=e.charCodeAt(0)===c;i?(t.root="/",n=1):n=0;for(var o=-1,r=0,s=-1,a=!0,u=e.length-1,d=0;u>=n;--u){var h=e.charCodeAt(u);if(h!==c)-1===s&&(a=!1,s=u+1),h===l?-1===o?o=u:1!==d&&(d=1):-1!==o&&(d=-1);else if(!a){r=u+1;break}}return-1===o||-1===s||0===d||1===d&&o===s-1&&o===r+1?-1!==s&&(t.base=t.name=0===r&&i?e.slice(1,s):e.slice(r,s)):(0===r&&i?(t.name=e.slice(1,o),t.base=e.slice(1,s)):(t.name=e.slice(r,o),t.base=e.slice(r,s)),t.ext=e.slice(o,s)),r>0?t.dir=e.slice(0,r-1):i&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};C.win32=w.win32=w,C.posix=w.posix=C;var S="win32"===i["c"]?w.normalize:C.normalize,L="win32"===i["c"]?w.join:C.join,O="win32"===i["c"]?w.relative:C.relative,x="win32"===i["c"]?w.dirname:C.dirname,N="win32"===i["c"]?w.basename:C.basename,D="win32"===i["c"]?w.extname:C.extname,k="win32"===i["c"]?w.sep:C.sep},"32f2":function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=function(){function e(e,t,n){this.from=0|e,this.to=0|t,this.colorId=0|n}return e.compare=function(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId},e}(),o=function(){function e(e,t,n){this.startLineNumber=e,this.endLineNumber=t,this.color=n,this._colorZone=null}return e.compare=function(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.colorn&&(f=n-g);var m=c.color,v=this._color2Id[m];v||(v=++this._lastAssignedId,this._color2Id[m]=v,this._id2Color[v]=m);var _=new i(f-g,f+g,v);c.setColorZone(_),a.push(_)}return this._colorZonesInvalid=!1,a.sort(i.compare),a},e}()},3352:function(e,t,n){"use strict";var i,o;n.d(t,"d",function(){return i}),n.d(t,"c",function(){return o}),n.d(t,"e",function(){return r}),n.d(t,"b",function(){return s}),n.d(t,"a",function(){return a}),function(e){e[e["Left"]=1]="Left",e[e["Center"]=2]="Center",e[e["Right"]=4]="Right",e[e["Full"]=7]="Full"}(i||(i={})),function(e){e[e["Inline"]=1]="Inline"}(o||(o={}));var r=function(){function e(e){this.tabSize=0|e.tabSize,this.indentSize=0|e.tabSize,this.insertSpaces=Boolean(e.insertSpaces),this.defaultEOL=0|e.defaultEOL,this.trimAutoWhitespace=Boolean(e.trimAutoWhitespace)}return e.prototype.equals=function(e){return this.tabSize===e.tabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace},e.prototype.createChangeEvent=function(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}},e}(),s=function(){function e(e,t){this.range=e,this.matches=t}return e}(),a=function(){function e(e,t,n){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=n}return e}()},3359:function(e,t,n){},"33f9":function(e,t,n){self["MonacoEnvironment"]=function(e){function t(e){return e.replace(/\/$/,"")}return{getWorkerUrl:function(n,i){var o="string"===typeof window.__webpack_public_path__?window.__webpack_public_path__:"/";return(o?t(o)+"/":"")+e[i]}}}({editorWorkerService:"static/editor.worker.js",json:"static/json.worker.js"}),n("4816"),n("6e4e"),n("2935"),n("c36f"),n("0b11"),n("77a4"),n("92a6"),n("9f4d"),n("7c3e"),n("d585"),n("e516"),n("fd11"),n("a106"),n("7605"),n("6df4"),n("7082"),n("9f72"),n("821d"),n("958f"),n("0210"),n("aee8"),n("1af3"),n("8090"),n("a222"),n("747f"),n("d844"),n("f17c"),n("5b02"),n("bfe0"),n("5900"),n("4c2d"),n("e2c2"),n("43ad"),n("d741"),n("b574"),n("7a9e"),n("bd50"),n("93ba"),n("6daf"),n("5ed2"),n("b3b2"),n("2d47"),e.exports=n("f33e"),n("a79b"),n("c3d4")},"351f":function(e,t,n){"use strict";n.d(t,"a",function(){return g});n("b329");var i=n("dff7"),o=n("5fe7"),r=n("a666"),s=n("3813"),a=n("6a89"),u=n("b2cc"),l=n("4fc3"),c=n("b7d0"),d=n("303e"),h=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),p=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},f=function(e,t){return function(n,i){t(n,i,e)}},g=function(e){function t(n,i){var o=e.call(this)||this;return o.closeTimeout=3e3,o._messageWidget=o._register(new r["d"]),o._messageListeners=o._register(new r["b"]),o._editor=n,o._visible=t.MESSAGE_VISIBLE.bindTo(i),o._register(o._editor.onDidAttemptReadOnlyEdit(function(){return o._onDidAttemptReadOnlyEdit()})),o}return h(t,e),t.get=function(e){return e.getContribution(t._id)},t.prototype.getId=function(){return t._id},t.prototype.dispose=function(){e.prototype.dispose.call(this),this._visible.reset()},t.prototype.showMessage=function(e,t){var n,i=this;Object(s["a"])(e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._messageWidget.value=new v(this._editor,t,e),this._messageListeners.add(this._editor.onDidBlurEditorText(function(){return i.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeCursorPosition(function(){return i.closeMessage()})),this._messageListeners.add(this._editor.onDidDispose(function(){return i.closeMessage()})),this._messageListeners.add(this._editor.onDidChangeModel(function(){return i.closeMessage()})),this._messageListeners.add(new o["e"](function(){return i.closeMessage()},this.closeTimeout)),this._messageListeners.add(this._editor.onMouseMove(function(e){e.target.position&&(n?n.containsPosition(e.target.position)||i.closeMessage():n=new a["a"](t.lineNumber-3,1,e.target.position.lineNumber+3,1))}))},t.prototype.closeMessage=function(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(v.fadeOut(this._messageWidget.value))},t.prototype._onDidAttemptReadOnlyEdit=function(){this._editor.hasModel()&&this.showMessage(i["a"]("editor.readonly","Cannot edit in read-only editor"),this._editor.getPosition())},t._id="editor.contrib.messageController",t.MESSAGE_VISIBLE=new l["d"]("messageVisible",!1),t=p([f(1,l["c"])],t),t}(r["a"]),m=u["c"].bindToContribution(g.get);Object(u["g"])(new m({id:"leaveEditorMessage",precondition:g.MESSAGE_VISIBLE,handler:function(e){return e.closeMessage()},kbOpts:{weight:130,primary:9}}));var v=function(){function e(e,t,n){var i=t.lineNumber,o=t.column;this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(i,i,0),this._position={lineNumber:i,column:o-1},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage");var r=document.createElement("div");r.classList.add("message"),r.textContent=n,this._domNode.appendChild(r);var s=document.createElement("div");s.classList.add("anchor"),this._domNode.appendChild(s),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}return e.fadeOut=function(e){var t,n=function(){e.dispose(),clearTimeout(t),e.getDomNode().removeEventListener("animationend",n)};return t=setTimeout(n,110),e.getDomNode().addEventListener("animationend",n),e.getDomNode().classList.add("fadeOut"),{dispose:n}},e.prototype.dispose=function(){this._editor.removeContentWidget(this)},e.prototype.getId=function(){return"messageoverlay"},e.prototype.getDomNode=function(){return this._domNode},e.prototype.getPosition=function(){return{position:this._position,preference:[1]}},e}();Object(u["h"])(g),Object(c["f"])(function(e,t){var n=e.getColor(d["db"]);if(n){var i=e.type===c["b"]?2:1;t.addRule(".monaco-editor .monaco-editor-overlaymessage .anchor { border-top-color: "+n+"; }"),t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { border: "+i+"px solid "+n+"; }")}var o=e.getColor(d["cb"]);o&&t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { background-color: "+o+"; }");var r=e.getColor(d["eb"]);r&&t.addRule(".monaco-editor .monaco-editor-overlaymessage .message { color: "+r+"; }")})},3742:function(e,t,n){"use strict";n.d(t,"l",function(){return i}),n.d(t,"u",function(){return o}),n.d(t,"C",function(){return r}),n.d(t,"r",function(){return a}),n.d(t,"o",function(){return u}),n.d(t,"p",function(){return l}),n.d(t,"M",function(){return c}),n.d(t,"B",function(){return d}),n.d(t,"G",function(){return h}),n.d(t,"j",function(){return p}),n.d(t,"J",function(){return f}),n.d(t,"m",function(){return g}),n.d(t,"k",function(){return m}),n.d(t,"E",function(){return v}),n.d(t,"D",function(){return _}),n.d(t,"q",function(){return b}),n.d(t,"s",function(){return y}),n.d(t,"A",function(){return w}),n.d(t,"d",function(){return C}),n.d(t,"e",function(){return S}),n.d(t,"y",function(){return L}),n.d(t,"z",function(){return O}),n.d(t,"n",function(){return N}),n.d(t,"K",function(){return k}),n.d(t,"b",function(){return I}),n.d(t,"c",function(){return E}),n.d(t,"w",function(){return M}),n.d(t,"x",function(){return T}),n.d(t,"h",function(){return R}),n.d(t,"f",function(){return F}),n.d(t,"t",function(){return W}),n.d(t,"g",function(){return V}),n.d(t,"v",function(){return B}),n.d(t,"a",function(){return H}),n.d(t,"L",function(){return z}),n.d(t,"H",function(){return U}),n.d(t,"F",function(){return K}),n.d(t,"i",function(){return q}),n.d(t,"I",function(){return G});var i="";function o(e){return!e||"string"!==typeof e||0===e.trim().length}function r(e,t,n){void 0===n&&(n="0");for(var i=""+e,o=[i],r=i.length;r=t.length?e:t[i]})}function u(e){return e.replace(/[<>&]/g,function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}})}function l(e){return e.replace(/[\-\\\{\}\*\+\?\|\^\$\.\[\]\(\)\#]/g,"\\$&")}function c(e,t){void 0===t&&(t=" ");var n=d(e,t);return h(n,t)}function d(e,t){if(!e||!t)return e;var n=t.length;if(0===n||0===e.length)return e;var i=0;while(e.indexOf(t,i)===i)i+=n;return e.substring(i)}function h(e,t){if(!e||!t)return e;var n=t.length,i=e.length;if(0===n||0===i)return e;var o=i,r=-1;while(1){if(r=e.lastIndexOf(t,o-1),-1===r||r+n!==o)break;if(0===r)return"";o=r}return e.substring(0,o)}function p(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function f(e,t){if(e.length0?e.indexOf(t,n)===n:0===n&&e===t}function m(e,t,n){if(void 0===n&&(n={}),!e)throw new Error("Cannot create regex from empty string");t||(e=l(e)),n.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));var i="";return n.global&&(i+="g"),n.matchCase||(i+="i"),n.multiline&&(i+="m"),n.unicode&&(i+="u"),new RegExp(e,i)}function v(e){if("^"===e.source||"^$"===e.source||"$"===e.source||"^\\s*$"===e.source)return!1;var t=e.exec("");return!(!t||0!==e.lastIndex)}function _(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function b(e){for(var t=0,n=e.length;t=0;n--){var i=e.charCodeAt(n);if(32!==i&&9!==i)return n}return-1}function C(e,t){return et?1:0}function S(e,t){for(var n=Math.min(e.length,t.length),i=0;it.length?1:0}function L(e){return e>=97&&e<=122}function O(e){return e>=65&&e<=90}function x(e){return L(e)||O(e)}function N(e,t){var n=e?e.length:0,i=t?t.length:0;return n===i&&D(e,t)}function D(e,t,n){if(void 0===n&&(n=e.length),"string"!==typeof e||"string"!==typeof t)return!1;for(var i=0;ie.length)&&D(e,t,n)}function I(e,t){var n,i=Math.min(e.length,t.length);for(n=0;n=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}var H=String.fromCharCode(65279);function z(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function U(e){return btoa(encodeURIComponent(e))}function K(e,t){for(var n="",i=0;i0?(i=t?(i+1)%o:(i+o-1)%o,n.children[i]):(i=n.parent.groups.indexOf(n),t?(i=(i+1)%r,n.parent.groups[i].children[0]):(i=(i+r-1)%r,n.parent.groups[i].children[n.parent.groups[i].children.length-1]))},e.prototype.nearestReference=function(e,t){var n=this.references.map(function(n,i){return{idx:i,prefixLen:a["b"](n.uri.toString(),e.toString()),offsetDist:100*Math.abs(n.range.startLineNumber-t.lineNumber)+Math.abs(n.range.startColumn-t.column)}}).sort(function(e,t){return e.prefixLen>t.prefixLen?-1:e.prefixLent.offsetDist?1:0})[0];if(n)return this.references[n.idx]},e.prototype.firstReference=function(){for(var e=0,t=this.references;ei?1:l["a"].compareRangesUsingStarts(e.range,t.range)},e}()},"3d37":function(e,t,n){"use strict";n.d(t,"c",function(){return r}),n.d(t,"a",function(){return s}),n.d(t,"b",function(){return a});var i=n("3742"),o=n("32b8");function r(e){return e.replace(/[\\/]/g,o["posix"].sep)}function s(e,t,n,r){if(void 0===r&&(r=o["sep"]),e===t)return!0;if(!e||!t)return!1;if(t.length>e.length)return!1;if(n){var s=Object(i["K"])(e,t);if(!s)return!1;if(t.length===e.length)return!0;var a=t.length;return t.charAt(t.length-1)===r&&a--,e.charAt(a)===r}return t.charAt(t.length-1)!==r&&(t+=r),0===e.indexOf(t)}function a(e){return e>=65&&e<=90||e>=97&&e<=122}},4035:function(e,t,n){"use strict";n.d(t,"e",function(){return o}),n.d(t,"d",function(){return r}),n.d(t,"c",function(){return l}),n.d(t,"b",function(){return c}),n.d(t,"a",function(){return h});var i=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();function o(e){var t=[];return e.forEach(function(e){return t.push(e)}),t}function r(e){var t=[];return e.forEach(function(e,n){return t.push(n)}),t}var s=function(){function e(){this._value="",this._pos=0}return e.prototype.reset=function(e){return this._value=e,this._pos=0,this},e.prototype.next=function(){return this._pos+=1,this},e.prototype.hasNext=function(){return this._pos0)n.left||(n.left=new u,n.left.segment=i.value()),n=n.left;else if(o<0)n.right||(n.right=new u,n.right.segment=i.value()),n=n.right;else{if(!i.hasNext())break;i.next(),n.mid||(n.mid=new u,n.mid.segment=i.value()),n=n.mid}}var r=n.value;return n.value=t,n.key=e,r},e.prototype.get=function(e){var t=this._iter.reset(e),n=this._root;while(n){var i=t.cmp(n.segment);if(i>0)n=n.left;else if(i<0)n=n.right;else{if(!t.hasNext())break;t.next(),n=n.mid}}return n?n.value:void 0},e.prototype.findSubstr=function(e){var t=this._iter.reset(e),n=this._root,i=void 0;while(n){var o=t.cmp(n.segment);if(o>0)n=n.left;else if(o<0)n=n.right;else{if(!t.hasNext())break;t.next(),i=n.value||i,n=n.mid}}return n&&n.value||i},e.prototype.forEach=function(e){this._forEach(this._root,e)},e.prototype._forEach=function(e,t){e&&(this._forEach(e.left,t),e.value&&t(e.value,e.key),this._forEach(e.mid,t),this._forEach(e.right,t))},e}(),c=function(){function e(){this.map=new Map,this.ignoreCase=!1}return e.prototype.set=function(e,t){this.map.set(this.toKey(e),t)},e.prototype.get=function(e){return this.map.get(this.toKey(e))},e.prototype.toKey=function(e){var t=e.toString();return this.ignoreCase&&(t=t.toLowerCase()),t},e}(),d=function(){function e(){this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0}return e.prototype.clear=function(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),e.prototype.get=function(e,t){void 0===t&&(t=0);var n=this._map.get(e);if(n)return 0!==t&&this.touch(n,t),n.value},e.prototype.set=function(e,t,n){void 0===n&&(n=0);var i=this._map.get(e);if(i)i.value=t,0!==n&&this.touch(i,n);else{switch(i={key:e,value:t,next:void 0,previous:void 0},n){case 0:this.addItemLast(i);break;case 1:this.addItemFirst(i);break;case 2:this.addItemLast(i);break;default:this.addItemLast(i);break}this._map.set(e,i),this._size++}},e.prototype.delete=function(e){return!!this.remove(e)},e.prototype.remove=function(e){var t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value},e.prototype.forEach=function(e,t){var n=this._head;while(n)t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),n=n.next},e.prototype.trimOld=function(e){if(!(e>=this.size))if(0!==e){var t=this._head,n=this.size;while(t&&n>e)this._map.delete(t.key),t=t.next,n--;this._head=t,this._size=n,t&&(t.previous=void 0)}else this.clear()},e.prototype.addItemFirst=function(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e},e.prototype.addItemLast=function(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e},e.prototype.removeItem=function(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{var t=e.next,n=e.previous;if(!t||!n)throw new Error("Invalid list");t.previous=n,n.next=t}e.next=void 0,e.previous=void 0},e.prototype.touch=function(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(1===t||2===t)if(1===t){if(e===this._head)return;var n=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(n.previous=i,i.next=n),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e}else if(2===t){if(e===this._tail)return;n=e.next,i=e.previous;e===this._head?(n.previous=void 0,this._head=n):(n.previous=i,i.next=n),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e}},e.prototype.toJSON=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),e},e}(),h=function(e){function t(t,n){void 0===n&&(n=1);var i=e.call(this)||this;return i._limit=t,i._ratio=Math.min(Math.max(0,n),1),i}return i(t,e),t.prototype.get=function(t){return e.prototype.get.call(this,t,2)},t.prototype.peek=function(t){return e.prototype.get.call(this,t,0)},t.prototype.set=function(t,n){e.prototype.set.call(this,t,n,2),this.checkTrim()},t.prototype.checkTrim=function(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))},t}(d)},4153:function(e,t,n){"use strict";n.d(t,"b",function(){return v}),n.d(t,"a",function(){return b}),n.d(t,"c",function(){return y}),n.d(t,"e",function(){return w}),n.d(t,"d",function(){return x}),n.d(t,"f",function(){return D});var i,o=n("5fe7"),r=n("aa3d"),s=n("fdcc"),a=n("b2cc"),u=n("b707"),l=n("4fc3"),c=n("2504"),d=n("6a89"),h=n("7e93"),p=n("a666"),f=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},g=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0)||n.providerFilter.has(o))return Promise.resolve(o.provideCompletionItems(e,t,r,a)).then(function(r){var s=g.length;if(r){for(var a=0,u=r.suggestions||[];at.sortTextLow)return 1}return e.completion.labelt.completion.label?1:e.completion.kind-t.completion.kind}function S(e,t){if(e.completion.kind!==t.completion.kind){if(25===e.completion.kind)return-1;if(25===t.completion.kind)return 1}return C(e,t)}function L(e,t){if(e.completion.kind!==t.completion.kind){if(25===e.completion.kind)return 1;if(25===t.completion.kind)return-1}return C(e,t)}var O=new Map;function x(e){return O.get(e)}O.set(0,S),O.set(2,L),O.set(1,C),Object(a["e"])("_executeCompletionItemProvider",function(e,t,n){return f(m,void 0,void 0,function(){var i,o,r,s,a,u,l,d;return g(this,function(h){switch(h.label){case 0:return i={incomplete:!1,suggestions:[]},o=new p["b"],r=[],s=n["maxItemsToResolve"]||0,[4,w(e,t)];case 1:for(a=h.sent(),u=0,l=a;ut&&(n=t-e),n<0&&(n=0),i<0&&(i=0),r+i>o&&(r=o-i),r<0&&(r=0),this.width=e,this.scrollWidth=t,this.scrollLeft=n,this.height=i,this.scrollHeight=o,this.scrollTop=r}return e.prototype.equals=function(e){return this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop},e.prototype.withScrollDimensions=function(t){return new e("undefined"!==typeof t.width?t.width:this.width,"undefined"!==typeof t.scrollWidth?t.scrollWidth:this.scrollWidth,this.scrollLeft,"undefined"!==typeof t.height?t.height:this.height,"undefined"!==typeof t.scrollHeight?t.scrollHeight:this.scrollHeight,this.scrollTop)},e.prototype.withScrollPosition=function(t){return new e(this.width,this.scrollWidth,"undefined"!==typeof t.scrollLeft?t.scrollLeft:this.scrollLeft,this.height,this.scrollHeight,"undefined"!==typeof t.scrollTop?t.scrollTop:this.scrollTop)},e.prototype.createScrollEvent=function(e){var t=this.width!==e.width,n=this.scrollWidth!==e.scrollWidth,i=this.scrollLeft!==e.scrollLeft,o=this.height!==e.height,r=this.scrollHeight!==e.scrollHeight,s=this.scrollTop!==e.scrollTop;return{width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:t,scrollWidthChanged:n,scrollLeftChanged:i,heightChanged:o,scrollHeightChanged:r,scrollTopChanged:s}},e}(),a=function(e){function t(t,n){var o=e.call(this)||this;return o._onScroll=o._register(new i["a"]),o.onScroll=o._onScroll.event,o._smoothScrollDuration=t,o._scheduleAtNextAnimationFrame=n,o._state=new s(0,0,0,0,0,0),o._smoothScrolling=null,o}return r(t,e),t.prototype.dispose=function(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),e.prototype.dispose.call(this)},t.prototype.setSmoothScrollDuration=function(e){this._smoothScrollDuration=e},t.prototype.validateScrollPosition=function(e){return this._state.withScrollPosition(e)},t.prototype.getScrollDimensions=function(){return this._state},t.prototype.setScrollDimensions=function(e){var t=this._state.withScrollDimensions(e);this._setState(t),this._smoothScrolling&&this._smoothScrolling.acceptScrollDimensions(this._state)},t.prototype.getFutureScrollPosition=function(){return this._smoothScrolling?this._smoothScrolling.to:this._state},t.prototype.getCurrentScrollPosition=function(){return this._state},t.prototype.setScrollPositionNow=function(e){var t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t)},t.prototype.setScrollPositionSmooth=function(e){var t=this;if(0===this._smoothScrollDuration)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:"undefined"===typeof e.scrollLeft?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:"undefined"===typeof e.scrollTop?this._smoothScrolling.to.scrollTop:e.scrollTop};var n=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===n.scrollLeft&&this._smoothScrolling.to.scrollTop===n.scrollTop)return;var i=this._smoothScrolling.combine(this._state,n,this._smoothScrollDuration);this._smoothScrolling.dispose(),this._smoothScrolling=i}else{n=this._state.withScrollPosition(e);this._smoothScrolling=d.start(this._state,n,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(function(){t._smoothScrolling&&(t._smoothScrolling.animationFrameDisposable=null,t._performSmoothScrolling())})},t.prototype._performSmoothScrolling=function(){var e=this;if(this._smoothScrolling){var t=this._smoothScrolling.tick(),n=this._state.withScrollPosition(t);if(this._setState(n),t.isDone)return this._smoothScrolling.dispose(),void(this._smoothScrolling=null);this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame(function(){e._smoothScrolling&&(e._smoothScrolling.animationFrameDisposable=null,e._performSmoothScrolling())})}},t.prototype._setState=function(e){var t=this._state;t.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(t)))},t}(o["a"]),u=function(){function e(e,t,n){this.scrollLeft=e,this.scrollTop=t,this.isDone=n}return e}();function l(e,t){var n=t-e;return function(t){return e+n*p(t)}}function c(e,t,n){return function(i){return i2.5*n){var o=void 0,r=void 0;return e200)return e;if("object"===typeof e){switch(e.$mid){case 1:return i["a"].revive(e);case 2:return new RegExp(e.source,e.flags)}for(var n in e)Object.hasOwnProperty.call(e,n)&&(e[n]=r(e[n],t+1))}return e}},"43ad":function(e,t,n){"use strict";n.r(t);var i=n("dff7"),o=n("fdcc"),r=n("4fc3"),s=n("b539"),a=n("b2cc"),u=n("c101"),l=(n("0632"),n("a666")),c=n("7061"),d=n("6a89"),h=n("303e"),p=new r["d"]("renameInputVisible",!1),f=function(){function e(e,t,n){var i=this;this.themeService=t,this._disposables=new l["b"],this.allowEditorOverflow=!0,this._currentAcceptInput=null,this._currentCancelInput=null,this._visibleContextKey=p.bindTo(n),this._editor=e,this._editor.addContentWidget(this),this._disposables.add(e.onDidChangeConfiguration(function(e){e.fontInfo&&i.updateFont()})),this._disposables.add(t.onThemeChange(function(e){return i.onThemeChange(e)}))}return e.prototype.onThemeChange=function(e){this.updateStyles(e)},e.prototype.dispose=function(){this._disposables.dispose(),this._editor.removeContentWidget(this)},e.prototype.getId=function(){return"__renameInputWidget"},e.prototype.getDomNode=function(){return this._domNode||(this._inputField=document.createElement("input"),this._inputField.className="rename-input",this._inputField.type="text",this._inputField.setAttribute("aria-label",Object(i["a"])("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode=document.createElement("div"),this._domNode.style.height=this._editor.getConfiguration().lineHeight+"px",this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputField),this.updateFont(),this.updateStyles(this.themeService.getTheme())),this._domNode},e.prototype.updateStyles=function(e){if(this._inputField){var t=e.getColor(h["W"]),n=e.getColor(h["Y"]),i=e.getColor(h["Wb"]),o=e.getColor(h["X"]);this._inputField.style.backgroundColor=t?t.toString():null,this._inputField.style.color=n?n.toString():null,this._inputField.style.borderWidth=o?"1px":"0px",this._inputField.style.borderStyle=o?"solid":"none",this._inputField.style.borderColor=o?o.toString():"none",this._domNode.style.boxShadow=i?" 0 2px 8px "+i:null}},e.prototype.updateFont=function(){if(this._inputField){var e=this._editor.getConfiguration().fontInfo;this._inputField.style.fontFamily=e.fontFamily,this._inputField.style.fontWeight=e.fontWeight,this._inputField.style.fontSize=e.fontSize+"px"}},e.prototype.getPosition=function(){return this._visible?{position:this._position,preference:[2,1]}:null},e.prototype.acceptInput=function(){this._currentAcceptInput&&this._currentAcceptInput()},e.prototype.cancelInput=function(e){this._currentCancelInput&&this._currentCancelInput(e)},e.prototype.getInput=function(e,t,n,i){var o=this;this._position=new c["a"](e.startLineNumber,e.startColumn),this._inputField.value=t,this._inputField.setAttribute("selectionStart",n.toString()),this._inputField.setAttribute("selectionEnd",i.toString()),this._inputField.size=Math.max(1.1*(e.endColumn-e.startColumn),20);var r=new l["b"],s=function(){r.dispose(),o._hide()};return new Promise(function(n){o._currentCancelInput=function(e){return o._currentAcceptInput=null,o._currentCancelInput=null,n(e),!0},o._currentAcceptInput=function(){0!==o._inputField.value.trim().length&&o._inputField.value!==t?(o._currentAcceptInput=null,o._currentCancelInput=null,n(o._inputField.value)):o.cancelInput(!0)};var i=function(){var t=o._editor.getPosition();t&&d["a"].containsPosition(e,t)||o.cancelInput(!0)};r.add(o._editor.onDidChangeCursorSelection(i)),r.add(o._editor.onDidBlurEditorWidget(function(){return o.cancelInput(!1)})),o._show()}).then(function(e){return s(),e},function(e){return s(),Promise.reject(e)})},e.prototype._show=function(){var e=this;this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(function(){e._inputField.focus(),e._inputField.setSelectionRange(parseInt(e._inputField.getAttribute("selectionStart")),parseInt(e._inputField.getAttribute("selectionEnd")))},100)},e.prototype._hide=function(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)},e}(),g=n("b7d0"),m=n("b707"),v=n("3813"),_=n("351f"),b=n("bc04"),y=n("b0cd"),w=n("c7f5"),C=n("6d8e"),S=n("5717"),L=n("2504"),O=n("5fe7");n.d(t,"rename",function(){return M}),n.d(t,"RenameAction",function(){return P});var x=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),N=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},D=function(e,t){return function(n,i){t(n,i,e)}},k=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},I=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0},e.prototype.resolveRenameLocation=function(e){return k(this,void 0,void 0,function(){var t,n,i;return I(this,function(o){switch(o.label){case 0:return t=this._providers[0],t?t.resolveRenameLocation?[4,t.resolveRenameLocation(this.model,this.position,e)]:[3,2]:[2,void 0];case 1:n=o.sent(),o.label=2;case 2:return!n&&(i=this.model.getWordAtPosition(this.position),i)?[2,{range:new d["a"](this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word}]:[2,n]}})})},e.prototype.provideRenameEdits=function(e,t,n,o){return k(this,void 0,void 0,function(){var r,s;return I(this,function(a){switch(a.label){case 0:return r=this._providers[t],r?[4,r.provideRenameEdits(this.model,this.position,e,o)]:[2,{edits:[],rejectReason:n.join("\n")}];case 1:return s=a.sent(),s?s.rejectReason?[2,this.provideRenameEdits(e,t+1,n.concat(s.rejectReason),o)]:[2,s]:[2,this.provideRenameEdits(e,t+1,n.concat(i["a"]("no result","No result.")),o)]}})})},e}();function M(e,t,n){return k(this,void 0,void 0,function(){return I(this,function(i){return[2,new E(e,t).provideRenameEdits(n,0,[],L["a"].None)]})})}var T=function(e){function t(t,n,i,o,r,s){var a=e.call(this)||this;return a.editor=t,a._notificationService=n,a._bulkEditService=i,a._progressService=o,a._contextKeyService=r,a._themeService=s,a._renameOperationIdPool=1,a._register(a.editor.onDidChangeModel(function(){return a.onModelChanged()})),a._register(a.editor.onDidChangeModelLanguage(function(){return a.onModelChanged()})),a._register(a.editor.onDidChangeCursorSelection(function(){return a.onModelChanged()})),a}return x(t,e),t.get=function(e){return e.getContribution(t.ID)},Object.defineProperty(t.prototype,"renameInputField",{get:function(){return this._renameInputField||(this._renameInputField=this._register(new f(this.editor,this._themeService,this._contextKeyService))),this._renameInputField},enumerable:!0,configurable:!0}),t.prototype.getId=function(){return t.ID},t.prototype.run=function(){return k(this,void 0,void 0,function(){var e,t=this;return I(this,function(n){return this._activeRename&&this._activeRename.operation.cancel(),e=this._renameOperationIdPool++,this._activeRename={id:e,operation:Object(O["f"])(function(n){return t.doRename(n,e)})},[2,this._activeRename.operation]})})},t.prototype.doRename=function(e,t){return k(this,void 0,void 0,function(){var n,o,r,s,a,u,l,c,h=this;return I(this,function(p){switch(p.label){case 0:if(!this.editor.hasModel())return[2,void 0];if(n=this.editor.getPosition(),o=new E(this.editor.getModel(),n),!o.hasProvider())return[2,void 0];p.label=1;case 1:return p.trys.push([1,3,,4]),s=o.resolveRenameLocation(e),this._progressService.showWhile(s,250),[4,s];case 2:return r=p.sent(),[3,4];case 3:return a=p.sent(),_["a"].get(this.editor).showMessage(a||i["a"]("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),n),[2,void 0];case 4:return r?r.rejectReason?(_["a"].get(this.editor).showMessage(r.rejectReason,n),[2,void 0]):this._activeRename&&this._activeRename.id===t?(u=this.editor.getSelection(),l=0,c=r.text.length,d["a"].isEmpty(u)||d["a"].spansMultipleLines(u)||!d["a"].containsRange(r.range,u)||(l=Math.max(0,u.startColumn-r.range.startColumn),c=Math.min(r.range.endColumn,u.endColumn)-r.range.startColumn),[2,this.renameInputField.getInput(r.range,r.text,l,c).then(function(t){if("boolean"!==typeof t){h.editor.focus();var n=new b["a"](h.editor,15),s=Promise.resolve(o.provideRenameEdits(t,0,[],e).then(function(e){if(h.editor.hasModel()){if(!e.rejectReason)return h._bulkEditService.apply(e,{editor:h.editor}).then(function(e){e.ariaSummary&&Object(v["a"])(i["a"]("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",r.text,t,e.ariaSummary))});n.validate(h.editor)?_["a"].get(h.editor).showMessage(e.rejectReason,h.editor.getPosition()):h._notificationService.info(e.rejectReason)}},function(e){return h._notificationService.error(i["a"]("rename.failed","Rename failed to execute.")),Promise.reject(e)}));return h._progressService.showWhile(s,250),s}t&&h.editor.focus()})]):[2,void 0]:[2,void 0]}})})},t.prototype.acceptRenameInput=function(){this._renameInputField&&this._renameInputField.acceptInput()},t.prototype.cancelRenameInput=function(){this._renameInputField&&this._renameInputField.cancelInput(!0)},t.prototype.onModelChanged=function(){this._activeRename&&(this._activeRename.operation.cancel(),this._activeRename=void 0)},t.ID="editor.contrib.renameController",t=N([D(1,y["a"]),D(2,w["a"]),D(3,s["a"]),D(4,r["c"]),D(5,g["c"])],t),t}(l["a"]),P=function(e){function t(){return e.call(this,{id:"editor.action.rename",label:i["a"]("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:r["a"].and(u["a"].writable,u["a"].hasRenameProvider),kbOpts:{kbExpr:u["a"].editorTextFocus,primary:60,weight:100},menuOpts:{group:"1_modification",order:1.1}})||this}return x(t,e),t.prototype.runCommand=function(t,n){var i=this,r=t.get(S["a"]),s=Array.isArray(n)&&n||[void 0,void 0],a=s[0],u=s[1];return C["a"].isUri(a)&&c["a"].isIPosition(u)?r.openCodeEditor({resource:a},r.getActiveCodeEditor()).then(function(e){e&&(e.setPosition(u),e.invokeWithinContext(function(t){return i.reportTelemetry(t,e),i.run(t,e)}))},o["e"]):e.prototype.runCommand.call(this,t,n)},t.prototype.run=function(e,t){var n=T.get(t);return n?n.run():Promise.resolve()},t}(a["b"]);Object(a["h"])(T),Object(a["f"])(P);var R=a["c"].bindToContribution(T.get);Object(a["g"])(new R({id:"acceptRenameInput",precondition:p,handler:function(e){return e.acceptRenameInput()},kbOpts:{weight:199,kbExpr:u["a"].focus,primary:3}})),Object(a["g"])(new R({id:"cancelRenameInput",precondition:p,handler:function(e){return e.cancelRenameInput()},kbOpts:{weight:199,kbExpr:u["a"].focus,primary:9,secondary:[1033]}})),Object(a["e"])("_executeDocumentRenameProvider",function(e,t,n){var i=n.newName;if("string"!==typeof i)throw Object(o["b"])("newName");return M(e,t,i)})},"44c7":function(e,t,n){},"469c":function(e,t,n){"use strict";var i=n("dff7"),o=n("ef8e"),r=n("c4e3"),s=n("5aa5"),a=n("ee56"),u=n("11f7"),l=(n("abf2"),n("aa3d")),c=n("8b4e"),d=u["a"],h=function(){function e(e,t,n){this.os=t,this.options=n,this.domNode=u["m"](e,d(".monaco-keybinding")),this.didEverRender=!1,e.appendChild(this.domNode)}return e.prototype.set=function(t,n){this.didEverRender&&this.keybinding===t&&e.areSame(this.matches,n)||(this.keybinding=t,this.matches=n,this.render())},e.prototype.render=function(){if(u["p"](this.domNode),this.keybinding){var e=this.keybinding.getParts(),t=e[0],n=e[1];t&&this.renderPart(this.domNode,t,this.matches?this.matches.firstPart:null),n&&(u["m"](this.domNode,d("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderPart(this.domNode,n,this.matches?this.matches.chordPart:null)),this.domNode.title=this.keybinding.getAriaLabel()||""}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0},e.prototype.renderPart=function(e,t,n){var i=c["b"].modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,i.ctrlKey,Boolean(n&&n.ctrlKey),i.separator),t.shiftKey&&this.renderKey(e,i.shiftKey,Boolean(n&&n.shiftKey),i.separator),t.altKey&&this.renderKey(e,i.altKey,Boolean(n&&n.altKey),i.separator),t.metaKey&&this.renderKey(e,i.metaKey,Boolean(n&&n.metaKey),i.separator);var o=t.keyLabel;o&&this.renderKey(e,o,Boolean(n&&n.keyCode),"")},e.prototype.renderKey=function(e,t,n,i){u["m"](e,d("span.monaco-keybinding-key"+(n?".highlight":""),void 0,t)),i&&u["m"](e,d("span.monaco-keybinding-key-separator",void 0,i))},e.prototype.renderUnbound=function(e){u["m"](e,d("span.monaco-keybinding-key",void 0,Object(i["a"])("unbound","Unbound")))},e.areSame=function(e,t){return e===t||!e&&!t||!!e&&!!t&&Object(l["e"])(e.firstPart,t.firstPart)&&Object(l["e"])(e.chordPart,t.chordPart)},e}(),p=n("30db"),f=n("e8e3");n.d(t,"a",function(){return v}),n.d(t,"b",function(){return _}),n.d(t,"c",function(){return S});var g=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),m=0,v=function(){function e(e){void 0===e&&(e=[]),this.id=(m++).toString(),this.labelHighlights=e,this.descriptionHighlights=[]}return e.prototype.getId=function(){return this.id},e.prototype.getLabel=function(){},e.prototype.getLabelOptions=function(){},e.prototype.getAriaLabel=function(){return Object(f["d"])([this.getLabel(),this.getDescription(),this.getDetail()]).join(", ")},e.prototype.getDetail=function(){},e.prototype.getIcon=function(){},e.prototype.getDescription=function(){},e.prototype.getTooltip=function(){},e.prototype.getDescriptionTooltip=function(){},e.prototype.getKeybinding=function(){},e.prototype.isHidden=function(){return!!this.hidden},e.prototype.setHighlights=function(e,t,n){this.labelHighlights=e,this.descriptionHighlights=t,this.detailHighlights=n},e.prototype.getHighlights=function(){return[this.labelHighlights,this.descriptionHighlights,this.detailHighlights]},e.prototype.run=function(e,t){return!1},e}(),_=function(e){function t(t,n,i){var o=e.call(this)||this;return o.entry=t,o.groupLabel=n,o.withBorder=i,o}return g(t,e),t.prototype.getGroupLabel=function(){return this.groupLabel},t.prototype.setGroupLabel=function(e){this.groupLabel=e},t.prototype.showBorder=function(){return!!this.withBorder},t.prototype.setShowBorder=function(e){this.withBorder=e},t.prototype.getLabel=function(){return this.entry?this.entry.getLabel():e.prototype.getLabel.call(this)},t.prototype.getLabelOptions=function(){return this.entry?this.entry.getLabelOptions():e.prototype.getLabelOptions.call(this)},t.prototype.getAriaLabel=function(){return this.entry?this.entry.getAriaLabel():e.prototype.getAriaLabel.call(this)},t.prototype.getDetail=function(){return this.entry?this.entry.getDetail():e.prototype.getDetail.call(this)},t.prototype.getIcon=function(){return this.entry?this.entry.getIcon():e.prototype.getIcon.call(this)},t.prototype.getDescription=function(){return this.entry?this.entry.getDescription():e.prototype.getDescription.call(this)},t.prototype.getHighlights=function(){return this.entry?this.entry.getHighlights():e.prototype.getHighlights.call(this)},t.prototype.isHidden=function(){return this.entry?this.entry.isHidden():e.prototype.isHidden.call(this)},t.prototype.setHighlights=function(t,n,i){this.entry?this.entry.setHighlights(t,n,i):e.prototype.setHighlights.call(this,t,n,i)},t.prototype.run=function(t,n){return this.entry?this.entry.run(t,n):e.prototype.run.call(this,t,n)},t}(v),b=function(){function e(){}return e.prototype.hasActions=function(e,t){return!1},e.prototype.getActions=function(e,t){return null},e}(),y="quickOpenEntry",w="quickOpenEntryGroup",C=function(){function e(e,t){void 0===e&&(e=new b),this.actionProvider=e,this.actionRunner=t}return e.prototype.getHeight=function(e){return e.getDetail()?44:22},e.prototype.getTemplateId=function(e){return e instanceof _?w:y},e.prototype.renderTemplate=function(e,t,n){var i=document.createElement("div");u["f"](i,"sub-content"),t.appendChild(i);var o=u["a"](".quick-open-row"),l=u["a"](".quick-open-row"),c=u["a"](".quick-open-entry",void 0,o,l);i.appendChild(c);var d=document.createElement("span");o.appendChild(d);var f=new r["a"](o,{supportHighlights:!0,supportDescriptionHighlights:!0,supportOcticons:!0}),g=document.createElement("span");o.appendChild(g),u["f"](g,"quick-open-entry-keybinding");var m=new h(g,p["a"]),v=document.createElement("div");l.appendChild(v),u["f"](v,"quick-open-entry-meta");var _,b=new a["a"](v,!0);e===w&&(_=document.createElement("div"),u["f"](_,"results-group"),t.appendChild(_)),u["f"](t,"actions");var y=document.createElement("div");u["f"](y,"primary-action-bar"),t.appendChild(y);var C=new s["a"](y,{actionRunner:this.actionRunner});return{container:t,entry:c,icon:d,label:f,detail:b,keybinding:m,group:_,actionBar:C}},e.prototype.renderElement=function(e,t,n,i){this.actionProvider.hasActions(null,e)?u["f"](n.container,"has-actions"):u["I"](n.container,"has-actions"),n.actionBar.context=e;var r=this.actionProvider.getActions(null,e);if(n.actionBar.isEmpty()&&r&&r.length>0?n.actionBar.push(r,{icon:!0,label:!1}):n.actionBar.isEmpty()||r&&0!==r.length||n.actionBar.clear(),e instanceof _&&e.getGroupLabel()?u["f"](n.container,"has-group-label"):u["I"](n.container,"has-group-label"),e instanceof _){var s=e,a=n;s.showBorder()?(u["f"](a.container,"results-group-separator"),i.pickerGroupBorder&&(a.container.style.borderTopColor=i.pickerGroupBorder.toString())):(u["I"](a.container,"results-group-separator"),a.container.style.borderTopColor=null);var l=s.getGroupLabel()||"";a.group&&(a.group.textContent=l,i.pickerGroupForeground&&(a.group.style.color=i.pickerGroupForeground.toString()))}if(e instanceof v){var c=e.getHighlights(),d=c[0],h=c[1],p=c[2],f=e.getIcon()?"quick-open-entry-icon "+e.getIcon():"";n.icon.className=f;var g=e.getLabelOptions()||Object.create(null);g.matches=d||[],g.title=e.getTooltip(),g.descriptionTitle=e.getDescriptionTooltip()||e.getDescription(),g.descriptionMatches=h||[],n.label.setLabel(o["m"](e.getLabel()),e.getDescription(),g),n.detail.set(e.getDetail(),p),n.keybinding.set(e.getKeybinding())}},e.prototype.disposeTemplate=function(e,t){t.actionBar.dispose(),t.actionBar=null,t.container=null,t.entry=null,t.keybinding=null,t.detail=null,t.group=null,t.icon=null,t.label.dispose(),t.label=null},e}(),S=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=new b),this._entries=e,this._dataSource=this,this._renderer=new C(t),this._filter=this,this._runner=this,this._accessibilityProvider=this}return Object.defineProperty(e.prototype,"entries",{get:function(){return this._entries},set:function(e){this._entries=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dataSource",{get:function(){return this._dataSource},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"renderer",{get:function(){return this._renderer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"filter",{get:function(){return this._filter},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"runner",{get:function(){return this._runner},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"accessibilityProvider",{get:function(){return this._accessibilityProvider},enumerable:!0,configurable:!0}),e.prototype.getId=function(e){return e.getId()},e.prototype.getLabel=function(e){return o["n"](e.getLabel())},e.prototype.getAriaLabel=function(e){var t=e.getAriaLabel();return t?i["a"]("quickOpenAriaLabelEntry","{0}, picker",e.getAriaLabel()):i["a"]("quickOpenAriaLabel","picker")},e.prototype.isVisible=function(e){return!e.isHidden()},e.prototype.run=function(e,t,n){return e.run(t,n)},e}()},4779:function(e,t,n){"use strict";n.d(t,"b",function(){return r}),n.d(t,"a",function(){return s});var i=n("0a0f"),o=n("4fc3"),r=Object(i["c"])("accessibilityService"),s=new o["d"]("accessibilityModeEnabled",!1)},"47cb":function(e,t,n){"use strict";n.d(t,"a",function(){return r});var i=n("0a0f"),o="label",r=Object(i["c"])(o)},4816:function(e,t,n){"use strict";n.r(t);n("41a01");var i=n("0f70"),o=n("11f7"),r=n("6653"),s=n("31df"),a=n("3813"),u=n("1b7d"),l=n("a666"),c=n("30db"),d=n("3742"),h=n("6d8e"),p=n("b2cc"),f=n("c101"),g=n("93ba"),m=n("4fc3"),v=n("0a0f"),_=n("6dec"),b=n("5bd7"),y=n("303e"),w=n("b7d0"),C=n("03d9"),S=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),L=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},O=function(e,t){return function(n,i){t(n,i,e)}},x=new m["d"]("accessibilityHelpWidgetVisible",!1),N=function(e){function t(t,n){var i=e.call(this)||this;return i._editor=t,i._widget=i._register(n.createInstance(k,i._editor)),i}return S(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.show=function(){this._widget.show()},t.prototype.hide=function(){this._widget.hide()},t.ID="editor.contrib.accessibilityHelpController",t=L([O(1,v["a"])],t),t}(l["a"]);function D(e,t){return e&&0!==e.length?1===e.length?t?d["r"](C["a"].singleSelectionRange,e[0].positionLineNumber,e[0].positionColumn,t):d["r"](C["a"].singleSelection,e[0].positionLineNumber,e[0].positionColumn):t?d["r"](C["a"].multiSelectionRange,e.length,t):e.length>0?d["r"](C["a"].multiSelection,e.length):"":C["a"].noSelection}var k=function(e){function t(t,n,i,s){var u=e.call(this)||this;return u._contextKeyService=n,u._keybindingService=i,u._openerService=s,u._editor=t,u._isVisibleKey=x.bindTo(u._contextKeyService),u._domNode=Object(r["b"])(document.createElement("div")),u._domNode.setClassName("accessibilityHelpWidget"),u._domNode.setDisplay("none"),u._domNode.setAttribute("role","dialog"),u._domNode.setAttribute("aria-hidden","true"),u._contentDomNode=Object(r["b"])(document.createElement("div")),u._contentDomNode.setAttribute("role","document"),u._domNode.appendChild(u._contentDomNode),u._isVisible=!1,u._register(u._editor.onDidLayoutChange(function(){u._isVisible&&u._layout()})),u._register(o["k"](u._contentDomNode.domNode,"keydown",function(e){if(u._isVisible&&(e.equals(2083)&&(Object(a["a"])(C["a"].emergencyConfOn),u._editor.updateOptions({accessibilitySupport:"on"}),o["p"](u._contentDomNode.domNode),u._buildContent(),u._contentDomNode.domNode.focus(),e.preventDefault(),e.stopPropagation()),e.equals(2086))){Object(a["a"])(C["a"].openingDocs);var t=u._editor.getRawConfiguration().accessibilityHelpUrl;"undefined"===typeof t&&(t="https://go.microsoft.com/fwlink/?linkid=852450"),u._openerService.open(h["a"].parse(t)),e.preventDefault(),e.stopPropagation()}})),u.onblur(u._contentDomNode.domNode,function(){u.hide()}),u._editor.addOverlayWidget(u),u}return S(t,e),t.prototype.dispose=function(){this._editor.removeOverlayWidget(this),e.prototype.dispose.call(this)},t.prototype.getId=function(){return t.ID},t.prototype.getDomNode=function(){return this._domNode.domNode},t.prototype.getPosition=function(){return{preference:null}},t.prototype.show=function(){this._isVisible||(this._isVisible=!0,this._isVisibleKey.set(!0),this._layout(),this._domNode.setDisplay("block"),this._domNode.setAttribute("aria-hidden","false"),this._contentDomNode.domNode.tabIndex=0,this._buildContent(),this._contentDomNode.domNode.focus())},t.prototype._descriptionForCommand=function(e,t,n){var i=this._keybindingService.lookupKeybinding(e);return i?d["r"](t,i.getAriaLabel()):d["r"](n,e)},t.prototype._buildContent=function(){var e=this._editor.getConfiguration(),t=this._editor.getSelections(),n=0;if(t){var i=this._editor.getModel();i&&t.forEach(function(e){n+=i.getValueLengthInRange(e)})}var o=D(t,n);e.wrappingInfo.inDiffEditor?e.readOnly?o+=C["a"].readonlyDiffEditor:o+=C["a"].editableDiffEditor:e.readOnly?o+=C["a"].readonlyEditor:o+=C["a"].editableEditor;var r=c["d"]?C["a"].changeConfigToOnMac:C["a"].changeConfigToOnWinLinux;switch(e.accessibilitySupport){case 0:o+="\n\n - "+r;break;case 2:o+="\n\n - "+C["a"].auto_on;break;case 1:o+="\n\n - "+C["a"].auto_off,o+=" "+r;break}e.tabFocusMode?o+="\n\n - "+this._descriptionForCommand(g["ToggleTabFocusModeAction"].ID,C["a"].tabFocusModeOnMsg,C["a"].tabFocusModeOnMsgNoKb):o+="\n\n - "+this._descriptionForCommand(g["ToggleTabFocusModeAction"].ID,C["a"].tabFocusModeOffMsg,C["a"].tabFocusModeOffMsgNoKb);var a=c["d"]?C["a"].openDocMac:C["a"].openDocWinLinux;o+="\n\n - "+a,o+="\n\n"+C["a"].outroMsg,this._contentDomNode.domNode.appendChild(Object(s["b"])(o)),this._contentDomNode.domNode.setAttribute("aria-label",o)},t.prototype.hide=function(){this._isVisible&&(this._isVisible=!1,this._isVisibleKey.reset(),this._domNode.setDisplay("none"),this._domNode.setAttribute("aria-hidden","true"),this._contentDomNode.domNode.tabIndex=-1,o["p"](this._contentDomNode.domNode),this._editor.focus())},t.prototype._layout=function(){var e=this._editor.getLayoutInfo(),n=Math.max(5,Math.min(t.WIDTH,e.width-40)),i=Math.max(5,Math.min(t.HEIGHT,e.height-40));this._domNode.setWidth(n),this._domNode.setHeight(i);var o=Math.round((e.height-i)/2);this._domNode.setTop(o);var r=Math.round((e.width-n)/2);this._domNode.setLeft(r)},t.ID="editor.contrib.accessibilityHelpWidget",t.WIDTH=500,t.HEIGHT=300,t=L([O(1,m["c"]),O(2,_["a"]),O(3,b["a"])],t),t}(u["a"]),I=function(e){function t(){return e.call(this,{id:"editor.action.showAccessibilityHelp",label:C["a"].showAccessibilityHelpAction,alias:"Show Accessibility Help",precondition:void 0,kbOpts:{kbExpr:f["a"].focus,primary:i["j"]?2107:571,weight:100}})||this}return S(t,e),t.prototype.run=function(e,t){var n=N.get(t);n&&n.show()},t}(p["b"]);Object(p["h"])(N),Object(p["f"])(I);var E=p["c"].bindToContribution(N.get);Object(p["g"])(new E({id:"closeAccessibilityHelp",precondition:x,handler:function(e){return e.hide()},kbOpts:{weight:200,kbExpr:f["a"].focus,primary:9,secondary:[1033]}})),Object(w["f"])(function(e,t){var n=e.getColor(y["N"]);n&&t.addRule(".monaco-editor .accessibilityHelpWidget { background-color: "+n+"; }");var i=e.getColor(y["P"]);i&&t.addRule(".monaco-editor .accessibilityHelpWidget { color: "+i+"; }");var o=e.getColor(y["Wb"]);o&&t.addRule(".monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px "+o+"; }");var r=e.getColor(y["e"]);r&&t.addRule(".monaco-editor .accessibilityHelpWidget { border: 2px solid "+r+"; }")})},"49d9":function(e,t,n){"use strict";function i(e,t,n){return Math.min(Math.max(e,t),n)}n.d(t,"a",function(){return i})},"4b76":function(e,t,n){"use strict";var i,o=n("dff7"),r=n("3742");(function(e){e[e["Ignore"]=0]="Ignore",e[e["Info"]=1]="Info",e[e["Warning"]=2]="Warning",e[e["Error"]=3]="Error"})(i||(i={})),function(e){var t="error",n="warning",i="warn",s="info",a=Object.create(null);function u(o){return o?r["n"](t,o)?e.Error:r["n"](n,o)||r["n"](i,o)?e.Warning:r["n"](s,o)?e.Info:e.Ignore:e.Ignore}a[e.Error]=o["a"]("sev.error","Error"),a[e.Warning]=o["a"]("sev.warning","Warning"),a[e.Info]=o["a"]("sev.info","Info"),e.fromValue=u}(i||(i={})),t["a"]=i},"4c2d":function(e,t,n){"use strict";n.r(t),n.d(t,"defaultReferenceSearchOptions",function(){return D}),n.d(t,"ReferenceController",function(){return k}),n.d(t,"ReferenceAction",function(){return I}),n.d(t,"provideReferences",function(){return A});var i=n("dff7"),o=n("4fc3"),r=n("9eb8"),s=n("7061"),a=n("b2cc"),u=n("b707"),l=n("6a89"),c=n("e5aa"),d=n("aa43"),h=n("3a57"),p=n("5fe7"),f=n("fdcc"),g=n("c101"),m=n("d379"),v=n("b055"),_=n("93d9"),b=n("7121"),y=n("9e74"),w=n("6d8e"),C=n("5717"),S=n("2504"),L=n("e8e3"),O=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),x=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},N=function(e,t){return function(n,i){t(n,i,e)}},D={getMetaTitle:function(e){return e.references.length>1?i["a"]("meta.titleReference"," – {0} references",e.references.length):""}},k=function(){function e(e,t){e instanceof m["a"]&&c["b"].inPeekEditor.bindTo(t)}return e.prototype.dispose=function(){},e.prototype.getId=function(){return e.ID},e.ID="editor.contrib.referenceController",e=x([N(1,o["c"])],e),e}(),I=function(e){function t(){return e.call(this,{id:"editor.action.referenceSearch.trigger",label:i["a"]("references.action.label","Peek References"),alias:"Peek References",precondition:o["a"].and(g["a"].hasReferenceProvider,c["b"].notInPeekEditor,g["a"].isInEmbeddedEditor.toNegated()),kbOpts:{kbExpr:g["a"].editorTextFocus,primary:1094,weight:100},menuOpts:{group:"navigation",order:1.5}})||this}return O(t,e),t.prototype.run=function(e,t){var n=d["a"].get(t);if(n&&t.hasModel()){var i=t.getSelection(),o=t.getModel(),r=Object(p["f"])(function(e){return A(o,i.getStartPosition(),e).then(function(e){return new h["c"](e)})});n.toggleWidget(i,r,D)}},t}(a["b"]);Object(a["h"])(k),Object(a["f"])(I);var E=function(e,t,n){if(!(t instanceof w["a"]))throw new Error("illegal argument, uri");if(!n)throw new Error("illegal argument, position");var i=e.get(C["a"]);return i.openCodeEditor({resource:t},i.getFocusedCodeEditor()).then(function(e){if(Object(v["a"])(e)&&e.hasModel()){var t=d["a"].get(e);if(t){var i=Object(p["f"])(function(t){return A(e.getModel(),s["a"].lift(n),t).then(function(e){return new h["c"](e)})}),o=new l["a"](n.lineNumber,n.column,n.lineNumber,n.column);return Promise.resolve(t.toggleWidget(o,i,D))}}})},M=function(e,t,n,i){if(!(t instanceof w["a"]))throw new Error("illegal argument, uri expected");if(!i)throw new Error("missing references");var o=e.get(C["a"]);return o.openCodeEditor({resource:t},o.getFocusedCodeEditor()).then(function(e){if(Object(v["a"])(e)){var t=d["a"].get(e);if(t)return t.toggleWidget(new l["a"](n.lineNumber,n.column,n.lineNumber,n.column),Object(p["f"])(function(e){return Promise.resolve(new h["c"](i))}),D)}})};function T(e,t){R(e,function(e){return e.closeWidget()})}function P(e,t){var n=e.get(_["a"]),i=n.lastFocusedList&&n.lastFocusedList.getFocus();i instanceof h["b"]&&R(e,function(e){return e.openReference(i,!0)})}function R(e,t){var n=Object(c["d"])(e);if(n){var i=d["a"].get(n);i&&t(i)}}function A(e,t,n){var i=u["s"].ordered(e).map(function(i){return Promise.resolve(i.provideReferences(e,t,{includeDeclaration:!0},n)).then(function(e){if(Array.isArray(e))return e},function(e){Object(f["f"])(e)})});return Promise.all(i).then(function(e){return Object(L["k"])(Object(L["d"])(e))})}y["a"].registerCommand({id:"editor.action.findReferences",handler:E}),y["a"].registerCommand({id:"editor.action.showReferences",handler:M,description:{description:"Show references at a position in a file",args:[{name:"uri",description:"The text document in which to show references",constraint:w["a"]},{name:"position",description:"The position at which to show",constraint:s["a"].isIPosition},{name:"locations",description:"An array of locations.",constraint:Array}]}}),r["a"].registerCommandAndKeybindingRule({id:"goToNextReference",weight:250,primary:62,when:d["b"],handler:function(e){R(e,function(e){e.goToNextOrPreviousReference(!0)})}}),r["a"].registerCommandAndKeybindingRule({id:"goToNextReferenceFromEmbeddedEditor",weight:150,primary:62,when:c["b"].inPeekEditor,handler:function(e){R(e,function(e){e.goToNextOrPreviousReference(!0)})}}),r["a"].registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:250,primary:1086,when:d["b"],handler:function(e){R(e,function(e){e.goToNextOrPreviousReference(!1)})}}),r["a"].registerCommandAndKeybindingRule({id:"goToPreviousReferenceFromEmbeddedEditor",weight:150,primary:1086,when:c["b"].inPeekEditor,handler:function(e){R(e,function(e){e.goToNextOrPreviousReference(!1)})}}),r["a"].registerCommandAndKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:o["a"].and(d["b"],o["a"].not("config.editor.stablePeek")),handler:T}),r["a"].registerCommandAndKeybindingRule({id:"closeReferenceSearchEditor",weight:-1,primary:9,secondary:[1033],when:o["a"].and(c["b"].inPeekEditor,o["a"].not("config.editor.stablePeek")),handler:T}),r["a"].registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:o["a"].and(d["b"],b["c"]),handler:P}),Object(a["e"])("_executeReferenceProvider",function(e,t){return A(e,t,S["a"].None)})},"4d05":function(e,t,n){"use strict";n.d(t,"b",function(){return a}),n.d(t,"a",function(){return u});var i=n("3742"),o=n("e1b5"),r=n("8bf1"),s={getInitialState:function(){return r["c"]},tokenize2:function(e,t,n){return Object(r["e"])(0,e,t,n)}};function a(e,t){return void 0===t&&(t=s),l(e,t||s)}function u(e,t,n,i,o,r){for(var s="

    ",a=i,u=0,l=0,c=t.getCount();l0)h+=" ",f--;break;case 60:h+="<";break;case 62:h+=">";break;case 38:h+="&";break;case 0:h+="�";break;case 65279:case 8232:h+="�";break;case 13:h+="​";break;case 32:h+=" ";break;default:h+=String.fromCharCode(p)}}if(s+=''+h+"",d>o||a>=o)break}}return s+="
    ",s}function l(e,t){for(var n='
    ',r=e.split(/\r\n|\r|\n/),s=t.getInitialState(),a=0,u=r.length;a0&&(n+="
    ");var c=t.tokenize2(l,s,0);o["a"].convertToEndOffset(c.tokens,l.length);for(var d=new o["a"](c.tokens,l),h=d.inflate(),p=0,f=0,g=h.getCount();f'+i["o"](l.substring(p,v))+"",p=v}s=c.endState}return n+="
    ",n}},"4d3d":function(e,t,n){},"4dc7":function(e,t,n){"use strict";n.d(t,"a",function(){return i}),n.d(t,"b",function(){return o}),n.d(t,"c",function(){return r});var i=function(){function e(e,t,n){this.offset=0|e,this.type=t,this.language=n}return e.prototype.toString=function(){return"("+this.offset+", "+this.type+")"},e}(),o=function(){function e(e,t){this.tokens=e,this.endState=t}return e}(),r=function(){function e(e,t){this.tokens=e,this.endState=t}return e}()},"4e7d":function(e,t,n){},"4fc3":function(e,t,n){"use strict";n.d(t,"a",function(){return s}),n.d(t,"b",function(){return g}),n.d(t,"d",function(){return m}),n.d(t,"c",function(){return v}),n.d(t,"e",function(){return _});var i=n("3742"),o=n("0a0f"),r=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),s=function(){function e(){}return e.has=function(e){return u.create(e)},e.equals=function(e,t){return l.create(e,t)},e.regex=function(e,t){return h.create(e,t)},e.not=function(e){return d.create(e)},e.and=function(){for(var e=[],t=0;t=0){var n=e.split("!=");return c.create(n[0].trim(),this._deserializeValue(n[1],t))}if(e.indexOf("==")>=0){n=e.split("==");return l.create(n[0].trim(),this._deserializeValue(n[1],t))}if(e.indexOf("=~")>=0){n=e.split("=~");return h.create(n[0].trim(),this._deserializeRegexValue(n[1],t))}return/^\!\s*/.test(e)?d.create(e.substr(1).trim()):u.create(e)},e._deserializeValue=function(e,t){if(e=e.trim(),"true"===e)return!0;if("false"===e)return!1;var n=/^'([^']*)'$/.exec(e);return n?n[1].trim():e},e._deserializeRegexValue=function(e,t){if(Object(i["u"])(e)){if(t)throw new Error("missing regexp-value for =~-expression");return console.warn("missing regexp-value for =~-expression"),null}var n=e.indexOf("/"),o=e.lastIndexOf("/");if(n===o||n<0){if(t)throw new Error("bad regexp-value '"+e+"', missing /-enclosure");return console.warn("bad regexp-value '"+e+"', missing /-enclosure"),null}var r=e.slice(n+1,o),s="i"===e[o+1]?"i":"";try{return new RegExp(r,s)}catch(a){if(t)throw new Error("bad regexp-value '"+e+"', parse error: "+a);return console.warn("bad regexp-value '"+e+"', parse error: "+a),null}},e}();function a(e,t){var n=e.getType(),i=t.getType();if(n!==i)return n-i;switch(n){case 1:return e.cmp(t);case 2:return e.cmp(t);case 3:return e.cmp(t);case 4:return e.cmp(t);case 6:return e.cmp(t);case 7:return e.cmp(t);case 5:return e.cmp(t);default:throw new Error("Unknown ContextKeyExpr!")}}var u=function(){function e(e){this.key=e}return e.create=function(t){return new e(t)},e.prototype.getType=function(){return 1},e.prototype.cmp=function(e){return this.keye.key?1:0},e.prototype.equals=function(t){return t instanceof e&&this.key===t.key},e.prototype.evaluate=function(e){return!!e.getValue(this.key)},e.prototype.keys=function(){return[this.key]},e.prototype.negate=function(){return d.create(this.key)},e}(),l=function(){function e(e,t){this.key=e,this.value=t}return e.create=function(t,n){return"boolean"===typeof n?n?u.create(t):d.create(t):new e(t,n)},e.prototype.getType=function(){return 3},e.prototype.cmp=function(e){return this.keye.key?1:this.valuee.value?1:0},e.prototype.equals=function(t){return t instanceof e&&(this.key===t.key&&this.value===t.value)},e.prototype.evaluate=function(e){return e.getValue(this.key)==this.value},e.prototype.keys=function(){return[this.key]},e.prototype.negate=function(){return c.create(this.key,this.value)},e}(),c=function(){function e(e,t){this.key=e,this.value=t}return e.create=function(t,n){return"boolean"===typeof n?n?d.create(t):u.create(t):new e(t,n)},e.prototype.getType=function(){return 4},e.prototype.cmp=function(e){return this.keye.key?1:this.valuee.value?1:0},e.prototype.equals=function(t){return t instanceof e&&(this.key===t.key&&this.value===t.value)},e.prototype.evaluate=function(e){return e.getValue(this.key)!=this.value},e.prototype.keys=function(){return[this.key]},e.prototype.negate=function(){return l.create(this.key,this.value)},e}(),d=function(){function e(e){this.key=e}return e.create=function(t){return new e(t)},e.prototype.getType=function(){return 2},e.prototype.cmp=function(e){return this.keye.key?1:0},e.prototype.equals=function(t){return t instanceof e&&this.key===t.key},e.prototype.evaluate=function(e){return!e.getValue(this.key)},e.prototype.keys=function(){return[this.key]},e.prototype.negate=function(){return u.create(this.key)},e}(),h=function(){function e(e,t){this.key=e,this.regexp=t}return e.create=function(t,n){return new e(t,n)},e.prototype.getType=function(){return 6},e.prototype.cmp=function(e){if(this.keye.key)return 1;var t=this.regexp?this.regexp.source:"",n=e.regexp?e.regexp.source:"";return tn?1:0},e.prototype.equals=function(t){if(t instanceof e){var n=this.regexp?this.regexp.source:"",i=t.regexp?t.regexp.source:"";return this.key===t.key&&n===i}return!1},e.prototype.evaluate=function(e){var t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)},e.prototype.keys=function(){return[this.key]},e.prototype.negate=function(){return p.create(this)},e}(),p=function(){function e(e){this._actual=e}return e.create=function(t){return new e(t)},e.prototype.getType=function(){return 7},e.prototype.cmp=function(e){return this._actual.cmp(e._actual)},e.prototype.equals=function(t){return t instanceof e&&this._actual.equals(t._actual)},e.prototype.evaluate=function(e){return!this._actual.evaluate(e)},e.prototype.keys=function(){return this._actual.keys()},e.prototype.negate=function(){return this._actual},e}(),f=function(){function e(e){this.expr=e}return e.create=function(t){var n=e._normalizeArr(t);if(0!==n.length)return 1===n.length?n[0]:new e(n)},e.prototype.getType=function(){return 5},e.prototype.cmp=function(e){if(this.expr.lengthe.expr.length)return 1;for(var t=0,n=this.expr.length;t1){for(var a=t.shift(),u=t.shift(),l=[],c=0,d=r(a);c255?255:0|e}function r(e){return e<0?0:e>4294967295?4294967295:0|e}function s(e){for(var t=e.length,n=new Uint32Array(t),i=0;i0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0&&0===n.indexOf(M)){for(var g=null,m=null,v=0,_=0;_0)):v++}m&&m.setGroupLabel(this.typeToLabel(g||"",v))}else s.length>0&&s[0].setGroupLabel(r["r"](I["e"]._symbols_,s.length));return s},t.prototype.typeToLabel=function(e,t){switch(e){case"module":return r["r"](I["e"]._modules_,t);case"class":return r["r"](I["e"]._class_,t);case"interface":return r["r"](I["e"]._interface_,t);case"method":return r["r"](I["e"]._method_,t);case"function":return r["r"](I["e"]._function_,t);case"property":return r["r"](I["e"]._property_,t);case"variable":return r["r"](I["e"]._variable_,t);case"var":return r["r"](I["e"]._variable2_,t);case"constructor":return r["r"](I["e"]._constructor_,t);case"call":return r["r"](I["e"]._call_,t)}return e},t.prototype.sortNormal=function(e,t,n){var i=t.getLabel().toLowerCase(),o=n.getLabel().toLowerCase(),r=i.localeCompare(o);if(0!==r)return r;var s=t.getRange(),a=n.getRange();return s.startLineNumber-a.startLineNumber},t.prototype.sortScoped=function(e,t,n){e=e.substr(M.length);var i=t.getType(),o=n.getType(),r=i.localeCompare(o);if(0!==r)return r;if(e){var s=t.getLabel().toLowerCase(),a=n.getLabel().toLowerCase(),u=s.localeCompare(a);if(0!==u)return u}var l=t.getRange(),c=n.getRange();return l.startLineNumber-c.startLineNumber},t}(k["a"]);Object(a["f"])(P)},"5aa5":function(e,t,n){"use strict";n.d(t,"c",function(){return p}),n.d(t,"d",function(){return f}),n.d(t,"b",function(){return g}),n.d(t,"a",function(){return v});n("c84a");var i=n("30db"),o=n("dff7"),r=n("a666"),s=n("f070"),a=n("11f7"),u=n("ef8e"),l=n("a60f"),c=n("b835"),d=n("308f"),h=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),p=function(e){function t(t,n,i){var o=e.call(this)||this;return o.options=i,o._context=t||o,o._action=n,n instanceof s["a"]&&o._register(n.onDidChange(function(e){o.element&&o.handleActionChangeEvent(e)})),o}return h(t,e),t.prototype.handleActionChangeEvent=function(e){void 0!==e.enabled&&this.updateEnabled(),void 0!==e.checked&&this.updateChecked(),void 0!==e.class&&this.updateClass(),void 0!==e.label&&(this.updateLabel(),this.updateTooltip()),void 0!==e.tooltip&&this.updateTooltip()},Object.defineProperty(t.prototype,"actionRunner",{get:function(){return this._actionRunner},set:function(e){this._actionRunner=e},enumerable:!0,configurable:!0}),t.prototype.getAction=function(){return this._action},t.prototype.isEnabled=function(){return this._action.enabled},t.prototype.setActionContext=function(e){this._context=e},t.prototype.render=function(e){var t=this;this.element=e,l["b"].addTarget(e);var n=this.options&&this.options.draggable;n&&(e.draggable=!0),this._register(a["h"](this.element,l["a"].Tap,function(e){return t.onClick(e)})),this._register(a["h"](this.element,a["d"].MOUSE_DOWN,function(e){n||a["c"].stop(e,!0),t._action.enabled&&0===e.button&&t.element&&a["f"](t.element,"active")})),this._register(a["h"](this.element,a["d"].CLICK,function(e){a["c"].stop(e,!0),t.options&&t.options.isMenu?t.onClick(e):i["h"](function(){return t.onClick(e)})})),this._register(a["h"](this.element,a["d"].DBLCLICK,function(e){a["c"].stop(e,!0)})),[a["d"].MOUSE_UP,a["d"].MOUSE_OUT].forEach(function(e){t._register(a["h"](t.element,e,function(e){a["c"].stop(e),a["I"](t.element,"active")}))})},t.prototype.onClick=function(e){var t;a["c"].stop(e,!0),u["k"](this._context)?t=e:(t=this._context,u["h"](t)&&(t.event=e)),this._actionRunner.run(this._action,t)},t.prototype.focus=function(){this.element&&(this.element.focus(),a["f"](this.element,"focused"))},t.prototype.blur=function(){this.element&&(this.element.blur(),a["I"](this.element,"focused"))},t.prototype.updateEnabled=function(){},t.prototype.updateLabel=function(){},t.prototype.updateTooltip=function(){},t.prototype.updateClass=function(){},t.prototype.updateChecked=function(){},t.prototype.dispose=function(){this.element&&(a["K"](this.element),this.element=void 0),e.prototype.dispose.call(this)},t}(r["a"]),f=function(e){function t(n){var i=e.call(this,t.ID,n,n?"separator text":"separator")||this;return i.checked=!1,i.radio=!1,i.enabled=!1,i}return h(t,e),t.ID="vs.actions.separator",t}(s["a"]),g=function(e){function t(t,n,i){void 0===i&&(i={});var o=e.call(this,t,n,i)||this;return o.options=i,o.options.icon=void 0!==i.icon&&i.icon,o.options.label=void 0===i.label||i.label,o.cssClass="",o}return h(t,e),t.prototype.render=function(t){e.prototype.render.call(this,t),this.element&&(this.label=a["m"](this.element,a["a"]("a.action-label"))),this._action.id===f.ID?this.label.setAttribute("role","presentation"):this.options.isMenu?this.label.setAttribute("role","menuitem"):this.label.setAttribute("role","button"),this.options.label&&this.options.keybinding&&this.element&&(a["m"](this.element,a["a"]("span.keybinding")).textContent=this.options.keybinding),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()},t.prototype.focus=function(){e.prototype.focus.call(this),this.label.focus()},t.prototype.updateLabel=function(){this.options.label&&(this.label.textContent=this.getAction().label)},t.prototype.updateTooltip=function(){var e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=o["a"]({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&(this.label.title=e)},t.prototype.updateClass=function(){this.cssClass&&a["J"](this.label,this.cssClass),this.options.icon?(this.cssClass=this.getAction().class,a["f"](this.label,"icon"),this.cssClass&&a["g"](this.label,this.cssClass),this.updateEnabled()):a["I"](this.label,"icon")},t.prototype.updateEnabled=function(){this.getAction().enabled?(this.label.removeAttribute("aria-disabled"),this.element&&a["I"](this.element,"disabled"),a["I"](this.label,"disabled"),this.label.tabIndex=0):(this.label.setAttribute("aria-disabled","true"),this.element&&a["f"](this.element,"disabled"),a["f"](this.label,"disabled"),a["L"](this.label))},t.prototype.updateChecked=function(){this.getAction().checked?a["f"](this.label,"checked"):a["I"](this.label,"checked")},t}(p),m={orientation:0,context:null,triggerKeys:{keys:[3,10],keyDown:!1}},v=function(e){function t(t,n){void 0===n&&(n=m);var i,o,r=e.call(this)||this;switch(r._onDidBlur=r._register(new d["a"]),r.onDidBlur=r._onDidBlur.event,r._onDidCancel=r._register(new d["a"]),r.onDidCancel=r._onDidCancel.event,r._onDidRun=r._register(new d["a"]),r.onDidRun=r._onDidRun.event,r._onDidBeforeRun=r._register(new d["a"]),r.onDidBeforeRun=r._onDidBeforeRun.event,r.options=n,r._context=n.context,r.options.triggerKeys||(r.options.triggerKeys=m.triggerKeys),r.options.actionRunner?r._actionRunner=r.options.actionRunner:(r._actionRunner=new s["b"],r._register(r._actionRunner)),r._register(r._actionRunner.onDidRun(function(e){return r._onDidRun.fire(e)})),r._register(r._actionRunner.onDidBeforeRun(function(e){return r._onDidBeforeRun.fire(e)})),r.viewItems=[],r.focusedItem=void 0,r.domNode=document.createElement("div"),r.domNode.className="monaco-action-bar",!1!==n.animated&&a["f"](r.domNode,"animated"),r.options.orientation){case 0:i=15,o=17;break;case 1:i=17,o=15,r.domNode.className+=" reverse";break;case 2:i=16,o=18,r.domNode.className+=" vertical";break;case 3:i=18,o=16,r.domNode.className+=" vertical reverse";break}return r._register(a["h"](r.domNode,a["d"].KEY_DOWN,function(e){var t=new c["a"](e),n=!0;t.equals(i)?r.focusPrevious():t.equals(o)?r.focusNext():t.equals(9)?r.cancel():r.isTriggerKeyEvent(t)?r.options.triggerKeys&&r.options.triggerKeys.keyDown&&r.doTrigger(t):n=!1,n&&(t.preventDefault(),t.stopPropagation())})),r._register(a["h"](r.domNode,a["d"].KEY_UP,function(e){var t=new c["a"](e);r.isTriggerKeyEvent(t)?(r.options.triggerKeys&&!r.options.triggerKeys.keyDown&&r.doTrigger(t),t.preventDefault(),t.stopPropagation()):(t.equals(2)||t.equals(1026))&&r.updateFocusedItem()})),r.focusTracker=r._register(a["S"](r.domNode)),r._register(r.focusTracker.onDidBlur(function(){document.activeElement!==r.domNode&&a["E"](document.activeElement,r.domNode)||(r._onDidBlur.fire(),r.focusedItem=void 0)})),r._register(r.focusTracker.onDidFocus(function(){return r.updateFocusedItem()})),r.actionsList=document.createElement("ul"),r.actionsList.className="actions-container",r.actionsList.setAttribute("role","toolbar"),r.options.ariaLabel&&r.actionsList.setAttribute("aria-label",r.options.ariaLabel),r.domNode.appendChild(r.actionsList),t.appendChild(r.domNode),r}return h(t,e),t.prototype.isTriggerKeyEvent=function(e){var t=!1;return this.options.triggerKeys&&this.options.triggerKeys.keys.forEach(function(n){t=t||e.equals(n)}),t},t.prototype.updateFocusedItem=function(){for(var e=0;e=n.actionsList.children.length?(n.actionsList.appendChild(r),n.viewItems.push(i)):(n.actionsList.insertBefore(r,n.actionsList.children[o]),n.viewItems.splice(o,0,i),o++)})},t.prototype.clear=function(){this.viewItems=Object(r["f"])(this.viewItems),a["p"](this.actionsList)},t.prototype.isEmpty=function(){return 0===this.viewItems.length},t.prototype.focus=function(e){var t=!1,n=void 0;void 0===e?t=!0:"number"===typeof e?n=e:"boolean"===typeof e&&(t=e),t&&"undefined"===typeof this.focusedItem?(this.focusedItem=this.viewItems.length-1,this.focusNext()):(void 0!==n&&(this.focusedItem=n),this.updateFocus())},t.prototype.focusNext=function(){"undefined"===typeof this.focusedItem&&(this.focusedItem=this.viewItems.length-1);var e,t=this.focusedItem;do{this.focusedItem=(this.focusedItem+1)%this.viewItems.length,e=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&!e.isEnabled());this.focusedItem!==t||e.isEnabled()||(this.focusedItem=void 0),this.updateFocus()},t.prototype.focusPrevious=function(){"undefined"===typeof this.focusedItem&&(this.focusedItem=0);var e,t=this.focusedItem;do{this.focusedItem=this.focusedItem-1,this.focusedItem<0&&(this.focusedItem=this.viewItems.length-1),e=this.viewItems[this.focusedItem]}while(this.focusedItem!==t&&!e.isEnabled());this.focusedItem!==t||e.isEnabled()||(this.focusedItem=void 0),this.updateFocus(!0)},t.prototype.updateFocus=function(e){"undefined"===typeof this.focusedItem&&this.actionsList.focus();for(var t=0;t0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},R=function(e,t){return function(n,i){t(n,i,e)}},A=l["a"],F=function(e){function t(t,n,i,r){var s=e.call(this)||this;return s.editor=t,s.renderDisposeables=s._register(new o["b"]),s.model=s._register(new o["d"]),s.allowEditorOverflow=!0,s.markdownRenderer=s._register(new g["a"](t,r,i)),s.model.value=new M(t),s.keyVisible=S.Visible.bindTo(n),s.keyMultipleSignatures=S.MultipleSignatures.bindTo(n),s.visible=!1,s._register(s.model.value.onChangedHints(function(e){e?(s.show(),s.render(e)):s.hide()})),s}return T(t,e),t.prototype.createParamaterHintDOMNodes=function(){var e=this;this.element=A(".editor-widget.parameter-hints-widget");var t=l["m"](this.element,A(".wrapper"));t.tabIndex=-1;var n=l["m"](t,A(".buttons")),i=l["m"](n,A(".button.previous")),o=l["m"](n,A(".button.next")),r=Object(c["b"])(Object(c["a"])(i,"click"));this._register(r(this.previous,this));var s=Object(c["b"])(Object(c["a"])(o,"click"));this._register(s(this.next,this)),this.overloads=l["m"](t,A(".overloads"));var a=A(".body");this.scrollbar=new h["a"](a,{}),this._register(this.scrollbar),t.appendChild(this.scrollbar.getDomNode()),this.signature=l["m"](a,A(".signature")),this.docs=l["m"](a,A(".docs")),this.editor.addContentWidget(this),this.hide(),this.element.style.userSelect="text",this._register(this.editor.onDidChangeCursorSelection(function(t){e.visible&&e.editor.layoutContentWidget(e)}));var u=function(){var t=e.editor.getConfiguration().fontInfo;e.element.style.fontSize=t.fontSize+"px"};u(),this._register(p["b"].chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(function(e){return e.fontInfo}).on(u,null)),this._register(this.editor.onDidLayoutChange(function(t){return e.updateMaxHeight()})),this.updateMaxHeight()},t.prototype.show=function(){var e=this;this.model&&!this.visible&&(this.element||this.createParamaterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(function(){return l["f"](e.element,"visible")},100),this.editor.layoutContentWidget(this))},t.prototype.hide=function(){this.model&&this.visible&&(this.element||this.createParamaterHintDOMNodes(),this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,l["I"](this.element,"visible"),this.editor.layoutContentWidget(this))},t.prototype.getPosition=function(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null},t.prototype.render=function(e){var t=e.signatures.length>1;l["R"](this.element,"multiple",t),this.keyMultipleSignatures.set(t),this.signature.innerHTML="",this.docs.innerHTML="";var n=e.signatures[e.activeSignature];if(n){var o=l["m"](this.signature,A(".code")),r=n.parameters.length>0,s=this.editor.getConfiguration().fontInfo;if(o.style.fontSize=s.fontSize+"px",o.style.fontFamily=s.fontFamily,r)this.renderParameters(o,n,e.activeParameter);else{var a=l["m"](o,A("span"));a.textContent=n.label}this.renderDisposeables.clear();var u=n.parameters[e.activeParameter];if(u&&u.documentation){var c=A("span.documentation");if("string"===typeof u.documentation)c.textContent=u.documentation;else{var h=this.markdownRenderer.render(u.documentation);l["f"](h.element,"markdown-docs"),this.renderDisposeables.add(h),c.appendChild(h.element)}l["m"](this.docs,A("p",{},c))}if(void 0===n.documentation);else if("string"===typeof n.documentation)l["m"](this.docs,A("p",{},n.documentation));else{h=this.markdownRenderer.render(n.documentation);l["f"](h.element,"markdown-docs"),this.renderDisposeables.add(h),l["m"](this.docs,h.element)}var p=!1;u&&"string"===typeof u.documentation&&u.documentation.length>0&&(p=!0),u&&"object"===typeof u.documentation&&u.documentation.value.length>0&&(p=!0),"string"===typeof n.documentation&&n.documentation.length>0&&(p=!0),"object"===typeof n.documentation&&n.documentation.value.length>0&&(p=!0),l["R"](this.signature,"has-docs",p),l["R"](this.docs,"empty",!p);var f=String(e.activeSignature+1);if(e.signatures.length<10&&(f+="/"+e.signatures.length),this.overloads.textContent=f,u){var g=this.getParameterLabel(n,e.activeParameter);this.announcedLabel!==g&&(d["a"](i["a"]("hint","{0}, hint",g)),this.announcedLabel=g)}this.editor.layoutContentWidget(this),this.scrollbar.scanDomNode()}},t.prototype.renderParameters=function(e,t,n){var i=this.getParameterLabelOffsets(t,n),o=i[0],r=i[1],s=document.createElement("span");s.textContent=t.label.substring(0,o);var a=document.createElement("span");a.textContent=t.label.substring(o,r),a.className="parameter active";var u=document.createElement("span");u.textContent=t.label.substring(r),l["m"](e,s,a,u)},t.prototype.getParameterLabel=function(e,t){var n=e.parameters[t];return"string"===typeof n.label?n.label:e.label.substring(n.label[0],n.label[1])},t.prototype.getParameterLabelOffsets=function(e,t){var n=e.parameters[t];if(n){if(Array.isArray(n.label))return n.label;var i=e.label.lastIndexOf(n.label);return i>=0?[i,i+n.label.length]:[0,0]}return[0,0]},t.prototype.next=function(){this.model.value&&(this.editor.focus(),this.model.value.next())},t.prototype.previous=function(){this.model.value&&(this.editor.focus(),this.model.value.previous())},t.prototype.cancel=function(){this.model.value&&this.model.value.cancel()},t.prototype.getDomNode=function(){return this.element},t.prototype.getId=function(){return t.ID},t.prototype.trigger=function(e){this.model.value&&this.model.value.trigger(e,0)},t.prototype.updateMaxHeight=function(){var e=Math.max(this.editor.getLayoutInfo().height/4,250);this.element.style.maxHeight=e+"px"},t.ID="editor.widget.parameterHintsWidget",t=P([R(1,a["c"]),R(2,x["a"]),R(3,f["a"])],t),t}(o["a"]);Object(D["f"])(function(e,t){var n=e.getColor(N["B"]);if(n){var i=e.type===D["b"]?2:1;t.addRule(".monaco-editor .parameter-hints-widget { border: "+i+"px solid "+n+"; }"),t.addRule(".monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid "+n.transparent(.5)+"; }"),t.addRule(".monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid "+n.transparent(.5)+"; }")}var o=e.getColor(N["A"]);o&&t.addRule(".monaco-editor .parameter-hints-widget { background-color: "+o+"; }");var r=e.getColor(N["Ub"]);r&&t.addRule(".monaco-editor .parameter-hints-widget a { color: "+r+"; }");var s=e.getColor(N["Tb"]);s&&t.addRule(".monaco-editor .parameter-hints-widget code { background-color: "+s+"; }")}),n.d(t,"TriggerParameterHintsAction",function(){return H});var j=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),W=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},V=function(e,t){return function(n,i){t(n,i,e)}},B=function(e){function t(t,n){var i=e.call(this)||this;return i.editor=t,i.widget=i._register(n.createInstance(F,i.editor)),i}return j(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.cancel=function(){this.widget.cancel()},t.prototype.previous=function(){this.widget.previous()},t.prototype.next=function(){this.widget.next()},t.prototype.trigger=function(e){this.widget.trigger(e)},t.ID="editor.controller.parameterHints",t=W([V(1,r["a"])],t),t}(o["a"]),H=function(e){function t(){return e.call(this,{id:"editor.action.triggerParameterHints",label:i["a"]("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:s["a"].hasSignatureHelpProvider,kbOpts:{kbExpr:s["a"].editorTextFocus,primary:3082,weight:100}})||this}return j(t,e),t.prototype.run=function(e,t){var n=B.get(t);n&&n.trigger({triggerKind:_["w"].Invoke})},t}(u["b"]);Object(u["h"])(B),Object(u["f"])(H);var z=175,U=u["c"].bindToContribution(B.get);Object(u["g"])(new U({id:"closeParameterHints",precondition:S.Visible,handler:function(e){return e.cancel()},kbOpts:{weight:z,kbExpr:s["a"].focus,primary:9,secondary:[1033]}})),Object(u["g"])(new U({id:"showPrevParameterHint",precondition:a["a"].and(S.Visible,S.MultipleSignatures),handler:function(e){return e.previous()},kbOpts:{weight:z,kbExpr:s["a"].focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),Object(u["g"])(new U({id:"showNextParameterHint",precondition:a["a"].and(S.Visible,S.MultipleSignatures),handler:function(e){return e.next()},kbOpts:{weight:z,kbExpr:s["a"].focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))},"5bd7":function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return r});var i=n("0a0f"),o=Object(i["c"])("openerService"),r=Object.freeze({_serviceBrand:void 0,registerOpener:function(){return{dispose:function(){}}},registerValidator:function(){return{dispose:function(){}}},open:function(){return Promise.resolve(!1)}})},"5d28":function(e,t,n){"use strict";n.d(t,"b",function(){return a}),n.d(t,"a",function(){return u}),n.d(t,"c",function(){return l});var i=n("0f70"),o=n("e757"),r=n("30db"),s=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),a=function(){function e(e){this.timestamp=Date.now(),this.browserEvent=e,this.leftButton=0===e.button,this.middleButton=1===e.button,this.rightButton=2===e.button,this.target=e.target,this.detail=e.detail||1,"dblclick"===e.type&&(this.detail=2),this.ctrlKey=e.ctrlKey,this.shiftKey=e.shiftKey,this.altKey=e.altKey,this.metaKey=e.metaKey,"number"===typeof e.pageX?(this.posx=e.pageX,this.posy=e.pageY):(this.posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop);var t=o["a"].getPositionOfChildWindowRelativeToAncestorWindow(self,e.view);this.posx-=t.left,this.posy-=t.top}return e.prototype.preventDefault=function(){this.browserEvent.preventDefault&&this.browserEvent.preventDefault()},e.prototype.stopPropagation=function(){this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()},e}(),u=function(e){function t(t){var n=e.call(this,t)||this;return n.dataTransfer=t.dataTransfer,n}return s(t,e),t}(a),l=function(){function e(e,t,n){if(void 0===t&&(t=0),void 0===n&&(n=0),this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=n,this.deltaX=t,e)if("wheel"===e.type){var o=e;o.deltaMode===o.DOM_DELTA_LINE?(this.deltaY=-e.deltaY,this.deltaX=-e.deltaX):(this.deltaY=-e.deltaY/40,this.deltaX=-e.deltaX/40)}else{var s=e,a=e;"undefined"!==typeof s.wheelDeltaY?this.deltaY=s.wheelDeltaY/120:"undefined"!==typeof a.VERTICAL_AXIS&&a.axis===a.VERTICAL_AXIS&&(this.deltaY=-a.detail/3),"undefined"!==typeof s.wheelDeltaX?i["l"]&&r["g"]?this.deltaX=-s.wheelDeltaX/120:this.deltaX=s.wheelDeltaX/120:"undefined"!==typeof a.HORIZONTAL_AXIS&&a.axis===a.HORIZONTAL_AXIS&&(this.deltaX=-e.detail/3),0===this.deltaY&&0===this.deltaX&&e.wheelDelta&&(this.deltaY=e.wheelDelta/120)}}return e.prototype.preventDefault=function(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()},e.prototype.stopPropagation=function(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()},e}()},"5d70":function(e,t,n){},"5d75":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("0a0f"),o=Object(i["c"])("telemetryService")},"5ed2":function(e,t,n){"use strict";n.r(t),n.d(t,"editorWordHighlight",function(){return w}),n.d(t,"editorWordHighlightStrong",function(){return C}),n.d(t,"editorWordHighlightBorder",function(){return S}),n.d(t,"editorWordHighlightStrongBorder",function(){return L}),n.d(t,"overviewRulerWordHighlightForeground",function(){return O}),n.d(t,"overviewRulerWordHighlightStrongForeground",function(){return x}),n.d(t,"ctxHasWordHighlights",function(){return N}),n.d(t,"getOccurrencesAtPosition",function(){return D});var i=n("dff7"),o=n("e8e3"),r=n("5fe7"),s=n("2504"),a=n("fdcc"),u=n("a666"),l=n("b2cc"),c=n("6a89"),d=n("c101"),h=n("3352"),p=n("b57f"),f=n("b707"),g=n("4fc3"),m=n("303e"),v=n("b7d0"),_=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),b=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},y=function(e,t){return function(n,i){t(n,i,e)}},w=Object(m["Kb"])("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hc:null},i["a"]("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0),C=Object(m["Kb"])("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hc:null},i["a"]("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0),S=Object(m["Kb"])("editor.wordHighlightBorder",{light:null,dark:null,hc:m["b"]},i["a"]("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable.")),L=Object(m["Kb"])("editor.wordHighlightStrongBorder",{light:null,dark:null,hc:m["b"]},i["a"]("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable.")),O=Object(m["Kb"])("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},i["a"]("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),x=Object(m["Kb"])("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hc:"#C0A0C0CC"},i["a"]("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),N=new g["d"]("hasWordHighlights",!1);function D(e,t,n){var i=f["i"].ordered(e);return Object(r["h"])(i.map(function(i){return function(){return Promise.resolve(i.provideDocumentHighlights(e,t,n)).then(void 0,a["f"])}}),o["n"])}var k=function(){function e(e,t,n){var i=this;this._wordRange=this._getCurrentWordRange(e,t),this.result=Object(r["f"])(function(o){return i._compute(e,t,n,o)})}return e.prototype._getCurrentWordRange=function(e,t){var n=e.getWordAtPosition(t.getPosition());return n?new c["a"](t.startLineNumber,n.startColumn,t.startLineNumber,n.endColumn):null},e.prototype.isValid=function(e,t,n){for(var i=t.startLineNumber,o=t.startColumn,r=t.endColumn,s=this._getCurrentWordRange(e,t),a=Boolean(this._wordRange&&this._wordRange.equalsRange(s)),u=0,l=n.length;!a&&u=r&&(a=!0)}return a},e.prototype.cancel=function(){this.result.cancel()},e}(),I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return _(t,e),t.prototype._compute=function(e,t,n,i){return D(e,t.getPosition(),i).then(function(e){return e||[]})},t}(k),E=function(e){function t(t,n,i){var o=e.call(this,t,n,i)||this;return o._selectionIsEmpty=n.isEmpty(),o}return _(t,e),t.prototype._compute=function(e,t,n,i){return Object(r["l"])(250,i).then(function(){if(!t.isEmpty())return[];var i=e.getWordAtPosition(t.getPosition());if(!i)return[];var o=e.findMatches(i.word,!0,!1,!0,n,!1);return o.map(function(e){return{range:e.range,kind:f["h"].Text}})})},t.prototype.isValid=function(t,n,i){var o=n.isEmpty();return this._selectionIsEmpty===o&&e.prototype.isValid.call(this,t,n,i)},t}(k);function M(e,t,n){return f["i"].has(e)?new I(e,t,n):new E(e,t,n)}Object(l["e"])("_executeDocumentHighlights",function(e,t){return D(e,t,s["a"].None)});var T=function(){function e(e,t){var n=this;this.toUnhook=new u["b"],this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=e,this._hasWordHighlights=N.bindTo(t),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getConfiguration().contribInfo.occurrencesHighlight,this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition(function(e){n._ignorePositionChangeEvent||n.occurrencesHighlight&&n._onPositionChanged(e)})),this.toUnhook.add(e.onDidChangeModelContent(function(e){n._stopAll()})),this.toUnhook.add(e.onDidChangeConfiguration(function(e){var t=n.editor.getConfiguration().contribInfo.occurrencesHighlight;n.occurrencesHighlight!==t&&(n.occurrencesHighlight=t,n._stopAll())})),this._decorationIds=[],this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}return e.prototype.hasDecorations=function(){return this._decorationIds.length>0},e.prototype.restore=function(){this.occurrencesHighlight&&this._run()},e.prototype._getSortedHighlights=function(){var e=this;return o["d"](this._decorationIds.map(function(t){return e.model.getDecorationRange(t)}).sort(c["a"].compareRangesUsingStarts))},e.prototype.moveNext=function(){var e=this,t=this._getSortedHighlights(),n=o["j"](t,function(t){return t.containsPosition(e.editor.getPosition())}),i=(n+1)%t.length,r=t[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(r.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(r)}finally{this._ignorePositionChangeEvent=!1}},e.prototype.moveBack=function(){var e=this,t=this._getSortedHighlights(),n=o["j"](t,function(t){return t.containsPosition(e.editor.getPosition())}),i=(n-1+t.length)%t.length,r=t[i];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(r.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(r)}finally{this._ignorePositionChangeEvent=!1}},e.prototype._removeDecorations=function(){this._decorationIds.length>0&&(this._decorationIds=this.editor.deltaDecorations(this._decorationIds,[]),this._hasWordHighlights.set(!1))},e.prototype._stopAll=function(){this._removeDecorations(),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)},e.prototype._onPositionChanged=function(e){this.occurrencesHighlight&&3===e.reason?this._run():this._stopAll()},e.prototype._run=function(){var e=this,t=this.editor.getSelection();if(t.startLineNumber===t.endLineNumber){var n=t.startLineNumber,i=t.startColumn,o=t.endColumn,r=this.model.getWordAtPosition({lineNumber:n,column:i});if(!r||r.startColumn>i||r.endColumn=n?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(function(){e.renderDecorations()},n-t)},e.prototype.renderDecorations=function(){this.renderDecorationsTimer=-1;for(var t=[],n=0,i=this.workerRequestValue.length;n=o)return Promise.resolve(n);var s=e[i++],a=Promise.resolve(s());return a.then(function(e){return t(e)?Promise.resolve(e):r()})};return r()}var p,f=function(){function e(e,t){this._token=-1,"function"===typeof e&&"number"===typeof t&&this.setIfNotSet(e,t)}return e.prototype.dispose=function(){this.cancel()},e.prototype.cancel=function(){-1!==this._token&&(clearTimeout(this._token),this._token=-1)},e.prototype.cancelAndSet=function(e,t){var n=this;this.cancel(),this._token=setTimeout(function(){n._token=-1,e()},t)},e.prototype.setIfNotSet=function(e,t){var n=this;-1===this._token&&(this._token=setTimeout(function(){n._token=-1,e()},t))},e}(),g=function(){function e(){this._token=-1}return e.prototype.dispose=function(){this.cancel()},e.prototype.cancel=function(){-1!==this._token&&(clearInterval(this._token),this._token=-1)},e.prototype.cancelAndSet=function(e,t){this.cancel(),this._token=setInterval(function(){e()},t)},e}(),m=function(){function e(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}return e.prototype.dispose=function(){this.cancel(),this.runner=null},e.prototype.cancel=function(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)},e.prototype.schedule=function(e){void 0===e&&(e=this.timeout),this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)},e.prototype.isScheduled=function(){return-1!==this.timeoutToken},e.prototype.onTimeout=function(){this.timeoutToken=-1,this.runner&&this.doRun()},e.prototype.doRun=function(){this.runner&&this.runner()},e}();(function(){if("function"!==typeof requestIdleCallback||"function"!==typeof cancelIdleCallback){var e=Object.freeze({didTimeout:!0,timeRemaining:function(){return 15}});p=function(t){var n=setTimeout(function(){return t(e)}),i=!1;return{dispose:function(){i||(i=!0,clearTimeout(n))}}}}else p=function(e,t){var n=requestIdleCallback(e,"number"===typeof t?{timeout:t}:void 0),i=!1;return{dispose:function(){i||(i=!0,cancelIdleCallback(n))}}}})();var v=function(){function e(e){var t=this;this._didRun=!1,this._executor=function(){try{t._value=e()}catch(n){t._error=n}finally{t._didRun=!0}},this._handle=p(function(){return t._executor()})}return e.prototype.dispose=function(){this._handle.dispose()},e.prototype.getValue=function(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value},e}()},"607c":function(e,t,n){},"62bd":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("308f"),o=new(function(){function e(){this._zoomLevel=0,this._onDidChangeZoomLevel=new i["a"],this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}return e.prototype.getZoomLevel=function(){return this._zoomLevel},e.prototype.setZoomLevel=function(e){e=Math.min(Math.max(-5,e),20),this._zoomLevel!==e&&(this._zoomLevel=e,this._onDidChangeZoomLevel.fire(this._zoomLevel))},e}())},6424:function(e,t,n){"use strict";function i(e,t,n){var i=null,o=null;if("function"===typeof n.value?(i="value",o=n.value,0!==o.length&&console.warn("Memoize should only be used in functions with zero parameters")):"function"===typeof n.get&&(i="get",o=n.get),!o)throw new Error("not supported");var r="$memoize$"+t;n[i]=function(){for(var e=[],t=0;t0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=e._maxRounds){t();break}if(!o){t();break}var l=i.findNextBracket(o);if(!l){t();break}var c=Date.now()-u;if(c>e._maxDuration){setTimeout(function(){return e._bracketsRightYield(t,n+1,i,o,s)});break}var d=l.close;if(l.isOpen){var h=a.has(d)?a.get(d):0;a.set(d,h+1)}else{h=a.has(d)?a.get(d):0;if(h-=1,a.set(d,Math.max(0,h)),h<0){var p=s.get(d);p||(p=new r["a"],s.set(d,p)),p.push(l.range)}}o=l.range.getEndPosition()}},e._bracketsLeftYield=function(t,n,i,r,s,a){var u=new Map,l=Date.now();while(1){if(n>=e._maxRounds&&0===s.size){t();break}if(!r){t();break}var c=i.findPrevBracket(r);if(!c){t();break}var d=Date.now()-l;if(d>e._maxDuration){setTimeout(function(){return e._bracketsLeftYield(t,n+1,i,r,s,a)});break}var h=c.close;if(c.isOpen){v=u.has(h)?u.get(h):0;if(v-=1,u.set(h,Math.max(0,v)),v<0){var p=s.get(h);if(p){var f=p.shift();0===p.size&&s.delete(h);var g=o["a"].fromPositions(c.range.getEndPosition(),f.getStartPosition()),m=o["a"].fromPositions(c.range.getStartPosition(),f.getEndPosition());a.push({range:g}),a.push({range:m}),e._addBracketLeading(i,m,a)}}}else{var v=u.has(h)?u.get(h):0;u.set(h,v+1)}r=c.range.getStartPosition()}},e._addBracketLeading=function(e,t,n){if(t.startLineNumber!==t.endLineNumber){var r=t.startLineNumber,s=e.getLineFirstNonWhitespaceColumn(r);0!==s&&s!==t.startColumn&&(n.push({range:o["a"].fromPositions(new i["a"](r,s),t.getEndPosition())}),n.push({range:o["a"].fromPositions(new i["a"](r,1),t.getEndPosition())}));var a=r-1;if(a>0){var u=e.getLineFirstNonWhitespaceColumn(a);u===t.startColumn&&u!==e.getLineLastNonWhitespaceColumn(a)&&(n.push({range:o["a"].fromPositions(new i["a"](a,u),t.getEndPosition())}),n.push({range:o["a"].fromPositions(new i["a"](a,1),t.getEndPosition())}))}}},e._maxDuration=30,e._maxRounds=2,e}()},"6a89":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("7061"),o=function(){function e(e,t,n,i){e>n||e===n&&t>i?(this.startLineNumber=n,this.startColumn=i,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=i)}return e.prototype.isEmpty=function(){return e.isEmpty(this)},e.isEmpty=function(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn},e.prototype.containsPosition=function(t){return e.containsPosition(this,t)},e.containsPosition=function(e,t){return!(t.lineNumbere.endLineNumber)&&(!(t.lineNumber===e.startLineNumber&&t.columne.endColumn))},e.prototype.containsRange=function(t){return e.containsRange(this,t)},e.containsRange=function(e,t){return!(t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber)&&(!(t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn)))},e.prototype.strictContainsRange=function(t){return e.strictContainsRange(this,t)},e.strictContainsRange=function(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)))},e.prototype.plusRange=function(t){return e.plusRange(this,t)},e.plusRange=function(t,n){var i,o,r,s;return n.startLineNumbert.endLineNumber?(r=n.endLineNumber,s=n.endColumn):n.endLineNumber===t.endLineNumber?(r=n.endLineNumber,s=Math.max(n.endColumn,t.endColumn)):(r=t.endLineNumber,s=t.endColumn),new e(i,o,r,s)},e.prototype.intersectRanges=function(t){return e.intersectRanges(this,t)},e.intersectRanges=function(t,n){var i=t.startLineNumber,o=t.startColumn,r=t.endLineNumber,s=t.endColumn,a=n.startLineNumber,u=n.startColumn,l=n.endLineNumber,c=n.endColumn;return il?(r=l,s=c):r===l&&(s=Math.min(s,c)),i>r?null:i===r&&o>s?null:new e(i,o,r,s)},e.prototype.equalsRange=function(t){return e.equalsRange(this,t)},e.equalsRange=function(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn},e.prototype.getEndPosition=function(){return new i["a"](this.endLineNumber,this.endColumn)},e.prototype.getStartPosition=function(){return new i["a"](this.startLineNumber,this.startColumn)},e.prototype.toString=function(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"},e.prototype.setEndPosition=function(t,n){return new e(this.startLineNumber,this.startColumn,t,n)},e.prototype.setStartPosition=function(t,n){return new e(t,n,this.endLineNumber,this.endColumn)},e.prototype.collapseToStart=function(){return e.collapseToStart(this)},e.collapseToStart=function(t){return new e(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)},e.fromPositions=function(t,n){return void 0===n&&(n=t),new e(t.lineNumber,t.column,n.lineNumber,n.column)},e.lift=function(t){return t?new e(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):null},e.isIRange=function(e){return e&&"number"===typeof e.startLineNumber&&"number"===typeof e.startColumn&&"number"===typeof e.endLineNumber&&"number"===typeof e.endColumn},e.areIntersectingOrTouching=function(e,t){return!(e.endLineNumbere.startLineNumber},e}()},"6d8e":function(e,t,n){"use strict";n.d(t,"a",function(){return m});var i,o=n("30db"),r=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),s=/^\w[\w\d+.-]*$/,a=/^\//,u=/^\/\//,l=!0;function c(e,t){if(!e.scheme){if(t||l)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');console.warn('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}')}if(e.scheme&&!s.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!a.test(e.path))throw new 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(u.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}function d(e,t){return t||l?e||p:(e||(console.trace("BAD uri lacks scheme, falling back to file-scheme."),e="file"),e)}function h(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==f&&(t=f+t):t=f;break}return t}var p="",f="/",g=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,m=function(){function e(e,t,n,i,o,r){void 0===r&&(r=!1),"object"===typeof e?(this.scheme=e.scheme||p,this.authority=e.authority||p,this.path=e.path||p,this.query=e.query||p,this.fragment=e.fragment||p):(this.scheme=d(e,r),this.authority=t||p,this.path=h(this.scheme,n||p),this.query=i||p,this.fragment=o||p,c(this,r))}return e.isUri=function(t){return t instanceof e||!!t&&("string"===typeof t.authority&&"string"===typeof t.fragment&&"string"===typeof t.path&&"string"===typeof t.query&&"string"===typeof t.scheme&&"function"===typeof t.fsPath&&"function"===typeof t.with&&"function"===typeof t.toString)},Object.defineProperty(e.prototype,"fsPath",{get:function(){return C(this)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,i=e.path,o=e.query,r=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=p),void 0===n?n=this.authority:null===n&&(n=p),void 0===i?i=this.path:null===i&&(i=p),void 0===o?o=this.query:null===o&&(o=p),void 0===r?r=this.fragment:null===r&&(r=p),t===this.scheme&&n===this.authority&&i===this.path&&o===this.query&&r===this.fragment?this:new _(t,n,i,o,r)},e.parse=function(e,t){void 0===t&&(t=!1);var n=g.exec(e);return n?new _(n[2]||p,decodeURIComponent(n[4]||p),decodeURIComponent(n[5]||p),decodeURIComponent(n[7]||p),decodeURIComponent(n[9]||p),t):new _(p,p,p,p,p)},e.file=function(e){var t=p;if(o["g"]&&(e=e.replace(/\\/g,f)),e[0]===f&&e[1]===f){var n=e.indexOf(f,2);-1===n?(t=e.substring(2),e=f):(t=e.substring(2,n),e=e.substring(n)||f)}return new _("file",t,e,p,p)},e.from=function(e){return new _(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),S(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new _(t);return n._formatted=t.external,n._fsPath=t._sep===v?t.fsPath:null,n}return t},e}(),v=o["g"]?1:void 0,_=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return r(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=C(this)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?S(this,!0):(this._formatted||(this._formatted=S(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=v),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},t}(m),b=(i={},i[58]="%3A",i[47]="%2F",i[63]="%3F",i[35]="%23",i[91]="%5B",i[93]="%5D",i[64]="%40",i[33]="%21",i[36]="%24",i[38]="%26",i[39]="%27",i[40]="%28",i[41]="%29",i[42]="%2A",i[43]="%2B",i[44]="%2C",i[59]="%3B",i[61]="%3D",i[32]="%20",i);function y(e,t){for(var n=void 0,i=-1,o=0;o=97&&r<=122||r>=65&&r<=90||r>=48&&r<=57||45===r||46===r||95===r||126===r||t&&47===r)-1!==i&&(n+=encodeURIComponent(e.substring(i,o)),i=-1),void 0!==n&&(n+=e.charAt(o));else{void 0===n&&(n=e.substr(0,o));var s=b[r];void 0!==s?(-1!==i&&(n+=encodeURIComponent(e.substring(i,o)),i=-1),n+=s):-1===i&&(i=o)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function w(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?e.path[1].toLowerCase()+e.path.substr(2):e.path,o["g"]&&(t=t.replace(/\//g,"\\")),t}function S(e,t){var n=t?w:y,i="",o=e.scheme,r=e.authority,s=e.path,a=e.query,u=e.fragment;if(o&&(i+=o,i+=":"),(r||"file"===o)&&(i+=f,i+=f),r){var l=r.indexOf("@");if(-1!==l){var c=r.substr(0,l);r=r.substr(l+1),l=c.indexOf(":"),-1===l?i+=n(c,!1):(i+=n(c.substr(0,l),!1),i+=":",i+=n(c.substr(l+1),!1)),i+="@"}r=r.toLowerCase(),l=r.indexOf(":"),-1===l?i+=n(r,!1):(i+=n(r.substr(0,l),!1),i+=r.substr(l))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){var d=s.charCodeAt(1);d>=65&&d<=90&&(s="/"+String.fromCharCode(d+32)+":"+s.substr(3))}else if(s.length>=2&&58===s.charCodeAt(1)){d=s.charCodeAt(0);d>=65&&d<=90&&(s=String.fromCharCode(d+32)+":"+s.substr(2))}i+=n(s,!0)}return a&&(i+="?",i+=n(a,!1)),u&&(i+="#",i+=t?u:y(u,!1)),i}},"6da2":function(e,t,n){"use strict";n.d(t,"b",function(){return a}),n.d(t,"c",function(){return u}),n.d(t,"a",function(){return l}),n.d(t,"d",function(){return d}),n.d(t,"e",function(){return p});var i=n("3742"),o=n("7ab3"),r=n("7416"),s=function(){function e(e,t){this.endIndex=e,this.type=t}return e}(),a=function(){function e(e,t){this.startOffset=e,this.endOffset=t}return e.prototype.equals=function(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset},e}(),u=function(){function e(e,t,n,i,o,r,s,a,u,l,c,d,h,p,f,g){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=n,this.continuesWithWrappedLine=i,this.isBasicASCII=o,this.containsRTL=r,this.fauxIndentLength=s,this.lineTokens=a,this.lineDecorations=u,this.tabSize=l,this.spaceWidth=c,this.stopRenderingLineAfter=d,this.renderWhitespace="all"===h?3:"boundary"===h?1:"selection"===h?2:0,this.renderControlCharacters=p,this.fontLigatures=f,this.selectionsOnLine=g&&g.sort(function(e,t){return e.startOffset>>16},e.getCharIndex=function(e){return(65535&e)>>>0},e.prototype.setPartData=function(e,t,n,i){var o=(t<<16|n<<0)>>>0;this._data[e]=o,this._absoluteOffsets[e]=i+n},e.prototype.getAbsoluteOffsets=function(){return this._absoluteOffsets},e.prototype.charOffsetToPartData=function(e){return 0===this.length?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]},e.prototype.partDataToCharOffset=function(t,n,i){if(0===this.length)return 0;var o=(t<<16|i<<0)>>>0,r=0,s=this.length-1;while(r+1>>1,u=this._data[a];if(u===o)return a;u>o?s=a:r=a}if(r===s)return r;var l=this._data[r],c=this._data[s];if(l===o)return r;if(c===o)return s;var d,h=e.getPartIndex(l),p=e.getCharIndex(l),f=e.getPartIndex(c);d=h!==f?n:e.getCharIndex(c);var g=i-p,m=d-i;return g<=m?r:s},e}(),c=function(){function e(e,t,n){this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=n}return e}();function d(e,t){if(0===e.lineContent.length){var n=0,i=" ";if(e.lineDecorations.length>0){for(var o=[],r=0,s=e.lineDecorations.length;r')}return t.appendASCIIString(i),new c(new l(0,0),!1,n)}return y(g(e),t)}var h=function(){function e(e,t,n,i){this.characterMapping=e,this.html=t,this.containsRTL=n,this.containsForeignElements=i}return e}();function p(e){var t=Object(o["a"])(1e4),n=d(e,t);return new h(n.characterMapping,t.build(),n.containsRTL,n.containsForeignElements)}var f=function(){function e(e,t,n,i,o,r,s,a,u,l,c,d){this.fontIsMonospace=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=n,this.len=i,this.isOverflowing=o,this.parts=r,this.containsForeignElements=s,this.tabSize=a,this.containsRTL=u,this.spaceWidth=l,this.renderWhitespace=c,this.renderControlCharacters=d}return e}();function g(e){var t,n,i=e.useMonospaceOptimizations,o=e.lineContent;-1!==e.stopRenderingLineAfter&&e.stopRenderingLineAfter0){for(var a=0,u=e.lineDecorations.length;a0&&(i[o++]=new s(t,""));for(var r=0,a=e.getCount();r=n){i[o++]=new s(n,l);break}i[o++]=new s(u,l)}}return i}function v(e,t,n){var i=0,o=[],r=0;if(n)for(var a=0,u=t.length;a=50&&(o[r++]=new s(h+1,d),p=h+1,h=-1);p!==c&&(o[r++]=new s(c,d))}else o[r++]=l;i=c}else for(a=0,u=t.length;a50){d=l.type;var m=Math.ceil(g/50);for(f=1;f=L.endOffset&&(S++,L=l&&l[S]);var O=void 0;if(y<_||y>d)O=!0;else if(9===w)O=!0;else if(32===w)if(c)if(C)O=!0;else{var x=y+1y),C?(!O||!u&&b>=a)&&(h[p++]=new s(y,"vs-whitespace"),b%=a):(y===m||O&&y>r)&&(h[p++]=new s(y,g),b%=a),9===w?b=a:i["v"](w)?b+=2:b++,C=O,y===m&&(f++,f0?e.charCodeAt(t-1):0,k=t>1?e.charCodeAt(t-2):0,I=32===D&&32!==k&&9!==k;I||(N=!0)}else N=!0;return h[p++]=new s(t,N?"vs-whitespace":g),h}function b(e,t,n,i){i.sort(r["a"].compare);for(var o=r["b"].normalize(e,i),a=o.length,u=0,l=[],c=0,d=0,h=0,p=n.length;hd&&(d=v.startOffset,l[c++]=new s(d,m)),!(v.endOffset+1<=g)){d=g,l[c++]=new s(d,m+" "+v.className);break}d=v.endOffset+1,l[c++]=new s(d,m+" "+v.className),u++}g>d&&(d=g,l[c++]=new s(d,m))}var _=n[n.length-1].endIndex;if(u");for(var S=0,L=d.length;S=0;if(y=0,t.appendASCIIString('0&&(!o||T>1?t.write1(8594):t.write1(65515),T--);while(T>0)t.write1(160),T--}else t.write1(183);y++}w=k}else{k=0;for(p&&t.appendASCIIString(' dir="ltr"'),t.appendASCII(62);_0)t.write1(160),k++,T--;break;case 32:t.write1(160),k++;break;case 60:t.appendASCIIString("<"),k++;break;case 62:t.appendASCIIString(">"),k++;break;case 38:t.appendASCIIString("&"),k++;break;case 0:t.appendASCIIString("�"),k++;break;case 65279:case 8232:t.write1(65533),k++;break;default:i["v"](M)&&b++,m&&M<32?(t.write1(9216+M),k++):(t.write1(M),k++)}y++}w=k}t.appendASCIIString("")}return v.setPartData(a,d.length-1,y,C),u&&t.appendASCIIString(""),t.appendASCIIString(""),new c(v,p,r)}},"6daf":function(e,t,n){"use strict";n.r(t);var i=n("dff7"),o=n("3742"),r=n("b2cc"),s=n("2c29"),a=n("7061"),u=n("6a89"),l=n("c101"),c=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),d=function(e){function t(){return e.call(this,{id:"editor.action.transposeLetters",label:i["a"]("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:l["a"].writable,kbOpts:{kbExpr:l["a"].textInputFocus,primary:0,mac:{primary:306},weight:100}})||this}return c(t,e),t.prototype.positionLeftOf=function(e,t){var n=e.column,i=e.lineNumber;return n>t.getLineMinColumn(i)?Object(o["x"])(t.getLineContent(i).charCodeAt(n-2))?n-=2:n-=1:i>1&&(i-=1,n=t.getLineMaxColumn(i)),new a["a"](i,n)},t.prototype.positionRightOf=function(e,t){var n=e.column,i=e.lineNumber;return n0&&(t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop())}},t}(r["b"]);Object(r["f"])(d)},"6dec":function(e,t,n){"use strict";n.d(t,"a",function(){return o});var i=n("0a0f"),o=Object(i["c"])("keybindingService")},"6df4":function(e,t,n){"use strict";n.r(t);var i=n("dff7"),o=n("b2cc"),r=n("62bd"),s=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),a=function(e){function t(){return e.call(this,{id:"editor.action.fontZoomIn",label:i["a"]("EditorFontZoomIn.label","Editor Font Zoom In"),alias:"Editor Font Zoom In",precondition:void 0})||this}return s(t,e),t.prototype.run=function(e,t){r["a"].setZoomLevel(r["a"].getZoomLevel()+1)},t}(o["b"]),u=function(e){function t(){return e.call(this,{id:"editor.action.fontZoomOut",label:i["a"]("EditorFontZoomOut.label","Editor Font Zoom Out"),alias:"Editor Font Zoom Out",precondition:void 0})||this}return s(t,e),t.prototype.run=function(e,t){r["a"].setZoomLevel(r["a"].getZoomLevel()-1)},t}(o["b"]),l=function(e){function t(){return e.call(this,{id:"editor.action.fontZoomReset",label:i["a"]("EditorFontZoomReset.label","Editor Font Zoom Reset"),alias:"Editor Font Zoom Reset",precondition:void 0})||this}return s(t,e),t.prototype.run=function(e,t){r["a"].setZoomLevel(0)},t}(o["b"]);Object(o["f"])(a),Object(o["f"])(u),Object(o["f"])(l)},"6e4e":function(e,t,n){"use strict";n.r(t),n.d(t,"BracketMatchingController",function(){return w});n("f004");var i=n("dff7"),o=n("5fe7"),r=n("a666"),s=n("b2cc"),a=n("7061"),u=n("8025"),l=n("c101"),c=n("3352"),d=n("b57f"),h=n("918c"),p=n("303e"),f=n("b7d0"),g=n("7e32"),m=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),v=Object(p["Kb"])("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hc:"#A0A0A0"},i["a"]("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets.")),_=function(e){function t(){return e.call(this,{id:"editor.action.jumpToBracket",label:i["a"]("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:l["a"].editorTextFocus,primary:3160,weight:100}})||this}return m(t,e),t.prototype.run=function(e,t){var n=w.get(t);n&&n.jumpToBracket()},t}(s["b"]),b=function(e){function t(){return e.call(this,{id:"editor.action.selectToBracket",label:i["a"]("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0})||this}return m(t,e),t.prototype.run=function(e,t){var n=w.get(t);n&&n.selectToBracket()},t}(s["b"]),y=function(){function e(e,t){this.position=e,this.brackets=t}return e}(),w=function(e){function t(t){var n=e.call(this)||this;return n._editor=t,n._lastBracketsData=[],n._lastVersionId=0,n._decorations=[],n._updateBracketsSoon=n._register(new o["d"](function(){return n._updateBrackets()},50)),n._matchBrackets=n._editor.getConfiguration().contribInfo.matchBrackets,n._updateBracketsSoon.schedule(),n._register(t.onDidChangeCursorPosition(function(e){n._matchBrackets&&n._updateBracketsSoon.schedule()})),n._register(t.onDidChangeModelContent(function(e){n._updateBracketsSoon.schedule()})),n._register(t.onDidChangeModel(function(e){n._lastBracketsData=[],n._decorations=[],n._updateBracketsSoon.schedule()})),n._register(t.onDidChangeModelLanguageConfiguration(function(e){n._lastBracketsData=[],n._updateBracketsSoon.schedule()})),n._register(t.onDidChangeConfiguration(function(e){n._matchBrackets=n._editor.getConfiguration().contribInfo.matchBrackets,!n._matchBrackets&&n._decorations.length>0&&(n._decorations=n._editor.deltaDecorations(n._decorations,[])),n._updateBracketsSoon.schedule()})),n}return m(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.jumpToBracket=function(){if(this._editor.hasModel()){var e=this._editor.getModel(),t=this._editor.getSelections().map(function(t){var n=t.getStartPosition(),i=e.matchBracket(n),o=null;if(i)i[0].containsPosition(n)?o=i[1].getStartPosition():i[1].containsPosition(n)&&(o=i[0].getStartPosition());else{var r=e.findNextBracket(n);r&&r.range&&(o=r.range.getStartPosition())}return o?new u["a"](o.lineNumber,o.column,o.lineNumber,o.column):new u["a"](n.lineNumber,n.column,n.lineNumber,n.column)});this._editor.setSelections(t),this._editor.revealRange(t[0])}},t.prototype.selectToBracket=function(){if(this._editor.hasModel()){var e=this._editor.getModel(),t=[];this._editor.getSelections().forEach(function(n){var i=n.getStartPosition(),o=e.matchBracket(i),r=null,s=null;if(!o){var a=e.findNextBracket(i);a&&a.range&&(o=e.matchBracket(a.range.getStartPosition()))}o&&(o[0].startLineNumber===o[1].startLineNumber?(r=o[1].startColumn0&&(this._editor.setSelections(t),this._editor.revealRange(t[0]))}},t.prototype._updateBrackets=function(){if(this._matchBrackets){this._recomputeBrackets();for(var e=[],n=0,i=0,o=this._lastBracketsData.length;i1&&o.sort(a["a"].compare);var c=[],d=0,h=0,p=n.length;for(s=0,u=o.length;s0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},U=function(e,t){return function(n,i){t(n,i,e)}},K=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},q=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]1)){var n=this._editor.getModel(),o=this._editor.getPosition(),r=!1,s=this._editor.onDidChangeModelContent(function(e){if(e.isFlush)return r=!0,void s.dispose();for(var t=0,n=e.changes.length;t1||this._instantiationService.invokeFunction(T,this.editor,e,2,o["a"].None).catch(g["e"]))},e.ID="editor.contrib.formatOnPaste",e=z([U(1,x["a"])],e),e}(),X=function(e){function t(){return e.call(this,{id:"editor.action.formatDocument",label:L["a"]("formatDocument.label","Format Document"),alias:"Format Document",precondition:B["a"].and(d["a"].writable,d["a"].hasDocumentFormattingProvider),kbOpts:{kbExpr:B["a"].and(d["a"].editorTextFocus,d["a"].hasDocumentFormattingProvider),primary:1572,linux:{primary:3111},weight:100},menuOpts:{when:d["a"].hasDocumentFormattingProvider,group:"1_modification",order:1.3}})||this}return H(t,e),t.prototype.run=function(e,t){return K(this,void 0,void 0,function(){var n;return q(this,function(i){switch(i.label){case 0:return t.hasModel()?(n=e.get(x["a"]),[4,n.invokeFunction(R,t,1,o["a"].None)]):[3,2];case 1:i.sent(),i.label=2;case 2:return[2]}})})},t}(a["b"]),$=function(e){function t(){return e.call(this,{id:"editor.action.formatSelection",label:L["a"]("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:B["a"].and(d["a"].writable,d["a"].hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:B["a"].and(d["a"].editorTextFocus,d["a"].hasDocumentSelectionFormattingProvider),primary:Object(r["a"])(2089,2084),weight:100},menuOpts:{when:B["a"].and(d["a"].hasDocumentSelectionFormattingProvider,d["a"].hasNonEmptySelection),group:"1_modification",order:1.31}})||this}return H(t,e),t.prototype.run=function(e,t){return K(this,void 0,void 0,function(){var n,i,r;return q(this,function(s){switch(s.label){case 0:return t.hasModel()?(n=e.get(x["a"]),i=t.getModel(),r=t.getSelection(),r.isEmpty()&&(r=new c["a"](r.startLineNumber,1,r.startLineNumber,i.getLineMaxColumn(r.startLineNumber))),[4,n.invokeFunction(T,t,r,1,o["a"].None)]):[2];case 1:return s.sent(),[2]}})})},t}(a["b"]);Object(a["h"])(Z),Object(a["h"])(Y),Object(a["f"])(X),Object(a["f"])($),V["a"].registerCommand("editor.action.format",function(e){return K(G,void 0,void 0,function(){var t,n;return q(this,function(i){switch(i.label){case 0:return t=e.get(u["a"]).getFocusedCodeEditor(),t&&t.hasModel()?(n=e.get(V["b"]),t.getSelection().isEmpty()?[4,n.executeCommand("editor.action.formatDocument")]:[3,2]):[2];case 1:return i.sent(),[3,4];case 2:return[4,n.executeCommand("editor.action.formatSelection")];case 3:i.sent(),i.label=4;case 4:return[2]}})})})},"70c3":function(e,t,n){"use strict";n.d(t,"a",function(){return f});n("ba77");var i=n("a666"),o=n("0f70"),r=n("30db"),s=n("ef8e"),a=n("a60f"),u=n("5d28"),l=n("308f"),c=n("11f7"),d=n("e32d"),h=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),p=!1,f=function(e){function t(t,n,s){void 0===s&&(s={});var u=e.call(this)||this;return u._state=3,u._onDidEnablementChange=u._register(new l["a"]),u.onDidEnablementChange=u._onDidEnablementChange.event,u._onDidStart=u._register(new l["a"]),u.onDidStart=u._onDidStart.event,u._onDidChange=u._register(new l["a"]),u.onDidChange=u._onDidChange.event,u._onDidReset=u._register(new l["a"]),u.onDidReset=u._onDidReset.event,u._onDidEnd=u._register(new l["a"]),u.onDidEnd=u._onDidEnd.event,u.linkedSash=void 0,u.orthogonalStartSashDisposables=u._register(new i["b"]),u.orthogonalEndSashDisposables=u._register(new i["b"]),u.el=Object(c["m"])(t,Object(c["a"])(".monaco-sash")),r["d"]&&Object(c["f"])(u.el,"mac"),u._register(Object(d["a"])(u.el,"mousedown")(u.onMouseDown,u)),u._register(Object(d["a"])(u.el,"dblclick")(u.onMouseDoubleClick,u)),a["b"].addTarget(u.el),u._register(Object(d["a"])(u.el,a["a"].Start)(u.onTouchStart,u)),o["k"]&&Object(c["f"])(u.el,"touch"),u.setOrientation(s.orientation||0),u.hidden=!1,u.layoutProvider=n,u.orthogonalStartSash=s.orthogonalStartSash,u.orthogonalEndSash=s.orthogonalEndSash,Object(c["R"])(u.el,"debug",p),u}return h(t,e),Object.defineProperty(t.prototype,"state",{get:function(){return this._state},set:function(e){this._state!==e&&(Object(c["R"])(this.el,"disabled",0===e),Object(c["R"])(this.el,"minimum",1===e),Object(c["R"])(this.el,"maximum",2===e),this._state=e,this._onDidEnablementChange.fire(e))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"orthogonalStartSash",{get:function(){return this._orthogonalStartSash},set:function(e){this.orthogonalStartSashDisposables.clear(),e?(this.orthogonalStartSashDisposables.add(e.onDidEnablementChange(this.onOrthogonalStartSashEnablementChange,this)),this.onOrthogonalStartSashEnablementChange(e.state)):this.onOrthogonalStartSashEnablementChange(0),this._orthogonalStartSash=e},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"orthogonalEndSash",{get:function(){return this._orthogonalEndSash},set:function(e){this.orthogonalEndSashDisposables.clear(),e?(this.orthogonalEndSashDisposables.add(e.onDidEnablementChange(this.onOrthogonalEndSashEnablementChange,this)),this.onOrthogonalEndSashEnablementChange(e.state)):this.onOrthogonalEndSashEnablementChange(0),this._orthogonalEndSash=e},enumerable:!0,configurable:!0}),t.prototype.setOrientation=function(e){this.orientation=e,1===this.orientation?(Object(c["f"])(this.el,"horizontal"),Object(c["I"])(this.el,"vertical")):(Object(c["I"])(this.el,"horizontal"),Object(c["f"])(this.el,"vertical")),this.layoutProvider&&this.layout()},t.prototype.onMouseDown=function(e){var t=this;c["c"].stop(e,!1);var n=!1;if(!e.__orthogonalSashEvent){var o=this.getOrthogonalSash(e);o&&(n=!0,e.__orthogonalSashEvent=!0,o.onMouseDown(e))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onMouseDown(e)),this.state){for(var s=Object(c["y"])("iframe").concat(Object(c["y"])("webview")),a=0,l=s;a=this.el.clientHeight-4)return this.orthogonalEndSash}else{if(e.offsetX<=4)return this.orthogonalStartSash;if(e.offsetX>=this.el.clientWidth-4)return this.orthogonalEndSash}},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.el&&this.el.parentElement&&this.el.parentElement.removeChild(this.el),this.el=null},t}(i["a"])},"70cb":function(e,t,n){"use strict";var i=n("fdcc"),o=n("308f"),r=n("a666"),s=n("3742"),a=n("6a89"),u=n("d093"),l=n("2837"),c=n("045b"),d=function(){function e(t){if(t.autoClosingPairs?this._autoClosingPairs=t.autoClosingPairs.map(function(e){return new l["b"](e)}):t.brackets?this._autoClosingPairs=t.brackets.map(function(e){return new l["b"]({open:e[0],close:e[1]})}):this._autoClosingPairs=[],t.__electricCharacterSupport&&t.__electricCharacterSupport.docComment){var n=t.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new l["b"]({open:n.open,close:n.close||""}))}this._autoCloseBefore="string"===typeof t.autoCloseBefore?t.autoCloseBefore:e.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED,this._surroundingPairs=t.surroundingPairs||this._autoClosingPairs}return e.prototype.getAutoClosingPairs=function(){return this._autoClosingPairs},e.prototype.getAutoCloseBeforeSet=function(){return this._autoCloseBefore},e.shouldAutoClosePair=function(e,t,n){if(0===t.getTokenCount())return!0;var i=t.findTokenIndexAtOffset(n-2),o=t.getStandardTokenType(i);return e.isOK(o)},e.prototype.getSurroundingPairs=function(){return this._surroundingPairs},e.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED=";:.,=}])> \n\t",e}(),h=n("1080"),p=function(){function e(e){this._richEditBrackets=e}return e.prototype.getElectricCharacters=function(){var e=[];if(this._richEditBrackets)for(var t=0,n=this._richEditBrackets.brackets.length;t0&&n.length>0)for(i=0,o=this._brackets.length;i0)for(i=0,o=this._brackets.length;i1){var o=void 0,r=-1;for(o=t-1;o>=1;o--){if(e.getLanguageIdAtPosition(o,0)!==i)return r;var s=e.getLineContent(o);if(!n.shouldIgnore(s)&&!/^\s+$/.test(s)&&""!==s)return o;r=o}}return-1},e.prototype.getInheritIndentForLine=function(e,t,n){void 0===n&&(n=!0);var i=this.getIndentRulesSupport(e.getLanguageIdentifier().id);if(!i)return null;if(t<=1)return{indentation:"",action:null};var o=this.getPrecedingValidLine(e,t,i);if(o<0)return null;if(o<1)return{indentation:"",action:null};var r=e.getLineContent(o);if(i.shouldIncrease(r)||i.shouldIndentNextLine(r))return{indentation:s["s"](r),action:l["a"].Indent,line:o};if(i.shouldDecrease(r))return{indentation:s["s"](r),action:null,line:o};if(1===o)return{indentation:s["s"](e.getLineContent(o)),action:null,line:o};var a=o-1,u=i.getIndentMetadata(e.getLineContent(a));if(!(3&u)&&4&u){for(var c=0,d=a-1;d>0;d--)if(!i.shouldIndentNextLine(e.getLineContent(d))){c=d;break}return{indentation:s["s"](e.getLineContent(c+1)),action:null,line:c+1}}if(n)return{indentation:s["s"](e.getLineContent(o)),action:null,line:o};for(d=o;d>0;d--){var h=e.getLineContent(d);if(i.shouldIncrease(h))return{indentation:s["s"](h),action:l["a"].Indent,line:d};if(i.shouldIndentNextLine(h)){c=0;for(var p=d-1;p>0;p--)if(!i.shouldIndentNextLine(e.getLineContent(d))){c=p;break}return{indentation:s["s"](e.getLineContent(c+1)),action:null,line:c+1}}if(i.shouldDecrease(h))return{indentation:s["s"](h),action:null,line:d}}return{indentation:s["s"](e.getLineContent(1)),action:null,line:1}},e.prototype.getGoodIndentForLine=function(e,t,n,o){var r=this.getIndentRulesSupport(t);if(!r)return null;var a=this.getInheritIndentForLine(e,n),u=e.getLineContent(n);if(a){var c=a.line;if(void 0!==c){var d=this._getOnEnterSupport(t),h=null;try{d&&(h=d.onEnter("",e.getLineContent(c),""))}catch(f){Object(i["e"])(f)}if(h){var p=s["s"](e.getLineContent(c));return h.removeText&&(p=p.substring(0,p.length-h.removeText)),h.indentAction===l["a"].Indent||h.indentAction===l["a"].IndentOutdent?p=o.shiftIndent(p):h.indentAction===l["a"].Outdent&&(p=o.unshiftIndent(p)),r.shouldDecrease(u)&&(p=o.unshiftIndent(p)),h.appendText&&(p+=h.appendText),s["s"](p)}}return r.shouldDecrease(u)?a.action===l["a"].Indent?a.indentation:o.unshiftIndent(a.indentation):a.action===l["a"].Indent?o.shiftIndent(a.indentation):a.indentation}return null},e.prototype.getIndentForEnter=function(e,t,n,i){e.forceTokenization(t.startLineNumber);var o,r,a=e.getLineTokens(t.startLineNumber),u=Object(c["a"])(a,t.startColumn-1),d=u.getLineContent(),h=!1;if(u.firstCharOffset>0&&a.getLanguageId(0)!==u.languageId?(h=!0,o=d.substr(0,t.startColumn-1-u.firstCharOffset)):o=a.getLineContent().substring(0,t.startColumn-1),t.isEmpty())r=d.substr(t.startColumn-1-u.firstCharOffset);else{var p=this.getScopedLineTokens(e,t.endLineNumber,t.endColumn);r=p.getLineContent().substr(t.endColumn-1-u.firstCharOffset)}var f=this.getIndentRulesSupport(u.languageId);if(!f)return null;var g=o,m=s["s"](o);if(!i&&!h){var v=this.getInheritIndentForLine(e,t.startLineNumber);f.shouldDecrease(o)&&v&&(m=v.indentation,v.action!==l["a"].Indent&&(m=n.unshiftIndent(m))),g=m+s["B"](s["B"](o," "),"\t")}var _={getLineTokens:function(t){return e.getLineTokens(t)},getLanguageIdentifier:function(){return e.getLanguageIdentifier()},getLanguageIdAtPosition:function(t,n){return e.getLanguageIdAtPosition(t,n)},getLineContent:function(n){return n===t.startLineNumber?g:e.getLineContent(n)}},b=s["s"](a.getLineContent()),y=this.getInheritIndentForLine(_,t.startLineNumber+1);if(!y){var w=h?b:m;return{beforeEnter:w,afterEnter:w}}var C=h?b:y.indentation;return y.action===l["a"].Indent&&(C=n.shiftIndent(C)),f.shouldDecrease(r)&&(C=n.unshiftIndent(C)),{beforeEnter:h?b:m,afterEnter:C}},e.prototype.getIndentActionForType=function(e,t,n,i){var o=this.getScopedLineTokens(e,t.startLineNumber,t.startColumn),r=this.getIndentRulesSupport(o.languageId);if(!r)return null;var s,a=o.getLineContent(),u=a.substr(0,t.startColumn-1-o.firstCharOffset);if(t.isEmpty())s=a.substr(t.startColumn-1-o.firstCharOffset);else{var c=this.getScopedLineTokens(e,t.endLineNumber,t.endColumn);s=c.getLineContent().substr(t.endColumn-1-o.firstCharOffset)}if(!r.shouldDecrease(u+s)&&r.shouldDecrease(u+n+s)){var d=this.getInheritIndentForLine(e,t.startLineNumber,!1);if(!d)return null;var h=d.indentation;return d.action!==l["a"].Indent&&(h=i.unshiftIndent(h)),h}return null},e.prototype.getIndentMetadata=function(e,t){var n=this.getIndentRulesSupport(e.getLanguageIdentifier().id);return n?t<1||t>e.getLineCount()?null:n.getIndentMetadata(e.getLineContent(t)):null},e.prototype._getOnEnterSupport=function(e){var t=this._getRichEditSupport(e);return t&&t.onEnter||null},e.prototype.getRawEnterActionAtPosition=function(e,t,n){var i=this.getEnterAction(e,new a["a"](t,n,t,n));return i?i.enterAction:null},e.prototype.getEnterAction=function(e,t){var n=this.getIndentationAtPosition(e,t.startLineNumber,t.startColumn),o=this.getScopedLineTokens(e,t.startLineNumber,t.startColumn),r=this._getOnEnterSupport(o.languageId);if(!r)return null;var s,a=o.getLineContent(),u=a.substr(0,t.startColumn-1-o.firstCharOffset);if(t.isEmpty())s=a.substr(t.startColumn-1-o.firstCharOffset);else{var c=this.getScopedLineTokens(e,t.endLineNumber,t.endColumn);s=c.getLineContent().substr(t.endColumn-1-o.firstCharOffset)}var d=t.startLineNumber,h="";if(d>1&&0===o.firstCharOffset){var p=this.getScopedLineTokens(e,d-1);p.languageId===o.languageId&&(h=p.getLineContent())}var f=null;try{f=r.onEnter(h,u,s)}catch(g){Object(i["e"])(g)}return f?(f.appendText||(f.indentAction===l["a"].Indent||f.indentAction===l["a"].IndentOutdent?f.appendText="\t":f.appendText=""),f.removeText&&(n=n.substring(0,n.length-f.removeText)),{enterAction:f,indentation:n}):null},e.prototype.getIndentationAtPosition=function(e,t,n){var i=e.getLineContent(t),o=s["s"](i);return o.length>n-1&&(o=o.substring(0,n-1)),o},e.prototype.getScopedLineTokens=function(e,t,n){e.forceTokenization(t);var i=e.getLineTokens(t),o="undefined"===typeof n?e.getLineMaxColumn(t)-1:n-1,r=Object(c["a"])(i,o);return r},e.prototype.getBracketsSupport=function(e){var t=this._getRichEditSupport(e);return t&&t.brackets||null},e}(),b=new _},7121:function(e,t,n){"use strict";var i,o,r=n("11f7"),s=n("ceb8"),a=n("308f"),u=n("a666"),l=n("b589"),c=n("82c9"),d=(n("3359"),n("d379")),h=n("6a89"),p=n("b57f"),f=n("b78f"),g=n("3a57"),m=n("c4e3"),v=(n("54f2"),n("3742")),_=n("aa3d"),b={badgeBackground:s["a"].fromHex("#4D4D4D"),badgeForeground:s["a"].fromHex("#FFFFFF")},y=function(){function e(e,t){this.count=0,this.options=t||Object.create(null),Object(_["g"])(this.options,b,!1),this.badgeBackground=this.options.badgeBackground,this.badgeForeground=this.options.badgeForeground,this.badgeBorder=this.options.badgeBorder,this.element=Object(r["m"])(e,Object(r["a"])(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}return e.prototype.setCount=function(e){this.count=e,this.render()},e.prototype.setTitleFormat=function(e){this.titleFormat=e,this.render()},e.prototype.render=function(){this.element.textContent=Object(v["r"])(this.countFormat,this.count),this.element.title=Object(v["r"])(this.titleFormat,this.count),this.applyStyles()},e.prototype.style=function(e){this.badgeBackground=e.badgeBackground,this.badgeForeground=e.badgeForeground,this.badgeBorder=e.badgeBorder,this.applyStyles()},e.prototype.applyStyles=function(){if(this.element){var e=this.badgeBackground?this.badgeBackground.toString():null,t=this.badgeForeground?this.badgeForeground.toString():null,n=this.badgeBorder?this.badgeBorder.toString():null;this.element.style.backgroundColor=e,this.element.style.color=t,this.element.style.borderWidth=n?"1px":null,this.element.style.borderStyle=n?"solid":null,this.element.style.borderColor=n}},e}(),w=n("47cb"),C=n("b7d0"),S=n("a6d7"),L=n("dff7"),O=n("debc"),x=n("0a0f"),N=n("6dec"),D=n("7e93"),k=n("ee56"),I=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),E=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},M=function(e,t){return function(n,i){t(n,i,e)}},T=function(){function e(e){this._resolverService=e}return e.prototype.hasChildren=function(e){return e instanceof g["c"]||e instanceof g["a"]&&!e.failure},e.prototype.getChildren=function(e){if(e instanceof g["c"])return e.groups;if(e instanceof g["a"])return e.resolve(this._resolverService).then(function(e){return e.children});throw new Error("bad tree")},e=E([M(0,f["a"])],e),e}(),P=function(){function e(){}return e.prototype.getHeight=function(){return 23},e.prototype.getTemplateId=function(e){return e instanceof g["a"]?j.id:V.id},e}(),R=function(){function e(e){this._keybindingService=e}return e.prototype.getKeyboardNavigationLabel=function(e){if(e instanceof g["b"]){var t=e.parent.preview,n=t&&t.preview(e.range);if(n)return n.value}return Object(c["b"])(e.uri)},e.prototype.mightProducePrintableCharacter=function(e){return this._keybindingService.mightProducePrintableCharacter(e)},e=E([M(0,N["a"])],e),e}(),A=function(){function e(){}return e.prototype.getId=function(e){return e.id},e}(),F=function(e){function t(t,n,i){var o=e.call(this)||this;o._uriLabel=n;var s=document.createElement("div");return r["f"](s,"reference-file"),o.file=o._register(new m["a"](s,{supportHighlights:!0})),o.badge=new y(r["m"](s,r["a"](".count"))),o._register(Object(S["a"])(o.badge,i)),t.appendChild(s),o}return I(t,e),t.prototype.set=function(e,t){var n=Object(c["d"])(e.uri);this.file.setLabel(Object(O["a"])(e.uri),this._uriLabel.getUriLabel(n,{relative:!0}),{title:this._uriLabel.getUriLabel(e.uri),matches:t});var i=e.children.length;this.badge.setCount(i),e.failure?this.badge.setTitleFormat(Object(L["a"])("referencesFailre","Failed to resolve file.")):i>1?this.badge.setTitleFormat(Object(L["a"])("referencesCount","{0} references",i)):this.badge.setTitleFormat(Object(L["a"])("referenceCount","{0} reference",i))},t=E([M(1,w["a"]),M(2,C["c"])],t),t}(u["a"]),j=function(){function e(t){this._instantiationService=t,this.templateId=e.id}return e.prototype.renderTemplate=function(e){return this._instantiationService.createInstance(F,e)},e.prototype.renderElement=function(e,t,n){n.set(e.element,Object(D["c"])(e.filterData))},e.prototype.disposeTemplate=function(e){e.dispose()},e.id="FileReferencesRenderer",e=E([M(0,x["a"])],e),e}(),W=function(){function e(e){this.label=new k["a"](e,!1)}return e.prototype.set=function(e,t){var n=e.parent.preview,i=n&&n.preview(e.range);if(i){var o=i.value,s=i.highlight;t&&!D["a"].isDefault(t)?(r["R"](this.label.element,"referenceMatch",!1),this.label.set(o,Object(D["c"])(t))):(r["R"](this.label.element,"referenceMatch",!0),this.label.set(o,[s]))}else this.label.set(Object(c["b"])(e.uri)+":"+(e.range.startLineNumber+1)+":"+(e.range.startColumn+1))},e}(),V=function(){function e(){this.templateId=e.id}return e.prototype.renderTemplate=function(e){return new W(e)},e.prototype.renderElement=function(e,t,n){n.set(e.element,e.filterData)},e.prototype.disposeTemplate=function(){},e.id="OneReferenceRenderer",e}(),B=function(){function e(){}return e.prototype.getAriaLabel=function(e){return e instanceof g["a"]?e.getAriaMessage():e instanceof g["b"]?e.getAriaMessage():null},e}(),H=n("4fc3"),z=n("93d9"),U=n("303e"),K=n("e5aa"),q=(n("e750"),n("ef8e")),G=n("49d9"),Z=n("e8e3"),Y=n("70c3"),X=n("e32d"),$=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),Q={separatorBorder:s["a"].transparent},J=function(){function e(e,t,n,i){this.container=e,this.view=t,this.disposable=i,this._cachedVisibleSize=void 0,"number"===typeof n?(this._size=n,this._cachedVisibleSize=void 0,r["f"](e,"visible")):(this._size=0,this._cachedVisibleSize=n.cachedVisibleSize)}return Object.defineProperty(e.prototype,"size",{get:function(){return this._size},set:function(e){this._size=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"visible",{get:function(){return"undefined"===typeof this._cachedVisibleSize},enumerable:!0,configurable:!0}),e.prototype.setVisible=function(e,t){e!==this.visible&&(e?(this.size=Object(G["a"])(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"===typeof t?t:this.size,this.size=0),r["R"](this.container,"visible",e),this.view.setVisible&&this.view.setVisible(e))},Object.defineProperty(e.prototype,"minimumSize",{get:function(){return this.visible?this.view.minimumSize:0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"viewMinimumSize",{get:function(){return this.view.minimumSize},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maximumSize",{get:function(){return this.visible?this.view.maximumSize:0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"viewMaximumSize",{get:function(){return this.view.maximumSize},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"priority",{get:function(){return this.view.priority},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"snap",{get:function(){return!!this.view.snap},enumerable:!0,configurable:!0}),e.prototype.layout=function(e){this.view.layout(this.size,e)},e.prototype.dispose=function(){return this.disposable.dispose(),this.view},e}(),ee=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return $(t,e),t.prototype.layout=function(t){e.prototype.layout.call(this,t),this.container.style.height=this.size+"px"},t}(J),te=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return $(t,e),t.prototype.layout=function(t){e.prototype.layout.call(this,t),this.container.style.width=this.size+"px"},t}(J);(function(e){e[e["Idle"]=0]="Idle",e[e["Busy"]=1]="Busy"})(i||(i={})),function(e){function t(e){return{type:"split",index:e}}function n(e){return{type:"invisible",cachedVisibleSize:e}}e.Distribute={type:"distribute"},e.Split=t,e.Invisible=n}(o||(o={}));var ne=function(e){function t(t,n){void 0===n&&(n={});var o=e.call(this)||this;return o.size=0,o.contentSize=0,o.proportions=void 0,o.viewItems=[],o.sashItems=[],o.state=i.Idle,o._onDidSashChange=o._register(new a["a"]),o.onDidSashChange=o._onDidSashChange.event,o._onDidSashReset=o._register(new a["a"]),o.orientation=q["j"](n.orientation)?0:n.orientation,o.inverseAltBehavior=!!n.inverseAltBehavior,o.proportionalLayout=!!q["j"](n.proportionalLayout)||!!n.proportionalLayout,o.el=document.createElement("div"),r["f"](o.el,"monaco-split-view2"),r["f"](o.el,0===o.orientation?"vertical":"horizontal"),t.appendChild(o.el),o.sashContainer=r["m"](o.el,r["a"](".sash-container")),o.viewContainer=r["m"](o.el,r["a"](".split-view-container")),o.style(n.styles||Q),n.descriptor&&(o.size=n.descriptor.size,n.descriptor.views.forEach(function(e,t){var n=q["j"](e.visible)||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},i=e.view;o.doAddView(i,n,t,!0)}),o.contentSize=o.viewItems.reduce(function(e,t){return e+t.size},0),o.saveProportions()),o}return $(t,e),Object.defineProperty(t.prototype,"orthogonalStartSash",{get:function(){return this._orthogonalStartSash},set:function(e){for(var t=0,n=this.sashItems;t0&&(this.proportions=this.viewItems.map(function(t){return t.size/e.contentSize}))},t.prototype.onSashStart=function(e){var t=this,n=e.sash,i=e.start,o=e.alt,r=Object(Z["j"])(this.sashItems,function(e){return e.sash===n}),s=Object(u["e"])(Object(X["a"])(document.body,"keydown")(function(e){return a(t.sashDragState.current,e.altKey)}),Object(X["a"])(document.body,"keyup")(function(){return a(t.sashDragState.current,!1)})),a=function(e,n){var i,o,a=t.viewItems.map(function(e){return e.size}),u=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY;if(t.inverseAltBehavior&&(n=!n),n){var c=r===t.sashItems.length-1;if(c){var d=t.viewItems[r];u=(d.minimumSize-d.size)/2,l=(d.maximumSize-d.size)/2}else{d=t.viewItems[r+1];u=(d.size-d.maximumSize)/2,l=(d.size-d.minimumSize)/2}}if(!n){var h=Object(Z["r"])(r,-1),p=Object(Z["r"])(r+1,t.viewItems.length),f=h.reduce(function(e,n){return e+(t.viewItems[n].minimumSize-a[n])},0),g=h.reduce(function(e,n){return e+(t.viewItems[n].viewMaximumSize-a[n])},0),m=0===p.length?Number.POSITIVE_INFINITY:p.reduce(function(e,n){return e+(a[n]-t.viewItems[n].minimumSize)},0),v=0===p.length?Number.NEGATIVE_INFINITY:p.reduce(function(e,n){return e+(a[n]-t.viewItems[n].viewMaximumSize)},0),_=Math.max(f,v),b=Math.min(m,g),y=t.findFirstSnapIndex(h),w=t.findFirstSnapIndex(p);if("number"===typeof y){d=t.viewItems[y];var C=Math.floor(d.viewMinimumSize/2);i={index:y,limitDelta:d.visible?_-C:_+C,size:d.size}}if("number"===typeof w){d=t.viewItems[w],C=Math.floor(d.viewMinimumSize/2);o={index:w,limitDelta:d.visible?b+C:b-C,size:d.size}}}t.sashDragState={start:e,current:e,index:r,sizes:a,minDelta:u,maxDelta:l,alt:n,snapBefore:i,snapAfter:o,disposable:s}};a(i,o)},t.prototype.onSashChange=function(e){var t=e.current,n=this.sashDragState,i=n.index,o=n.start,r=n.sizes,s=n.alt,a=n.minDelta,u=n.maxDelta,l=n.snapBefore,c=n.snapAfter;this.sashDragState.current=t;var d=t-o,h=this.resize(i,d,r,void 0,void 0,a,u,l,c);if(s){var p=i===this.sashItems.length-1,f=this.viewItems.map(function(e){return e.size}),g=p?i:i+1,m=this.viewItems[g],v=m.size-m.maximumSize,_=m.size-m.minimumSize,b=p?i-1:i+1;this.resize(b,-h,f,void 0,void 0,v,_)}this.distributeEmptySpace(),this.layoutViews()},t.prototype.onSashEnd=function(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions()},t.prototype.onViewChange=function(e,t){var n=this.viewItems.indexOf(e);n<0||n>=this.viewItems.length||(t="number"===typeof t?t:e.size,t=Object(G["a"])(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&n>0?(this.resize(n-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([n],void 0)))},t.prototype.resizeView=function(e,t){var n=this;if(this.state!==i.Idle)throw new Error("Cant modify splitview");if(this.state=i.Busy,!(e<0||e>=this.viewItems.length)){var o=Object(Z["r"])(this.viewItems.length).filter(function(t){return t!==e}),r=o.filter(function(e){return 1===n.viewItems[e].priority}).concat([e]),s=o.filter(function(e){return 2===n.viewItems[e].priority}),a=this.viewItems[e];t=Math.round(t),t=Object(G["a"])(t,a.minimumSize,Math.min(a.maximumSize,this.size)),a.size=t,this.relayout(r,s),this.state=i.Idle}},t.prototype.distributeViewSizes=function(){for(var e=this,t=[],n=0,i=0,o=this.viewItems;i0&&(t.push(r),n+=r.size)}for(var s=Math.floor(n/t.length),a=0,u=t;a=this.viewItems.length?-1:this.viewItems[e].size},t.prototype.doAddView=function(e,t,n,o){var s=this;if(void 0===n&&(n=this.viewItems.length),this.state!==i.Idle)throw new Error("Cant modify splitview");this.state=i.Busy;var l=r["a"](".split-view-view");n===this.viewItems.length?this.viewContainer.appendChild(l):this.viewContainer.insertBefore(l,this.viewContainer.children.item(n));var c,d=e.onDidChange(function(e){return s.onViewChange(g,e)}),h=Object(u["h"])(function(){return s.viewContainer.removeChild(l)}),p=Object(u["e"])(d,h);c="number"===typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;var f,g=0===this.orientation?new ee(l,e,c,p):new te(l,e,c,p);if(this.viewItems.splice(n,0,g),this.viewItems.length>1){var m=0===this.orientation?1:0,v=0===this.orientation?{getHorizontalSashTop:function(e){return s.getSashPosition(e)}}:{getVerticalSashLeft:function(e){return s.getSashPosition(e)}},_=new Y["a"](this.sashContainer,v,{orientation:m,orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash}),b=0===this.orientation?function(e){return{sash:_,start:e.startY,current:e.currentY,alt:e.altKey}}:function(e){return{sash:_,start:e.startX,current:e.currentX,alt:e.altKey}},y=a["b"].map(_.onDidStart,b),w=y(this.onSashStart,this),C=a["b"].map(_.onDidChange,b),S=C(this.onSashChange,this),L=a["b"].map(_.onDidEnd,function(){return Object(Z["j"])(s.sashItems,function(e){return e.sash===_})}),O=L(this.onSashEnd,this),x=_.onDidReset(function(){var e=Object(Z["j"])(s.sashItems,function(e){return e.sash===_}),t=Object(Z["r"])(e,-1),n=Object(Z["r"])(e+1,s.viewItems.length),i=s.findFirstSnapIndex(t),o=s.findFirstSnapIndex(n);("number"!==typeof i||s.viewItems[i].visible)&&("number"!==typeof o||s.viewItems[o].visible)&&s._onDidSashReset.fire(e)}),N=Object(u["e"])(w,S,O,x,_),D={sash:_,disposable:N};this.sashItems.splice(n-1,0,D)}l.appendChild(e.element),"number"!==typeof t&&"split"===t.type&&(f=[t.index]),o||this.relayout([n],f),this.state=i.Idle,o||"number"===typeof t||"distribute"!==t.type||this.distributeViewSizes()},t.prototype.relayout=function(e,t){var n=this.viewItems.reduce(function(e,t){return e+t.size},0);this.resize(this.viewItems.length-1,this.size-n,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()},t.prototype.resize=function(e,t,n,i,o,r,s,a,u){var l=this;if(void 0===n&&(n=this.viewItems.map(function(e){return e.size})),void 0===r&&(r=Number.NEGATIVE_INFINITY),void 0===s&&(s=Number.POSITIVE_INFINITY),e<0||e>=this.viewItems.length)return 0;var c=Object(Z["r"])(e,-1),d=Object(Z["r"])(e+1,this.viewItems.length);if(o)for(var h=0,p=o;h=a.limitDelta;D=I!==k.visible,k.setVisible(I,a.size)}if(!D&&u){k=this.viewItems[u.index],I=t0||t});t=!1;var i=this.viewItems.map(function(e){return t=e.maximumSize-e.size>0||t}),o=this.viewItems.slice().reverse();t=!1;var r=o.map(function(e){return t=e.size-e.minimumSize>0||t}).reverse();t=!1;var s=o.map(function(e){return t=e.maximumSize-e.size>0||t}).reverse();this.sashItems.forEach(function(t,o){var a=t.sash,u=!(n[o]&&s[o+1]),l=!(i[o]&&r[o+1]);if(u&&l){var c=Object(Z["r"])(o,-1),d=Object(Z["r"])(o+1,e.viewItems.length),h=e.findFirstSnapIndex(c),p=e.findFirstSnapIndex(d),f="number"===typeof h&&!e.viewItems[h].visible,g="number"===typeof p&&!e.viewItems[p].visible;f&&r[o]?a.state=1:g&&n[o]?a.state=2:a.state=0}else a.state=u&&!l?1:!u&&l?2:3})},t.prototype.getSashPosition=function(e){for(var t=0,n=0;n0)return;if(!o.visible&&o.snap)return i}},t.prototype.dispose=function(){e.prototype.dispose.call(this),this.viewItems.forEach(function(e){return e.dispose()}),this.viewItems=[],this.sashItems.forEach(function(e){return e.disposable.dispose()}),this.sashItems=[]},t}(u["a"]);n.d(t,"a",function(){return le}),n.d(t,"c",function(){return ce}),n.d(t,"b",function(){return de}),n.d(t,"d",function(){return pe}),n.d(t,"e",function(){return fe});var ie=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),oe=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},re=function(e,t){return function(n,i){t(n,i,e)}},se=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},ae=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]0?e.children[0]:void 0},t.prototype._revealReference=function(e,t){return se(this,void 0,void 0,function(){var n,i,o,r,s;return ae(this,function(a){switch(a.label){case 0:return this._revealedReference===e?[2]:(this._revealedReference=e,e.uri.scheme!==l["b"].inMemory?this.setTitle(Object(c["c"])(e.uri),this._uriLabel.getUriLabel(Object(c["d"])(e.uri))):this.setTitle(L["a"]("peekView.alternateTitle","References")),n=this._textModelResolverService.createModelReference(e.uri),this._tree.getInput()!==e.parent?[3,1]:(this._tree.reveal(e),[3,3]));case 1:return t&&this._tree.reveal(e.parent),[4,this._tree.expand(e.parent)];case 2:a.sent(),this._tree.reveal(e),a.label=3;case 3:return[4,n];case 4:return i=a.sent(),this._model?(Object(u["f"])(this._previewModelReference),o=i.object,o?(r=this._preview.getModel()===o.textEditorModel?0:1,s=h["a"].lift(e.range).collapseToStart(),this._previewModelReference=i,this._preview.setModel(o.textEditorModel),this._preview.setSelection(s),this._preview.revealRangeInCenter(s,r)):(this._preview.setModel(this._previewNotAvailableMessage),i.dispose()),[2]):(i.dispose(),[2])}})})},t=oe([re(3,C["c"]),re(4,f["a"]),re(5,x["a"]),re(6,K["a"]),re(7,w["a"])],t),t}(K["c"]),he=Object(U["Kb"])("peekViewTitle.background",{dark:"#1E1E1E",light:"#FFFFFF",hc:"#0C141F"},L["a"]("peekViewTitleBackground","Background color of the peek view title area.")),pe=Object(U["Kb"])("peekViewTitleLabel.foreground",{dark:"#FFFFFF",light:"#333333",hc:"#FFFFFF"},L["a"]("peekViewTitleForeground","Color of the peek view title.")),fe=Object(U["Kb"])("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#6c6c6cb3",hc:"#FFFFFF99"},L["a"]("peekViewTitleInfoForeground","Color of the peek view title info.")),ge=Object(U["Kb"])("peekView.border",{dark:"#007acc",light:"#007acc",hc:U["e"]},L["a"]("peekViewBorder","Color of the peek view borders and arrow.")),me=Object(U["Kb"])("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hc:s["a"].black},L["a"]("peekViewResultsBackground","Background color of the peek view result list.")),ve=Object(U["Kb"])("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hc:s["a"].white},L["a"]("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list.")),_e=Object(U["Kb"])("peekViewResult.fileForeground",{dark:s["a"].white,light:"#1E1E1E",hc:s["a"].white},L["a"]("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list.")),be=Object(U["Kb"])("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hc:null},L["a"]("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list.")),ye=Object(U["Kb"])("peekViewResult.selectionForeground",{dark:s["a"].white,light:"#6C6C6C",hc:s["a"].white},L["a"]("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list.")),we=Object(U["Kb"])("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hc:s["a"].black},L["a"]("peekViewEditorBackground","Background color of the peek view editor.")),Ce=Object(U["Kb"])("peekViewEditorGutter.background",{dark:we,light:we,hc:we},L["a"]("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor.")),Se=Object(U["Kb"])("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hc:null},L["a"]("peekViewResultsMatchHighlight","Match highlight color in the peek view result list.")),Le=Object(U["Kb"])("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hc:null},L["a"]("peekViewEditorMatchHighlight","Match highlight color in the peek view editor.")),Oe=Object(U["Kb"])("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hc:U["b"]},L["a"]("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."));Object(C["f"])(function(e,t){var n=e.getColor(Se);n&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { background-color: "+n+"; }");var i=e.getColor(Le);i&&t.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: "+i+"; }");var o=e.getColor(Oe);o&&t.addRule(".monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid "+o+"; box-sizing: border-box; }");var r=e.getColor(U["b"]);r&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { border: 1px dotted "+r+"; box-sizing: border-box; }");var s=e.getColor(me);s&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree { background-color: "+s+"; }");var a=e.getColor(ve);a&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree { color: "+a+"; }");var u=e.getColor(_e);u&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .reference-file { color: "+u+"; }");var l=e.getColor(be);l&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: "+l+"; }");var c=e.getColor(ye);c&&t.addRule(".monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: "+c+" !important; }");var d=e.getColor(we);d&&t.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {\tbackground-color: "+d+";}");var h=e.getColor(Ce);h&&t.addRule(".monaco-editor .reference-zone-widget .preview .monaco-editor .margin {\tbackground-color: "+h+";}")})},"722f9":function(e,t,n){},"725e":function(e,t,n){},"72a7":function(e,t,n){"use strict";n("e2b8");var i,o=n("dff7"),r=n("a666"),s=n("ef8e"),a=n("e8e3"),u=n("6424"),l=n("11f7"),c=n("30db"),d=n("a60f"),h=n("b835"),p=n("308f"),f=n("e32d");(function(e){e["TREE"]="tree",e["FORM"]="form"})(i||(i={}));var g=n("7de1"),m=n("ceb8"),v=n("aa3d"),_=function(){function e(e){this.spliceables=e}return e.prototype.splice=function(e,t,n){this.spliceables.forEach(function(i){return i.splice(e,t,n)})},e}(),b=n("49d9"),y=n("7e93");n.d(t,"f",function(){return E}),n.d(t,"e",function(){return P}),n.d(t,"d",function(){return R}),n.d(t,"c",function(){return W}),n.d(t,"a",function(){return V}),n.d(t,"b",function(){return X});var w=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),C=function(){return C=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},L=function(){function e(e){this.trait=e,this.renderedElements=[]}return Object.defineProperty(e.prototype,"templateId",{get:function(){return"template:"+this.trait.trait},enumerable:!0,configurable:!0}),e.prototype.renderTemplate=function(e){return e},e.prototype.renderElement=function(e,t,n){var i=Object(a["j"])(this.renderedElements,function(e){return e.templateData===n});if(i>=0){var o=this.renderedElements[i];this.trait.unrender(n),o.index=t}else{o={index:t,templateData:n};this.renderedElements.push(o)}this.trait.renderIndex(t,n)},e.prototype.splice=function(e,t,n){for(var i=[],o=0,r=this.renderedElements;o=e+t&&i.push({index:s.index+n-t,templateData:s.templateData})}this.renderedElements=i},e.prototype.renderIndexes=function(e){for(var t=0,n=this.renderedElements;t-1&&this.trait.renderIndex(o,r)}},e.prototype.disposeTemplate=function(e){var t=Object(a["j"])(this.renderedElements,function(t){return t.templateData===e});t<0||this.renderedElements.splice(t,1)},e}(),O=function(){function e(e){this._trait=e,this.indexes=[],this.sortedIndexes=[],this._onChange=new p["a"],this.onChange=this._onChange.event}return Object.defineProperty(e.prototype,"trait",{get:function(){return this._trait},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"renderer",{get:function(){return new L(this)},enumerable:!0,configurable:!0}),e.prototype.splice=function(e,t,n){var i=n.length-t,o=e+t,r=this.sortedIndexes.filter(function(t){return t=o}).map(function(e){return e+i}));this.renderer.splice(e,t,n.length),this._set(r,r)},e.prototype.renderIndex=function(e,t){l["R"](t,this._trait,this.contains(e))},e.prototype.unrender=function(e){l["I"](e,this._trait)},e.prototype.set=function(e,t){return this._set(e,e.slice().sort(q),t)},e.prototype._set=function(e,t,n){var i=this.indexes,o=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;var r=U(o,e);return this.renderer.renderIndexes(r),this._onChange.fire({indexes:e,browserEvent:n}),i},e.prototype.get=function(){return this.indexes},e.prototype.contains=function(e){return Object(a["c"])(this.sortedIndexes,e,q)>=0},e.prototype.dispose=function(){this._onChange=Object(r["f"])(this._onChange)},S([u["a"]],e.prototype,"renderer",null),e}(),x=function(e){function t(){return e.call(this,"focused")||this}return w(t,e),t.prototype.renderIndex=function(t,n){e.prototype.renderIndex.call(this,t,n),this.contains(t)?n.setAttribute("aria-selected","true"):n.removeAttribute("aria-selected")},t}(O),N=function(){function e(e,t,n){this.trait=e,this.view=t,this.identityProvider=n}return e.prototype.splice=function(e,t,n){var i=this;if(!this.identityProvider)return this.trait.splice(e,t,n.map(function(){return!1}));var o=this.trait.get().map(function(e){return i.identityProvider.getId(i.view.element(e)).toString()}),r=n.map(function(e){return o.indexOf(i.identityProvider.getId(e).toString())>-1});this.trait.splice(e,t,r)},e}();function D(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName}var k,I=function(){function e(e,t,n){this.list=e,this.view=t,this.disposables=new r["b"];var i=!1!==n.multipleSelectionSupport;this.openController=n.openController||j;var o=p["b"].chain(Object(f["a"])(t.domNode,"keydown")).filter(function(e){return!D(e.target)}).map(function(e){return new h["a"](e)});o.filter(function(e){return 3===e.keyCode}).on(this.onEnter,this,this.disposables),o.filter(function(e){return 16===e.keyCode}).on(this.onUpArrow,this,this.disposables),o.filter(function(e){return 18===e.keyCode}).on(this.onDownArrow,this,this.disposables),o.filter(function(e){return 11===e.keyCode}).on(this.onPageUpArrow,this,this.disposables),o.filter(function(e){return 12===e.keyCode}).on(this.onPageDownArrow,this,this.disposables),o.filter(function(e){return 9===e.keyCode}).on(this.onEscape,this,this.disposables),i&&o.filter(function(e){return(c["d"]?e.metaKey:e.ctrlKey)&&31===e.keyCode}).on(this.onCtrlA,this,this.disposables)}return e.prototype.onEnter=function(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent),this.openController.shouldOpen(e.browserEvent)&&this.list.open(this.list.getFocus(),e.browserEvent)},e.prototype.onUpArrow=function(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()},e.prototype.onDownArrow=function(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()},e.prototype.onPageUpArrow=function(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()},e.prototype.onPageDownArrow=function(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()},e.prototype.onCtrlA=function(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(Object(a["r"])(this.list.length),e.browserEvent),this.view.domNode.focus()},e.prototype.onEscape=function(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.view.domNode.focus()},e.prototype.dispose=function(){this.disposables.dispose()},e}();function E(e){return!(e.ctrlKey||e.metaKey||e.altKey)&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30||e.keyCode>=93&&e.keyCode<=102||e.keyCode>=80&&e.keyCode<=90)}(function(e){e[e["Idle"]=0]="Idle",e[e["Typing"]=1]="Typing"})(k||(k={}));var M=function(){function e(e,t,n){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=n,this.enabled=!1,this.state=k.Idle,this.automaticKeyboardNavigation=!0,this.triggered=!1,this.enabledDisposables=new r["b"],this.disposables=new r["b"],this.updateOptions(e.options)}return e.prototype.updateOptions=function(e){var t="undefined"===typeof e.enableKeyboardNavigation||!!e.enableKeyboardNavigation;t?this.enable():this.disable(),"undefined"!==typeof e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation)},e.prototype.enable=function(){var e=this;if(!this.enabled){var t=p["b"].chain(Object(f["a"])(this.view.domNode,"keydown")).filter(function(e){return!D(e.target)}).filter(function(){return e.automaticKeyboardNavigation||e.triggered}).map(function(e){return new h["a"](e)}).filter(this.keyboardNavigationLabelProvider.mightProducePrintableCharacter?function(t){return e.keyboardNavigationLabelProvider.mightProducePrintableCharacter(t)}:function(e){return E(e)}).forEach(function(e){e.stopPropagation(),e.preventDefault()}).map(function(e){return e.browserEvent.key}).event,n=p["b"].debounce(t,function(){return null},800),i=p["b"].reduce(p["b"].any(t,n),function(e,t){return null===t?null:(e||"")+t});i(this.onInput,this,this.enabledDisposables),this.enabled=!0,this.triggered=!1}},e.prototype.disable=function(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)},e.prototype.onInput=function(e){if(!e)return this.state=k.Idle,void(this.triggered=!1);var t=this.list.getFocus(),n=t.length>0?t[0]:0,i=this.state===k.Idle?1:0;this.state=k.Typing;for(var o=0;o=0&&e[o]===t-(n-o))i.push(e[o--]);i.reverse(),o=n;while(o=e.length)n.push(t[o++]);else if(o>=t.length)n.push(e[i++]);else{if(e[i]===t[o]){n.push(e[i]),i++,o++;continue}e[i]=e.length)n.push(t[o++]);else if(o>=t.length)n.push(e[i++]);else{if(e[i]===t[o]){i++,o++;continue}e[i]-1?t:[e];return n},e.prototype.getDragURI=function(e){return this.dnd.getDragURI(e)},e.prototype.getDragLabel=function(e){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e)},e.prototype.onDragStart=function(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(e,t)},e.prototype.onDragOver=function(e,t,n,i){return this.dnd.onDragOver(e,t,n,i)},e.prototype.drop=function(e,t,n,i){this.dnd.drop(e,t,n,i)},e}(),X=function(){function e(e,t,n,s){void 0===s&&(s=H),this._options=s,this.eventBufferer=new p["c"],this.disposables=new r["b"],this._onDidOpen=new p["a"],this.onDidOpen=this._onDidOpen.event,this._onPin=new p["a"],this.didJustPressContextMenuKey=!1,this._onDidDispose=new p["a"],this.onDidDispose=this._onDidDispose.event,this.focus=new x,this.selection=new O("selected"),Object(v["g"])(s,B,!1);var a=[this.focus.renderer,this.selection.renderer];s.accessibilityProvider&&a.push(new Z(s.accessibilityProvider)),n=n.map(function(e){return new G(e.templateId,a.concat([e]))});var u=C({},s,{dnd:s.dnd&&new Y(this,s.dnd)});if(this.view=new g["b"](e,t,n,u),"string"!==typeof s.ariaRole?this.view.domNode.setAttribute("role",i.TREE):this.view.domNode.setAttribute("role",s.ariaRole),this.styleElement=l["s"](this.view.domNode),this.styleController=s.styleController||new V(this.styleElement,this.view.domId),this.spliceable=new _([new N(this.focus,this.view,s.identityProvider),new N(this.selection,this.view,s.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.onDidFocus=p["b"].map(Object(f["a"])(this.view.domNode,"focus",!0),function(){return null}),this.onDidBlur=p["b"].map(Object(f["a"])(this.view.domNode,"blur",!0),function(){return null}),this.disposables.add(new T(this,this.view)),"boolean"!==typeof s.keyboardSupport||s.keyboardSupport){var c=new I(this,this.view,s);this.disposables.add(c)}s.keyboardNavigationLabelProvider&&(this.typeLabelController=new M(this,this.view,s.keyboardNavigationLabelProvider),this.disposables.add(this.typeLabelController)),this.disposables.add(this.createMouseController(s)),this.onFocusChange(this._onFocusChange,this,this.disposables),this.onSelectionChange(this._onSelectionChange,this,this.disposables),s.ariaLabel&&this.view.domNode.setAttribute("aria-label",Object(o["a"])("aria list","{0}. Use the navigation keys to navigate.",s.ariaLabel)),this.style(s)}return Object.defineProperty(e.prototype,"onFocusChange",{get:function(){var e=this;return p["b"].map(this.eventBufferer.wrapEvent(this.focus.onChange),function(t){return e.toListEvent(t)})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onSelectionChange",{get:function(){var e=this;return p["b"].map(this.eventBufferer.wrapEvent(this.selection.onChange),function(t){return e.toListEvent(t)})},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"domId",{get:function(){return this.view.domId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMouseClick",{get:function(){return this.view.onMouseClick},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMouseDblClick",{get:function(){return this.view.onMouseDblClick},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMouseMiddleClick",{get:function(){return this.view.onMouseMiddleClick},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onMouseDown",{get:function(){return this.view.onMouseDown},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onTouchStart",{get:function(){return this.view.onTouchStart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onTap",{get:function(){return this.view.onTap},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onContextMenu",{get:function(){var e=this,t=p["b"].chain(Object(f["a"])(this.view.domNode,"keydown")).map(function(e){return new h["a"](e)}).filter(function(t){return e.didJustPressContextMenuKey=58===t.keyCode||t.shiftKey&&68===t.keyCode}).filter(function(e){return e.preventDefault(),e.stopPropagation(),!1}).event,n=p["b"].chain(Object(f["a"])(this.view.domNode,"keyup")).filter(function(){var t=e.didJustPressContextMenuKey;return e.didJustPressContextMenuKey=!1,t}).filter(function(){return e.getFocus().length>0&&!!e.view.domElement(e.getFocus()[0])}).map(function(t){var n=e.getFocus()[0],i=e.view.element(n),o=e.view.domElement(n);return{index:n,element:i,anchor:o,browserEvent:t}}).event,i=p["b"].chain(this.view.onContextMenu).filter(function(){return!e.didJustPressContextMenuKey}).map(function(e){var t=e.element,n=e.index,i=e.browserEvent;return{element:t,index:n,anchor:{x:i.clientX+1,y:i.clientY},browserEvent:i}}).event;return p["b"].any(t,n,i)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"onKeyDown",{get:function(){return Object(f["a"])(this.view.domNode,"keydown")},enumerable:!0,configurable:!0}),e.prototype.createMouseController=function(e){return new W(this)},e.prototype.updateOptions=function(e){void 0===e&&(e={}),this._options=C({},this._options,e),this.typeLabelController&&this.typeLabelController.updateOptions(this._options)},Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!0,configurable:!0}),e.prototype.splice=function(e,t,n){var i=this;if(void 0===n&&(n=[]),e<0||e>this.view.length)throw new Error("Invalid start index: "+e);if(t<0)throw new Error("Invalid delete count: "+t);0===t&&0===n.length||this.eventBufferer.bufferEvents(function(){return i.spliceable.splice(e,t,n)})},e.prototype.rerender=function(){this.view.rerender()},e.prototype.element=function(e){return this.view.element(e)},Object.defineProperty(e.prototype,"length",{get:function(){return this.view.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"contentHeight",{get:function(){return this.view.contentHeight},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scrollTop",{get:function(){return this.view.getScrollTop()},set:function(e){this.view.setScrollTop(e)},enumerable:!0,configurable:!0}),e.prototype.domFocus=function(){this.view.domNode.focus()},e.prototype.layout=function(e,t){this.view.layout(e,t)},e.prototype.setSelection=function(e,t){for(var n=0,i=e;n=this.length)throw new Error("Invalid index "+o)}this.selection.set(e,t)},e.prototype.getSelection=function(){return this.selection.get()},e.prototype.getSelectedElements=function(){var e=this;return this.getSelection().map(function(t){return e.view.element(t)})},e.prototype.setFocus=function(e,t){for(var n=0,i=e;n=this.length)throw new Error("Invalid index "+o)}this.focus.set(e,t)},e.prototype.focusNext=function(e,t,n,i){if(void 0===e&&(e=1),void 0===t&&(t=!1),0!==this.length){var o=this.focus.get(),r=this.findNextIndex(o.length>0?o[0]+e:0,t,i);r>-1&&this.setFocus([r],n)}},e.prototype.focusPrevious=function(e,t,n,i){if(void 0===e&&(e=1),void 0===t&&(t=!1),0!==this.length){var o=this.focus.get(),r=this.findPreviousIndex(o.length>0?o[0]-e:0,t,i);r>-1&&this.setFocus([r],n)}},e.prototype.focusNextPage=function(e,t){var n=this,i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=0===i?0:i-1;var o=this.view.element(i),r=this.getFocusedElements()[0];if(r!==o){var s=this.findPreviousIndex(i,!1,t);s>-1&&r!==this.view.element(s)?this.setFocus([s],e):this.setFocus([i],e)}else{var a=this.view.getScrollTop();this.view.setScrollTop(a+this.view.renderHeight-this.view.elementHeight(i)),this.view.getScrollTop()!==a&&setTimeout(function(){return n.focusNextPage(e,t)},0)}},e.prototype.focusPreviousPage=function(e,t){var n,i=this,o=this.view.getScrollTop();n=0===o?this.view.indexAt(o):this.view.indexAfter(o-1);var r=this.view.element(n),s=this.getFocusedElements()[0];if(s!==r){var a=this.findNextIndex(n,!1,t);a>-1&&s!==this.view.element(a)?this.setFocus([a],e):this.setFocus([n],e)}else{var u=o;this.view.setScrollTop(o-this.view.renderHeight),this.view.getScrollTop()!==u&&setTimeout(function(){return i.focusPreviousPage(e,t)},0)}},e.prototype.focusLast=function(e,t){if(0!==this.length){var n=this.findPreviousIndex(this.length-1,!1,t);n>-1&&this.setFocus([n],e)}},e.prototype.focusFirst=function(e,t){if(0!==this.length){var n=this.findNextIndex(0,!1,t);n>-1&&this.setFocus([n],e)}},e.prototype.findNextIndex=function(e,t,n){void 0===t&&(t=!1);for(var i=0;i=this.length&&!t)return-1;if(e%=this.length,!n||n(this.element(e)))return e;e++}return-1},e.prototype.findPreviousIndex=function(e,t,n){void 0===t&&(t=!1);for(var i=0;i=this.length)throw new Error("Invalid index "+e);var n=this.view.getScrollTop(),i=this.view.elementTop(e),o=this.view.elementHeight(e);if(Object(s["g"])(t)){var r=o-this.view.renderHeight;this.view.setScrollTop(r*Object(b["a"])(t,0,1)+i)}else{var a=i+o,u=n+this.view.renderHeight;i=u&&this.view.setScrollTop(a-this.view.renderHeight)}},e.prototype.getRelativeTop=function(e){if(e<0||e>=this.length)throw new Error("Invalid index "+e);var t=this.view.getScrollTop(),n=this.view.elementTop(e),i=this.view.elementHeight(e);if(nt+this.view.renderHeight)return null;var o=i-this.view.renderHeight;return Math.abs((t-n)/o)},e.prototype.getHTMLElement=function(){return this.view.domNode},e.prototype.open=function(e,t){for(var n=this,i=0,o=e;i=this.length)throw new Error("Invalid index "+r)}this._onDidOpen.fire({indexes:e,elements:e.map(function(e){return n.view.element(e)}),browserEvent:t})},e.prototype.pin=function(e){for(var t=0,n=e;t=this.length)throw new Error("Invalid index "+i)}this._onPin.fire(e)},e.prototype.style=function(e){this.styleController.style(e)},e.prototype.toListEvent=function(e){var t=this,n=e.indexes,i=e.browserEvent;return{indexes:n,elements:n.map(function(e){return t.view.element(e)}),browserEvent:i}},e.prototype._onFocusChange=function(){var e=this.focus.get();e.length>0?this.view.domNode.setAttribute("aria-activedescendant",this.view.getElementDomId(e[0])):this.view.domNode.removeAttribute("aria-activedescendant"),this.view.domNode.setAttribute("role","tree"),l["R"](this.view.domNode,"element-focused",e.length>0)},e.prototype._onSelectionChange=function(){var e=this.selection.get();l["R"](this.view.domNode,"selection-none",0===e.length),l["R"](this.view.domNode,"selection-single",1===e.length),l["R"](this.view.domNode,"selection-multiple",e.length>1)},e.prototype.dispose=function(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidOpen.dispose(),this._onPin.dispose(),this._onDidDispose.dispose()},S([u["a"]],e.prototype,"onFocusChange",null),S([u["a"]],e.prototype,"onSelectionChange",null),S([u["a"]],e.prototype,"onContextMenu",null),e}()},7416:function(e,t,n){"use strict";n.d(t,"a",function(){return o}),n.d(t,"b",function(){return a});var i=n("3742"),o=function(){function e(e,t,n,i){this.startColumn=e,this.endColumn=t,this.className=n,this.type=i}return e._equals=function(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type},e.equalsArr=function(t,n){var i=t.length,o=n.length;if(i!==o)return!1;for(var r=0;rn)&&(!c.isEmpty()||0!==l.type&&3!==l.type)){var d=c.startLineNumber===n?c.startColumn:i,h=c.endLineNumber===n?c.endColumn:o;r[s++]=new e(d,h,l.inlineClassName,l.type)}}return r},e.compare=function(e,t){return e.startColumn===t.startColumn?e.endColumn===t.endColumn?e.classNamet.className?1:0:e.endColumn-t.endColumn:e.startColumn-t.startColumn},e}(),r=function(){function e(e,t,n){this.startOffset=e,this.endOffset=t,this.className=n}return e}(),s=function(){function e(){this.stopOffsets=[],this.classNames=[],this.count=0}return e.prototype.consumeLowerThan=function(e,t,n){while(this.count>0&&this.stopOffsets[0]0&&t=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t);break}this.count++},e}(),a=function(){function e(){}return e.normalize=function(e,t){if(0===t.length)return[];for(var n=[],o=new s,r=0,a=0,u=t.length;a1){var p=e.charCodeAt(c-2);i["w"](p)&&c--}if(d>1){p=e.charCodeAt(d-2);i["w"](p)&&d--}var f=c-1,g=d-2;r=o.consumeLowerThan(f,r,n),0===o.count&&(r=f),o.insert(g,h)}return o.consumeLowerThan(1073741824,r,n),n},e}()},7457:function(e,t,n){},"747f":function(e,t,n){"use strict";n.r(t);var i=n("dff7"),o=n("fe45"),r=n("d585"),s=n("b2cc"),a=n("2c29"),u=n("3742"),l=n("d3f49"),c=n("6a89"),d=function(){function e(e,t){this._selection=e,this._cursors=t,this._selectionId=null}return e.prototype.getEditOperations=function(e,t){for(var n=h(e,this._cursors),i=0,o=n.length;i=0;n--)t[n].lineNumber===t[n+1].lineNumber&&t.splice(n,1);for(var i=[],o=0,r=0,s=t.length,a=1,d=e.getLineCount();a<=d;a++){var h=e.getLineContent(a),p=h.length+1,f=0;if(!(r=i.startLineNumber+1&&t<=i.endLineNumber+1?e.getLineContent(t-1):e.getLineContent(t)};var D=y["a"].getGoodIndentForLine(d,e.getLanguageIdAtPosition(f,1),i.startLineNumber+1,l);if(null!==D){b=u["s"](e.getLineContent(i.startLineNumber)),S=w(D,r),x=w(b,r);if(S!==x){var k=S-x;this.getIndentEditsOfMovingBlock(e,t,i,r,a,k)}}}}else t.addEditOperation(new c["a"](i.startLineNumber,1,i.startLineNumber,1),v+"\n")}else if(f=i.startLineNumber-1,m=e.getLineContent(f),t.addEditOperation(new c["a"](f,1,f+1,1),null),t.addEditOperation(new c["a"](i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),"\n"+m),this.shouldAutoIndent(e,i)){d.getLineContent=function(t){return t===f?e.getLineContent(i.startLineNumber):e.getLineContent(t)};N=this.matchEnterRule(e,l,r,i.startLineNumber,i.startLineNumber-2);if(null!==N)0!==N&&this.getIndentEditsOfMovingBlock(e,t,i,r,a,N);else{var I=y["a"].getGoodIndentForLine(d,e.getLanguageIdAtPosition(i.startLineNumber,1),f,l);if(null!==I){var E=u["s"](e.getLineContent(i.startLineNumber));S=w(I,r),x=w(E,r);if(S!==x){k=S-x;this.getIndentEditsOfMovingBlock(e,t,i,r,a,k)}}}}}this._selectionId=t.trackSelection(i)}else this._selectionId=t.trackSelection(this._selection)},e.prototype.buildIndentConverter=function(e,t,n){return{shiftIndent:function(i){return _["a"].shiftIndent(i,i.length+1,e,t,n)},unshiftIndent:function(i){return _["a"].unshiftIndent(i,i.length+1,e,t,n)}}},e.prototype.matchEnterRule=function(e,t,n,i,o,r){var s=o;while(s>=1){var a=void 0;a=s===o&&void 0!==r?r:e.getLineContent(s);var l=u["A"](a);if(l>=0)break;s--}if(s<1||i>e.getLineCount())return null;var d=e.getLineMaxColumn(s),h=y["a"].getEnterAction(e,new c["a"](s,d,s,d));if(h){var p=h.indentation,f=h.enterAction;f.indentAction===b["a"].None?p=h.indentation+f.appendText:f.indentAction===b["a"].Indent?p=h.indentation+f.appendText:f.indentAction===b["a"].IndentOutdent?p=h.indentation:f.indentAction===b["a"].Outdent&&(p=t.unshiftIndent(h.indentation)+f.appendText);var g=e.getLineContent(i);if(this.trimLeft(g).indexOf(this.trimLeft(p))>=0){var m=u["s"](e.getLineContent(i)),v=u["s"](p),_=y["a"].getIndentMetadata(e,i);null!==_&&2&_&&(v=t.unshiftIndent(v));var C=w(v,n),S=w(m,n);return C-S}}return null},e.prototype.trimLeft=function(e){return e.replace(/^\s+/,"")},e.prototype.shouldAutoIndent=function(e,t){if(!this._autoIndent)return!1;if(!e.isCheapToTokenize(t.startLineNumber))return!1;var n=e.getLanguageIdAtPosition(t.startLineNumber,1),i=e.getLanguageIdAtPosition(t.endLineNumber,1);return n===i&&null!==y["a"].getIndentRulesSupport(n)},e.prototype.getIndentEditsOfMovingBlock=function(e,t,n,i,o,r){for(var s=n.startLineNumber;s<=n.endLineNumber;s++){var a=e.getLineContent(s),l=u["s"](a),d=w(l,i),h=d+r,p=C(h,i,o);p!==l&&(t.addEditOperation(new c["a"](s,1,s,l.length+1),p),s===n.endLineNumber&&n.endColumn<=l.length+1&&""===p&&(this._moveEndLineSelectionShrink=!0))}},e.prototype.computeCursorState=function(e,t){var n=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(n=n.setEndPosition(n.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&n.startLineNumber=o)return null;for(var r=[],s=i;s<=o;s++)r.push(e.getLineContent(s));var a=r.slice(0);return a.sort(function(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}),!0===n&&(a=a.reverse()),{startLineNumber:i,endLineNumber:o,before:r,after:a}}function x(e,t,n){var i=O(e,t,n);return i?l["a"].replace(new c["a"](i.startLineNumber,1,i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),i.after.join("\n")):null}n.d(t,"AbstractSortLinesAction",function(){return P}),n.d(t,"SortLinesAscendingAction",function(){return R}),n.d(t,"SortLinesDescendingAction",function(){return A}),n.d(t,"TrimTrailingWhitespaceAction",function(){return F}),n.d(t,"DeleteLinesAction",function(){return j}),n.d(t,"IndentLinesAction",function(){return W}),n.d(t,"InsertLineBeforeAction",function(){return B}),n.d(t,"InsertLineAfterAction",function(){return H}),n.d(t,"AbstractDeleteAllToBoundaryAction",function(){return z}),n.d(t,"DeleteAllLeftAction",function(){return U}),n.d(t,"DeleteAllRightAction",function(){return K}),n.d(t,"JoinLinesAction",function(){return q}),n.d(t,"TransposeAction",function(){return G}),n.d(t,"AbstractCaseAction",function(){return Z}),n.d(t,"UpperCaseAction",function(){return Y}),n.d(t,"LowerCaseAction",function(){return X}),n.d(t,"TitleCaseAction",function(){return $});var N=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),D=function(e){function t(t,n){var i=e.call(this,n)||this;return i.down=t,i}return N(t,e),t.prototype.run=function(e,t){for(var n=[],i=t.getSelections()||[],o=0,r=i;o1&&(d-=1,p=i.getLineMaxColumn(d)),r.push(l["a"].replace(new g["a"](d,p,h,f),"")),s.push(new g["a"](d-o,c.positionColumn,d-o,c.positionColumn)),o+=c.endLineNumber-c.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,r,s),t.pushUndoStop()}}},t.prototype._getLinesToRemove=function(e){var t=e.getSelections().map(function(e){var t=e.endLineNumber;return e.startLineNumber=t[o].startLineNumber?i.endLineNumber=t[o].endLineNumber:(n.push(i),i=t[o]);return n.push(i),n},t}(s["b"]),W=function(e){function t(){return e.call(this,{id:"editor.action.indentLines",label:i["a"]("lines.indent","Indent Line"),alias:"Indent Line",precondition:m["a"].writable,kbOpts:{kbExpr:m["a"].editorTextFocus,primary:2137,weight:100}})||this}return N(t,e),t.prototype.run=function(e,t){var n=t._getCursors();n&&(t.pushUndoStop(),t.executeCommands(this.id,p["a"].indent(n.context.config,t.getModel(),t.getSelections())),t.pushUndoStop())},t}(s["b"]),V=function(e){function t(){return e.call(this,{id:"editor.action.outdentLines",label:i["a"]("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:m["a"].writable,kbOpts:{kbExpr:m["a"].editorTextFocus,primary:2135,weight:100}})||this}return N(t,e),t.prototype.run=function(e,t){r["CoreEditingCommands"].Outdent.runEditorCommand(e,t,null)},t}(s["b"]),B=function(e){function t(){return e.call(this,{id:"editor.action.insertLineBefore",label:i["a"]("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:m["a"].writable,kbOpts:{kbExpr:m["a"].editorTextFocus,primary:3075,weight:100}})||this}return N(t,e),t.prototype.run=function(e,t){var n=t._getCursors();n&&(t.pushUndoStop(),t.executeCommands(this.id,p["a"].lineInsertBefore(n.context.config,t.getModel(),t.getSelections())))},t}(s["b"]),H=function(e){function t(){return e.call(this,{id:"editor.action.insertLineAfter",label:i["a"]("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:m["a"].writable,kbOpts:{kbExpr:m["a"].editorTextFocus,primary:2051,weight:100}})||this}return N(t,e),t.prototype.run=function(e,t){var n=t._getCursors();n&&(t.pushUndoStop(),t.executeCommands(this.id,p["a"].lineInsertAfter(n.context.config,t.getModel(),t.getSelections())))},t}(s["b"]),z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return N(t,e),t.prototype.run=function(e,t){if(t.hasModel()){for(var n=t.getSelection(),i=this._getRangesToDelete(t),o=[],r=0,s=i.length-1;r0){var s=t.startLineNumber-o;r=new g["a"](s,t.startColumn,s,t.startColumn)}else r=new g["a"](t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn);o+=t.endLineNumber-t.startLineNumber,t.intersectRanges(e)?n=r:i.push(r)}),n&&i.unshift(n),i},t.prototype._getRangesToDelete=function(e){var t=e.getSelections();if(null===t)return[];var n=t,i=e.getModel();return null===i?[]:(n.sort(c["a"].compareRangesUsingStarts),n=n.map(function(e){if(e.isEmpty()){if(1===e.startColumn){var t=Math.max(1,e.startLineNumber-1),n=1===e.startLineNumber?1:i.getLineContent(t).length+1;return new c["a"](t,n,e.startLineNumber,1)}return new c["a"](e.startLineNumber,1,e.startLineNumber,e.startColumn)}return new c["a"](e.startLineNumber,1,e.endLineNumber,e.endColumn)}),n)},t}(z),K=function(e){function t(){return e.call(this,{id:"deleteAllRight",label:i["a"]("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:m["a"].writable,kbOpts:{kbExpr:m["a"].textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})||this}return N(t,e),t.prototype._getEndCursorState=function(e,t){for(var n=null,i=[],o=0,r=t.length,s=0;oe.endLineNumber+1?(o.push(e),t):new g["a"](e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn):t.startLineNumber>e.endLineNumber?(o.push(e),t):new g["a"](e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn)});o.push(r);var s=t.getModel();if(null!==s){for(var a=[],u=[],d=i,h=0,p=0,f=o.length;p=1){var D=!0;""===L&&(D=!1),!D||" "!==L.charAt(L.length-1)&&"\t"!==L.charAt(L.length-1)||(D=!1,L=L.replace(/[\s\uFEFF\xA0]+$/g," "));var k=x.substr(N-1);L+=(D?" ":"")+k,b=D?k.length+1:k.length}else b=0}var I=new c["a"](v,_,y,w);if(!I.isEmpty()){var E=void 0;m.isEmpty()?(a.push(l["a"].replace(I,L)),E=new g["a"](I.startLineNumber-h,L.length-b+1,v-h,L.length-b+1)):m.startLineNumber===m.endLineNumber?(a.push(l["a"].replace(I,L)),E=new g["a"](m.startLineNumber-h,m.startColumn,m.endLineNumber-h,m.endColumn)):(a.push(l["a"].replace(I,L)),E=new g["a"](m.startLineNumber-h,m.startColumn,m.startLineNumber-h,L.length-C)),null!==c["a"].intersectRanges(I,i)?d=E:u.push(E)}h+=I.endLineNumber-I.startLineNumber}u.unshift(d),t.pushUndoStop(),t.executeEdits(this.id,a,u),t.pushUndoStop()}}}},t}(s["b"]),G=function(e){function t(){return e.call(this,{id:"editor.action.transpose",label:i["a"]("editor.transpose","Transpose characters around the cursor"),alias:"Transpose characters around the cursor",precondition:m["a"].writable})||this}return N(t,e),t.prototype.run=function(e,t){var n=t.getSelections();if(null!==n){var i=t.getModel();if(null!==i){for(var o=[],r=0,s=n.length;r=d){if(l.lineNumber===i.getLineCount())continue;var h=new c["a"](l.lineNumber,Math.max(1,l.column-1),l.lineNumber+1,1),p=i.getValueInRange(h).split("").reverse().join("");o.push(new a["a"](new g["a"](l.lineNumber,Math.max(1,l.column-1),l.lineNumber+1,1),p))}else{h=new c["a"](l.lineNumber,Math.max(1,l.column-1),l.lineNumber,l.column+1),p=i.getValueInRange(h).split("").reverse().join("");o.push(new a["b"](h,p,new g["a"](l.lineNumber,l.column+1,l.lineNumber,l.column+1)))}}}t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}},t}(s["b"]),Z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return N(t,e),t.prototype.run=function(e,t){var n=t.getSelections();if(null!==n){var i=t.getModel();if(null!==i){for(var o=t.getConfiguration().wordSeparators,r=[],s=0,u=n.length;s=0?(r=!0,o+=a):r?(r=!1,o+=a.toLocaleUpperCase()):o+=a.toLocaleLowerCase()}return o},t}(Z);Object(s["f"])(k),Object(s["f"])(I),Object(s["f"])(M),Object(s["f"])(T),Object(s["f"])(R),Object(s["f"])(A),Object(s["f"])(F),Object(s["f"])(j),Object(s["f"])(W),Object(s["f"])(V),Object(s["f"])(B),Object(s["f"])(H),Object(s["f"])(U),Object(s["f"])(K),Object(s["f"])(q),Object(s["f"])(G),Object(s["f"])(Y),Object(s["f"])(X),Object(s["f"])($)},7605:function(e,t,n){"use strict";n.r(t);n("0a33");var i=n("dff7"),o=n("ef8e"),r=n("3742"),s=n("5fe7"),a=n("fe45"),u=n("a666"),l=n("b2cc"),c=n("308f"),d=65535,h=16777215,p=4278190080,f=function(){function e(e,t,n){if(e.length!==t.length||e.length>d)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new Uint32Array(Math.ceil(e.length/32)),this._types=n,this._parentsComputed=!1}return e.prototype.ensureParentIndices=function(){var e=this;if(!this._parentsComputed){this._parentsComputed=!0;for(var t=[],n=function(n,i){var o=t[t.length-1];return e.getStartLineNumber(o)<=n&&e.getEndLineNumber(o)>=i},i=0,o=this._startIndexes.length;ih||s>h)throw new Error("startLineNumber or endLineNumber must not exceed "+h);while(t.length>0&&!n(r,s))t.pop();var a=t.length>0?t[t.length-1]:-1;t.push(i),this._startIndexes[i]=r+((255&a)<<24),this._endIndexes[i]=s+((65280&a)<<16)}}},Object.defineProperty(e.prototype,"length",{get:function(){return this._startIndexes.length},enumerable:!0,configurable:!0}),e.prototype.getStartLineNumber=function(e){return this._startIndexes[e]&h},e.prototype.getEndLineNumber=function(e){return this._endIndexes[e]&h},e.prototype.getType=function(e){return this._types?this._types[e]:void 0},e.prototype.hasTypes=function(){return!!this._types},e.prototype.isCollapsed=function(e){var t=e/32|0,n=e%32;return 0!==(this._collapseStates[t]&1<>>24)+((this._endIndexes[e]&p)>>>16);return t===d?-1:t},e.prototype.contains=function(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t},e.prototype.findIndex=function(e){var t=0,n=this._startIndexes.length;if(0===n)return-1;while(t=0){var n=this.getEndLineNumber(t);if(n>=e)return t;t=this.getParentIndex(t);while(-1!==t){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1},e.prototype.toString=function(){for(var e=[],t=0;t=this.endLineNumber},e.prototype.containsLine=function(e){return this.startLineNumber<=e&&e<=this.endLineNumber},e}(),m=function(){function e(e,t){this._updateEventEmitter=new c["a"],this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new f(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[],this._isInitialized=!1}return Object.defineProperty(e.prototype,"regions",{get:function(){return this._regions},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"textModel",{get:function(){return this._textModel},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isInitialized",{get:function(){return this._isInitialized},enumerable:!0,configurable:!0}),e.prototype.toggleCollapseState=function(e){var t=this;if(e.length){var n={};this._decorationProvider.changeDecorations(function(i){for(var o=0,r=e;o=h))break;r(u,d===h),u++}}l=a()}while(u0)return e},e.prototype.applyMemento=function(e){if(Array.isArray(e)){for(var t=[],n=0,i=e;n=0){var r=this._regions.toRegion(i);t&&!t(r,o)||n.push(r),o++,i=r.parentIndex}}return n},e.prototype.getRegionAtLine=function(e){if(this._regions){var t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null},e.prototype.getRegionsInside=function(e,t){var n=[],i=e?e.regionIndex+1:0,o=e?e.endLineNumber:Number.MAX_VALUE;if(t&&2===t.length)for(var r=[],s=i,a=this._regions.length;s0&&!u.containedBy(r[r.length-1]))r.pop();r.push(u),t(u,r.length)&&n.push(u)}else for(s=i,a=this._regions.length;s0)for(var r=0,s=i;r1)){var l=e.getRegionsInside(u,function(e,i){return e.isCollapsed!==t&&i=0;s--)if(n!==o.isCollapsed(s)){var a=o.getStartLineNumber(s);t.test(i.getLineContent(a))&&r.push(o.toRegion(s))}e.toggleCollapseState(r)}function w(e,t,n){for(var i=e.regions,o=[],r=i.length-1;r>=0;r--)n!==i.isCollapsed(r)&&t===i.getType(r)&&o.push(i.toRegion(r));e.toggleCollapseState(o)}var C=n("b57f"),S=function(){function e(e){this.editor=e,this.autoHideFoldingControls=!0}return e.prototype.getDecorationOption=function(t){return t?e.COLLAPSED_VISUAL_DECORATION:this.autoHideFoldingControls?e.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:e.EXPANDED_VISUAL_DECORATION},e.prototype.deltaDecorations=function(e,t){return this.editor.deltaDecorations(e,t)},e.prototype.changeDecorations=function(e){return this.editor.changeDecorations(e)},e.COLLAPSED_VISUAL_DECORATION=C["a"].register({stickiness:1,afterContentClassName:"inline-folded",linesDecorationsClassName:"folding collapsed"}),e.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=C["a"].register({stickiness:1,linesDecorationsClassName:"folding"}),e.EXPANDED_VISUAL_DECORATION=C["a"].register({stickiness:1,linesDecorationsClassName:"folding alwaysShowFoldIcons"}),e}(),L=n("c101"),O=n("6a89"),x=n("e8e3"),N=function(){function e(e){var t=this;this._updateEventEmitter=new c["a"],this._foldingModel=e,this._foldingModelListener=e.onDidChange(function(e){return t.updateHiddenRanges()}),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._updateEventEmitter.event},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hiddenRanges",{get:function(){return this._hiddenRanges},enumerable:!0,configurable:!0}),e.prototype.updateHiddenRanges=function(){for(var e=!1,t=[],n=0,i=0,o=Number.MAX_VALUE,r=-1,s=this._foldingModel.regions;n0},e.prototype.isHidden=function(e){return null!==k(this._hiddenRanges,e)},e.prototype.adjustSelections=function(e){for(var t=this,n=!1,i=this._foldingModel.textModel,o=null,r=function(e){return o&&D(e,o)||(o=k(t._hiddenRanges,e)),o?o.startLineNumber-1:null},s=0,a=e.length;s0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)},e}();function D(e,t){return e>=t.startLineNumber&&e<=t.endLineNumber}function k(e,t){var n=Object(x["h"])(e,function(e){return t=0&&e[n].endLineNumber>=t?e[n]:null}var I=n("70cb"),E=5e3,M="indent",T=function(){function e(e){this.editorModel=e,this.id=M}return e.prototype.dispose=function(){},e.prototype.compute=function(e){var t=I["a"].getFoldingRules(this.editorModel.getLanguageIdentifier().id),n=t&&!!t.offSide,i=t&&t.markers;return Promise.resolve(R(this.editorModel,n,i))},e}(),P=function(){function e(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}return e.prototype.insertFirst=function(e,t,n){if(!(e>h||t>h)){var i=this._length;this._startIndexes[i]=e,this._endIndexes[i]=t,this._length++,n<1e3&&(this._indentOccurrences[n]=(this._indentOccurrences[n]||0)+1)}},e.prototype.toIndentRanges=function(e){if(this._length<=this._foldingRangesLimit){for(var t=new Uint32Array(this._length),n=new Uint32Array(this._length),i=this._length-1,o=0;i>=0;i--,o++)t[o]=this._startIndexes[i],n[o]=this._endIndexes[i];return new f(t,n)}var r=0,s=this._indentOccurrences.length;for(i=0;ithis._foldingRangesLimit){s=i;break}r+=a}}var u=e.getOptions().tabSize;for(t=new Uint32Array(this._foldingRangesLimit),n=new Uint32Array(this._foldingRangesLimit),i=this._length-1,o=0;i>=0;i--){var l=this._startIndexes[i],c=e.getLineContent(l),d=C["b"].computeIndentLevel(c,u);(d0;l--){var c=e.getLineContent(l),d=C["b"].computeIndentLevel(c,o),h=a[a.length-1];if(-1!==d){var p=void 0;if(s&&(p=c.match(s))){if(!p[1]){a.push({indent:-2,endAbove:l,line:l});continue}var f=a.length-1;while(f>0&&-2!==a[f].indent)f--;if(f>0){a.length=f+1,h=a[f],r.insertFirst(l,h.line,d),h.line=l,h.indent=d,h.endAbove=l;continue}}if(h.indent>d){do{a.pop(),h=a[a.length-1]}while(h.indent>d);var g=h.endAbove-1;g-l>=1&&r.insertFirst(l,g,d)}h.indent===d?h.endAbove=l:a.push({indent:d,endAbove:l,line:l})}else t&&(h.endAbove=l)}return r.toIndentRanges(e)}var A=n("b707"),F=n("fdcc"),j=5e3,W={},V="syntax",B=function(){function e(e,t,n){void 0===n&&(n=j),this.editorModel=e,this.providers=t,this.limit=n,this.id=V}return e.prototype.compute=function(e){var t=this;return H(this.providers,this.editorModel,e).then(function(e){if(e){var n=U(e,t.limit);return n}return null})},e.prototype.dispose=function(){},e}();function H(e,t,n){var i=null,o=e.map(function(e,o){return Promise.resolve(e.provideFoldingRanges(t,W,n)).then(function(e){if(!n.isCancellationRequested&&Array.isArray(e)){Array.isArray(i)||(i=[]);for(var r=t.getLineCount(),s=0,a=e;s0&&u.end>u.start&&u.end<=r&&i.push({start:u.start,end:u.end,rank:o,kind:u.kind})}}},F["f"])});return Promise.all(o).then(function(e){return i})}var z=function(){function e(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}return e.prototype.add=function(e,t,n,i){if(!(e>h||t>h)){var o=this._length;this._startIndexes[o]=e,this._endIndexes[o]=t,this._nestingLevels[o]=i,this._types[o]=n,this._length++,i<30&&(this._nestingLevelCounts[i]=(this._nestingLevelCounts[i]||0)+1)}},e.prototype.toIndentRanges=function(){if(this._length<=this._foldingRangesLimit){for(var e=new Uint32Array(this._length),t=new Uint32Array(this._length),n=0;nthis._foldingRangesLimit){o=n;break}i+=r}}e=new Uint32Array(this._foldingRangesLimit),t=new Uint32Array(this._foldingRangesLimit);for(var s=[],a=(n=0,0);no.start)if(u.end<=o.end)r.push(o),o=u,i.add(u.start,u.end,u.kind&&u.kind.value,r.length);else{if(u.start>o.end){do{o=r.pop()}while(o&&u.start>o.end);o&&r.push(o),o=u}i.add(u.start,u.end,u.kind&&u.kind.value,r.length)}}else o=u,i.add(u.start,u.end,u.kind&&u.kind.value,r.length)}return i.toIndentRanges()}var K="init",q=function(){function e(e,t,n,i){if(this.editorModel=e,this.id=K,t.length){var o=function(t){return{range:{startLineNumber:t.startLineNumber,startColumn:0,endLineNumber:t.endLineNumber,endColumn:e.getLineLength(t.endLineNumber)},options:{stickiness:1}}};this.decorationIds=e.deltaDecorations([],t.map(o)),this.timeout=setTimeout(n,i)}}return e.prototype.dispose=function(){this.decorationIds&&(this.editorModel.deltaDecorations(this.decorationIds,[]),this.decorationIds=void 0),"number"===typeof this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)},e.prototype.compute=function(e){var t=[];if(this.decorationIds)for(var n=0,i=this.decorationIds;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},X=function(e,t){return function(n,i){t(n,i,e)}},$=new G["d"]("foldingEnabled",!1),Q="editor.contrib.folding",J=function(e){function t(t,n){var i=e.call(this)||this;return i.contextKeyService=n,i.localToDispose=i._register(new u["b"]),i.editor=t,i._isEnabled=i.editor.getConfiguration().contribInfo.folding,i._autoHideFoldingControls="mouseover"===i.editor.getConfiguration().contribInfo.showFoldingControls,i._useFoldingProviders="indentation"!==i.editor.getConfiguration().contribInfo.foldingStrategy,i.foldingModel=null,i.hiddenRangeModel=null,i.rangeProvider=null,i.foldingRegionPromise=null,i.foldingStateMemento=null,i.foldingModelPromise=null,i.updateScheduler=null,i.cursorChangedScheduler=null,i.mouseDownInfo=null,i.foldingDecorationProvider=new S(t),i.foldingDecorationProvider.autoHideFoldingControls=i._autoHideFoldingControls,i.foldingEnabled=$.bindTo(i.contextKeyService),i.foldingEnabled.set(i._isEnabled),i._register(i.editor.onDidChangeModel(function(){return i.onModelChanged()})),i._register(i.editor.onDidChangeConfiguration(function(e){if(e.contribInfo){var t=i._isEnabled;i._isEnabled=i.editor.getConfiguration().contribInfo.folding,i.foldingEnabled.set(i._isEnabled),t!==i._isEnabled&&i.onModelChanged();var n=i._autoHideFoldingControls;i._autoHideFoldingControls="mouseover"===i.editor.getConfiguration().contribInfo.showFoldingControls,n!==i._autoHideFoldingControls&&(i.foldingDecorationProvider.autoHideFoldingControls=i._autoHideFoldingControls,i.onModelContentChanged());var o=i._useFoldingProviders;i._useFoldingProviders="indentation"!==i.editor.getConfiguration().contribInfo.foldingStrategy,o!==i._useFoldingProviders&&i.onFoldingStrategyChanged()}})),i.onModelChanged(),i}return Z(t,e),t.get=function(e){return e.getContribution(Q)},t.prototype.getId=function(){return Q},t.prototype.saveViewState=function(){var e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){var t=this.foldingModel.isInitialized?this.foldingModel.getMemento():this.hiddenRangeModel.getMemento(),n=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:n}}},t.prototype.restoreViewState=function(e){var t=this.editor.getModel();if(t&&this._isEnabled&&!t.isTooLargeForTokenization()&&this.hiddenRangeModel&&e&&e.collapsedRegions&&e.lineCount===t.getLineCount()){e.provider!==V&&e.provider!==K||(this.foldingStateMemento=e);var n=e.collapsedRegions;if(this.hiddenRangeModel.applyMemento(n)){var i=this.getFoldingModel();i&&i.then(function(e){e&&e.applyMemento(n)}).then(void 0,F["e"])}}},t.prototype.onModelChanged=function(){var e=this;this.localToDispose.clear();var t=this.editor.getModel();this._isEnabled&&t&&!t.isTooLargeForTokenization()&&(this.foldingModel=new m(t,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new N(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange(function(t){return e.onHiddenRangesChanges(t)})),this.updateScheduler=new s["a"](200),this.cursorChangedScheduler=new s["d"](function(){return e.revealCursor()},200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(A["m"].onDidChange(function(){return e.onFoldingStrategyChanged()})),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(function(){return e.onFoldingStrategyChanged()})),this.localToDispose.add(this.editor.onDidChangeModelContent(function(){return e.onModelContentChanged()})),this.localToDispose.add(this.editor.onDidChangeCursorPosition(function(){return e.onCursorPositionChanged()})),this.localToDispose.add(this.editor.onMouseDown(function(t){return e.onEditorMouseDown(t)})),this.localToDispose.add(this.editor.onMouseUp(function(t){return e.onEditorMouseUp(t)})),this.localToDispose.add({dispose:function(){e.foldingRegionPromise&&(e.foldingRegionPromise.cancel(),e.foldingRegionPromise=null),e.updateScheduler&&e.updateScheduler.cancel(),e.updateScheduler=null,e.foldingModel=null,e.foldingModelPromise=null,e.hiddenRangeModel=null,e.cursorChangedScheduler=null,e.foldingStateMemento=null,e.rangeProvider&&e.rangeProvider.dispose(),e.rangeProvider=null}}),this.onModelContentChanged())},t.prototype.onFoldingStrategyChanged=function(){this.rangeProvider&&this.rangeProvider.dispose(),this.rangeProvider=null,this.onModelContentChanged()},t.prototype.getRangeProvider=function(e){var t=this;if(this.rangeProvider)return this.rangeProvider;if(this.rangeProvider=new T(e),this._useFoldingProviders&&this.foldingModel){var n=A["m"].ordered(this.foldingModel.textModel);if(0===n.length&&this.foldingStateMemento&&this.foldingStateMemento.collapsedRegions){var i=this.rangeProvider=new q(e,this.foldingStateMemento.collapsedRegions,function(){t.foldingStateMemento=null,t.onFoldingStrategyChanged()},3e4);return i}n.length>0&&(this.rangeProvider=new B(e,n))}return this.foldingStateMemento=null,this.rangeProvider},t.prototype.getFoldingModel=function(){return this.foldingModelPromise},t.prototype.onModelContentChanged=function(){var e=this;this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger(function(){var t=e.foldingModel;if(!t)return null;var n=e.foldingRegionPromise=Object(s["f"])(function(n){return e.getRangeProvider(t.textModel).compute(n)});return n.then(function(i){if(i&&n===e.foldingRegionPromise){var o=e.editor.getSelections(),r=o?o.map(function(e){return e.startLineNumber}):[];t.update(i,r)}return t})}).then(void 0,function(e){return Object(F["e"])(e),null}))},t.prototype.onHiddenRangesChanges=function(e){if(this.hiddenRangeModel&&e.length){var t=this.editor.getSelections();t&&this.hiddenRangeModel.adjustSelections(t)&&this.editor.setSelections(t)}this.editor.setHiddenAreas(e)},t.prototype.onCursorPositionChanged=function(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()},t.prototype.revealCursor=function(){var e=this,t=this.getFoldingModel();t&&t.then(function(t){if(t){var n=e.editor.getSelections();if(n&&n.length>0){for(var i=[],o=function(n){var o=n.selectionStartLineNumber;e.hiddenRangeModel&&e.hiddenRangeModel.isHidden(o)&&i.push.apply(i,t.getAllRegionsAtLine(o,function(e){return e.isCollapsed&&o>e.startLineNumber}))},r=0,s=n;rt.symbol.range.startLineNumber?1:i.get(e.provider)i.get(t.provider)?1:e.symbol.range.startColumnt.symbol.range.startColumn?1:0}),r})}Object(a["j"])("_executeCodeLensProvider",function(e,t){var n=t.resource,i=t.itemResolveCount;if(!(n instanceof d["a"]))throw Object(o["b"])();var s=e.get(h["a"]).getModel(n);if(!s)throw Object(o["b"])();var a=[],u=new r["b"];return f(s,c["a"].None).then(function(e){u.add(e);for(var t=[],n=function(e){"undefined"===typeof i||Boolean(e.symbol.command)?a.push(e.symbol):i-- >0&&e.provider.resolveCodeLens&&t.push(Promise.resolve(e.provider.resolveCodeLens(s,e.symbol,c["a"].None)).then(function(t){return a.push(t||e.symbol)}))},o=0,r=e.lenses;ono commands";else{for(var i=[],o=0;o"+s+"",this._commands.set(String(o),r)):a=""+s+"",i.push(a)}}var u=""===this._domNode.innerHTML||" "===this._domNode.innerHTML;this._domNode.innerHTML=i.join(" | "),this._editor.layoutContentWidget(this),u&&t&&g["f"](this._domNode,"fadein")}},e.prototype.getCommand=function(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0},e.prototype.getId=function(){return this._id},e.prototype.getDomNode=function(){return this._domNode},e.prototype.setSymbolRange=function(e){if(this._editor.hasModel()){var t=e.startLineNumber,n=this._editor.getModel().getLineFirstNonWhitespaceColumn(t);this._widgetPosition={position:{lineNumber:t,column:n},preference:[1]}}},e.prototype.getPosition=function(){return this._widgetPosition||null},e.prototype.isVisible=function(){return this._domNode.hasAttribute("monaco-visible-content-widget")},e._idPool=0,e}(),L=function(){function e(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}return e.prototype.addDecoration=function(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)},e.prototype.removeDecoration=function(e){this._removeDecorations.push(e)},e.prototype.commit=function(e){for(var t=e.deltaDecorations(this._removeDecorations,this._addDecorations),n=0,i=t.length;n a:hover { color: "+i+" !important; }")});var x=n("9e74"),N=n("b0cd"),D=n("0a0f"),k=n("f5f3"),I=n("4035"),E=n("03e8"),M=n("0bfbc"),T=function(e,t,n,i){var o,r=arguments.length,s=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"===typeof Reflect&&"function"===typeof Reflect.decorate)s=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},P=function(e,t){return function(n,i){t(n,i,e)}},R=Object(D["c"])("ICodeLensCache"),A=function(){function e(e,t){this.lineCount=e,this.data=t}return e}(),F=function(){function e(e){var t=this;this._fakeProvider=new(function(){function e(){}return e.prototype.provideCodeLenses=function(){throw new Error("not supported")},e}()),this._cache=new I["a"](20,.75);var n="codelens/cache";Object(i["k"])(function(){return e.remove(n,1)});var o="codelens/cache2",r=e.get(o,1,"{}");this._deserialize(r),Object(M["a"])(e.onWillSaveState)(function(n){n.reason===E["c"].SHUTDOWN&&e.store(o,t._serialize(),1)})}return e.prototype.put=function(e,t){var n=new p;n.add({lenses:t.lenses.map(function(e){return e.symbol}),dispose:function(){}},this._fakeProvider);var i=new A(e.getLineCount(),n);this._cache.set(e.uri.toString(),i)},e.prototype.get=function(e){var t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0},e.prototype.delete=function(e){this._cache.delete(e.uri.toString())},e.prototype._serialize=function(){var e=Object.create(null);return this._cache.forEach(function(t,n){for(var i=new Set,o=0,r=t.data.lenses;o=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},W=function(e,t){return function(n,i){t(n,i,e)}},V=function(){function e(e,t,n,i){var o=this;this._editor=e,this._commandService=t,this._notificationService=n,this._codeLensCache=i,this._globalToDispose=new r["b"],this._localToDispose=new r["b"],this._lenses=[],this._oldCodeLensModels=new r["b"],this._modelChangeCounter=0,this._isEnabled=this._editor.getConfiguration().contribInfo.codeLens,this._globalToDispose.add(this._editor.onDidChangeModel(function(){return o._onModelChange()})),this._globalToDispose.add(this._editor.onDidChangeModelLanguage(function(){return o._onModelChange()})),this._globalToDispose.add(this._editor.onDidChangeConfiguration(function(){var e=o._isEnabled;o._isEnabled=o._editor.getConfiguration().contribInfo.codeLens,e!==o._isEnabled&&o._onModelChange()})),this._globalToDispose.add(u["b"].onDidChange(this._onModelChange,this)),this._onModelChange()}return e.prototype.dispose=function(){this._localDispose(),this._globalToDispose.dispose(),this._oldCodeLensModels.dispose(),Object(r["f"])(this._currentCodeLensModel)},e.prototype._localDispose=function(){this._currentFindCodeLensSymbolsPromise&&(this._currentFindCodeLensSymbolsPromise.cancel(),this._currentFindCodeLensSymbolsPromise=void 0,this._modelChangeCounter++),this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise.cancel(),this._currentResolveCodeLensSymbolsPromise=void 0),this._localToDispose.clear(),this._oldCodeLensModels.clear(),Object(r["f"])(this._currentCodeLensModel)},e.prototype.getId=function(){return e.ID},e.prototype._onModelChange=function(){var e=this;this._localDispose();var t=this._editor.getModel();if(t&&this._isEnabled){var n=this._codeLensCache.get(t);if(n&&this._renderCodeLensSymbols(n),u["b"].has(t)){for(var a=0,l=u["b"].all(t);a0&&h.schedule()})),this._localToDispose.add(this._editor.onDidLayoutChange(function(){h.schedule()})),this._localToDispose.add(Object(r["h"])(function(){if(e._editor.getModel()){var t=s["c"].capture(e._editor);e._editor.changeDecorations(function(t){e._editor.changeViewZones(function(n){e._disposeAllLenses(t,n)})}),t.restore(e._editor)}else e._disposeAllLenses(void 0,void 0)})),this._localToDispose.add(this._editor.onDidChangeConfiguration(function(t){if(t.fontInfo)for(var n=0,i=e._lenses;ni||(n&&n[n.length-1].symbol.range.startLineNumber===l?n.push(u):(n=[u],o.push(n)))}var c=s["c"].capture(this._editor);this._editor.changeDecorations(function(e){t._editor.changeViewZones(function(n){var i=new L,r=0,s=0;while(s=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},C=function(e,t){return function(n,i){t(n,i,e)}},S=function(){function e(){}return e.prototype.select=function(e,t,n){if(0===n.length)return 0;for(var i=n[0].score[0],o=1;ou&&d.type===i[l].completion.kind&&d.insertText===i[l].completion.insertText&&(u=d.touch,a=l),i[l].completion.preselect&&-1===s)return l}return-1!==a?a:-1!==s?s:0},t.prototype.toJSON=function(){var e=[];return this._cache.forEach(function(t,n){e.push([n,t])}),e},t.prototype.fromJSON=function(e){this._cache.clear();for(var t=0,n=0,i=e;n0){this._seq=e[0][1].touch+1;for(var t=0,n=e;t=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},R=function(e,t){return function(n,i){t(n,i,e)}},A=function(){function e(t,n){this._editor=t,this._index=0,this._ckOtherSuggestions=e.OtherSuggestions.bindTo(n)}return e.prototype.dispose=function(){this.reset()},e.prototype.reset=function(){this._ckOtherSuggestions.reset(),Object(s["f"])(this._listener),this._model=void 0,this._acceptNext=void 0,this._ignore=!1},e.prototype.set=function(t,n){var i=this,o=t.model,r=t.index;if(0!==o.items.length){var s=e._moveIndex(!0,o,r);s!==r?(this._acceptNext=n,this._model=o,this._index=r,this._listener=this._editor.onDidChangeCursorPosition(function(){i._ignore||i.reset()}),this._ckOtherSuggestions.set(!0)):this.reset()}else this.reset()},e._moveIndex=function(e,t,n){var i=n;while(1){if(i=(i+t.items.length+(e?1:-1))%t.items.length,i===n)break;if(!t.items[i].completion.additionalTextEdits)break}return i},e.prototype.next=function(){this._move(!0)},e.prototype.prev=function(){this._move(!1)},e.prototype._move=function(t){if(this._model)try{this._ignore=!0,this._index=e._moveIndex(t,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}},e.OtherSuggestions=new M["d"]("hasOtherSuggestions",!1),e=P([R(1,M["c"])],e),e}(),F=n("308f"),j=n("8025"),W=n("7e93"),V=n("fd49"),B=n("3742"),H=(function(){function e(e,t){this.leadingLineContent=e,this.characterCountDelta=t}}(),function(){function e(t,n,i,o,r){void 0===r&&(r=V["a"].contribInfo.suggest),this._snippetCompareFn=e._compareCompletionItems,this._items=t,this._column=n,this._wordDistance=o,this._options=r,this._refilterKind=1,this._lineContext=i,"top"===r.snippets?this._snippetCompareFn=e._compareCompletionItemsSnippetsUp:"bottom"===r.snippets&&(this._snippetCompareFn=e._compareCompletionItemsSnippetsDown)}return Object.defineProperty(e.prototype,"lineContext",{get:function(){return this._lineContext},set:function(e){this._lineContext.leadingLineContent===e.leadingLineContent&&this._lineContext.characterCountDelta===e.characterCountDelta||(this._refilterKind=this._lineContext.characterCountDelta2e3?W["d"]:W["e"],u=0;u=d)l.score=W["a"].Default;else if("string"===typeof l.completion.filterText){var f=a(i,o,h,l.completion.filterText,l.filterTextLow,0,!1);if(!f)continue;0===Object(B["e"])(l.completion.filterText,l.completion.label)?l.score=f:(l.score=Object(W["b"])(i,o,h,l.completion.label,l.labelLow,0),l.score[0]=f[0])}else{f=a(i,o,h,l.completion.label,l.labelLow,0,!1);if(!f)continue;l.score=f}}switch(l.idx=u,l.distance=this._wordDistance.distance(l.position,l.completion),s.push(l),this._stats.suggestionCount++,l.completion.kind){case 25:this._stats.snippetCount++;break;case 18:this._stats.textCount++;break}}this._filteredItems=s.sort(this._snippetCompareFn),this._refilterKind=0},e._compareCompletionItems=function(e,t){return e.score[0]>t.score[0]?-1:e.score[0]t.distance?1:e.idxt.idx?1:0},e._compareCompletionItemsSnippetsDown=function(t,n){if(t.completion.kind!==n.completion.kind){if(25===t.completion.kind)return 1;if(25===n.completion.kind)return-1}return e._compareCompletionItems(t,n)},e._compareCompletionItemsSnippetsUp=function(t,n){if(t.completion.kind!==n.completion.kind){if(25===t.completion.kind)return-1;if(25===n.completion.kind)return 1}return e._compareCompletionItems(t,n)},e}()),z=n("2504"),U=n("67b4"),K=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),q=function(){function e(){}return e.create=function(t,n){if(!n.getConfiguration().contribInfo.suggest.localityBonus)return Promise.resolve(e.None);if(!n.hasModel())return Promise.resolve(e.None);var i=n.getModel(),r=n.getPosition();return t.canComputeWordRanges(i.uri)?(new U["a"]).provideSelectionRanges(i,[r]).then(function(s){return s&&0!==s.length&&0!==s[0].length?t.computeWordRanges(i.uri,s[0][0].range).then(function(t){return new(function(e){function i(){return null!==e&&e.apply(this,arguments)||this}return K(i,e),i.prototype.distance=function(e,i){if(!t||!r.equals(n.getPosition()))return 0;if(17===i.kind)return 2<<20;var a=i.label,u=t[a];if(Object(o["m"])(u))return 2<<20;for(var c=Object(o["c"])(u,l["a"].fromPositions(e),l["a"].compareRangesUsingStarts),d=c>=0?u[c]:u[Math.max(0,~c-1)],h=s.length,p=0,f=s[0];p0?{triggerKind:2}:{triggerKind:0},this._requestToken=new z["b"];var h=this._editor.getConfiguration().contribInfo,p=new Set,f=1;switch(h.suggest.snippets){case"top":f=0;break;case"bottom":f=2;break;case"none":p.add(25);break}for(var m in h.suggest.filteredTypes){var v=Object(g["A"])(m,!0);"undefined"!==typeof v&&!1===h.suggest.filteredTypes[m]&&p.add(v)}var _=q.create(this._editorWorker,this._editor),b=Object(T["e"])(l,this._editor.getPosition(),new T["a"](f,p,n),u,this._requestToken.token);Promise.all([b,_]).then(function(t){var n=t[0],r=t[1];if(Object(s["f"])(a._requestToken),0!==a._state&&a._editor.hasModel()){var u=a._editor.getModel();if(Object(o["n"])(i)){var l=Object(T["d"])(f);n=n.concat(i).sort(l)}var d=new G(u,a._editor.getPosition(),c,e.shy);a._completionModel=new H(n,a._context.column,{leadingLineContent:d.leadingLineContent,characterCountDelta:d.column-a._context.column},r,a._editor.getConfiguration().contribInfo.suggest);for(var h=0,p=n;hthis._context.column&&this._completionModel.incomplete.size>0&&0!==e.leadingWord.word.length){var t=this._completionModel.incomplete,n=this._completionModel.adopt(t);this.trigger({auto:2===this._state,shy:!1},!0,t,n)}else{var i=this._completionModel.lineContext,o=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},0===this._completionModel.items.length){if(G.shouldAutoTrigger(this._editor)&&this._context.leadingWord.endColumn0,o&&0===e.leadingWord.word.length)return void this.cancel()}this._onDidSuggest.fire({completionModel:this._completionModel,auto:this._context.auto,shy:this._context.shy,isFrozen:o})}}else this.cancel()},e}(),Y=(n("0829"),n("11f7")),X=n("72a7"),$=n("1898"),Q=n("6dec"),J=n("5d75"),ee=n("a6d7"),te=n("b7d0"),ne=n("303e"),ie=n("dea0"),oe=n("5818"),re=n("5bd7"),se=n("c4e3"),ae=n("b589"),ue=n("82c9"),le=n("32a4");function ce(e,t,n,i){var o=i===k.ROOT_FOLDER?["rootfolder-icon"]:i===k.FOLDER?["folder-icon"]:["file-icon"];if(n){var r;if(n.scheme===ae["b"].data){var s=ue["a"].parseMetaData(n);r=s.get(ue["a"].META_DATA_LABEL)}else r=he(Object(ue["c"])(n).toLowerCase());if(i===k.FOLDER)o.push(r+"-name-folder-icon");else{if(r){o.push(r+"-name-file-icon");for(var a=r.split("."),u=1;u=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},_e=function(e,t){return function(n,i){t(n,i,e)}},be=function(e,t,n,i){return new(n||(n=Promise))(function(o,r){function s(e){try{u(i.next(e))}catch(t){r(t)}}function a(e){try{u(i["throw"](e))}catch(t){r(t)}}function u(e){e.done?o(e.value):new n(function(t){t(e.value)}).then(s,a)}u((i=i.apply(e,t||[])).next())})},ye=function(e,t){var n,i,o,r,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function a(e){return function(t){return u([e,t])}}function u(r){if(n)throw new TypeError("Generator is already executing.");while(s)try{if(n=1,i&&(o=2&r[0]?i["return"]:r[0]?i["throw"]||((o=i["return"])&&o.call(i),0):i.next)&&!(o=o.call(i,r[1])).done)return o;switch(i=0,o&&(r=[2&r[0],o.value]),r[0]){case 0:case 1:o=r;break;case 4:return s.label++,{value:r[1],done:!1};case 5:s.label++,i=r[1],r=[0];continue;case 7:r=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(6===r[0]||2===r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=0&&(a.extraClasses=(a.extraClasses||[]).concat(["deprecated"]),a.matches=[]),r.iconLabel.setLabel(s.label,void 0,a),r.typeLabel.textContent=(s.detail||"").replace(/\n.*$/m,""),ke(e)?(Object(Y["Q"])(r.readMore),r.readMore.onmousedown=function(e){e.stopPropagation(),e.preventDefault()},r.readMore.onclick=function(e){e.stopPropagation(),e.preventDefault(),i.widget.toggleDetails()}):(Object(Y["D"])(r.readMore),r.readMore.onmousedown=null,r.readMore.onclick=null)},e.prototype.disposeTemplate=function(e){e.disposables.dispose()},e=ve([_e(3,pe["a"]),_e(4,oe["a"]),_e(5,te["c"])],e),e}(),Ee=function(){function e(e,t,n,i,o){var r=this;this.widget=t,this.editor=n,this.markdownRenderer=i,this.triggerKeybindingLabel=o,this.borderWidth=1,this.disposables=new s["b"],this.el=Object(Y["m"])(e,Object(Y["a"])(".details")),this.disposables.add(Object(s["h"])(function(){return e.removeChild(r.el)})),this.body=Object(Y["a"])(".body"),this.scrollbar=new $["a"](this.body,{}),Object(Y["m"])(this.el,this.scrollbar.getDomNode()),this.disposables.add(this.scrollbar),this.header=Object(Y["m"])(this.body,Object(Y["a"])(".header")),this.close=Object(Y["m"])(this.header,Object(Y["a"])("span.close")),this.close.title=I["a"]("readLess","Read less...{0}",this.triggerKeybindingLabel),this.type=Object(Y["m"])(this.header,Object(Y["a"])("p.type")),this.docs=Object(Y["m"])(this.body,Object(Y["a"])("p.docs")),this.ariaLabel=null,this.configureFont(),F["b"].chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter(function(e){return e.fontInfo}).on(this.configureFont,this,this.disposables),i.onDidRenderCodeBlock(function(){return r.scrollbar.scanDomNode()},this,this.disposables)}return Object.defineProperty(e.prototype,"element",{get:function(){return this.el},enumerable:!0,configurable:!0}),e.prototype.renderLoading=function(){this.type.textContent=I["a"]("loading","Loading..."),this.docs.textContent=""},e.prototype.renderItem=function(e,t){var n=this;this.renderDisposeable=Object(s["f"])(this.renderDisposeable);var i=e.completion,o=i.documentation,r=i.detail;if(t){var a="";a+="score: "+e.score[0]+(e.word?", compared '"+(e.completion.filterText&&e.completion.filterText+" (filterText)"||e.completion.label)+"' with '"+e.word+"'":" (no prefix)")+"\n",a+="distance: "+e.distance+", see localityBonus-setting\n",a+="index: "+e.idx+", based on "+(e.completion.sortText&&'sortText: "'+e.completion.sortText+'"'||"label")+"\n",o=(new ge["a"]).appendCodeblock("empty",a),r="Provider: "+e.provider._debugDisplayName}if(!t&&!ke(e))return this.type.textContent="",this.docs.textContent="",Object(Y["f"])(this.el,"no-docs"),void(this.ariaLabel=null);if(Object(Y["I"])(this.el,"no-docs"),"string"===typeof o)Object(Y["I"])(this.docs,"markdown-docs"),this.docs.textContent=o;else{Object(Y["f"])(this.docs,"markdown-docs"),this.docs.innerHTML="";var u=this.markdownRenderer.render(o);this.renderDisposeable=u,this.docs.appendChild(u.element)}r?(this.type.innerText=r,Object(Y["Q"])(this.type)):(this.type.innerText="",Object(Y["D"])(this.type)),this.el.style.height=this.header.offsetHeight+this.docs.offsetHeight+2*this.borderWidth+"px",this.close.onmousedown=function(e){e.preventDefault(),e.stopPropagation()},this.close.onclick=function(e){e.preventDefault(),e.stopPropagation(),n.widget.toggleDetails()},this.body.scrollTop=0,this.scrollbar.scanDomNode(),this.ariaLabel=B["r"]("{0}{1}",r||"",o?"string"===typeof o?o:o.value:"")},e.prototype.getAriaLabel=function(){return this.ariaLabel},e.prototype.scrollDown=function(e){void 0===e&&(e=8),this.body.scrollTop+=e},e.prototype.scrollUp=function(e){void 0===e&&(e=8),this.body.scrollTop-=e},e.prototype.scrollTop=function(){this.body.scrollTop=0},e.prototype.scrollBottom=function(){this.body.scrollTop=this.body.scrollHeight},e.prototype.pageDown=function(){this.scrollDown(80)},e.prototype.pageUp=function(){this.scrollUp(80)},e.prototype.setBorderWidth=function(e){this.borderWidth=e},e.prototype.configureFont=function(){var e=this.editor.getConfiguration(),t=e.fontInfo.fontFamily,n=e.contribInfo.suggestFontSize||e.fontInfo.fontSize,i=e.contribInfo.suggestLineHeight||e.fontInfo.lineHeight,o=e.fontInfo.fontWeight,r=n+"px",s=i+"px";this.el.style.fontSize=r,this.el.style.fontWeight=o,this.type.style.fontFamily=t,this.close.style.height=s,this.close.style.width=s},e.prototype.dispose=function(){this.disposables.dispose(),this.renderDisposeable=Object(s["f"])(this.renderDisposeable)},e}(),Me=function(){function e(e,t,n,i,o,r,a,u,l){var c=this;this.editor=e,this.telemetryService=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!0,this.state=null,this.isAuto=!1,this.loadingTimeout=s["a"].None,this.currentSuggestionDetails=null,this.ignoreFocusEvents=!1,this.completionModel=null,this.showTimeout=new m["e"],this.toDispose=new s["b"],this.onDidSelectEmitter=new F["a"],this.onDidFocusEmitter=new F["a"],this.onDidHideEmitter=new F["a"],this.onDidShowEmitter=new F["a"],this.onDidSelect=this.onDidSelectEmitter.event,this.onDidFocus=this.onDidFocusEmitter.event,this.onDidHide=this.onDidHideEmitter.event,this.onDidShow=this.onDidShowEmitter.event,this.maxWidgetWidth=660,this.listWidth=330,this.firstFocusInCurrentList=!1,this.preferDocPositionTop=!1,this.docsPositionPreviousWidgetY=null,this.explainMode=!1,this._lastAriaAlertLabel=null;var d=r.lookupKeybinding("editor.action.triggerSuggest"),h=d?" ("+d.getLabel()+")":"",p=this.toDispose.add(new ie["a"](e,a,u));this.isAuto=!1,this.focusedItem=null,this.storageService=o,this.element=Object(Y["a"])(".editor-widget.suggest-widget"),this.toDispose.add(Object(Y["h"])(this.element,"click",function(e){e.target===c.element&&c.hideWidget()})),this.messageElement=Object(Y["m"])(this.element,Object(Y["a"])(".message")),this.listElement=Object(Y["m"])(this.element,Object(Y["a"])(".tree")),this.details=l.createInstance(Ee,this.element,this,this.editor,p,h);var f=function(){return Object(Y["R"])(c.element,"no-icons",!c.editor.getConfiguration().contribInfo.suggest.showIcons)};f();var g=l.createInstance(Ie,this,this.editor,h);this.list=new X["b"](this.listElement,this,[g],{useShadows:!1,openController:{shouldOpen:function(){return!1}},mouseSupport:!1}),this.toDispose.add(Object(ee["b"])(this.list,i,{listInactiveFocusBackground:Oe,listInactiveFocusOutline:ne["b"]})),this.toDispose.add(i.onThemeChange(function(e){return c.onThemeChange(e)})),this.toDispose.add(e.onDidLayoutChange(function(){return c.onEditorLayoutChange()})),this.toDispose.add(this.list.onMouseDown(function(e){return c.onListMouseDown(e)})),this.toDispose.add(this.list.onSelectionChange(function(e){return c.onListSelection(e)})),this.toDispose.add(this.list.onFocusChange(function(e){return c.onListFocus(e)})),this.toDispose.add(this.editor.onDidChangeCursorSelection(function(){return c.onCursorSelectionChanged()})),this.toDispose.add(this.editor.onDidChangeConfiguration(function(e){return e.contribInfo&&f()})),this.suggestWidgetVisible=T["b"].Visible.bindTo(n),this.suggestWidgetMultipleSuggestions=T["b"].MultipleSuggestions.bindTo(n),this.editor.addContentWidget(this),this.setState(0),this.onThemeChange(i.getTheme())}return e.prototype.onCursorSelectionChanged=function(){0!==this.state&&this.editor.layoutContentWidget(this)},e.prototype.onEditorLayoutChange=function(){3!==this.state&&5!==this.state||!this.expandDocsSettingFromStorage()||this.expandSideOrBelow()},e.prototype.onListMouseDown=function(e){"undefined"!==typeof e.element&&"undefined"!==typeof e.index&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this.select(e.element,e.index))},e.prototype.onListSelection=function(e){e.elements.length&&this.select(e.elements[0],e.indexes[0])},e.prototype.select=function(e,t){var n=this.completionModel;n&&(this.onDidSelectEmitter.fire({item:e,index:t,model:n}),this.editor.focus())},e.prototype._getSuggestionAriaAlertLabel=function(e){return this.expandDocsSettingFromStorage()?I["a"]("ariaCurrenttSuggestionReadDetails","Item {0}, docs: {1}",e.completion.label,this.details.getAriaLabel()):e.completion.label},e.prototype._ariaAlert=function(e){this._lastAriaAlertLabel!==e&&(this._lastAriaAlertLabel=e,this._lastAriaAlertLabel&&Object(i["a"])(this._lastAriaAlertLabel,!0))},e.prototype.onThemeChange=function(e){var t=e.getColor(Ce);t&&(this.listElement.style.backgroundColor=t.toString(),this.details.element.style.backgroundColor=t.toString(),this.messageElement.style.backgroundColor=t.toString());var n=e.getColor(Se);n&&(this.listElement.style.borderColor=n.toString(),this.details.element.style.borderColor=n.toString(),this.messageElement.style.borderColor=n.toString(),this.detailsBorderColor=n.toString());var i=e.getColor(ne["S"]);i&&(this.detailsFocusBorderColor=i.toString()),this.details.setBorderWidth("hc"===e.type?2:1)},e.prototype.onListFocus=function(e){var t=this;if(!this.ignoreFocusEvents){if(!e.elements.length)return this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null,this.focusedItem=null),void this._ariaAlert(null);if(this.completionModel){var n=e.elements[0],i=e.indexes[0];this.firstFocusInCurrentList=!this.focusedItem,n!==this.focusedItem&&(this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null),this.focusedItem=n,this.list.reveal(i),this.currentSuggestionDetails=Object(m["f"])(function(e){return be(t,void 0,void 0,function(){var t,i,o=this;return ye(this,function(r){switch(r.label){case 0:return t=Object(m["g"])(function(){return o.showDetails(!0)},250),e.onCancellationRequested(function(){return t.dispose()}),[4,n.resolve(e)];case 1:return i=r.sent(),t.dispose(),[2,i]}})})}),this.currentSuggestionDetails.then(function(){i>=t.list.length||n!==t.list.element(i)||(t.ignoreFocusEvents=!0,t.list.splice(i,1,[n]),t.list.setFocus([i]),t.ignoreFocusEvents=!1,t.expandDocsSettingFromStorage()?t.showDetails(!1):Object(Y["I"])(t.element,"docs-side"),t._ariaAlert(t._getSuggestionAriaAlertLabel(n)))}).catch(r["e"])),this.onDidFocusEmitter.fire({item:n,index:i,model:this.completionModel})}}},e.prototype.setState=function(t){if(this.element){var n=this.state!==t;switch(this.state=t,Object(Y["R"])(this.element,"frozen",4===t),t){case 0:Object(Y["D"])(this.messageElement,this.details.element,this.listElement),this.hide(),this.listHeight=0,n&&this.list.splice(0,this.list.length),this.focusedItem=null;break;case 1:this.messageElement.textContent=e.LOADING_MESSAGE,Object(Y["D"])(this.listElement,this.details.element),Object(Y["Q"])(this.messageElement),Object(Y["I"])(this.element,"docs-side"),this.show(),this.focusedItem=null;break;case 2:this.messageElement.textContent=e.NO_SUGGESTIONS_MESSAGE,Object(Y["D"])(this.listElement,this.details.element),Object(Y["Q"])(this.messageElement),Object(Y["I"])(this.element,"docs-side"),this.show(),this.focusedItem=null;break;case 3:Object(Y["D"])(this.messageElement),Object(Y["Q"])(this.listElement),this.show();break;case 4:Object(Y["D"])(this.messageElement),Object(Y["Q"])(this.listElement),this.show();break;case 5:Object(Y["D"])(this.messageElement),Object(Y["Q"])(this.details.element,this.listElement),this.show(),this._ariaAlert(this.details.getAriaLabel());break}}},e.prototype.showTriggered=function(e,t){var n=this;0===this.state&&(this.isAuto=!!e,this.isAuto||(this.loadingTimeout=Object(m["g"])(function(){return n.setState(1)},t)))},e.prototype.showSuggestions=function(e,t,n,i){if(this.preferDocPositionTop=!1,this.docsPositionPreviousWidgetY=null,this.loadingTimeout.dispose(),this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null),this.completionModel!==e&&(this.completionModel=e),n&&2!==this.state&&0!==this.state)this.setState(4);else{var o=this.completionModel.items.length,r=0===o;if(this.suggestWidgetMultipleSuggestions.set(o>1),r)i?this.setState(0):this.setState(2),this.completionModel=null;else{if(3!==this.state){var s=this.completionModel.stats;s["wasAutomaticallyTriggered"]=!!i,this.telemetryService.publicLog("suggestWidget",me({},s))}this.focusedItem=null,this.list.splice(0,this.list.length,this.completionModel.items),n?this.setState(4):this.setState(3),this.list.reveal(t,0),this.list.setFocus([t]),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)}}},e.prototype.selectNextPage=function(){switch(this.state){case 0:return!1;case 5:return this.details.pageDown(),!0;case 1:return!this.isAuto;default:return this.list.focusNextPage(),!0}},e.prototype.selectNext=function(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusNext(1,!0),!0}},e.prototype.selectLast=function(){switch(this.state){case 0:return!1;case 5:return this.details.scrollBottom(),!0;case 1:return!this.isAuto;default:return this.list.focusLast(),!0}},e.prototype.selectPreviousPage=function(){switch(this.state){case 0:return!1;case 5:return this.details.pageUp(),!0;case 1:return!this.isAuto;default:return this.list.focusPreviousPage(),!0}},e.prototype.selectPrevious=function(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusPrevious(1,!0),!1}},e.prototype.selectFirst=function(){switch(this.state){case 0:return!1;case 5:return this.details.scrollTop(),!0;case 1:return!this.isAuto;default:return this.list.focusFirst(),!0}},e.prototype.getFocusedItem=function(){if(0!==this.state&&2!==this.state&&1!==this.state&&this.completionModel)return{item:this.list.getFocusedElements()[0],index:this.list.getFocus()[0],model:this.completionModel}},e.prototype.toggleDetailsFocus=function(){5===this.state?(this.setState(3),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)):3===this.state&&this.expandDocsSettingFromStorage()&&(this.setState(5),this.detailsFocusBorderColor&&(this.details.element.style.borderColor=this.detailsFocusBorderColor)),this.telemetryService.publicLog2("suggestWidget:toggleDetailsFocus")},e.prototype.toggleDetails=function(){if(ke(this.list.getFocusedElements()[0]))if(this.expandDocsSettingFromStorage())this.updateExpandDocsSetting(!1),Object(Y["D"])(this.details.element),Object(Y["I"])(this.element,"docs-side"),Object(Y["I"])(this.element,"docs-below"),this.editor.layoutContentWidget(this),this.telemetryService.publicLog2("suggestWidget:collapseDetails");else{if(3!==this.state&&5!==this.state&&4!==this.state)return;this.updateExpandDocsSetting(!0),this.showDetails(!1),this._ariaAlert(this.details.getAriaLabel()),this.telemetryService.publicLog2("suggestWidget:expandDetails")}},e.prototype.showDetails=function(e){this.expandSideOrBelow(),Object(Y["Q"])(this.details.element),this.details.element.style.maxHeight=this.maxWidgetHeight+"px",e?this.details.renderLoading():this.details.renderItem(this.list.getFocusedElements()[0],this.explainMode),this.listElement.style.marginTop="0px",this.editor.layoutContentWidget(this),this.adjustDocsPosition(),this.editor.focus()},e.prototype.toggleExplainMode=function(){this.list.getFocusedElements()[0]&&this.expandDocsSettingFromStorage()&&(this.explainMode=!this.explainMode,this.showDetails(!1))},e.prototype.show=function(){var e=this,t=this.updateListHeight();t!==this.listHeight&&(this.editor.layoutContentWidget(this),this.listHeight=t),this.suggestWidgetVisible.set(!0),this.showTimeout.cancelAndSet(function(){Object(Y["f"])(e.element,"visible"),e.onDidShowEmitter.fire(e)},100)},e.prototype.hide=function(){this.suggestWidgetVisible.reset(),this.suggestWidgetMultipleSuggestions.reset(),Object(Y["I"])(this.element,"visible")},e.prototype.hideWidget=function(){this.loadingTimeout.dispose(),this.setState(0),this.onDidHideEmitter.fire(this)},e.prototype.getPosition=function(){if(0===this.state)return null;var e=[2,1];return this.preferDocPositionTop&&(e=[1]),{position:this.editor.getPosition(),preference:e}},e.prototype.getDomNode=function(){return this.element},e.prototype.getId=function(){return e.ID},e.prototype.updateListHeight=function(){var e=0;if(2===this.state||1===this.state)e=this.unfocusedHeight;else{var t=this.list.contentHeight/this.unfocusedHeight,n=this.editor.getConfiguration().contribInfo.suggest.maxVisibleSuggestions;e=Math.min(t,n)*this.unfocusedHeight}return this.element.style.lineHeight=this.unfocusedHeight+"px",this.listElement.style.height=e+"px",this.list.layout(e),e},e.prototype.adjustDocsPosition=function(){if(this.editor.hasModel()){var e=this.editor.getConfiguration().fontInfo.lineHeight,t=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),n=Object(Y["x"])(this.editor.getDomNode()),i=n.left+t.left,o=n.top+t.top+t.height,r=Object(Y["x"])(this.element),s=r.left,a=r.top;if(this.docsPositionPreviousWidgetY&&this.docsPositionPreviousWidgetYa&&this.details.element.offsetHeight>this.listElement.offsetHeight&&(this.listElement.style.marginTop=this.details.element.offsetHeight-this.listElement.offsetHeight+"px")}},e.prototype.expandSideOrBelow=function(){if(!ke(this.focusedItem)&&this.firstFocusInCurrentList)return Object(Y["I"])(this.element,"docs-side"),void Object(Y["I"])(this.element,"docs-below");var e=this.element.style.maxWidth.match(/(\d+)px/);!e||Number(e[1])=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Re=function(e,t){return function(n,i){t(n,i,e)}},Ae=function(e){function t(n,i){var o=e.call(this)||this;return o._editor=n,o._enabled=!1,o._ckAtEnd=t.AtEnd.bindTo(i),o._register(o._editor.onDidChangeConfiguration(function(e){return e.contribInfo&&o._update()})),o._update(),o}return Te(t,e),t.prototype.dispose=function(){e.prototype.dispose.call(this),Object(s["f"])(this._selectionListener),this._ckAtEnd.reset()},t.prototype._update=function(){var e=this,t="on"===this._editor.getConfiguration().contribInfo.tabCompletion;if(this._enabled!==t)if(this._enabled=t,this._enabled){var n=function(){if(e._editor.hasModel()){var t=e._editor.getModel(),n=e._editor.getSelection(),i=t.getWordAtPosition(n.getStartPosition());i?e._ckAtEnd.set(i.endColumn===n.getStartPosition().column):e._ckAtEnd.set(!1)}else e._ckAtEnd.set(!1)};this._selectionListener=this._editor.onDidChangeCursorSelection(n),n()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)},t.AtEnd=new M["d"]("atEndOfWord",!1),t=Pe([Re(1,M["c"])],t),t}(s["a"]),Fe=n("a40b"),je=n("ef8e"),We=n("3170"),Ve=function(){function e(e,t,n){var i=this;this._disposables=new s["b"],this._disposables.add(t.onDidShow(function(){return i._onItem(t.getFocusedItem())})),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType(function(t){if(i._active){var o=t.charCodeAt(t.length-1);i._active.acceptCharacters.has(o)&&e.getConfiguration().contribInfo.acceptSuggestionOnCommitCharacter&&n(i._active.item)}}))}return e.prototype._onItem=function(e){if(e&&Object(o["n"])(e.item.completion.commitCharacters)){if(!this._active||this._active.item.item!==e.item){for(var t=new We["b"],n=0,i=e.item.completion.commitCharacters;n0&&t.add(r.charCodeAt(0))}this._active={acceptCharacters:t,item:e}}}else this.reset()},e.prototype.reset=function(){this._active=void 0},e.prototype.dispose=function(){this._disposables.dispose()},e}();n.d(t,"SuggestController",function(){return Ge}),n.d(t,"TriggerSuggestAction",function(){return Ze});var Be=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),He=function(){return He=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},Ue=function(e,t){return function(n,i){t(n,i,e)}},Ke=!1,qe=function(){function e(e,t){this._model=e,this._position=t;var n=e.getLineMaxColumn(t.lineNumber);if(n!==t.column){var i=e.getOffsetAt(t),o=e.getPositionAt(i+1);this._marker=e.deltaDecorations([],[{range:l["a"].fromPositions(t,o),options:{stickiness:1}}])}}return e.prototype.dispose=function(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])},e.prototype.delta=function(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){var t=this._model.getDecorationRange(this._marker[0]),n=this._model.getOffsetAt(t.getStartPosition());return n-this._model.getOffsetAt(e)}return this._model.getLineMaxColumn(e.lineNumber)-e.column},e}(),Ge=function(){function e(e,t,n,i,o,r){var a=this;this._editor=e,this._memoryService=n,this._commandService=i,this._contextKeyService=o,this._instantiationService=r,this._lineSuffix=new s["d"],this._toDispose=new s["b"],this._model=new Z(this._editor,t),this._widget=new m["b"](function(){var e=a._instantiationService.createInstance(Me,a._editor);a._toDispose.add(e),a._toDispose.add(e.onDidSelect(function(e){return a._insertSuggestion(e,!1,!0)},a));var t=new Ve(a._editor,e,function(e){return a._insertSuggestion(e,!1,!0)});a._toDispose.add(t),a._toDispose.add(a._model.onDidSuggest(function(e){0===e.completionModel.items.length&&t.reset()}));var n=T["b"].MakesTextEdit.bindTo(a._contextKeyService);return a._toDispose.add(e.onDidFocus(function(e){var t=e.item,i=a._editor.getPosition(),o=t.completion.range.startColumn,r=i.column,s=!0;if("smart"===a._editor.getConfiguration().contribInfo.acceptSuggestionOnEnter&&2===a._model.state&&!t.completion.command&&!t.completion.additionalTextEdits&&!(4&t.completion.insertTextRules)&&r-o===t.completion.insertText.length){var u=a._editor.getModel().getValueInRange({startLineNumber:i.lineNumber,startColumn:o,endLineNumber:i.lineNumber,endColumn:r});s=u!==t.completion.insertText}n.set(s)})),a._toDispose.add(Object(s["h"])(function(){return n.reset()})),e}),this._alternatives=new m["b"](function(){return a._toDispose.add(new A(a._editor,a._contextKeyService))}),this._toDispose.add(r.createInstance(Ae,e)),this._toDispose.add(this._model.onDidTrigger(function(e){a._widget.getValue().showTriggered(e.auto,e.shy?250:50),a._lineSuffix.value=new qe(a._editor.getModel(),e.position)})),this._toDispose.add(this._model.onDidSuggest(function(e){if(!e.shy){var t=a._memoryService.select(a._editor.getModel(),a._editor.getPosition(),e.completionModel.items);a._widget.getValue().showSuggestions(e.completionModel,t,e.isFrozen,e.auto)}})),this._toDispose.add(this._model.onDidCancel(function(e){e.retrigger||a._widget.getValue().hideWidget()})),this._toDispose.add(this._editor.onDidBlurEditorWidget(function(){Ke||(a._model.cancel(),a._model.clear())}));var u=T["b"].AcceptSuggestionsOnEnter.bindTo(o),l=function(){var e=a._editor.getConfiguration().contribInfo.acceptSuggestionOnEnter;u.set("on"===e||"smart"===e)};this._toDispose.add(this._editor.onDidChangeConfiguration(function(){return l()})),l()}return e.get=function(t){return t.getContribution(e.ID)},e.prototype.getId=function(){return e.ID},e.prototype.dispose=function(){this._alternatives.dispose(),this._toDispose.dispose(),this._widget.dispose(),this._model.dispose(),this._lineSuffix.dispose()},e.prototype._insertSuggestion=function(e,t,n){var i,o=this;if(!e||!e.item)return this._alternatives.getValue().reset(),this._model.cancel(),void this._model.clear();if(this._editor.hasModel()){var s=this._editor.getModel(),a=s.getAlternativeVersionId(),c=e.item,p=c.completion,f=c.position,g=this._editor.getPosition().column,m=g-f.column;n&&this._editor.pushUndoStop(),Array.isArray(p.additionalTextEdits)&&this._editor.executeEdits("suggestController.additionalTextEdits",p.additionalTextEdits.map(function(e){return u["a"].replace(l["a"].lift(e.range),e.text)})),this._memoryService.memorize(s,this._editor.getPosition(),e.item);var v=p.insertText;4&p.insertTextRules||(v=h["c"].escape(v));var _=f.column-p.range.startColumn,b=p.range.endColumn-f.column,y=this._lineSuffix.value?this._lineSuffix.value.delta(this._editor.getPosition()):0;d["SnippetController2"].get(this._editor).insert(v,{overwriteBefore:_+m,overwriteAfter:b+y,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(1&p.insertTextRules)}),n&&this._editor.pushUndoStop(),p.command?p.command.id===Ze.id?this._model.trigger({auto:!0,shy:!1},!0):((i=this._commandService).executeCommand.apply(i,[p.command.id].concat(p.command.arguments?p.command.arguments.slice():[])).catch(r["e"]).finally(function(){return o._model.clear()}),this._model.cancel()):(this._model.cancel(),this._model.clear()),t&&this._alternatives.getValue().set(e,function(e){while(s.canUndo()){a!==s.getAlternativeVersionId()&&s.undo(),o._insertSuggestion(e,!1,!1);break}}),this._alertCompletionItem(e.item)}},e.prototype._alertCompletionItem=function(e){var t=e.completion;if(Object(o["n"])(t.additionalTextEdits)){var n=I["a"]("arai.alert.snippet","Accepting '{0}' made {1} additional edits",t.label,t.additionalTextEdits.length);Object(i["a"])(n)}},e.prototype.triggerSuggest=function(e){this._editor.hasModel()&&(this._model.trigger({auto:!1,shy:!1},!1,e),this._editor.revealLine(this._editor.getPosition().lineNumber,0),this._editor.focus())},e.prototype.triggerSuggestAndAcceptBest=function(e){var t=this;if(this._editor.hasModel()){var n=this._editor.getPosition(),i=function(){n.equals(t._editor.getPosition())&&t._commandService.executeCommand(e.fallback)},o=function(e){if(4&e.completion.insertTextRules||e.completion.additionalTextEdits)return!0;var n=t._editor.getPosition(),i=e.completion.range.startColumn,o=n.column;if(o-i!==e.completion.insertText.length)return!0;var r=t._editor.getModel().getValueInRange({startLineNumber:n.lineNumber,startColumn:i,endLineNumber:n.lineNumber,endColumn:o});return r!==e.completion.insertText};F["b"].once(this._model.onDidTrigger)(function(e){var n=[];F["b"].any(t._model.onDidTrigger,t._model.onDidCancel)(function(){Object(s["f"])(n),i()},void 0,n),t._model.onDidSuggest(function(e){var r=e.completionModel;if(Object(s["f"])(n),0!==r.items.length){var a=t._memoryService.select(t._editor.getModel(),t._editor.getPosition(),r.items),u=r.items[a];o(u)?(t._editor.pushUndoStop(),t._insertSuggestion({index:a,item:u,model:r},!0,!1)):i()}else i()},void 0,n)}),this._model.trigger({auto:!1,shy:!0}),this._editor.revealLine(n.lineNumber,0),this._editor.focus()}},e.prototype.acceptSelectedSuggestion=function(e){var t=this._widget.getValue().getFocusedItem();this._insertSuggestion(t,!!e,!0)},e.prototype.acceptNextSuggestion=function(){this._alternatives.getValue().next()},e.prototype.acceptPrevSuggestion=function(){this._alternatives.getValue().prev()},e.prototype.cancelSuggestWidget=function(){this._model.cancel(),this._model.clear(),this._widget.getValue().hideWidget()},e.prototype.selectNextSuggestion=function(){this._widget.getValue().selectNext()},e.prototype.selectNextPageSuggestion=function(){this._widget.getValue().selectNextPage()},e.prototype.selectLastSuggestion=function(){this._widget.getValue().selectLast()},e.prototype.selectPrevSuggestion=function(){this._widget.getValue().selectPrevious()},e.prototype.selectPrevPageSuggestion=function(){this._widget.getValue().selectPreviousPage()},e.prototype.selectFirstSuggestion=function(){this._widget.getValue().selectFirst()},e.prototype.toggleSuggestionDetails=function(){this._widget.getValue().toggleDetails()},e.prototype.toggleExplainMode=function(){this._widget.getValue().toggleExplainMode()},e.prototype.toggleSuggestionFocus=function(){this._widget.getValue().toggleDetailsFocus()},e.ID="editor.contrib.suggestController",e=ze([Ue(1,Fe["a"]),Ue(2,D),Ue(3,E["b"]),Ue(4,M["c"]),Ue(5,v["a"])],e),e}(),Ze=function(e){function t(){return e.call(this,{id:t.id,label:I["a"]("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:M["a"].and(c["a"].writable,c["a"].hasCompletionItemProvider),kbOpts:{kbExpr:c["a"].textInputFocus,primary:2058,mac:{primary:266},weight:100}})||this}return Be(t,e),t.prototype.run=function(e,t){var n=Ge.get(t);n&&n.triggerSuggest()},t.id="editor.action.triggerSuggest",t}(a["b"]);Object(a["h"])(Ge),Object(a["f"])(Ze);var Ye=190,Xe=a["c"].bindToContribution(Ge.get);Object(a["g"])(new Xe({id:"acceptSelectedSuggestion",precondition:T["b"].Visible,handler:function(e){return e.acceptSelectedSuggestion(!0)},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:2}})),Object(a["g"])(new Xe({id:"acceptSelectedSuggestionOnEnter",precondition:T["b"].Visible,handler:function(e){return e.acceptSelectedSuggestion(!1)},kbOpts:{weight:Ye,kbExpr:M["a"].and(c["a"].textInputFocus,T["b"].AcceptSuggestionsOnEnter,T["b"].MakesTextEdit),primary:3}})),Object(a["g"])(new Xe({id:"hideSuggestWidget",precondition:T["b"].Visible,handler:function(e){return e.cancelSuggestWidget()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:9,secondary:[1033]}})),Object(a["g"])(new Xe({id:"selectNextSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectNextSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),Object(a["g"])(new Xe({id:"selectNextPageSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectNextPageSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:12,secondary:[2060]}})),Object(a["g"])(new Xe({id:"selectLastSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectLastSuggestion()}})),Object(a["g"])(new Xe({id:"selectPrevSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectPrevSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),Object(a["g"])(new Xe({id:"selectPrevPageSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectPrevPageSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:11,secondary:[2059]}})),Object(a["g"])(new Xe({id:"selectFirstSuggestion",precondition:M["a"].and(T["b"].Visible,T["b"].MultipleSuggestions),handler:function(e){return e.selectFirstSuggestion()}})),Object(a["g"])(new Xe({id:"toggleSuggestionDetails",precondition:T["b"].Visible,handler:function(e){return e.toggleSuggestionDetails()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:2058,mac:{primary:266}}})),Object(a["g"])(new Xe({id:"toggleExplainMode",precondition:T["b"].Visible,handler:function(e){return e.toggleExplainMode()},kbOpts:{weight:100,primary:2133}})),Object(a["g"])(new Xe({id:"toggleSuggestionFocus",precondition:T["b"].Visible,handler:function(e){return e.toggleSuggestionFocus()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:2570,mac:{primary:778}}})),Object(a["g"])(new Xe({id:"insertBestCompletion",precondition:M["a"].and(M["a"].equals("config.editor.tabCompletion","on"),Ae.AtEnd,T["b"].Visible.toNegated(),A.OtherSuggestions.toNegated(),d["SnippetController2"].InSnippetMode.toNegated()),handler:function(e,t){e.triggerSuggestAndAcceptBest(Object(je["h"])(t)?He({fallback:"tab"},t):{fallback:"tab"})},kbOpts:{weight:Ye,primary:2}})),Object(a["g"])(new Xe({id:"insertNextSuggestion",precondition:M["a"].and(M["a"].equals("config.editor.tabCompletion","on"),A.OtherSuggestions,T["b"].Visible.toNegated(),d["SnippetController2"].InSnippetMode.toNegated()),handler:function(e){return e.acceptNextSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:2}})),Object(a["g"])(new Xe({id:"insertPrevSuggestion",precondition:M["a"].and(M["a"].equals("config.editor.tabCompletion","on"),A.OtherSuggestions,T["b"].Visible.toNegated(),d["SnippetController2"].InSnippetMode.toNegated()),handler:function(e){return e.acceptPrevSuggestion()},kbOpts:{weight:Ye,kbExpr:c["a"].textInputFocus,primary:1026}}))},"7aad":function(e,t,n){},"7ab3":function(e,t,n){"use strict";n.d(t,"a",function(){return i});var i,o=n("3742");i="undefined"!==typeof TextDecoder?function(e){return new r(e)}:function(e){return new s};var r=function(){function e(e){this._decoder=new TextDecoder("UTF-16LE"),this._capacity=0|e,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}return e.prototype.reset=function(){this._completedStrings=null,this._bufferLength=0},e.prototype.build=function(){return null!==this._completedStrings?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()},e.prototype._buildBuffer=function(){if(0===this._bufferLength)return"";var e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return this._decoder.decode(e)},e.prototype._flushBuffer=function(){var e=this._buildBuffer();this._bufferLength=0,null===this._completedStrings?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e},e.prototype.write1=function(e){var t=this._capacity-this._bufferLength;t<=1&&(0===t||o["w"](e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e},e.prototype.appendASCII=function(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e},e.prototype.appendASCIIString=function(e){var t=e.length;if(this._bufferLength+t>=this._capacity)return this._flushBuffer(),void(this._completedStrings[this._completedStrings.length]=e);for(var n=0;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},g=function(e,t){return function(n,i){t(n,i,e)}},m=function(){function e(e,t,n,i,o,r){var a=this;this._contextMenuService=t,this._contextViewService=n,this._contextKeyService=i,this._keybindingService=o,this._menuService=r,this._toDispose=new s["b"],this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu(function(e){return a._onContextMenu(e)})),this._toDispose.add(this._editor.onMouseWheel(function(e){a._contextMenuIsBeingShownCount>0&&a._contextViewService.hideContextView()})),this._toDispose.add(this._editor.onKeyDown(function(e){58===e.keyCode&&(e.preventDefault(),e.stopPropagation(),a.showContextMenu())}))}return e.get=function(t){return t.getContribution(e.ID)},e.prototype._onContextMenu=function(e){if(this._editor.hasModel()){if(!this._editor.getConfiguration().contribInfo.contextmenu)return this._editor.focus(),void(e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position));if(12!==e.target.type&&(e.event.preventDefault(),6===e.target.type||7===e.target.type||1===e.target.type)){this._editor.focus(),e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position);var t=null;1!==e.target.type&&(t={x:e.event.posx-1,width:2,y:e.event.posy-1,height:2}),this.showContextMenu(t)}}},e.prototype.showContextMenu=function(e){if(this._editor.getConfiguration().contribInfo.contextmenu&&this._editor.hasModel())if(this._contextMenuService){var t=this._getMenuActions(this._editor.getModel());t.length>0&&this._doShowContextMenu(t,e)}else this._editor.focus()},e.prototype._getMenuActions=function(e){var t=[],n=this._menuService.createMenu(7,this._contextKeyService),i=n.getActions({arg:e.uri});n.dispose();for(var o=0,s=i;o0&&this._contextViewService.hideContextView(),this._toDispose.dispose()},e.ID="editor.contrib.contextmenu",e=f([g(1,d["a"]),g(2,d["b"]),g(3,c["c"]),g(4,h["a"]),g(5,l["a"])],e),e}(),v=function(e){function t(){return e.call(this,{id:"editor.action.showContextMenu",label:i["a"]("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:u["a"].textInputFocus,primary:1092,weight:100}})||this}return p(t,e),t.prototype.run=function(e,t){var n=m.get(t);n.showContextMenu()},t}(a["b"]);Object(a["h"])(m),Object(a["f"])(v)},"7de1":function(e,t,n){"use strict";var i=n("aa3d"),o=n("a666"),r=n("a60f"),s=n("11f7"),a=n("308f"),u=n("e32d"),l=n("1898"),c=n("9ee1");function d(e,t){for(var n=[],i=0,o=t;i=r.range.end)){if(e.end=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},O={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements:function(e){return[e]},getDragURI:function(){return null},onDragStart:function(){},onDragOver:function(){return!1},drop:function(){}},horizontalScrolling:!1},x=function(){function e(e){this.elements=e}return e.prototype.update=function(){},e.prototype.getData=function(){return this.elements},e}(),N=function(){function e(e){this.elements=e}return e.prototype.update=function(){},e.prototype.getData=function(){return this.elements},e}(),D=function(){function e(){this.types=[],this.files=[]}return e.prototype.update=function(e){var t;if(e.types&&(t=this.types).splice.apply(t,[0,this.types.length].concat(e.types)),e.files){this.files.splice(0,this.files.length);for(var n=0;n=this.items.length?(this.rangeMap=new g,this.rangeMap.splice(0,0,v),this.items=v,d=[]):(this.rangeMap.splice(e,t,v),d=(i=this.items).splice.apply(i,[e,t].concat(v)));var _=n.length-t,b=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),y=h(f,_),w=c["a"].intersect(b,y);for(l=w.start;l=-1&&en&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-n))))}},e.prototype.teardownDragAndDropScrollTopAnimation=function(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)},e.prototype.getItemIndexFromEventTarget=function(e){var t=e;while(t instanceof HTMLElement&&t!==this.rowsContainer){var n=t.getAttribute("data-index");if(n){var i=Number(n);if(!isNaN(i))return i}t=t.parentElement}},e.prototype.getRenderRange=function(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}},e.prototype._rerender=function(e,t){var n,i,o=this.getRenderRange(e,t);e===this.elementTop(o.start)?(n=o.start,i=0):o.end-o.start>1&&(n=o.start+1,i=this.elementTop(n)-e);var r=0;while(1){for(var s=this.getRenderRange(e,t),a=!1,u=s.start;u=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},c=function(e,t){return function(n,i){t(n,i,e)}};function d(e){return void 0!==e.command}var h=Object(o["c"])("menuService"),p=new(function(){function e(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new a["a"],this.onDidChangeMenu=this._onDidChangeMenu.event}return e.prototype.addCommand=function(e){var t=this;return this._commands.set(e.id,e),this._onDidChangeMenu.fire(0),{dispose:function(){t._commands.delete(e.id)&&t._onDidChangeMenu.fire(0)}}},e.prototype.getCommand=function(e){return this._commands.get(e)},e.prototype.getCommands=function(){var e=new Map;return this._commands.forEach(function(t,n){return e.set(n,t)}),e},e.prototype.appendMenuItem=function(e,t){var n=this,i=this._menuItems.get(e);return i?i.push(t):(i=[t],this._menuItems.set(e,i)),this._onDidChangeMenu.fire(e),{dispose:function(){var o=i.indexOf(t);o>=0&&(i.splice(o,1),n._onDidChangeMenu.fire(e))}}},e.prototype.getMenuItems=function(e){var t=(this._menuItems.get(e)||[]).slice(0);return 0===e&&this._appendImplicitItems(t),t},e.prototype._appendImplicitItems=function(e){for(var t=new Set,n=e.filter(function(e){return d(e)}),i=0,o=n;i0?[{start:0,end:t.length}]:[]:null);var i}function u(e,t){var n=t.toLowerCase().indexOf(e.toLowerCase());return-1===n?null:[{start:n,end:n+e.length}]}function l(e,t){return c(e.toLowerCase(),t.toLowerCase(),0,0)}function c(e,t,n,i){if(n===e.length)return[];if(i===t.length)return null;if(e[n]===t[i]){var o=null;return(o=c(e,t,n+1,i+1))?v({start:i,end:i+1},o):null}return c(e,t,n,i+1)}function d(e){return 97<=e&&e<=122}function h(e){return 65<=e&&e<=90}function p(e){return 48<=e&&e<=57}function f(e){return 32===e||9===e||10===e||13===e}var g=new Set;function m(e){return d(e)||h(e)||p(e)}function v(e,t){return 0===t.length?t=[e]:e.end===t[0].start?t[0].start=e.start:t.unshift(e),t}function _(e,t){for(var n=t;n0&&!m(e.charCodeAt(n-1)))return n}return e.length}function b(e,t,n,i){if(n===e.length)return[];if(i===t.length)return null;if(e[n]!==t[i].toLowerCase())return null;var o=null,r=i+1;o=b(e,t,n+1,i+1);while(!o&&(r=_(t,r)).6}function C(e){var t=e.upperPercent,n=e.lowerPercent,i=e.alphaPercent,o=e.numericPercent;return n>.2&&t<.8&&i>.6&&o<.2}function S(e){for(var t=0,n=0,i=0,o=0,r=0;r60)return null;var n=y(t);if(!C(n)){if(!w(n))return null;t=t.toLowerCase()}var i=null,o=0;e=e.toLowerCase();while(o/?".split("").forEach(function(e){return g.add(e.charCodeAt(0))});var O=r(s,L,u),x=r(s,L,l),N=new i["a"](1e4);function D(e,t,n){if(void 0===n&&(n=!1),"string"!==typeof e||"string"!==typeof t)return null;var i=N.get(e);i||(i=new RegExp(o["j"](e),"i"),N.set(e,i));var r=i.exec(t);return r?[{start:r.index,end:r.index+r[0].length}]:n?x(e,t):O(e,t)}function k(e,t,n,i,o,r){var s=U(e,t,0,i,o,0,!0);if(s)return s;for(var a=0,u=0,l=r,c=0;c=0)u+=1,a+=Math.pow(2,d),l=d+1;else if(0!==a)break}return[u,a,r]}function I(e){if("undefined"===typeof e)return[];for(var t=e[1].toString(2),n=e[2],i=[],o=n;o=e.length)return!1;var n=e.charCodeAt(t);switch(n){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:return!0;default:return!1}}function B(e,t){if(t<0||t>=e.length)return!1;var n=e.charCodeAt(t);switch(n){case 32:case 9:return!0;default:return!1}}function H(e,t,n){return t[e]!==n[e]}function z(e,t,n,i,o,r){while(tE?E:e.length,u=i.length>E?E:i.length;if(!(n>=a||r>=u||a>u)&&z(t,n,a,o,r,u)){var l=1,c=1,d=n,h=r;for(l=1,d=n;d1?1:p),g=P[l-1][c]+-1,m=P[l][c-1]+-1;m>=g?m>f?(P[l][c]=m,A[l][c]=4):m===f?(P[l][c]=m,A[l][c]=6):(P[l][c]=f,A[l][c]=2):g>f?(P[l][c]=g,A[l][c]=1):g===f?(P[l][c]=g,A[l][c]=3):(P[l][c]=f,A[l][c]=2)}if(F&&W(e,n,i,r),q=0,Z=-100,Y=r,X=s,$(l-1,c-1,a===u?1:0,0,!1),0!==q)return[Z,G,r]}}function K(e,t,n,i,o,r,s){return t[n]!==r[s]?-1:s===n-i?e[n]===o[s]?7:5:!H(s,o,r)||0!==s&&H(s-1,o,r)?!V(r,s)||0!==s&&V(r,s-1)?V(r,s-1)||B(r,s-1)?5:1:5:e[n]===o[s]?7:5}(function(e){function t(e){return!e||-100===e[0]&&0===e[1]&&0===e[2]}e.Default=Object.freeze([-100,0,0]),e.isDefault=t})(T||(T={}));var q=0,G=0,Z=0,Y=0,X=!1;function $(e,t,n,i,o){if(!(q>=10||n<-25)){var r=0;while(e>0&&t>0){var s=R[e][t],a=A[e][t];if(4===a)t-=1,o?n-=5:0!==i&&(n-=1),o=!1,r=0;else{if(!(2&a))return;if(4&a&&$(e,t-1,0!==i?n-1:n,i,o),n+=s,e-=1,t-=1,o=!0,i+=Math.pow(2,t+Y),1===s){if(r+=1,0===e&&!X)return}else n+=1+r*(s-1),r=0}}n-=t>=3?9:3*t,q+=1,n>Z&&(Z=n,G=i)}}function Q(e,t,n,i,o,r,s){return J(e,t,n,i,o,r,!0,s)}function J(e,t,n,i,o,r,s,a){var u=U(e,t,n,i,o,r,a);if(u&&!s)return u;if(e.length>=3)for(var l=Math.min(7,e.length-1),c=n+1;cu[0])&&(u=h))}}return u}function ee(e,t){if(!(t+1>=e.length)){var n=e[t],i=e[t+1];if(n!==i)return e.slice(0,t)+i+n+e.slice(t+2)}}},8025:function(e,t,n){"use strict";n.d(t,"a",function(){return s});var i=n("7061"),o=n("6a89"),r=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),s=function(e){function t(t,n,i,o){var r=e.call(this,t,n,i,o)||this;return r.selectionStartLineNumber=t,r.selectionStartColumn=n,r.positionLineNumber=i,r.positionColumn=o,r}return r(t,e),t.prototype.clone=function(){return new t(this.selectionStartLineNumber,this.selectionStartColumn,this.positionLineNumber,this.positionColumn)},t.prototype.toString=function(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"},t.prototype.equalsSelection=function(e){return t.selectionsEqual(this,e)},t.selectionsEqual=function(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn},t.prototype.getDirection=function(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1},t.prototype.setEndPosition=function(e,n){return 0===this.getDirection()?new t(this.startLineNumber,this.startColumn,e,n):new t(e,n,this.startLineNumber,this.startColumn)},t.prototype.getPosition=function(){return new i["a"](this.positionLineNumber,this.positionColumn)},t.prototype.setStartPosition=function(e,n){return 0===this.getDirection()?new t(e,n,this.endLineNumber,this.endColumn):new t(this.endLineNumber,this.endColumn,e,n)},t.fromPositions=function(e,n){return void 0===n&&(n=e),new t(e.lineNumber,e.column,n.lineNumber,n.column)},t.liftSelection=function(e){return new t(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)},t.selectionsArrEqual=function(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(var n=0,i=e.length;n=0;a--)(o=e[a])&&(s=(r<3?o(s):r>3?o(t,n,s):o(t,n))||s);return r>3&&s&&Object.defineProperty(t,n,s),s},m=function(e,t){return function(n,i){t(n,i,e)}},v=function(e){function t(t,n,i){var o=e.call(this)||this;return o._editor=t,o._modeService=i,o._widget=null,o._register(o._editor.onDidChangeModel(function(e){return o.stop()})),o._register(o._editor.onDidChangeModelLanguage(function(e){return o.stop()})),o._register(a["y"].onDidChange(function(e){return o.stop()})),o}return f(t,e),t.get=function(e){return e.getContribution(t.ID)},t.prototype.getId=function(){return t.ID},t.prototype.dispose=function(){this.stop(),e.prototype.dispose.call(this)},t.prototype.launch=function(){this._widget||this._editor.hasModel()&&(this._widget=new w(this._editor,this._modeService))},t.prototype.stop=function(){this._widget&&(this._widget.dispose(),this._widget=null)},t.ID="editor.contrib.inspectTokens",t=g([m(1,c["a"]),m(2,l["a"])],t),t}(o["a"]),_=function(e){function t(){return e.call(this,{id:"editor.action.inspectTokens",label:p["c"].inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})||this}return f(t,e),t.prototype.run=function(e,t){var n=v.get(t);n&&n.launch()},t}(s["b"]);function b(e){for(var t="",n=0,i=e.length;n=0;o--){var s=t.tokens1[o];if(e.column-1>=s.offset){n=o;break}}var a=0;for(o=t.tokens2.length>>>1;o>=0;o--)if(e.column-1>=t.tokens2[o<<1]){a=o;break}var u="",l=this._model.getLineContent(e.lineNumber),c="";if(n'+b(c)+'('+c.length+" "+(1===c.length?"char":"chars")+")

    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 JxT;;me*jKC-V*=- literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_pulsar.be9aa2e9.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_bridge_pulsar.be9aa2e9.png new file mode 100644 index 0000000000000000000000000000000000000000..df14c357333005ddbe72d5fdbf85c7122351781c GIT binary patch literal 4914 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 E0p-hvZ~y=R literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_dashboard.6937edc4.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_dashboard.6937edc4.png new file mode 100644 index 0000000000000000000000000000000000000000..5a693df81f1d1ef0e8569e15855a24da9e074af4 GIT binary patch literal 4272 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 VGQKgk_;*17G*lqU)rywk{{yGXID!BG literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_gbt32960.9ea5fd31.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_gbt32960.9ea5fd31.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6a41209b6edc2bd80e1438f6e95d0819a10b0a GIT binary patch literal 6665 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 Ydd_sDL5!Jyza4;zf~I`EtYz5$04-AIHvj+t literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_jt808.28a1a87c.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_jt808.28a1a87c.png new file mode 100644 index 0000000000000000000000000000000000000000..9329bafcd0c0b6c48fe0703a8d5f6e46233f8810 GIT binary patch literal 5484 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 CJ)edE literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_lua_hook.70ea0a97.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_lua_hook.70ea0a97.png new file mode 100644 index 0000000000000000000000000000000000000000..d2923636cdec235454ee76fbaade2a6c5099cbe6 GIT binary patch literal 5450 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 literal 0 HcmV?d00001 diff --git a/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_prometheus.59114669.png b/apps/emqx_enterprise_dashboard/priv/www/static/img/emqx_prometheus.59114669.png new file mode 100644 index 0000000000000000000000000000000000000000..597213eb9829fe77efc8ff4b57afd5ec9aa0b9e4 GIT binary patch literal 9804 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